Recovering binary class relationships: putting icing on the UML cake

A discontinuity exists between object-oriented modeling and programming languages. This discontinuity arises from ambiguous concepts in modeling languages and a lack of corresponding concepts in programming languages. It is particularly acute for binary class relationships---association, aggregation, and composition. It hinders the traceability between software implementation and design, thus hampering software analysis. We propose consensual definitions of the binary class relationships with four minimal properties---exclusivity, invocation site, lifetime, and multiplicity. We describe algorithms to detect automatically these properties in source code and apply these on several frameworks. Thus, we bridge the gap between implementation and design for the binary class relationships, easing software analysis.

[1]  Yann-Gaël Guéhéneuc,et al.  Using design patterns and constraints to automate the detection and correction of inter-class design defects , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[2]  Jean-Claude Royer,et al.  An algebraic view of UML class diagrams , 2000, LMO.

[3]  Pamela Samuelson Reverse engineering under siege , 2002, CACM.

[4]  Franco Civello,et al.  Roles for composite objects in object-oriented analysis and design , 1993, OOPSLA '93.

[5]  Yann-Gaël Guéhéneuc,et al.  Bridging the Gap between Modeling and Programming Languages , 2002 .

[6]  Martin Gogolla,et al.  Application of UML associations and their adornments in design recovery , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[7]  Brian Henderson-Sellers,et al.  A Survey of UML's Aggregation and Composition Relationships , 1999, Obj. Logiciel Base données Réseaux.

[8]  Bernhard Rumpe,et al.  Towards a Formalization of the Unified Modeling Language , 1997, ECOOP.

[9]  Marianne Huchard,et al.  AGATE, access graph based tools for handling encapsulation , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[10]  James Noble,et al.  Explicit Relationships in Object Oriented Development , 1995 .

[11]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[12]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[13]  Bent Bruun Kristensen Complex associations: abstractions in object-oriented modeling , 1994, OOPSLA 1994.

[14]  Stéphane Ducasse,et al.  A reflective model for first class dependencies , 1995, OOPSLA.

[15]  Brian Postow Book review: A Theory of Objects by Martin Abadi and Luca Cardelli (Springer-Verlag, 1996): Series--Monographs in Computer Science , 1999, SIGA.

[16]  Lutz Prechelt,et al.  Design recovery by automated search for structural design patterns in object-oriented software , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[17]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[18]  Yann-Gaël Guéhéneuc,et al.  Meta-modeling Design Patterns: application to pattern detection and code synthesis , 2001 .

[19]  Mukund Raghavachari,et al.  Mapping UML designs to Java , 2000, OOPSLA '00.

[20]  Elliot Soloway,et al.  Designing documentation to compensate for delocalized plans , 1988, CACM.

[21]  Daniel Jackson,et al.  Lightweight extraction of object models from bytecode , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[22]  Kent Beck,et al.  Test-infected: programmers love writing tests , 2000 .

[23]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[24]  Yann-Gaël Guéhéneuc,et al.  No Java without caffeine: A tool for dynamic analysis of Java programs , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[25]  Esperanza Marcos,et al.  Aggregation and Composition in Object-Relational Database Design , 2001 .

[26]  Robert B. France,et al.  Improving the UML Metamodel to Rigorously Specify Aggregation and Composition , 2001, OOIS.

[27]  Yann-Gaël Guéhéneuc,et al.  Instantiating and detecting design patterns: putting bits and pieces together , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[28]  Boris Beizer,et al.  Software Testing Techniques , 1983 .

[29]  Maria M. Larrondo-Petrie,et al.  A Characterization of Aggregation , 1998 .

[30]  Brian Henderson-Sellers Some problems with the UML V1.3 metamodel , 2001, Proceedings of the 34th Annual Hawaii International Conference on System Sciences.

[31]  Daniel Jackson,et al.  Lightweight Extraction of Object Models from Bytecode , 2001, IEEE Trans. Software Eng..

[32]  Rudolf K. Keller,et al.  Design properties and object-oriented software changeability , 2000, Proceedings of the Fourth European Conference on Software Maintenance and Reengineering.

[33]  Edwin H. Blake,et al.  On Including Part Hierarchies in Object-Oriented Languages with an Implementation in Smalltalk , 1987, ECOOP.

[34]  Lori A. Clarke,et al.  A Formal Evaluation of Data Flow Path Selection Criteria , 1989, IEEE Trans. Software Eng..

[35]  Gunter Saake,et al.  Aggregation in a Behaviour Oriented Object Model , 1992, ECOOP.

[36]  Kevin Lano,et al.  Objects, Associations and Subsystems: A Hierarchical Approach to Encapsulation , 1997, ECOOP.

[37]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[38]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.