Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Computer-aided vs. manual program restructuring

Published: 01 January 1992 Publication History

Abstract

Restructuring a software system as it evolves promises to reduce associated maintenance costs. To simplify restructuring, we have developed a tool that preserves the meaning of a program as the engineer applies structural transformations. To help evaluate the prototype tool and its underlying approach, we ran an experiment to compare how people using standard editing tools restructure a program against the computer-aided style that our tool supports.We drew three conclusions from the experiment. First, the subjects generally used a mix of copy/paste and cut/paste editing paradigms; our tool gives the engineer the safety of copy/paste and the speed of cut/paste. Second, most of the subjects made mistakes, including simple syntactic errors and semantic errors (such as not updating the call site after modifying a function definition); our tool avoids errors by the engineer using compensation (for instance, it automatically updates call sites when a procedure definition is changed) or by signalling an error. Third, manual restructuring tends to be haphazard, with engineers handling the order of changes, testing, etc. in inconsistent and potentially error-prone ways; by separating restructuring from functional maintenance and by ensuring preservation of meaning during restructuring, our approach can make the maintenance process more orderly.

References

[1]
[Burke & Ryder 90] M. Burke and B. G. Ryder. A critical analysis of incremental iterative data-flow algorithms. IEEE Transactions on Software Engineering , SE-16(7), July 1990.
[2]
[DeMillo et al. 79] R. DeMillo, R. Lipton, and A. Perlis. Social processes and proofs of theorems and programs. Communications of the ACM, 22(5), May 1979.
[3]
[Dijkstra 72] E. Dijkstra. Notes on Structured Programming, pages 1-82. Academic Press, New York, 1972.
[4]
[Donzeau-Gouge et al. 80] V. Donzeau-Gouge et al. Programming environments based on structure editors: the mentor experience. Technical Report 26, INRIA, May 1980.
[5]
[Dybvig 87] R. K. Dybvig. The Scheme Programming Language . Prentice-Hall, PRHALLAddr, 1987.
[6]
[Griswold & Notkin 90] W. Griswold and D. Notkin. Program restructuring to aid software maintenance. Technical Report 90-08-05, University of Washington, Dept. of Computer Science & Engineering, 1990. Revised January 1991.
[7]
[Griswold 91] W. G. Griswold. Program Restructuring to Aid Software Maintenance. PhD dissertation, University of Washington, Dept. of Computer Science & Engineering, 1991. To appear.
[8]
[Habermann & Notkin 86] A. N. Habermann and D. Notkin. Gandalf software development environments. IEEE Transactions on Software Engineering, 12(12):1117-1127, December 1986.
[9]
[Larus 89] J. R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD dissertation, UC Berkeley Computer Science, May 1989. Also Technical Report No. UCB/CSD 89/502.
[10]
[Lehman 78] M. M. Lehman. Laws of program evolution-rules and tools for programming management. In Proceedings of the Infotech State of the Art Conference: 'Why Software Projects Fail', 1978. Page citations from reprint in M. M. Lehman, L. A. Belady, editors, Program Evolution: Processes of Software Change, Ch. 12, APIC Studies in Data Processing No. 27. Academic Press, London, 1985.
[11]
[Parnas 72] D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications off the ACM, 15(12):1053-58, December 1972.
[12]
[Teitelbaum & Reps 81] T. Teitelbaum and T. Reps. The cornell program synthesizer: A syntax-directed programming environment. Communications of the ACM, 24(9):563-573, September 1981.

Cited By

View all
  • (2008)Context-sensitive cut, copy, and pasteProceedings of the 2008 C3S2E conference10.1145/1370256.1370283(159-166)Online publication date: 12-May-2008
  • (2005)Program restructuring via design-level manipulationStudies of Software Design10.1007/BFb0030525(127-139)Online publication date: 2-Jun-2005
  • (2002)A formal pattern language for refactoring of Lisp programsProceedings of the Sixth European Conference on Software Maintenance and Reengineering10.1109/CSMR.2002.995803(186-192)Online publication date: 2002
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGSOFT Software Engineering Notes
ACM SIGSOFT Software Engineering Notes  Volume 17, Issue 1
Jan. 1992
44 pages
ISSN:0163-5948
DOI:10.1145/134292
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 January 1992
Published in SIGSOFT Volume 17, Issue 1

Check for updates

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)35
  • Downloads (Last 6 weeks)2
Reflects downloads up to 09 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2008)Context-sensitive cut, copy, and pasteProceedings of the 2008 C3S2E conference10.1145/1370256.1370283(159-166)Online publication date: 12-May-2008
  • (2005)Program restructuring via design-level manipulationStudies of Software Design10.1007/BFb0030525(127-139)Online publication date: 2-Jun-2005
  • (2002)A formal pattern language for refactoring of Lisp programsProceedings of the Sixth European Conference on Software Maintenance and Reengineering10.1109/CSMR.2002.995803(186-192)Online publication date: 2002
  • (1998)Supporting the restructuring of data abstractions through manipulation of a program visualizationACM Transactions on Software Engineering and Methodology10.1145/279310.2793127:2(109-157)Online publication date: 1-Apr-1998
  • (1997)How Software Engineering Tools Organize Programmer Behavior During the Task of Data EncapsulationEmpirical Software Engineering10.1023/A:10097160166932:3(221-267)Online publication date: 1-Mar-1997
  • (1994)Automated support for encapsulating abstract data typesACM SIGSOFT Software Engineering Notes10.1145/195274.19529819:5(97-110)Online publication date: 1-Dec-1994
  • (1994)Automated support for encapsulating abstract data typesProceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering10.1145/193173.195298(97-110)Online publication date: 1-Dec-1994
  • (1993)Automated assistance for program restructuringACM Transactions on Software Engineering and Methodology10.1145/152388.1523892:3(228-269)Online publication date: 1-Jul-1993

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media