Results 1 -
8 of
8
Refactoring Object-Oriented Frameworks
, 1992
"... This thesis defines a set of program restructuring operations (refactorings) that support the design, evolution and reuse of object-oriented application frameworks. The focus of the thesis is on automating the refactorings in a way that preserves the behavior of a program. The refactorings are defin ..."
Abstract
-
Cited by 327 (4 self)
- Add to MetaCart
This thesis defines a set of program restructuring operations (refactorings) that support the design, evolution and reuse of object-oriented application frameworks. The focus of the thesis is on automating the refactorings in a way that preserves the behavior of a program. The refactorings are defined to be behavior preserving, provided that their preconditions are met. Most of the refactorings are simple to implement and it is almost trivial to show that they are behavior preserving. However, for a few refactorings, one or more of their preconditions are in general undecidable. Fortunately, for some cases it can be determined whether these refactorings can be applied safely. Three of the most complex refactorings are defined in detail: generalizing the inheritance hierarchy, specializing the inheritance hierarchy and using aggregations to model the relationships among classes. These operations are decomposed into more primitive parts, and the power of these operations is discussed from the perspectives of automatability and usefulness in supporting design. Two design constraints needed in refactoring are class invariants and exclusive components. These constraints are needed to ensure that behavior is preserved across some refactorings. This thesis gives some conservative algorithms for determining whether a program satisfies these constraints, and describes how to use this design information to refactor a program.
Object-Preserving Class Transformations
- IN OBJECT-ORIENTED PROGRAMMING SYSTEMS, LANGUAGES AND APPLICATIONS CONFERENCE, IN SPECIAL ISSUE OF SIGPLAN NOTICES
, 1991
"... Reorganization of classes for object-oriented programming and object-oriented database design has recently received considerable attention in the literature. In this paper a small set of primitive transformations is presented which forms an orthogonal basis for object-preserving class reorganization ..."
Abstract
-
Cited by 45 (2 self)
- Add to MetaCart
Reorganization of classes for object-oriented programming and object-oriented database design has recently received considerable attention in the literature. In this paper a small set of primitive transformations is presented which forms an orthogonal basis for object-preserving class reorganizations. This set is proven to be correct, complete, and minimal. The primitive transformations help form a theoretical basis for class organization and are a powerful tool for reasoning about particular organizations.
Class Management for Software Communities
, 1990
"... Object-oriented programming is considered in the context of software communities -- groups of designers and developers sharing knowledge and experience. One way of fostering reuse of this experience is by establishing large collections of reusable object classes. Resulting problems include: Clas ..."
Abstract
-
Cited by 31 (7 self)
- Add to MetaCart
Object-oriented programming is considered in the context of software communities -- groups of designers and developers sharing knowledge and experience. One way of fostering reuse of this experience is by establishing large collections of reusable object classes. Resulting problems include: ClasspacsOX6/ andcAO7 organization -- how can classes and their methods be represented to simplify reuse. Classselec7X' and exploration -- what query and browsing facilities are needed by developers in order to facilitate software reuse. Class evolution -- how may the class hierarchy be reorganized as a result of changes introduced by developers. These issues are illustrated by examining prototype tools and systems intended to aid object-oriented programming.
Incremental Class Dictionary Learning and Optimization
- IN EUROPEAN CONFERENCE ON OBJECT-ORIENTED PROGRAMMING
, 1991
"... We have previously shown how the discovery of classes from objects can be automated, and how the resulting class organization can be efficiently optimized in the case where the optimum is a single inheritance class hierarchy. This paper extends our previous work by showing how an optimal class dict ..."
Abstract
-
Cited by 22 (13 self)
- Add to MetaCart
We have previously shown how the discovery of classes from objects can be automated, and how the resulting class organization can be efficiently optimized in the case where the optimum is a single inheritance class hierarchy. This paper extends our previous work by showing how an optimal class dictionary can be learned incrementally. The ability to expand a class organization incrementally as new object examples are presented is an important consideration in software engineering.
From objects to classes: Algorithms for optimal object-oriented design
- Software Engineering Journal
, 1993
"... The contributions of this paper are two-fold: First we introduce a novel, axiomatically defined, object-oriented data model, called the Demeter kernel model, and second we present abstraction and optimization algorithms and their relationships for designing classes from objects in the kernel mode ..."
Abstract
-
Cited by 22 (2 self)
- Add to MetaCart
The contributions of this paper are two-fold: First we introduce a novel, axiomatically defined, object-oriented data model, called the Demeter kernel model, and second we present abstraction and optimization algorithms and their relationships for designing classes from objects in the kernel model. We analyze several computational problems underlying the class design process which is divided into two phases: a learning phase and an optimization phase. This study focuses on approximation algorithms for the optimization phase and leads to a better understanding and a partial automation of the object-oriented design process. The algorithms and the theory presented in this paper have been implemented in the C++ Demeter System TM , a CASE tool for object-oriented design and programming. Keywords: Object-oriented programming and design, reverse engineering, formal software engineering techniques, class hierarchy optimization. Acknowledgements: Preliminary versions of this paper ...
MultiPerspectives: Object Evolution and Schema Modification Management for Object-Oriented Databases
, 1995
"... Object-oriented databases (OODBs) are believed to more naturally reflect the behavior and organization of complex application domains. The schema consists of a collection of classes, organized into hierarchies which nicely organize abstractions over the domain. Objects are created as instances of cl ..."
Abstract
-
Cited by 16 (3 self)
- Add to MetaCart
Object-oriented databases (OODBs) are believed to more naturally reflect the behavior and organization of complex application domains. The schema consists of a collection of classes, organized into hierarchies which nicely organize abstractions over the domain. Objects are created as instances of classes, encapsulating data and interpretation of data together. An important characteristic is the support for evolutionary programming, and so that existing programs may be extended with new classes without affecting other parts of the system.
Managing the Evolution of Object-Oriented Systems
, 1994
"... ii Class organizations (schemas) evolve over the life cycle of object-oriented systems for avariety of reasons. This issue has recently been a subject of increasing attention in the literature of both object-oriented languages and object-oriented database systems. One of the most common forms of evo ..."
Abstract
-
Cited by 14 (1 self)
- Add to MetaCart
ii Class organizations (schemas) evolve over the life cycle of object-oriented systems for avariety of reasons. This issue has recently been a subject of increasing attention in the literature of both object-oriented languages and object-oriented database systems. One of the most common forms of evolution involves the extension of an existing system by addition of new classes of objects or the addition of attributes to the original objects. Sometimes class structures are reorganized even when the set of objects is unchanged. In this case the reorganization might represent an optimization of the system, or just a change in the users ' perspective. At the other extreme, a class reorganization might re ect not only the extension and reclassi cation of existing objects, but also structural changes (other than addition of attributes) in the original objects. This work provides a mathematical treatment of a calculus of class transformations. Three kinds of transformations that commonly occur in the evolution of class structures are considered: object-extending, object-preserving, and language-preserving. For each kind of transformation, methods for automating the maintenance of systems based on the evolving class structure are discussed. The language-preserving transformations are a special case of transformations that change the structure of existing objects. If an object schema is decorated with concrete syntax, it de nes not only a class structure, but also a language for describing the objects. When two schemas de ne the same language but di erent classes, the language may be used to guide the discovery of analogies between the classes. The resulting analogies may then be used to transport functionality between domains. iii Acknowledgments Iwould like to thank my advisor, Karl Lieberherr, for his generous support, guidance, and feedback. I would also like to thank my wife, Vickie, for her constant encouragement and understanding without which thiswork would not have been possible. iv
Techniques for Reverse-Engineering and Re-Engineering into the Object-Oriented Paradigm
, 1994
"... In order to design and develop object-oriented programs, one must experience what is known as a "paradigm shift". This shift requires that one do not think in terms of the procedures that a software system must perform, but rather in terms of the entities or objects that participate in the system. A ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
In order to design and develop object-oriented programs, one must experience what is known as a "paradigm shift". This shift requires that one do not think in terms of the procedures that a software system must perform, but rather in terms of the entities or objects that participate in the system. As programmers experience a paradigm shift, so must existing software systems somehow be transformed into object-orientation if they are to benefit from object-oriented features.

