Distilling Software Architectural Primitives from Architectural Styles

Architectural styles codify commonly used idioms in system structures, organizations, and interactions. Existing classifications of architectural styles provide empirical guidelines for style selection, but fail to systematically characterize styles or reveal their foundations. Moreover, the mapping between architectural styles and their implementations is generally poorly understood. This paper introduces an approach towards a systematic understanding of architectural styles based on a small set of recurring architectural primitives. Also proposed is an extensible composition framework for architectural styles based on these primitives, which is, in turn, used as the basis of style implementation. This framework, called Alfa, has been applied successfully to four different architectural styles to date. Lightweight compositional models of the styles have been created using the Alloy formal modeling notation, whereas implementation infrastructures for these styles have been developed in Java. While it would be premature to claim that Alfa is sufficiently expressive to represent any arbitrary architectural style, our experience to date suggests that we have converged on a set of primitives that effectively captures the characteristics of a large number of styles. As such, we feel that Alfa already presents a unique contribution and is worthy of careful further study.

[1]  Gilles Kahn,et al.  The Semantics of a Simple Language for Parallel Programming , 1974, IFIP Congress.

[2]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[3]  David Garlan,et al.  Style-based refinement for software architecture , 1996, ISAW '96.

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

[5]  Oscar Nierstrasz,et al.  Scripting Coordination Styles , 2000, COORDINATION.

[6]  Paolo Ciancarini,et al.  On the formalization of architectural types with process algebras , 2000, SIGSOFT '00/FSE-8.

[7]  Paola Inverardi,et al.  Formal Specification and Analysis of Software Architectures Using the Chemical Abstract Machine Model , 1995, IEEE Trans. Software Eng..

[8]  Naranker Dulay,et al.  Specifying Distributed Software Architectures , 1995, ESEC.

[9]  Michael M. Gorlick,et al.  Using weaves for software construction and analysis , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[10]  David Garlan,et al.  A Formal Approach to Software Architectures , 1992, IFIP Congress.

[11]  Paola Inverardi,et al.  Automatic synthesis of deadlock free connectors for COM/DCOM applications , 2001, ESEC/FSE-9.

[12]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[13]  Nenad Medvidovic,et al.  Towards a taxonomy of software connectors , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[14]  Richard N. Taylor,et al.  Using off-the-shelf middleware to implement connectors in distributed software architectures , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  Mary Shaw,et al.  A field guide to boxology: preliminary classification of architectural styles for software systems , 1997, Proceedings Twenty-First Annual International Computer Software and Applications Conference (COMPSAC'97).

[16]  Gregory R. Andrews,et al.  Paradigms for process interaction in distributed programs , 1991, CSUR.

[17]  Richard N. Taylor,et al.  A language and environment for architecture-based software development and evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[18]  Gregory D. Abowd,et al.  Formalizing style to understand descriptions of software architecture , 1995, TSEM.

[19]  Marija Mikic-Rakic,et al.  Adaptable Architectural Middleware for Programming-in-the-Small-and-Many , 2003, Middleware.

[20]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[21]  Richard N. Taylor,et al.  A Component- and Message-Based Architectural Style for GUI Software , 1995, 1995 17th International Conference on Software Engineering.

[22]  James Gettys,et al.  The X window system , 1986, TOGS.

[23]  David C. Luckham,et al.  An Event-Based Architecture Definition Language , 1995, IEEE Trans. Software Eng..

[24]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[25]  David Garlan,et al.  A compositional approach for constructing connectors , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[26]  George Coulouris,et al.  Distributed systems - concepts and design , 1988 .

[27]  Gordon S. Blair,et al.  The case for reflective middleware , 2002, CACM.

[28]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[29]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[30]  Mary Shaw,et al.  Beyond objects: a software design paradigm based on process control , 1995, SOEN.

[31]  Wolfgang Emmerich,et al.  An architectural style for multiple real-time data feeds , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[32]  Kevin J. Sullivan,et al.  Analysis of a Conflict between Aggregation and Interface Negotiation in Microsoft's Component Object Model , 1999, IEEE Trans. Software Eng..

[33]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[34]  Ralph E. Johnson,et al.  Surveying current research in object-oriented design , 1990, CACM.

[35]  David Garlan,et al.  Software architecture: a roadmap , 2000, ICSE '00.

[36]  Frank Eliassen,et al.  Next generation middleware: requirements, architecture, and prototypes , 1999, Proceedings 7th IEEE Workshop on Future Trends of Distributed Computing Systems.

[37]  Marija Mikic-Rakic,et al.  A Family of Software Architecture Implementation Frameworks , 2002, WICSA.

[38]  David Garlan,et al.  Style-based reuse for software architectures , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[39]  Richard N. Taylor,et al.  Separating fact from fiction in software architecture , 1998, ISAW '98.

[40]  Roy T. Fielding,et al.  Principled design of the modern Web architecture , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[41]  Nenad Medvidovic,et al.  Modeling software architectures in the Unified Modeling Language , 2002, TSEM.

[42]  David S. Rosenblum,et al.  A design framework for Internet-scale event observation and notification , 1997, ESEC '97/FSE-5.

[43]  Yannis Smaragdakis,et al.  Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs , 2002, TSEM.

[44]  Robert DeLine,et al.  Avoiding packaging mismatch with flexible packaging , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[45]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[46]  Leigh A. Davis,et al.  A notation for problematic architecture interactions , 2001, ESEC/FSE-9.

[47]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..

[48]  Ivica Crnkovic,et al.  4th ICSE workshop on component-based software engineering: component certification and system prediction , 2001, ACM SIGSOFT Softw. Eng. Notes.

[49]  H. P Nii,et al.  Blackboard Systems , 1986 .

[50]  Michel Wermelinger,et al.  Superposing connectors , 2000, Tenth International Workshop on Software Specification and Design. IWSSD-10 2000.

[51]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[52]  Maurice J. Bach The Design of the UNIX Operating System , 1986 .

[53]  Daniel Le Métayer Describing Software Architecture Styles Using Graph Grammars , 1998, IEEE Trans. Software Eng..

[54]  Manu Sridharan,et al.  A micromodularity mechanism , 2001, ESEC/FSE-9.

[55]  David A. Carrington,et al.  Guiding object-oriented design , 1998, Proceedings Technology of Object-Oriented Languages. TOOLS 28 (Cat. No.98TB100271).

[56]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[57]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[58]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is So Hard , 1995, IEEE Softw..

[59]  Carl Hewitt,et al.  PLANNER: A Language for Proving Theorems in Robots , 1969, IJCAI.

[60]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[61]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[62]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.