Abstract
A meaning-preserving program restructuring tool can be used by a software engineer to change a program's structure to better support modifications during maintenance. Our implementation of such a tool performs restructuring transformations on code fragments that are selected using a text-based interface. However, a text representation does not represent program structure well because some component relationships that we conceptualize as structure are not readily observable in the program text. For example, structural properties such as module uses or procedure calls are represented by references to names rather than by proximity or direct linkage. Since restructuring is primarily a design-oriented activity, this design information must be readily available. Although the program text may be the wrong representation to manipulate, we still want transformations to directly affect the implementation. To solve both these problems, we use a graphical representation of the program design that displays the program's structure and, unlike visualization tools, permits direct manipulation of the structure to perform transformations on the implementation. We introduce a direct manipulation graphical interface that meets these criteria. We describe its design and implementation, and discuss the special problems of direct-manipulation program restructuring at the design level, and relate it to other approaches for manipulating designs.
This work was supported in part by NSF Grant CCR-9211002.
Preview
Unable to display preview. Download preview PDF.
References
Fredrick P. Brooks Jr. No Silver Bullet: essence and accidents of software engineering. IEEE Computer, 20(4):10–19, 1987.
R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.
Peter Eades. A heuristic for graph drawing. Congressum Numerantium, 42:149–160, 1984.
William G. Griswold. Program Restructuring to Aid Software Maintenance. PhD thesis, University of Washington, 1991.
William G. Griswold and David Notkin. Computer-aided vs. manual program restructuring. ACM SIGSOFT Software Engineering Notes, 17(1), 1992.
William G. Griswold and David Notkin. Automated assistance for program restructuring. Transactions on Software Engineering and Methodology, 2(3), 1993.
David Harel, Hagi Lachover, Amnon Naamad, Amir Pnueli, Michal Politi, Rivi Sherman, Aharon Shtull-Trauring, and Mark Trakhtenbrot. STATEMATE: a working environment for the development of complex reactive systems. IEEE Transactions on Software Engineering, 16(4):403–414, 1990.
M. M. Lehman and L. A. Belady. Program Evolution: processes of software change. Academic Press, London, 1985.
B. Lientz and E. Swanson. Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations. Addison-Wesley, Reading MA, 1980.
Mark Moriconi and Dwight F. Hare. Visualizing program designs through PegaSys. IEEE Computer, 18(8):72–85, 1985.
H. A. Müller, S. R. Tilley, M. A. Orgun, B. D. Corrie, and N. H. Madhavaji. A reverse engineering environment based on spacial and visual software interconnection models. In Fifth ACM SIGSOFT Symposium on Software Development Environments, pages 88–98, 1992.
D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, 1972.
Steven P. Reiss. Working in the Garden environment for conceptual programming. IEEE Software, 4(6):16–27, 1987.
Lawrence A. Rowe, Joseph A. Konstan, Brian C. Smith, Steve Seitz, and Chung Liu. The PICASSO application framework. In 14th ACM Symposium on User Interface Software and Technology, pages 95–106, 1991.
Guy L. Steele Jr. Common Lisp the Language. Digital Press, 1990.
W. P. Stevens, G. J. Myers, and L. L. Constantine. Structured design. IBM Systems Journal, 13(2):115–139, 1974.
Mark Weiser. Source code. IEEE Computer, 20(11):66–73, 1987.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1996 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Griswold, W.G., Bowdidge, R.W. (1996). Program restructuring via design-level manipulation. In: Lamb, D.A. (eds) Studies of Software Design. WSSD 1993. Lecture Notes in Computer Science, vol 1078. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0030525
Download citation
DOI: https://doi.org/10.1007/BFb0030525
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-61285-8
Online ISBN: 978-3-540-68434-3
eBook Packages: Springer Book Archive