Software Architecture as a Set of Architectural Design Decisions

Software architectures have high costs for change, are complex, and erode during evolution. We believe these problems are partially due to knowledge vaporization. Currently, almost all the knowledge and information about the design decisions the architecture is based on are implicitly embedded in the architecture, but lack a first-class representation. Consequently, knowledge about these design decisions disappears into the architecture, which leads to the aforementioned problems. In this paper, a new perspective on software architecture is presented, which views software architecture as a composition of a set of explicit design decisions. This perspective makes architectural design decisions an explicit part of a software architecture. Consequently, knowledge vaporization is reduced, thereby alleviating some of the fundamental problems of software architecture.

[1]  C. Chambers,et al.  ArchJava: connecting software architecture to implementation , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[2]  Jia Liu,et al.  Refinements and multi-dimensional separation of concerns , 2003, ESEC/FSE-11.

[3]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[4]  Marija Mikic-Rakic,et al.  Taming architectural evolution , 2001, ESEC/FSE-9.

[5]  Paul Clements,et al.  Software Architecture in Practice: Addison-Wesley , 1998 .

[6]  Jan Bosch,et al.  Software Architecture: The Next Step , 2004, EWSA.

[7]  Robert L. Nord,et al.  Proceedings of the Working IEEE/IFIP Conference on Software Architecture , 2006 .

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

[9]  Gail C. Murphy,et al.  Design pattern rationale graphs: linking design to source , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[10]  Philippe Kruchten,et al.  An Ontology of Architectural Design Decisions in Software-Intensive Systems , 2004 .

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

[12]  Daniel Shawcross Wilkerson,et al.  Winnowing: local algorithms for document fingerprinting , 2003, SIGMOD '03.

[13]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[14]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[15]  William C. Regli,et al.  A Survey of Design Rationale Systems: Approaches, Representation, Capture and Retrieval , 2000, Engineering with Computers.

[16]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[17]  Jan Bosch,et al.  Evaluation of tool support for architectural evolution , 2004 .

[18]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[19]  Paul Clements,et al.  Documenting Software Architectures in an Agile World , 2003 .

[20]  Jeff Magee,et al.  The Koala Component Model for Consumer Electronics Software , 2000, Computer.

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

[22]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[23]  Jeff Tyree,et al.  Architecture decisions: demystifying architecture , 2005, IEEE Software.