Elemental design patterns: a formal semantics for composition of OO software architecture

Design patterns are an important concept in the field of software engineering, providing a language and application independent method for expressing and conveying lessons learned by experienced designers. There is a large gap, however, between the aesthetic and elegance of the patterns as intended and the reality of working with an ultimately mathematically expressible system such as code. We describe a step towards meaningful formal analysis of code within the language of patterns, and discuss potential uses. The major contributions include: a compendium of elemental design patterns (EDPs), a layer of seemingly simplistic relationships between objects that, on closer inspection, provide a critical link between the world of formal analysis and the realm of pattern design and implementation without reducing the patterns to merely syntactic constructs; an extension to the /spl sigmav/-calculus, termed /spl rho/-calculus, a formal notation for expressing relationships between the elements of object oriented languages, and its use in expressing the EDPs directly. We discuss their use in composition and decomposition of existing patterns, identification of pattern use in existing code to aid comprehension, and future research directions, such as support for refactoring of designs, interaction with traditional code analysis systems, and the education of students of software architecture.

[1]  Els Laenes,et al.  A language for object-oriented database programming , 1989 .

[2]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement , 1997, IEEE METRICS.

[3]  Ivan Moore,et al.  Automatic inheritance hierarchy restructuring and method refactoring , 1996, OOPSLA '96.

[4]  Linda M. Ott,et al.  Slice based metrics for estimating cohesion , 1993, [1993] Proceedings First International Software Metrics Symposium.

[5]  D. Stotts,et al.  Elemental Design Patterns : A Logical Inference System and Theorem Prover Support for Flexible Discovery of Design Patterns , 2002 .

[6]  Christopher Alexander Notes on the Synthesis of Form , 1964 .

[7]  Ryan Stansifer The Study of Programming Languages , 1994 .

[8]  B. F. Castro Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael. Pattern-oriented software architecture: a system of patterns, John Wiley & Sons Ltd, 1996 , 1997 .

[9]  Jim Coplien C++ Idioms , 1998, EuroPLoP.

[10]  Ralph E. Johnson,et al.  Creating abstract superclasses by refactoring , 1993, CSC '93.

[11]  Mansur H. Samadzadeh,et al.  Stability, coupling, and cohesion of object-oriented software systems , 1994, CSC '94.

[12]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement in Object-Oriented Systems , 2004, Empirical Software Engineering.

[13]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[14]  Jan Bosch,et al.  Design Patterns as Language Constructs , 1998, J. Object Oriented Program..

[15]  Mel O Cinn eide Automated application of design patterns: a refactoring approach , 2001 .

[16]  Bobby Woolf The Object Recursion Pattern , 1998 .

[17]  Sakari Karstu,et al.  An Examination of the Behavior of Slice Based Cohesion Measures , 1994 .

[18]  Walter Zimmer,et al.  Relationships between design patterns , 1995 .

[19]  Martin Hitz,et al.  Measuring coupling and cohesion in object-oriented systems , 1995 .

[20]  Bobby Woolf The Abstract Class Pattern , 1997 .

[21]  Jason McC. Smith,et al.  Elemental Design Patterns: A Link Between Architecture and Object Semantics , 2002 .

[22]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[23]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[24]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

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

[26]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture Volume 1: A System of Patterns , 1996 .

[27]  Marco Meijers,et al.  Tool Support for Object-Oriented Patterns , 1997, ECOOP.

[28]  Kent L. Beck Smalltalk best practice patterns , 1996 .

[29]  James M. Bieman,et al.  Using Design Cohesion to Visualize, Quantify, and Restructure Software , 1996, SEKE.

[30]  James M. Bieman,et al.  Design-level cohesion measures: derivation, comparison, and applications , 1996, Proceedings of 20th International Computer Software and Applications Conference: COMPSAC '96.

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

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

[33]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.