Skip to main content

Program restructuring via design-level manipulation

  • Tools
  • Conference paper
  • First Online:
Studies of Software Design (WSSD 1993)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1078))

Included in the following conference series:

  • 146 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Fredrick P. Brooks Jr. No Silver Bullet: essence and accidents of software engineering. IEEE Computer, 20(4):10–19, 1987.

    Google Scholar 

  2. R. K. Dybvig. The Scheme Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1987.

    Google Scholar 

  3. Peter Eades. A heuristic for graph drawing. Congressum Numerantium, 42:149–160, 1984.

    Google Scholar 

  4. William G. Griswold. Program Restructuring to Aid Software Maintenance. PhD thesis, University of Washington, 1991.

    Google Scholar 

  5. William G. Griswold and David Notkin. Computer-aided vs. manual program restructuring. ACM SIGSOFT Software Engineering Notes, 17(1), 1992.

    Google Scholar 

  6. William G. Griswold and David Notkin. Automated assistance for program restructuring. Transactions on Software Engineering and Methodology, 2(3), 1993.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. M. M. Lehman and L. A. Belady. Program Evolution: processes of software change. Academic Press, London, 1985.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. Mark Moriconi and Dwight F. Hare. Visualizing program designs through PegaSys. IEEE Computer, 18(8):72–85, 1985.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, 1972.

    Google Scholar 

  13. Steven P. Reiss. Working in the Garden environment for conceptual programming. IEEE Software, 4(6):16–27, 1987.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. Guy L. Steele Jr. Common Lisp the Language. Digital Press, 1990.

    Google Scholar 

  16. W. P. Stevens, G. J. Myers, and L. L. Constantine. Structured design. IBM Systems Journal, 13(2):115–139, 1974.

    Google Scholar 

  17. Mark Weiser. Source code. IEEE Computer, 20(11):66–73, 1987.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

David Alex Lamb

Rights and permissions

Reprints 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

Publish with us

Policies and ethics