This Article 
 Bibliographic References 
 Add to: 
Tool Support for Planning the Restructuring of Data Abstractions in Large Systems
July 1998 (vol. 24 no. 7)
pp. 534-558

Abstract—Restructuring software to improve its design can lower software maintenance costs. One problem encountered during restructuring is formulating the new design. A meaning-preserving program restructuring tool with a star diagram manipulable visualization can help a programmer redesign a program based on abstract data types. However, the transformational support required for meaning-preserving restructuring is costly to provide. Also, programmers encounter comprehension and recall difficulties in complex restructuring tasks. Consequently, transformations were replaced with visual and organizational aids that help a programmer to plan and carry out a complex restructuring. For example, a star diagram manipulation called trimming was added, which mimics the way that basic restructuring transformations affect the star diagram display, allowing a programmer to plan a restructuring without depending upon restructuring transformations. With the ability to annotate trimmed star diagram components, plans can be recorded and later recalled. Programmer-controlled elision was added to help remove clutter from star diagram views. We implemented a star diagram planning tool for C programs, measured its elision capabilities, and performed a programmer study. We found that elision is effective in controlling star diagram size, and the study revealed that each programming team successfully planned its restructuring in rather different, unanticipated ways. These experiments resulted in important improvements in the tool's software design and user interface.

