skip to main content
article
Free access

Supporting the restructuring of data abstractions through manipulation of a program visualization

Published: 01 April 1998 Publication History

Abstract

With a meaning-preserving restructuring tool, a software engineer can change a program's structure to ease future modifications. However, deciding how to restructure the program requires a global understanding of the program's structure, which cannot be derived easily by directly inspecting the source code. We describe a manipulable program visualization—the star diagram—that supports the restructuring task of encapsulating a global data structure. The star diagram graphically displays information pertinent to encapsulation, and direct manipulation of the diagram causes the underlying program to be restructured. The visualization compactly presents all statements in the program that use the given global data structure, helping the programmer to choose the functions that completely encapsulate it. Additionally, the visualization elides code unrelated to the data structure and to the task and collapses similar expressions to help the programmer identify frequently occurring code fragments and manipulate them together. The visualization is mapped directly to the program text, so manipulation of the visualization also restructures the program. We present the star diagram concept and describe an implementation of the star diagram built upon a meaning-preserving restructuring tool for Scheme. We also describe our creation of star diagram generators for C programs, and we test the scalability of the star diagram using large C and MUMPS programs.

References

[1]
ACHEE, B. L. AND CARVER, D. L. 1994. A greedy approach to object identification in imperative code. In Workshop on Program Comprehension. IEEE Computer Society Press, Los Alamitos, CA, 4-11.
[2]
ADAMS, S. 1980. Pirate's Adventure. BYTE 5, 12 (Dec.), 192-212.
[3]
AHO, A.V. 1980. Pattern matching in strings. In Formal Language Theory: Perspectives and Open Problems, R. V. Book, Ed. Academic Press, Inc., New York, NY, 325-347.
[4]
AHO, A. V., SETHI, R., AND ULLMAN, J. D. 1986. Compilers: Principles, Techniques, and Tools. Addison-Wesley Longman Publ. Co., Inc., Reading, MA.
[5]
BALL, T. AND EICK, S. G. 1994. Visualizing program slices. In Proceedings of the IEEE Symposium on Visual Languages (St. Louis, MO). IEEE Computer Society, Washington, DC, 288-295.
[6]
BERGLAND, G.D. 1981. A guided tour of program design methodologies. Computer 14, 10 (Oct.), 18-37.
[7]
BOEHM, B.W. 1975. The high cost of software. In Practical Strategies for Developing Large Software Systems. Addison-Wesley Publishing Co., Reading, MA, 3-15.
[8]
BOWDIDGE, R. W. AND GRISWOLD, W. G. 1997. How software tools organize programmer behavior during the task of data encapsulation. Empirical Softw. Eng. 2, 3, 221-268.
[9]
BUSH, E. 1985. The automatic restructuring of COBOL. In Proceedings of the Conference on Software Maintenance--1985 (Sheraton Inn Washington-Northwest, Nov. 11-13, 1985). IEEE Press, Piscataway, NJ, 35-41.
[10]
CANFORA, a., CIMITILE, A., AND MUNRO, M. 1993a. A reverse engineering method for identifying reusable abstract data types. In Proceedings of the 1st Working Conference on Reverse Engineering (Baltimore, MD). IEEE Press, Piscataway, NJ, 73-82.
[11]
CANFORA, a., CIMITILE, A., MUNRO, M., AND TORTORELLA, M. 1993b. Experiments in identifying reusable abstact data types in program code. In Proceedings of the IEEE Conference on Program Comprehension (Capri, Italy). IEEE Computer Society Press, Los Alamitos, CA, 36-45.
[12]
CHEN, M. 1996. A tool for planning restructuring of data abstractions in large systems. Master's thesis, Computer Science Dept., University of California at San Diego, La Jolla, CA.
[13]
CUTILLO, F., FIORE, P., AND VISAGGIO, a. 1993. Identification and extraction of "domain independent" components in large programs. In Proceedings of the 1st Working Conference on Reverse Engineering (Baltimore, MD). IEEE Press, Piscataway, NJ.
[14]
DE BALBINE, G. 1975. Better manpower utilization using automatic restructuring. In National Computer Conference. AFIPS Press, Arlington, VA.
[15]
DYBVIG, R. K. 1987. The SCHEME Programming Language. Prentice-Hall, Inc., Upper Saddle River, NJ.
[16]
LICK, S. G., STEFFEN, J. L., AND SUMNER, E.E. 1992. Seesoft--A tool for visualizing line oriented software statistics. IEEE Trans. Softw. Eng. 18, 11 (Nov.), 957-968.
[17]
EMBLEY, D. W. AND WOODFIELD, S.N. 1988. Assessing the quality of abstract data types written in ADA. In Proceedings of the l Oth International Conference on Software Engineering (Singapore, April 11-15, 1988). IEEE Computer Society Press, Los Alamitos, CA, 144-153.
[18]
GRISWOLD, W. G. AND ATKINSON, D. C. 1995. Managing design trade-offs for a program understanding and transformation tool. J. Syst. Softw. 30, 1&2 (July/Aug.), 99-116.
[19]
GRISWOLD, W. G. AND BOWDIDGE, R.W. 1993. Program restructuring via design-level manipulation. In Workshop on Studies of Software Design. Lecture Notes in Computer Science, vol. 1078. Springer-Verlag, New York, NY.
[20]
GRISWOLD, W. a. AND NOTKIN, D. 1992. Computer-aided vs. manual program restructuring. SIGSOFT Softw. Eng. Notes 17, 1 (Jan.), 33-41.
[21]
GRISWOLD, W. a. AND NOTKIN, D. 1993. Automated assistance for program restructuring. ACM Trans. Softw. Eng. Methodol. 2, 3 (July), 228-269.
[22]
GRISWOLD, W. G., ATKINSON, D., AND MCCURDY, C. 1996a. Fast, flexible syntactic pattern matching and processing. In Proceedings of the IEEE 1996 4th Workshop on Program Comprehension (WPC '96) (Berlin, Germany). IEEE Press, Piscataway, NJ, 144-153.
[23]
GRISWOLD, W. G., CHEN, M. I., BOWDIDGE, R. W., AND MORGENTHALER, J. D. 1996b. Tool support for planning the restructuring of data abstractions in large systems. In Proceeding of the ACM SIGSOFT '96 Symposium on the Foundations of Software Engineering (San Francisco, CA). ACM Press, New York, NY.
[24]
HUTCHINS, E. L., HOLLAN, J. D., AND NORMAN, D.A. 1985. Direct manipulation interfaces. Human-Comput. Interact. 1, 311-338.
[25]
JOHNSON, R. E. AND OPDYKE, W.F. 1993. Refactoring and aggregation. In Object Technologies for Advanced Software: 1st JSSST International Symposium. Lecture Notes in Computer Science. Springer-Verlag, New York, NY, 264-278.
[26]
LEHMAN, M. M. AND BELADY, L. A., EDS., 1985. Program Evolution: Processes of Software Change. A.P.I.C. Studies in Data Processing. Academic Press Professional, Inc., San Diego, CA.
[27]
LIENTZ, B. AND SWANSON, E. 1980. Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations. Addison-Wesley Publishing Co., Reading, MA.
[28]
LISKOV, B., SNYDER, A., ATKINSON, R., AND SCHAFFERT, C. 1977. Abstraction mechanisms in CLU. Commun. ACM 20, 8, 564-576.
[29]
MOEN, S. 1990. Drawing dynamic trees. IEEE Softw. 7, 1, 21-28.
[30]
MORGENTHALER, J. D. AND GRISWOLD, W.G. 1995. Program analysis for practical program restructuring. In Workshop on Program Transformation for Software Evolution (Seattle, WA), W. G. Griswold, Ed.
[31]
MULLER, H. A., TILLEY, S. R., ORGUN, M. A., AND CORRIE, B.D. 1992. A reverse engineering environment based on spacial and visual software interconnection models. In Proceedings of the 5th ACM Symposium on Software Development Environments (SIGSOFT '92) (Tyson's Corner, VA, Dec. 9-11, 1992). ACM Press, New York, NY, 88-98.
[32]
MURPHY, G. C., NOTKIN, D., AND SULLIVAN, K. 1995. Software reflexion models: Bridging the gap between source and high-level models. SIGSOFT Softw. Eng. Notes 20, 4 (Oct.), 18-28.
[33]
NEWCOMB, P. 1995. Reengineering procedural into object-oriented systems. In Proceedings of the 2nd Working Conference on Reverse Engineering (Toronto, Ontario). IEEE Press, Piscataway, NJ, 237-249.
[34]
NEWCOMB, P. AND MARKOSIAN, L. 1993. Automating the modularization of large COBOL programs: Application of an enabling technology for reengineering. In Proceedings of the 1st Working Conference on Reverse Engineering (Baltimore, MD). IEEE Press, Piscataway, NJ, 222-230.
[35]
OPDYKE, W.F. 1991. Refactoring: A program restructuring aid in designing object-oriented application frameworks. Ph.D. thesis, Department of Computer Science, University of Illinois at Urbana-Champaign, Champaign, IL.
[36]
Oww, L. M. AND THUSS, J.J. 1989. The relationship between slices and module cohesion. In Proceedings of the 11th International Conference on Software Engineering (Pittsburgh, PA, May 15-18, 1989). ACM Press, New York, NY, 198-204.
[37]
PARNAS, D.L. 1972. On the criteria to be used in decomposing systems into modules. Commun. ACM 15, 12, 1053-1058.
[38]
PARTSCH, H. AND STEINBRUGGEN, R. 1983. Program transformation systems. ACM Comput. Surv. 15, 3, 199-236.
[39]
RICH, C. AND WATERS, R. C. 1988. The programmer's apprentice: A research overview. Computer 21, 11 (Nov.), 10-25.
[40]
ROBINS, G. 1985. Applications of the ISI Grapher. In Proceedings of the 4th Annual Artificial Intelligence and Advanced Computer Technology Conference, 105-129.
[41]
ROWE, L. A., KONSTAN, J. A., SMITH, B. C., SEITZ, S., AND LIU, C. 1991. The PICASSO application framework. In Proceedings of the 4th Annual ACM Symposium on User Interface Software and Technology (Hilton Head, SC, Nov. 11 - 13, 1991). ACM Press, New York, NY, 95-105.
[42]
SHNEIDERMAN, B. 1983. Direct manipulation: A step beyond programming languages. Computer 16, 8, 57-69.
[43]
SCHWANKE, R. W. 1991. An intelligent tool for re-engineering software modularity. In Proceedings of the 13th International Conference on Software Engineering (Austin, TX, 1991). IEEE Computer Society Press, Los Alamitos, CA, 83-92.
[44]
SRINIVASAN, R. 1993. Automatic software design recovery and re-modularization using source transformation. Master's thesis, Department of Information and Computer Science, Queen's University, Kingston, Ontario, Canada.
[45]
STALLMAN, R. 1993. GNU Emacs (The Extensible Self-Documenting Text Editor). Free Software Foundation, Cambridge, MA.
[46]
STEENSGAARD, B. 1996. Points-to analysis in almost linear time. In Conference Record of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (St. Petersburg Beach, FL, Jan. 21 - 24, 1996). ACM, New York, NY, 32-41.
[47]
STEVENS, W. P., MYERS, G. J., AND CONSTANTINE, L.L. 1974. Structured design. IBM Syst. J. 13, 2, 115-139.
[48]
TONELLA, P., FIUTEM, R., ANTONIOL, G., AND MERLO, E. 1996. Augmenting pattern-based architectural recovery with flow analysis: Mosaic--A case study. In Proceedings of the Working Conference on Reverse Engineering (WCRE '96) (Monterey, CA, 1996). IEEE Press, Piscataway, NJ, 198-207.
[49]
WEISER, M. 1984. Program slicing. IEEE Trans. Softw. Eng. SE-IO, 4, 352-357.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology  Volume 7, Issue 2
April 1998
106 pages
ISSN:1049-331X
EISSN:1557-7392
DOI:10.1145/279310
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 April 1998
Published in TOSEM Volume 7, Issue 2

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. meaning-preserving restructuring
  2. semi-automated restructuring
  3. software visualization
  4. star diagram
  5. tool-supported restructuring

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)95
  • Downloads (Last 6 weeks)10
Reflects downloads up to 22 Dec 2024

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media