Formal Concept Analysis-Based Class Hierarchy Design in Object-Oriented Software Development

  • Robert Godin
  • Petko Valtchev
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3626)


The class hierarchy is an important aspect of object-oriented software development. Design and maintenance of such a hierarchy is a difficult task that is often accomplished without any clear guidance or tool support. Formal concept analysis provides a natural theoretical framework for this problem because it can guarantee maximal factorization while preserving specialization relationships. The framework can be useful for several software development scenarios within the class hierarchy life-cycle such as design from scratch using a set of class specifications, or a set of object examples, refactoring/reengineering from existing object code or from the observation of the actual use of the classes in applications and hierarchy evolution by incrementally adding new classes. The framework can take into account different levels of specification details and suggests a number of well-defined alternative designs. These alternatives can be viewed as normal forms for class hierarchies where each normal form addresses particular design goals. An overview of work in the area is presented by highlighting the formal concept analysis notions that are involved. One particularly difficult problem arises when taking associations between classes into account. Basic scaling has to be extended because the scales used for building the concept lattice are dependent on it. An approach is needed to treat this circularity in a well-defined manner. Possible solutions are discussed.


Normal Form Formal Concept Concept Lattice Formal Concept Analysis Class Hierarchy 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Booch, G.: Object Oriented Analysis and Design with Applications, 2nd edn. Addison- Wesley, Reading (1994)Google Scholar
  2. 2.
    Casais, E.: Managing Evolution in Object Oriented Environments: An Algorithmic Approach. PhD thesis, Université de Genève (1991)Google Scholar
  3. 3.
    Coleman, D., Arnold, P., Bodoff, S., Dollin, C., Gilchrist, H., Jeremaes, P.: O-O Development — The FUSION Method. Prentice Hall, Englewood Cliffs (1993)Google Scholar
  4. 4.
    Cook, W.R.: Interfaces and Specifications for the Smalltalk-80 Collection Classes. In: Paepcke, A. (ed.) Proceedings of the Xth OOPSLA, pp. 1–15. ACM Press, New York (1992)Google Scholar
  5. 5.
    Cox, B.J.: Planning the Software Revolution. IEEE Software 7(6), 25–33 (1990)CrossRefGoogle Scholar
  6. 6.
    Dao, M., Huchard, M., Rouane Hacene, M., Roume, C., Valtchev, P.: Improving Generalization Level in UML Models: Iterative Cross Generalization in Practice. In: Wolff, K.E., Pfeiffer, H.D., Delugach, H.S. (eds.) ICCS 2004. LNCS (LNAI), vol. 3127, pp. 346–360. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  7. 7.
    Dicky, H., Dony, C., Huchard, M., Libourel, T.: On Automatic Class Insertion with Overloading. In: Special issue of Sigplan Notice – Proceedings of ACM OOPSLA 1996, pp. 251– 267 (1996)Google Scholar
  8. 8.
    Dvorak, J.: Conceptual Entropy and Its Effect on Class Hierarchies. IEEE Computer 27(6), 59–63 (1994)Google Scholar
  9. 9.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading (2002)Google Scholar
  10. 10.
    Godin, R., Chau, T.T.: Comparaison d’algorithmes de construction de hiérarchies de classes. L’Objet 5(3), 321–338 (2000)Google Scholar
  11. 11.
    Godin, R., Huchard, M., Roume, C., Valtchev, P.: Inheritance And Automation: Where Are We Now. In: Object-Oriented Technology ECOOP Workshop Reader (2002)Google Scholar
  12. 12.
    Godin, R., Mili, H.: Building and maintaining analysis-level class hierarchies using Galois lattices. In: Proceedings of OOPSLA 1993, Washington (DC), USA, pp. 394–410 (1993)Google Scholar
  13. 13.
    Godin, R., Mili, H.: Building and maintaining analysis-level class hierarchies using Galois lattices. In: Proceedings of OOPSLA 1993, Washington (DC), USA, special issue of ACM SIGPLAN Notices, vol. 28(10), pp. 394–410 (1993)Google Scholar
  14. 14.
    Godin, R., Mili, H., Arfi, A., Mineau, G.W., Missaoui, R.: A Tool for Building and Evaluating Class Hierarchies Based on a Concept Formation Approach. In: Proceedings of the OOPSLA 1994 Workshop on Artificial Intelligence for Object-Oriented Software Engineering, Portland, Oregon (1994)Google Scholar
  15. 15.
    Godin, R., Mili, H., Mineau, G., Missaoui, R., Arfi, A., Chau, T.T.: Design of Class Hierarchies Based on Concept (Galois) Lattices. Theory and Practice of Object Systems 4(2) (1998)Google Scholar
  16. 16.
    Huchard, M.: Classification de classes contre classification d’instances. Evolution incrémentale dans les systèmes à objets basés sur des treillis de Galois. In: Actes de LMO 1999: Langages et Modèles à Objets, Hermés, pp. 179–196 (1999)Google Scholar
  17. 17.
    Huchard, M., Dicky, H., Leblanc, H.: Galois lattice as a framework to specify algorithms building class hierarchies. Theoretical Informatics and Applications 34, 521–548 (2000)zbMATHCrossRefMathSciNetGoogle Scholar
  18. 18.
    Huchard, M., Rouane Hacene, M., Roume, C., Valtchev, P.: Relational concept discovery in structured datasets. Discrete Applied Mathematics (2004) (submitted)Google Scholar
  19. 19.
    Huchard, M., Roume, C., Valtchev, P.: When concepts point at other concepts: the case of UML diagram reconstruction. In: Proceedings of the 2nd Workshop on Advances in Formal Concept Analysis for Knowledge Discovery in Databases (FCAKDD), pp. 32–43 (2002)Google Scholar
  20. 20.
    Johnson, R., Foote, B.: Designing reusable classes. Journal of Object-Oriented Programming, 22–35 (June/July 1988)Google Scholar
  21. 21.
    Korson, T., McGregor, J.D.: Technical Criteria for the Specification and Evaluation of Object-Oriented Libraries. Software Engineering Journal (1992)Google Scholar
  22. 22.
    Lalonde, W.R.: Designing families of data types using examplars. ACM Transactions on Programming. Languages and Systems 11(2), 212–248 (1989)CrossRefGoogle Scholar
  23. 23.
    Leblanc, H.: Sous-hiérarchies de Galois: un modèle pour la construction et l’ evolution des hiérarchies d’objets (Galois sub-hierarchies: a model for construction and evolution of object hierarchies). PhD thesis, Université Montpellier 2 (2000)Google Scholar
  24. 24.
    Lieberherr, K.J., Bergstein, P., Silva-Lepe, I.: From Objects to Classes: Algorithms for Optimal Object-Oriented Design. Journal of Software Engineering 6(4), 205–228 (1991)CrossRefGoogle Scholar
  25. 25.
    Liskov, B.: Data abstraction and hierarchy. ACM SIGPLAN Notices 23(5), 17–34 (1988)CrossRefGoogle Scholar
  26. 26.
    Meyer, B.: Conception et programmation par objets pour du logiciel de qualité. Intereditions, Paris (1990)Google Scholar
  27. 27.
    Moore, I.: Automatic Inheritance Hierarchy Restructuring and Method Refactoring. In: Proceedings of OOPSLA 1996, San Jose (CA), USA, pp. 235–250 (1996)Google Scholar
  28. 28.
    Rapicault, P., Napoli, A.: Evolution d’une hiérarchie de classes par interclassement. L’Objet 7(1-2) (2001)Google Scholar
  29. 29.
    Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., Lorensen, W.: Object Oriented Modeling and Design. Prentice Hall, Englewood Cliffs (1991)Google Scholar
  30. 30.
    Sahraoui, H., Godin, R., Miceli, T.: Can Metrics Help to Bridge the Gap Between the Improvement of OO Design Quality and its Automations. In: Proceedings of the International Conference on Software Maintenance, pp. 154–162 (2000)Google Scholar
  31. 31.
    Sahraoui, H.A., Lounis, H., Melo, W., Mili, H.: A Concept Formation Based Approach to Object Identification in Procedural Code. Automated Software Engineering 6, 387–410 (1999)CrossRefGoogle Scholar
  32. 32.
    Snelting, G., Tip, F.: Understanding class hierarchies using concept analysis. ACM Transactions on Programming Languages and Systems 22(3), 540–582 (2000)CrossRefGoogle Scholar
  33. 33.
    Snelting, G., Tip, F.: Semantics-based composition of class hierarchies. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, p. 562. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  34. 34.
    Tonella, P.: Concept analysis for module restructuring. IEEE Transactions on Software Engineering 27(4), 351–363 (2001)CrossRefGoogle Scholar
  35. 35.
    Valtchev, P., Hacene Rouane, M., Huchard, M., Roume, C.: Extracting Formal Concepts out of Relational Data. In: SanJuan, E., Berry, A., Sigayret, A., Napoli, A. (eds.) Proceedings of the 4th Intl. Conference Journées de l’Informatique Messine (JIM 2003): Knowledge Discovery and Discrete Mathematics, Metz (FR), September 3-6, pp. 37–49. INRIA (2003)Google Scholar
  36. 36.
    Yahia, A., Lakhal, L., Cicchetti, R., Bordat, J.P.: iO2 – An AlgorithmicMethod for Building Inheritance Graphs in Object Database Design. In: Thalheim, B. (ed.) ER 1996. LNCS, vol. 1157, pp. 422–437. Springer, Heidelberg (1996)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Robert Godin
    • 1
  • Petko Valtchev
    • 2
  1. 1.Département d’informatiqueUQAMMontréalCanada
  2. 2.DIROUniversité de MontréalMontréalCanada

Personalised recommendations