[1] S. Adams, "Pirate's Adventure," Byte, vol. 5, no. 12, pp. 192-212, Dec. 1980.
[2] D. Atkinson and W. Griswold, “The Design of Whole-Program Analysis Tools,” Proc. 18th Int'l Conf. Software Eng., pp. 16–27, 1996.
[3] T. Ball and S.G. Eick, "Visualizing Program Slices," in IEEE/CS Symp. Visual Languages, IEEE CS Press, Los Alamitos, Calif., 1994, pp. 288-295.
[4] L.A. Belady and M.M. Lehman, "Programming System Dynamics or the Metadynamics of Systems in Maintenance and Growth," Research Report RC3546, IBM, 1971. Reprinted in M. M. Lehman, L.A. Belady, eds., Program Evolution: Processes of Software Change, ch. 5, APIC Studies in Data Processing no. 27. London: Academic Press, 1985.
[5] W.R. Bischofberger, "Sniff—a Pragmatic Approach to a C++ Programming Environment," Proc. USENIX C++ Technical Conf., pp. 67-81,Portland, Ore., Aug. 1992.
[6] B.W. Boehm, "The High Cost of Software," E. Horowitz, ed., Practical Strategies for Developing Large Software Systems, pp. 3-15.Reading, Mass.: Addison-Wesley, 1975.
[7] R. W. Bowdidge and W. G. Griswold,“Automated support for encapsulating abstract data types,”inACM SIGSOFT '94 Symposium on the Foundations of Software Engineering,Dec. 1994, pp. 97–110.
[8] R.W. Bowdidge and W.G. Griswold, “How Software Tools Organize Programmer Behavior During the Task of Data Encapsulation,” Empirical Software Eng., vol. 2, no. 3, pp. 221–267, 1997.
[9] R.W. Bowdidge and W.G. Griswold, "Supporting the Restructuring of Data Abstractions Through Manipulation of a Program Visualization," ACM Trans. Software Eng. and Methodology, vol. 7, no. 2, Apr. 1998.
[10] R. Bowdidge, "Supporting the Restructuring of Data Abstractions through Manipulation of a Program Visualization," PhD dissertation, Technical Report CS95-457, Dept. of Computer Science and Engineering, Univ. of California, San Diego, Nov. 1995.
[11] A. Brighton, "The Tree Widget," Tcl/Tk Tools, ch. 10. Cambridge, U.K.: O'Reilly, 1997.
[12] L. Brothers, "omega[A Complex, Rogue-Like Game of Dungeon Exploration], © 1989. Available from: .
[13] C.M. Brown, Human-Computer Interface Design Guidelines.Norwood, N.J.: Ablex Publishing Corp., 1988.
[14] J.C. Cabaniss, "Lessons Learned from Applying HCI Techniques to the Redesign of a User Interface," masters thesis, Technical Report CS97-548, Dept. of Computer Science and Engineering, Univ. of California, San Diego, June 1997.
[15] J. Carroll, Designing Interaction: Psychology at the Human-Computer Interface. Cambridge Univ., New York, 1991.
[16] M.I. Chen, "A Tool for Planning the Restructuring of Data Abstractions in Large Systems," masters thesis, Technical Report CS96-472, Dept. of Computer Science and Engineering, Univ. of California, San Diego, Feb. 1996.
[17] S.G. Eick, J. Steffen, and E. Sumner, Jr., “SeeSoft—A Tool for Visualizing Line-Oriented Software Statistics,” IEEE Trans. Software Eng., vol. 18, no. 11, pp. 957–968, Nov. 1992.
[18] N.V. Flor and E.L. Hutchins, "Analyzing Distributed Cognition in Software Teams: A Case Study of Team Programming During Perfective Software Maintenance," J. Koenemann-Belliveau, T.G. Moher, and S.P. Robertson, eds, Proc. Empirical Studies of Programmers: Fourth Workshop, pp. 36-64.Norwood N.J.: Ablex, 1991.
[19] N. Flor, "Dynamic Organization in MultiAgent Distributed Cognitive Systems," PhD dissertation, Dept. of Cognitive Science, Univ. of California, San Diego, 1994.
[20] D.R. Gentner and J. Grudin, "Design Models for Computer-Human Interaction," Computer, vol. 29, no. 6, pp. 28-35, 1996.
[21] W. G. Griswold and D. Notkin,“Automated assistance for program restructuring,”ACM Trans. Software Eng. and Method.,vol. 2, no. 3, pp. 228–269, July 1993.
[22] W. G. Griswold,“Program Restructuring as an Aid to Software Maintenance,”Ph.D. dissertation, Univ. Washington, Dep. Comput. Sci. Eng., Tech. Rep. 91-08-04, Aug. 1991.
[23] W.G. Griswold, D.C. Atkinson, and C. McCurdy, “Fast, Flexible Syntactic Pattern Matching and Processing,” Proc. IEEE 1996 Workshop Program Comprehension, Mar. 1996.
[24] W. Griswold, M. Chen, R. Bowdidge, and J. Morgenthaler, “Tool Support for Planning the Restructuring of Data Abstractions in Large Systems,” Proc. Int'l Conf. Foundations of Software Eng., pp. 33–45, 1996.
[25] Ralph E. Johnson and William F. Opdyke,“Refactoring and aggregation,”inObject Technologies for Advanced Software. First JSSST Int. Symp., Nov. 1993, vol. 742 ofLecture Notes in Computer Science,pp. 264–278.
[26] J. Knight and E.A. Myers, "An Improved Inspection Technique," Comm. ACM, vol. 36, no. 11, pp. 51-61, Nov. 1993.
[27] B.P. Lientz and E.B. Swanson, Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations, Addison Wesley Longman, Reading, Mass., 1980.
[28] B. Liskov and S. Zilles, "Programming with Abstract Data Types," ACM SIGPLAN Symp. Very High Level Languages, SIGPLAN Notices, vol. 9, no. 4, pp. 50-59, Mar. 1974.
[29] N. Miyake, "Constructive Interaction and the Iterative Process of Understanding," Cognitive Science, vol. 10, no. 2, pp. 151-177, 1986.
[30] S. Moen, "Drawing Interactive Trees," IEEE Software, vol. 7, pp. 21-28, 1990.
[31] J.D. Morgenthaler, "Static Analysis for a Software Transformation Tool," PhD dissertation, Technical Report CS97-552, Dept. of Computer Science&Engineering, Univ. of California, San Diego, Aug. 1997.
[32] H.A. Muller, S.R. Tilley, M.A. Orgun, B.D. Corrie, and N.H. Madhavji, "A Reverse Engineering Environment Based on Spatial and Visual Software Interconnection Models, Proc. SIGSOFT '92 Fifth Symp. Software Development Environments, Dec. 1992.
[33] V.B. Nguyen, "Impact of Adding Customizability on Software Architecture: A Case Study," masters thesis, Technical Report CS97-523, Dept. of Computer Science and Engineering, Univ. of California, San Diego, Mar. 1997.
[34] R. O'Callahan and D. Jackson, "Lackwit: A Program Understanding Tool Based on Type Inference," Proc. Int'l Conf. Software Engineering, IEEE Computer Soc. Press, Los Alamitos, Calif., 1997, pp. 338-348.
[35] W.F. Opdyke, "Refactoring: A Program Restructuring Aid in Designing Object-Oriented Applications Frameworks," PhD dissertation, Technical Report no. 1759, Dept. of Computer Science, Univ. of Illinois at Urbana-Champaign, 1992.
[36] J. Ousterhout, Tcl and the Tk Toolkit, Addison Wesley Longman, Reading, Mass., 1994.
[37] D.L. Parnas, "On the Criteria to be Used in Decomposing Systems into Software Modules," Comm. ACM, Dec. 1972, pp. 1,053-1,058.
[38] J. Preece et al., Human-Computer Interaction, Addison-Wesley Longman, Reading, Mass., 1994.
[39] R. Stallman, GNU Emacs (The Extensible Self-documenting Text Editor), Free Software Foundation, Cambridge, Mass., Nov. 1993. available by anonymous ftp
[40] B. Steensgaard, “Points-To Analysis in Almost Linear Time,” Proc. Symp. Principles of Programming Languages. pp. 32-41, Jan. 1996.
[41] K.E. Weick, "Systematic Observational Methods," G. Lindzey and E. Aronson, eds., The Handbook of Social Psychology, pp. 357-451.Reading, Mass.: Addison-Wesley, 1968.
[42] M. Weiser, "Program Slicing," IEEE Trans. Software Eng., vol. 10, no. 4, pp. 352-357, July 1984.
[43] B. Welch, Practical Programming in Tcl and Tk, second ed. Prentice Hall, 1997.
[44] D. Wildman, “Getting the Most from Paired-User Testing,” ACM Interactions, vol. 2, no. 3, pp. 21–27, 1995.

Index Terms:
Program restructuring, re-engineering, software maintenance and enhancement, abstract data types, modularity and information hiding, graphical user interface design, programmer study.
William G. Griswold, Morison I. Chen, Robert W. Bowdidge, Jenny L. Cabaniss, Van B. Nguyen, J. David Morgenthaler, "Tool Support for Planning the Restructuring of Data Abstractions in Large Systems," IEEE Transactions on Software Engineering, vol. 24, no. 7, pp. 534-558, July 1998, doi:10.1109/32.708568
Usage of this product signifies your acceptance of the Terms of Use.