Abstract
Object-oriented19 programming has many advantages over the non-objected oriented, such as information hiding, inheritance, polymorphism, and dynamic binding. While conventional languages implement information hiding by procedure20 and abstract data type, OO programming languages extend information hiding by class and object, which allows users only to see what a class lets them see from the outside of a class. When the implementation of a class changes, if the corresponding public methods and their variables remain the same, the changes are limited within the class only. By reducing the degree of interconnectedness between separate elements of a software system, the principle of information hiding helps in the development of reliable software [31]. In conventional languages, abstract data types can be good candidates as the units to be reused. However, there are two problems to this approach. First, the existing abstract data types are not quite right for new use and require at least some modification. Second, almost all abstract data type definitions are independent and at the same level, which often makes it impossible to structure a program to fit the problem space that the program addresses [40]. On the other hand, inheritance in OO languages is a reasonable solution to these two problems. By inheriting, classes can be organized into a hierarchical inheritance tree.
Hereafter, we use OO as the abbreviation for Object-Oriented.
The terms “procedure” and “function” are used interchangeably.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
H. Agrawal, “Dominators, Super Blocks, and Program Coverage,” Proceedings of the 21 st Symposium on Principles of Programming Languages, pp. 25–34, Portland, OR, January 1994.
Agrawal, J. R. Horgan, J. J. Li, and W. E. Wong, “Mining System Tests to Aid Software Maintenance,” IEEE Computer, 31(7):64–73, July 1998.
T. Budd, “An Introduction to Object-Oriented Programming,” Addison-Wesley, 1991.
Deursen and T. Kuipers, “Finding Classes in Legacy Code Using Cluster Analysis,” ESEC/FSE′97 Workshop on Object-Oriented Reengineering, Zurich, Switzerland, September 1997.
R. Fanta and V. Rajlich, “Reengineering Object-Oriented code,” Proceedings of International Conference on Software Maintenance, Bethesda, Maryland, March 1998.
U. Gleich and T. Kohler, “Tool-support for Reengineering of Object-Oriented Systems,” ESEC/FSE′97 Workshop on Object-Oriented Reengineering, Zurich, Switzerland, September 1997.
N. A. Gonzalez, C. Czarnecki, and S. Pidaparthi, “Migrating Software from Procedural to Object-Oriented Architecture,” Proceedings of International Conference on Systems, Man and Cybernetics, pp. 4872–4877, San Diego, CA, October 1998.
J. R. Horgan and S. A. London, “Data Flow Coverage and the C Language,” Proceedings of the 4th Symposium on Software Testing, Analysis, and Verification, pp. 87–97, Victoria, British Columbia, Canada. October 1991.
J. J. Li and W. E. Wong, “Automatic Test Generation from Communicating Extended Finite State Machine (CEFSM)-Based Models,” Proceedings of the 5 th International Symposium on Object-Oriented Real-Time Distributed Computing, pp. 181–185, Washington D. C, May 2002.
J. Martin and H. A. Muller, “C to Java Migration Experiences,” Proceedings of the 6 th European Conference on Software Maintenance and Reengineering, pp. 143–153, Budapest, Hungary, March 2002.
W. J. Park, S. Y. Min and D. H. Bae, “Object-Oriented Model Refinement Technique in Software Reengineering,” Proceedings of the 22 nd International Computer Software and Applications Conference, pp. 32–38, Vienna, Austria, August 1998.
R. W. Sebesta, “Concepts of Programming Languages,” Addison Wesley, 2002.
G. Trausmuth and R. Knor, “Reengineering of C/C++ Programs using Generic Components,” ESEC/FSE′97 Workshop on Object-Oriented Reengineering, Zurich, Switzerland, September 1997.
“χSuds User’s Manual,” Telcordia Technologies, Morristown, New Jersey, 1998.
N. Wilde and M. S. Scully, “Software Reconnaissance: Mapping Program Features to Code,” Software Maintenance: Research and Practice, 7(l):49–62, January 1995.
K. Wong, “The Rigi User’s Manual - Version 5.4.4,” Department of Computer Science, University of Victoria, Canada, June 1998.
W. E. Wong, S. S. Gokhale, J. R. Horgan, and K. S. Trivedi, “Locating Program Features using Execution Slices,” Proceedings of Symposium on Application-Specific Systems and Software Engineering Technology, Richardson, Texas, March, 1999.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer Science+Business Media New York
About this chapter
Cite this chapter
Wong, W.E., Li, J. (2003). Use of Visualization to Aid Object-Oriented Redesign. In: Zhang, K. (eds) Software Visualization. The Springer International Series in Engineering and Computer Science, vol 734. Springer, Boston, MA. https://doi.org/10.1007/978-1-4615-0457-3_13
Download citation
DOI: https://doi.org/10.1007/978-1-4615-0457-3_13
Publisher Name: Springer, Boston, MA
Print ISBN: 978-1-4613-5086-6
Online ISBN: 978-1-4615-0457-3
eBook Packages: Springer Book Archive