This Article 
 Bibliographic References 
 Add to: 
Evolution of Object Behavior Using Context Relations
January 1998 (vol. 24 no. 1)
pp. 79-92

Abstract—A collection of design patterns was described by Gamma, Helm, Johnson, and Vlissides in 1994. Each pattern ensures that a certain system aspect can vary over time, for example the operations that can be applied to an object or the algorithm of a method. The patterns are described by constructs such as the inheritance and reference relations, attempting to emulate more dynamic relationships. As a result, the design patterns demonstrate how awkward it is to program natural concepts of evolution when using a traditional object-oriented language. In this paper, we present a new relation between classes: the context relation. It directly models dynamic evolution, and it is meaningful at both the design and implementation level. At the design level we extend the Unified Modeling Language (UML) to include the context relation as a new form of arrow between classes. At the implementation level we present a small extension of Java. The context relation introduces a new form of dynamic binding that serves as a replacement to delegation. We demonstrate how the context relation can be used to easily model and program numerous design patterns.

[1] E. Gamma et al., Design Patterns: Elements of Object-Oriented Software, Addison-Wesley, Reading, Mass., 1994.
[2] G. Booch and J. Rumbaugh, Unified Method for Object-Oriented Development, dstewart.html otuml.html
[3] Sun Microsystems, The Java Language: A White Paper. http:/
[4] M.A. Ellis and B. Stroustrup,The Annotated C++ Reference Manual.Reading, Mass.: Addison-Wesley, 1990.
[5] H. Lieberman, "Using Prototypical Objects to Implement Shared Behavior in Object-Oriented Systems," Proc. of OOPSLA, pp. 214-223, Oct. 1986.
[6] D.G. Bobrow, L.G. DeMichiel, R.P. Gabriel, S.E. Keene, G. Kiczales, and D.A. Moon, "Common Lisp Object System Specification: X3J13 Document 88-002R," vol.23, special issue of SIGPLAN Notices. ACM Press, Sept. 1988.
[7] D. Ungar and R.B. Smith, "Self: The Power of Simplicity," Object-Oriented Programming Systems, Languages and Applications Conf., special issue of SIGPLAN Notices. no. 12, pp. 227-242, ACM, 1987.
[8] L.M. Seiter, J. Palsberg, and K.J. Lieberherr, "Evolution of Object Behavior Using Context Relations," Proc. ACM SIGSOFT'96: The Fourth Symp. Foundations of Software Engineering,San Francisco, Oct. 1996.
[9] C.L. Chang, R.A. Stachowitz, and J.B. Combs, “Validation of Nonmonotonic Knowledge-Based Systems,” Proc. IEEE Int'l Conf. Tools for Artificial Intelligence, Nov. 1990.
[10] I.M. Holland, "The Design and Representation of Object-Oriented Components," PhD thesis, Northeastern Univ., 1993.
[11] H. Ossher et al., "Subject-Oriented Composition Rules," OOPSLA '95, pp. 235-250, 1995.
[12] K.J. Lieberherr and C. Xiao, ”Object-Oriented Software Evolution,” IEEE Trans. Software Eng., vol. 19, no. 4, pp. 313–343, Apr. 1993.
[13] K.J. Lieberherr, Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns, ISBN 0-534-94620-X. Boston: PWS Publishing, 1996.
[14] J. Vlissides, "Visiting Rights," C++ Report, Sept. 1995.
[15] J. Vlissides, "The Trouble with Observer," C++ Report, Sept. 1996.
[16] C. Videira Lopes and K. Lieberherr, "AP/S++: Case-Study of a MOP for Purposes of Software Evolution" Reflection '96,San. Francisco, Apr. 1996.
[17] K. Lieberherr and D. Orleans, Demeter/Java.
[18] I.P. Goldstein and D.G. Bobrow, "Extending Object-Oriented Programming in Smalltalk," Proc. Lisp Conf.,Stanford, Calif., 1980.
[19] J.J. Shilling and P.F. Sweeny,“Three steps to views: Extending the OO paradigm,” Proc. ACM Conf. on Object Oriented Programming, Systems, Languages, and Applications, pp. 353-361,New Orleans, Louisiana, Oct. 1989, ACM.
[20] C. Arapis, "Specifying Object Life-Cycles" Object Management, 1990.
[21] A. Taivalsaari, "Object Oriented Programming with Modes," J. Object-Oriented Programming, vol. 6, no. 3, pp. 25-32, June 1993.
[22] R.E. Johnson and B. Foote, "Designing Reusable Classes," J. Object-Oriented Programming, vol. 1, no. 2, pp. 22-35, June/July 1988.
[23] B. Meyer,“Lessons from the design of the eiffel libraries,” Communications of the ACM,. vol. 33, no. 9, pp. 69-88, Sept. 1990.
[24] G. Booch, Object Oriented Design with Applications, Benjamin/Cummings Publishing Company, Inc., Redwood City, Calif., 1991.
[25] R. Helm, I.M. Holland, and D. Gangopadhyay, "Contracts: Specifying Behavioral Compositions in Object-Oriented Systems," Proc. OOPSLA 90, ACM Press, New York, 1990, pp. 169-180.
[26] C. Xiao, "Adaptive Software: Automatic Navigation Through Partially Specified Data Structures," PhD thesis, Northeastern Univ., 1994.
[27] K.J. Lieberherr and C. Xiao, "Minimizing Dependency on Class Structures with Adaptive Programs," Proc. Int'l Symp. Object Technologies for Advanced Software, S. Nishio and A. Yonezawa, eds., JSSST, Kanazawa, Japan, pp. 424-441, Springer-Verlag, Nov. 1993.
[28] M. Mezini, "Dynamic Object Evolution without Name Collisions," Proc. European Conf. Object-Oriented Programming,Jyvaskyla, Finland, pp. 190-219, Springer-Verlag, 1997.
[29] M. Mezini, "Variation-Oriented Programming Beyond Classes and Inheritance," Ph.D. thesis, Univ. of Siegen, 1997.
[30] B.C. Smith, "Reflection and Semantics in Lisp," Proc. 14th Ann. ACM Symp. Principles of Programming Languages, pp. 23-35, Jan. 1984.
[31] G. Kiczales, J. des Rivières, and D. Bobrow, The Art of the Metaobject Protocol. MIT Press, 1991.
[32] K. Lieberherr, Demeter/Java Experiences. evaluationhp.html, evaluation/gte-labseelc.html
[33] K.J. Lieberherr and B. Patt-Shamir, "Traversals of Object Structures: Specification and Efficient Implementation," Technical Report NU-CCS-97-15, College of Computer Science, Northeastern Univ., Boston, Sept. 1997.
[34] J. Palsberg, C. Xiao, and K. Lieberherr, "Efficient Implementation of Adaptive Software," ACM Trans. Programming Languages and Systems, vol. 17, no. 2, pp. 264-292, Mar. 1995.
[35] M.J. Harrold, J.D. McGregor, and K.J. Fitzpatrick, Incremental Testing of Object-Oriented Class Structures Proc. 14th IEEE Int'l Conf. Software Eng. (ICSE), pp. 68-80, May 1992.
[36] M. Abadi and L. Cardelli, “An Imperative Object Calculus,” Proc. Sixth Int'l Joint Conf. Theory and Practice of Software Development (TAPSOFT '95), 1995.
[37] L.M. Seiter, "Design Patterns for Managing Evolution," PhD thesis, Northeastern Univ., Sept. 1996.

Index Terms:
Dynamic behavior, method update, dynamic dispatch.
Linda M. Seiter, Jens Palsberg, Karl J. Lieberherr, "Evolution of Object Behavior Using Context Relations," IEEE Transactions on Software Engineering, vol. 24, no. 1, pp. 79-92, Jan. 1998, doi:10.1109/32.663999
Usage of this product signifies your acceptance of the Terms of Use.