Results 1 - 10
of
22
Adaptive Object-Oriented Programming using Graph-Based Customization
- Communications of the ACM
, 1994
"... Object-oriented programs are easier to extend than programs which are not written in an object-oriented style, but object-oriented programs are still very rigid and hard to adapt and maintain. In this article, we introduce adaptive object-oriented programming as an extension to conventional object-o ..."
Abstract
-
Cited by 75 (20 self)
- Add to MetaCart
Object-oriented programs are easier to extend than programs which are not written in an object-oriented style, but object-oriented programs are still very rigid and hard to adapt and maintain. In this article, we introduce adaptive object-oriented programming as an extension to conventional object-oriented programming. Adaptive object-oriented programming facilitates expressing the elements - classes and methods - that are essential to an application by avoiding to make a commitment on the particular class structure of the application. Adaptive programs are specified using propagation patterns which specify sets of related constraints on class structures. An adaptive program denotes an entire family of programs, as many programs as there are class structures which satisfy its constraints. A class structure which satisfies the constraints of an adaptive program is said to customize the program. Adaptive programming, realized by the use of propagation patterns, offers a new paradigm, ext...
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.
Formal Foundations for Object-Oriented Data Modeling
- IEEE Transactions on Knowledge and Data Engineering
, 1993
"... We give an axiomatic definition of the basic structure, called a class dictionary graph, used by object-oriented designers and programmers during the software development process. The contributions of this paper are twofold: An axiomatic foundation for objectoriented data modeling and efficient a ..."
Abstract
-
Cited by 28 (17 self)
- Add to MetaCart
We give an axiomatic definition of the basic structure, called a class dictionary graph, used by object-oriented designers and programmers during the software development process. The contributions of this paper are twofold: An axiomatic foundation for objectoriented data modeling and efficient algorithms for checking whether a given data model satisfies the axioms. The presented data model is the foundation of a number of techniques for developing object-oriented systems including adaptive software, schema abstraction from object examples, schema optimization, planning techniques for system development, the Law of Demeter, etc. Keywords: Object-oriented data modeling and programming, algorithms and tools for objectoriented design, axioms for data models, Demeter Method. 1 Introduction In object-oriented data modeling and programming, each entity of the problem domain is represented by a set of objects with relations and operations. Each object is composed of part objects/su...
Object-extending Class Transformations
- Formal Aspects of Computing, the International Journal of Formal Methods
, 1991
"... Reorganization and evolution of class hierarchies is important for object-oriented system development and has received considerable attention in the literature. The contributions of this paper are: (1) A formal study of a set of extension relations and transformations on class hierarchies. (2) A pre ..."
Abstract
-
Cited by 27 (10 self)
- Add to MetaCart
Reorganization and evolution of class hierarchies is important for object-oriented system development and has received considerable attention in the literature. The contributions of this paper are: (1) A formal study of a set of extension relations and transformations on class hierarchies. (2) A presentation of a small set of primitive transformations which form a minimal and complete basis for the extension relations. (3) An analysis of the impact of these transformations on the object level. The study leads to a better understanding of evolution and reuse of object-oriented software and class hierarchies. It also provides a terminology and a means of classification for design reuse. The theory presented in this paper is based on the Demeter data model, which gives a concise mathematical foundation for classes and their inheritance and part-of relationships. Parts of the theory have been implemented in the Demeter System TM C++, a CASE tool for object-oriented design and 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 ...
Abstraction of Object-Oriented Data Models
- In Hannu Kangassalo, editor, Proceedings of International Conference on Entity-Relationship
, 1990
"... ion of Object-Oriented Data Models Karl J. Lieberherr, Paul Bergstein, Ignacio Silva-Lepe Northeastern University, College of Computer Science Cullinane Hall, 360 Huntington Ave., Boston MA 02115 lieber@corwin.CCS.northeastern.EDU phone: (617) 437 20 77 Abstract The contributions of this pape ..."
Abstract
-
Cited by 20 (12 self)
- Add to MetaCart
ion of Object-Oriented Data Models Karl J. Lieberherr, Paul Bergstein, Ignacio Silva-Lepe Northeastern University, College of Computer Science Cullinane Hall, 360 Huntington Ave., Boston MA 02115 lieber@corwin.CCS.northeastern.EDU phone: (617) 437 20 77 Abstract 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 outline several computational problems underlying the bottom-up design process in the kernel model. Specifically, we sketch a fast algorithm, called SMCDL-A, for abstracting a single inheritance class hierarchy from object examples. SMCDL-A "invents" abstract classes to minimize the total size of the classes which generalize the object examples. SMCDL-A provides a formal solution to the bottom-up design problem which so far only has been addressed informally. SMCDL-A has applications to object-oriented design, conceptual scheme design for objec...
Component Enhancement: An Adaptive Reusability Mechanism for Groups of Collaborating Classes
- INFORMATION PROCESSING '92, 12TH WORLD COMPUTER CONGRESS
, 1992
"... We enhance the Demeter Method for object-oriented software development with the component model for describing the evolution of groups of collaborating classes. The model is based on class dictionary graphs [LBSL91, Ber91] and reusable behavior descriptions which are expressed by propagation in c ..."
Abstract
-
Cited by 20 (15 self)
- Add to MetaCart
We enhance the Demeter Method for object-oriented software development with the component model for describing the evolution of groups of collaborating classes. The model is based on class dictionary graphs [LBSL91, Ber91] and reusable behavior descriptions which are expressed by propagation in class dictionary graphs [LXSL91]. Our experience demonstrates that the component model lifts programming to a higher level of abstraction, it significantly reduces the size of programs and it makes them resilient to change and therefore we propose a reusability mechanism for components. Components are useful for the development of reusable software libraries, for application development, as well as for recording the history of object-oriented programs. An implementation of propagation patterns, which are an important part of components, and related papers are available by ftp [LBH + 91].
Minimizing Dependency on Class Structures with Adaptive Programs
- International Symposium on Object Technologies for Advanced Software
, 1993
"... Adaptive software is a new kind of generic software which attempts to minimize and localize dependency on the context in which the software will be used. An adaptive program is written in terms of constraints on the customizing context in which the program may be used. The constraints are written ..."
Abstract
-
Cited by 16 (10 self)
- Add to MetaCart
Adaptive software is a new kind of generic software which attempts to minimize and localize dependency on the context in which the software will be used. An adaptive program is written in terms of constraints on the customizing context in which the program may be used. The constraints are written so that they only encode necessary dependencies and at the same time they localize information on groups of collaborating classes. Adaptive software is usually written for a given context in mind and therefore it is important that the adaptive program does not use too much information from the current context. Therefore, we introduce in this paper a dependency metric which measures context dependency between an adaptive program and a customizer. The paper also discusses how constraints on customizing contexts can be written so that information loss is eliminated. 1 Introduction A key feature of object-oriented programming is that methods are attached to classes (C++, Smalltalk, Ei...
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

