This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
Object-Oriented Software Evolution
April 1993 (vol. 19 no. 4)
pp. 313-343

The authors review propagation patterns for describing object-oriented software at a higher level of abstraction than one used by today's programming languages. A propagation pattern defines a family of programs from which one can select a member by giving a class dictionary graph that details the structure of behavior through part-of and inheritance relationships between classes. Three concepts are introduced: evolution histories, growth-plans and a propagation-directive calculus. Evolution histories describe a sequence of development phases of an object-oriented program, each phase being executable and therefore testable. To keep the programs flexible and short, they are described in terms of propagation patterns. Each phase of an evolution history is tested in small steps that are constrained by class dictionary graphs belonging to a growth-plan. Propagation directives are useful for describing both propagation patterns and growth-plans and are therefore endowed with sufficient expressiveness by being given a formal calculus applicable to object-oriented programming in general. A propagation directive is a succinct description of a family of submodels for a given family of data models.

[1] M. Aksit and L. Bergmans, "Obstacles in object-oriented software development," inProc. Object-Oriented Programming Syst. Languages Applicat. Conf., inSpecial Issue SIGPLAN Notices, Vancouver, CAN., 1992, pp. 341-358.
[2] P. Bergstein, "Object-preserving class transformations," inProc. Object-Oriented Programming Syst. Languages Applicat. Conf., inSpecial Issue SIGPLAN Notices, Phoenix, AZ, vol. 26, no. 11, 1991, pp. 299-313.
[3] E. Berard,Essays on Object-Oriented Software Engineering, Vol. 1, Prentice Hall, Englewood Cliffs, N.J., pp. 182-195.
[4] A. W. Biermann and R. Krishnasawamy, "Constructing programs from example computations,"IEEE Trans. Software Eng.vol. SE-2, no. 3, pp. 141-153, Sept. 1976.
[5] P. Bergstein and K. Lieberherr, "Incremental class dictionary learning and optimization," inProc. European Conf. Object-Oriented Programming, Geneva, Switzerland, 1991, pp. 377-396.
[6] D. Batory and S. O'Malley, "The design and implementation of hierarchical software systems with reusable components,"ACM Trans. Sw Eng. and Methods, vol. 1, no. 4, 1992, pp. 355-398.
[7] G. Booth,Object-Oriented Design with Applications. Redwood City, CA: Benjamin Cummings, 1991.
[8] T. Budd,An Introduction to Object-Oriented Programming, Reading, MA: Addison-Wesley, 1991.
[9] E. Casais, "An incremental class reorganization approach," inProc. European Conf. Object-Oriented Programming, Utrecht, The Netherlands, 1992, pp. 114-132.
[10] B.J. Cox,Object-Oriented Programming: An Evolutionary Approach. Reading, MA: Addison Wesley, 1986.
[11] P. Coad and E. Yourdon, "Object-oriented analysis," Yourdon Press Computing Series, Englewood Cliffs, NJ: Prentice Hall, 1989.
[12] R. A. DeMillo and A. J. Offutt, "Constraint-based automatic test data generation,"IEEE Trans. Software Eng., vol. 17, no. 9, 1991.
[13] C. Delcourt and R. Zicari, "The design of an integrity consistency checker(ICC) for an object-oriented database system," inProc. European Conf. Object-Oriented Programming, Geneva, Switzerland, 1991, pp. 377-396.
[14] Freeman, Peter (ed.). 1987.Tutorial Software Reusability. Washington, D.C., IEEE Computer Society.
[15] M. R. Garey and D. S. Johnson,Computers and Intractability. San Francisco, CA: Freeman, 1979.
[16] J. O. Graver, "The evolution of an object-oriented compiler framework,"Software--Practice and Experience, vol. 22, no. 7, pp. 519-535, July 1992.
[17] R. Helmet al., "Contracts: Specifying behavioral compositions in object-oriented systems," inProc. ECOOP/OOPSLA 90-SIGPLAN Notices, vol. 25, pp. 169-180, Oct. 1990.
[18] W. Harrison and H. Ossher, "Structure-bound messages: separating navigation from processing," submitted for publication, 1991.
[19] I. M. Holland, "Specifying reusable components using contracts," inProc. European Conf. Object-Oriented Programming, Utrecht, Netherlands, 1992, pp. 287-308.
[20] W. L. Hürsch, L. M. Seiter, and C. Xiao, "In any CASE: Demeter,"American Programmer, vol. 4, no. 10, pp. 46-56, Oct. 1991.
[21] J. E. Hopcroft and J. D. Ullman,Introduction to Automata Theory, Languages, and Computation. Reading, MA: Addison-Wesley, 1979.
[22] Jacobson et al., Object-Oriented Software Engineering: A Use-Case Driven Approach, Addison-Wesley, Reading, Mass., 1992.
[23] R. E. Johnson and B. Foote, "Designing reusable classes,"J. Object-Oriented Programming, vol. 1, no. 2, pp. 22-35, June/July 1988.
[24] S. C. Johnson, "Yacc Meets C++,"Computing Syst., J. USENIX Assoc.vol. 1, no. 2, pp. 159-168, Spring 1988.
[25] G. E. Kaiser and D. Garlan, "MELDing data flow and object-oriented programming," inProc. Object-Oriented Programming Syst., Languages Applicat. Conf., inSpecial Issue SIGPLAN Notices, vol. 22, Orlando, Florida, 1987, pp. 254-267.
[26] K.J. Lieberherr, P. Bergstein, and I. Silva-Lepe, "From Objects to Classes: Algorithms for Object-Oriented Design,"J. Software Engineering, Vol. 6, No. 4, July 1991, pp. 205-228.
[27] K. J. Lieberherr and I. Holland, "Assuring good style for object-oriented programs,"IEEE Software, pp. 38-48, Sept. 1989.
[28] K. J. Lieberherr and I. Holland, "Tools for preventive software maintenance," inProc. Cong. Software Maintenance, Miami Beach, FL, Oct. 16-19, 1989, pp. 2-13.
[29] K. J. Lieberherr, W. Hürsch, I. Silva-Lepe, and C. Xiao, "Experience with a graph-based propagation pattern programming tool," inProc. Int. Workshop CASE, Montréal, CAN., 1992, pp. 114-119.
[30] K. J. Lieberherr, "Object-oriented programming with class dictionaries,"J. Lisp Symbolic Computationvol. 1, no. 2, pp. 185-212, 1988.
[31] K. J. Lieberherr, "Component enhancement: an adaptive reusability mechanism for groups of collaborating classes," inJ. Proc. Inform. Processing '92, 12th World Comput. Cong., Madrid, Spain, 1992, pp. 179-185.
[32] K. Lieberherr and C. Woolf, "Grammar-based planning for object-oriented applications," Northeastern Univ. Boston, MA,Tech. Rep.NU-CCS-89-11, Feb. 1989.
[33] K. J. Lieberherr and C. Xiao, "Formal foundations for object-oriented data modeling,"IEEE Trans. Knowl. Data Eng., June 1993.
[34] K. Lieberherr, C. Xiao, and I. Silva-Lepe, "Propagation patterns: graph-based specifications of cooperative behavior," Northeastern University, Boston, MA, Tech. Rep. NU-CCS-91-14, Sept. 1991.
[35] B. Meyers,Object Oriented Software Construction. Englewood Cliffs, NJ: Prentice-Hall, 1988.
[36] V. M. Markowitz and A. Shoshani, "Abbreviated query interpretation in entity-relationship oriented databases," Lawrence Berkeley Lab., Berkeley, CA, 1989.
[37] D. L. Parnas, "Designing software for ease of extension and contraction,"IEEE Trans. Software Eng., vol. SE-5, no. 2, pp. 128-138, Mar. 1979.
[38] R. Prieto-Diaz and J. M. Neighbors, "Module interconnection languages,"J. Syst. Software, vol. 6, no. 4, pp. 307-334, Nov. 1986.
[39] R. Rao, "Implementation reflection in silica," inProc. European Conf. object-Oriented programming, 1991, pp. 251-266.
[40] J. Rumbaugh, "Controlling propagation of operations using attributes on relations," inProc. Object-Oriented Programming Syst. Languages Applicat. Conf., inSpecial Issue SIGPLAN Notices, San Diego, 1988, pp. 285-297.
[41] W. Sägesser, "Documentation for adapted Demeter Tools/Turbo Pascal," AD-APPLI-SOFT, Switzerland, Dec. 1991.
[42] D. Sandberg, "LITHE: a language combining a flexible syntax and classes," inProc. Assoc. Comput. Mach. Symp. Principles Programming Languages, Albuquerque, NM, 1982, pp. 142-145.
[43] D. Tsichritzis and F. Lochovsky,Data Models, Prentice Hall, Englewood Cliffs, N.J., 1982.
[44] R. Wrifs-Brock, B. Wilkerson, and L. Wiener,Designing Object-Oriented Software. Englewood Cliffs, NJ: Prentice-Hall, 1990.
[45] N. Wilde and R. Huitt, "Maintenance Support for Object-Oriented Programs,"Proc. Conf. Software Maintenance, IEEE CS Press, Los Alamitos, Calif., 1991, pp. 162-170.
[46] N. Wirth, "Program development by stepwise refinement,"Commun. ACM, vol. 14, no. 4, pp. 221-227, Apr. 1971.
[47] C. Xiao, "Foundations for adaptive software," Northeastern University, Boston, MA, Ph.D. dissertation in preparation, 1993.
[48] K. Lieberherr, I. Silva-Lepe, and C. Xiao, "Adaptive object-oriented programming using graph-based customization,"Commun. Assoc. Comput. Mach., to be published, 1993.

Index Terms:
object-oriented software evolution; propagation patterns; class dictionary graph; inheritance relationships; evolution histories; growth-plans; propagation-directive calculus; formal calculus; submodels; data models; object-oriented programming
Citation:
K.J. Lieberherr, C. Xiao, "Object-Oriented Software Evolution," IEEE Transactions on Software Engineering, vol. 19, no. 4, pp. 313-343, April 1993, doi:10.1109/32.223802
Usage of this product signifies your acceptance of the Terms of Use.