Flattening Class Hierarchy for Reorganization of Object-Oriented Software

객체지향 소프트웨어의 재구성을 위한 클래스계층 구조의 평탄화

  • Published : 2001.10.01

Abstract

In the object-oriented software development, redesigning of classes and reorganizing of class hierarchy structures should be necessary to reduce many of the headaches of object-oriented software design and maintenance. To support this task, in this paper, we propose a theoretical foundation for class hierarchy reorganizations that is relatively complete, correct, formal and easy to understand and use. We introduce the flattened class hierarchy that characterizes the class hierarchy structures in object-oriented software evolution. And we also present an algorithm which transforms a given class hierarchy into the normalized form. The flattened class hierarchy helps us map the inheritance and aggregation paths in a class hierarchy to paths in an object hierarchy that is an instance of the class hierarchy. By applying the algorithm into a given class hierarchy, we can make a new, object-preserved, and flattened class hierarchy that is the cornerstone for reorganization of class hierarchy structure and plays an important role as a bridge on the incremental evolutionary changes and reuse of object-oriented software to reorganize class hierarchies.

최근의 객체지향 소프트웨어개발에서는 설계 및 유지보수와 관련된 많은 문제점들을 해결하기 위하여 클래스를 재설계하거나 클래스계층구조를 재구성하는 등 객체지향 소프트웨어에 대한 일련의 재이용 및 재구성기법이 사용되고 있다. 본 논문에서는 클래스계층구조의 재구성에 관한 정형적인 이론을 제공함으로써 클래스계층구조의 재구성에 관하여 보다 수월하게 이해하고 적용할 수 있도록 하였다. 구체적으로 본 논문에서는 객체지향 소프트웨어의 개발에 있어서 주요 골격이 되는 클래스계층구조를 평탄화시킨 형태로 정의한 평탄화된 클래스계층구조를 소개하고, 임의의 클래스계층구조를 평탄화된 형태로 변형시키기 위한 알고리즘을 제안하였다. 클래스계층구조를 평탄화함으로써 클래스계층구조상의 계승 및 집약관계가 각 인스턴스들에게 어떻게 사상되는가를 수월하게 파악할 수 있으며, 주어진 클래스계층구조로부터 생성가능한 객체를 그대로 유지보존할 수 있는 평탄화된 형태의 새로운 클래스계층구조를 구축할 수 있다. 평탄화된 클래스계층구조는 클래스계층구조를 재구성하여 객체지향 소프트웨어를 점증적으로 변화 발전시키거나 재이용함에 있어서 기초를 제공하는 등 중요한 역할을 수행한다.

Keywords

References

  1. B. Meyer, 'Object-oriented Software Construction,' Prentice Hall, 1988
  2. Casais, E., 'Managing Evolution in Object-Oriented Environments : An Algorithmic Approach, Ph.D. thesis,' University of Geneva, Geneva, Switzerland, 1991
  3. Casais, E., 'An incremental class reorganization approach,' ECOOP'92 Proceedings, 1992
  4. Casais, E, 'Automatic reorganization of coject-orienied hierarchies : a case study,' Object Oriented Systems, Vol.1, pp.95-115, 1994
  5. Casais, E., 'Managing class eVolution in object-oriented systems,' In O. Nierstrasz and D. Tsichritzis, editors, Object-Oriented Software Composition. pp.201-244, Prentice Hall, 1995
  6. Jonson, R. E. and Opdyke, W. F. 'Refactoring and Aggregation,' ISOTAS'93 Proceedings, 1993
  7. Lance Tokuda and Don Batory, 'EVolving object-oriented designs with Refactorings,' Journal of Automated Software Engineering, Vol.8, No.1, pp.89-120, 2001 https://doi.org/10.1023/A:1008715808855
  8. Paul L. Berstein, 'Object preserving class transformation,' SIGPLAN Notices, Vol.26, No.11, 1991
  9. Gregor Snelting and Frank Tip, 'Reengineering class hierarchies using concept analysis,' In Proc. ACM SIGSOFT Symposium on the Foundations of Software Engineering, pp.99-110, Orlando, FL, January 1996
  10. Gregor Snelting, 'Software Reengineering Based on Concept Lattices,' Proceedings of the Conference on Software Maintenance and Reengineering, 29 February - 3 March, 2000, Zurich, Switzerland. IEEE Computer Society, pp.3-10, 2000 https://doi.org/10.1109/CSMR.2000.827299
  11. Gregor Snelting and Frank Tip, 'Understanding class hierarchies using concept analysis,' ACM Transactions on Programming Languages and Systems, Vol.22, No.3, pp.540-582, 2000 https://doi.org/10.1145/353926.353940
  12. Robert Godin and Hafedh Mili, 'Buliding and Maintaining Analysis-Level Class Hierrchies Using Galois Lattices,' In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA '93), A. Paepcke (Ed.), Washington, DC, ACM Press, pp.394-410, 1993
  13. Robert Godin, Hafedh Mill, Guy W. Mineau, Rokia Missaoui, Amina Arfi, et al., 'Design of class hierarchies based on concept (Galois) lattices,' Theory and Application of Object Systems (TAPOS), Vol.4, No.2, pp.117-134, 1998 https://doi.org/10.1002/(SICI)1096-9942(1998)4:2<117::AID-TAPO6>3.0.CO;2-Q
  14. I. Schmitt, S. Conrad, 'Restructuring Object-Oriented Database Schemata by Concept Analysis,' T. Polle, T. Ripke, K.-D. Schewe (eds.), Rundamentals of Information Systems (Post-Proceedings 7th Int. Workshop on Foundations of Models and Languages for Data and Objects FoMLaDO'98), Kluwer Academic Publishers, Boston, pp.177-185, 1999
  15. S. Hwang, Y. Tsujino and N. Tokura, 'A Reorganization Framework for Object-Oriented Class Hierarchies, Journal of Computer Software,' JSSST, Vol.15, No.4, pp.42-61, 1998(in Japanese)
  16. S. Hwang, D. Kim and H. Yang, 'A Formal Approach for the Reorganization of Class Hierarchies for the Extension of Object-Oriented Applications,' Transactions of KIPS, Vol.6, No.3, March, 1999
  17. Ralph E. Johnson and Brian Foote, 'Designing reusable classes,' Journal of Object-Oriented Programming, pp.22-35, June/July, 1988
  18. Walter L. Hursch, 'Should Superclasses be Abstract',' ECOOP'94 Proceedings, pp.12-31, July, 1994
  19. Bernhard Ganter and Rudolf Wille, 'Formal Concept Analysis : Mathematical Foundations,' Springer Verlag, 1999