For object oriented software, evolution often requires changes to the underlying class hierarchy structures of the program in terms of classes, inheritance and association relationships, fields and operations. These revisions unnecessarily burden the ...
For object oriented software, evolution often requires changes to the underlying class hierarchy structures of the program in terms of classes, inheritance and association relationships, fields and operations. These revisions unnecessarily burden the implementation process and are due to the fact that some design information is only implicitly present in the class hierarchy. With this in mind, software engineers try to redesign and/or reprogram existing softwares with minimal modifications on the class hierarchy structures so that software can be refined and reused easily.
This article discusses the evolution of object-oriented softwares modeled by Object Implementation Graphs, which completely represents the class hierarchies from a programming language perspective using nodes, arcs and labels. Based on the Object Implementation Graph, we present a set of lower level primitive transformations that provide a means for management and useful guidelines of object-oriented software evolution. We also propose the higher level transformations which are designed to succinctly express broader kinds of class hierarchy changes as might be envisaged on a software design level. Each higher level transformation is expanded into a program of lower level primitives for execution.