Bridging the Gap between Modeling and Programming Languages

A discontinuity exists between modeling languages and object-oriented programming languages. This discontinuity is a consequence of ambiguous notions in modeling languages and lack of corresponding notions in objectoriented programming languages. It hinders the transition between a software design and its implementation, and vice versa. Thus, it hampers the implementation and the maintenance processes. This discontinuity is particularly acute for binary class relationships, which describe, at the design level, notions such as association, aggregation, and composition. From the current state of the art, we propose synthetic definitions for the binary class relationships at the design level and corresponding definitions at the implementation level. We express the latter definitions in terms of common properties. We present algorithms to synthesize code for these properties and to detect these properties in code. These algorithms allow us to generate and to detect binary class relationships. We verify the detection algorithms on several well-known frameworks. The definitions and algorithms bring continuity between modeling languages and objectoriented programming languages. ∗This work is partly funded by Object Technology International, Inc. – 2670 Queensview Drive – Ottawa, Ontario, K2B 8K1 – Canada †This work is partly funded by Soft-Maint – 4, rue du Château de l’Eraudiere – 44 324 Nantes – France.

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

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

[3]  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,.

[4]  Rob Pooley,et al.  The unified modelling language , 1999, IEE Proc. Softw..

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

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

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

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

[9]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[10]  Robert B. France A Problem-Oriented Analysis of Basic UML Static Requirements Modeling Concepts , 1999, OOPSLA.

[11]  Sylvain Vauttier,et al.  Une nouvelle approche de la spécification du comportement des objets composites en UML , 1999, LMO.

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

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

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

[15]  Mireille Ducassé,et al.  Opium: An Extendable Trace Analyzer for Prolog , 1999, J. Log. Program..

[16]  James E. Rumbaugh,et al.  Relations as semantic constructs in an object-oriented language , 1987, OOPSLA '87.

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

[18]  Mireille Ducassé,et al.  Coca: A Debugger for C Based on Fine Grained Control Flow and Data Events , 1998, ICSE 1998.

[19]  Stéphane Ducasse Integration reflexive de dependances dans un modele a classes , 1996 .

[20]  Anil Hemrajani The Java Abstract Window Toolkit , 1997 .

[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]  Brian Henderson-Sellers,et al.  The whole-part relationship in object modelling: a definition in cOlOr , 2001, Inf. Softw. Technol..

[23]  Klaus Meyer-Wegener,et al.  Grand tour of concepts for object-orientation from a database point of view , 1993, Data Knowl. Eng..

[24]  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).

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

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

[27]  Jürgen Wolff von Gudenberg,et al.  On the Visualization of Java Programs , 2001, Software Visualization.

[28]  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.

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

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

[31]  Jeffrey L. Korn,et al.  Chava: reverse engineering and tracking of Java applets , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

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

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

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

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

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

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