Chapter 1 – Making Software Architecture and Agile Approaches Work Together: Foundations and Approaches

Software architecture (SA) is one of the most significant areas of research and practice in software engineering. It has been shown that getting architecture of large-scale complex systems right is not only extremely important but hugely challenging. The increasing popularity and adoption of Agile Software Development (ASD) methods have brought architecture-centric methods and practices into question as agile followers tend to perceive architecture in the context of plan-driven software development. It is widely recognized that SA needs sufficient attention for successful development and evolution of software-intensive systems and services irrespective of the software development paradigm. Given the nature of the discipline, SA methods and approaches tend to be effort-intensive and heavyweight for certain kinds of projects. There is an increasing interest in finding ways to apply architecture-centric principles and practices in an Agile fashion—Agile architecting. A good understanding of architectural principles and approaches is a prerequisite to agile architecting. The aim of this chapter is to briefly describe the fundamental concepts, principles, and practices of architecture-centric approaches. These concepts, principles, and practices are expected to provide a reader with sufficient understanding of different aspects of SA and its related methods to combine them with ASD methods. We start with a brief discussion of the points that make architecture and agile approaches seemingly incompatible. Then we present and discuss some of the key aspects of architecture-centric approaches and techniques that need to be considered for use in ASD projects. We also provide an overview of some of the key practices that have been recommended for successfully integrating architecture-centric approaches in ASD for developing large-scale, software-intensive systems.

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

[2]  Jan Bosch,et al.  Architecture-level modifiability analysis (ALMA) , 2004, J. Syst. Softw..

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

[4]  David M. Weiss,et al.  Architecture reviews: practice and experience , 2005, IEEE Software.

[5]  Jan Bosch,et al.  Architecture level prediction of software maintenance , 1999, Proceedings of the Third European Conference on Software Maintenance and Reengineering (Cat. No. PR00090).

[6]  Leonard J. Bass,et al.  Quality Attribute Design Primitives and the Attribute Driven Design Method , 2001, PFE.

[7]  Connie U. Smith,et al.  Performance solutions: a practical guide to creating responsive , 2001 .

[8]  Paul C. Clements,et al.  A survey of architecture description languages , 1996, Proceedings of the 8th International Workshop on Software Specification and Design.

[9]  Hans van Vliet,et al.  How well can we predict changes at architecture design time? , 2003, J. Syst. Softw..

[10]  Leonard J. Bass,et al.  SAAM: a method for analyzing the properties of software architectures , 1994, Proceedings of 16th International Conference on Software Engineering.

[11]  Mikael Lindvall,et al.  Evaluating software architectures , 2004, Adv. Comput..

[12]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[13]  Ken Schwaber,et al.  Agile Project Management with Scrum , 1980 .

[14]  Rick Kazman,et al.  An approach to software architecture analysis for evolution and reusability , 1997, CASCON.

[15]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

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

[17]  Jan Bosch,et al.  Design and use of software architectures - adopting and evolving a product-line approach , 2000 .

[18]  Robert L. Nord,et al.  A general model of software architecture design derived from five industrial approaches , 2007, J. Syst. Softw..

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

[20]  Roland Faber,et al.  Architects as Service Providers , 2010, IEEE Software.

[21]  Ian Gorton,et al.  Essential software architecture , 2006 .

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

[23]  Hans de Bruin,et al.  Quality-driven software architecture composition , 2003, J. Syst. Softw..

[24]  Muhammad Ali Babar,et al.  A comparative study of architecture knowledge management tools , 2010, J. Syst. Softw..

[25]  Alistair Cockburn,et al.  Crystal Clear: A Human-Powered Methodology for Small Teams , 2004 .

[26]  Pierre America,et al.  Multi-view Variation Modeling for Scenario Analysis , 2003, PFE.

[27]  James E. Tomayko,et al.  Software architecture-centric methods and agile development , 2006, IEEE Software.

[28]  Julio Cesar Sampaio do Prado Leite,et al.  On Non-Functional Requirements in Software Engineering , 2009, Conceptual Modeling: Foundations and Applications.

[29]  Mikael Lindvall,et al.  An introduction to agile methods , 2004, Adv. Comput..

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

[31]  Glenford J. Myers,et al.  Structured Design , 1974, IBM Syst. J..

[32]  Muhammad Ali Babar,et al.  Agility and Architecture: Can They Coexist? , 2010, IEEE Softw..

[33]  Barry W. Boehm,et al.  Management challenges to implementing agile processes in traditional development organizations , 2005, IEEE Software.

[34]  Mark Klein,et al.  Experience with performing architecture tradeoff analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[35]  Muhammad Ali Babar,et al.  Software Architecture Knowledge Management: Theory and Practice , 2009 .

[36]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

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

[38]  Steve R. Palmer,et al.  A Practical Guide to Feature-Driven Development , 2002 .

[39]  I. Gorton,et al.  A quality-driven systematic approach for architecting distributed software applications , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[40]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[41]  Muhammad Ali Babar,et al.  Architecture-Centric Methods and Agile Approaches , 2008, XP.

[42]  Giovanni Cantone,et al.  Peaceful Coexistence: Agile Developer Perspectives on Software Architecture , 2010, IEEE Software.

[43]  N. H. Lassing,et al.  On software architecture analysis of flexibility, Complexity of changes: Size isn't everything , 1999 .

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

[45]  Liming Zhu,et al.  A framework for classifying and comparing software architecture evaluation methods , 2004, 2004 Australian Software Engineering Conference. Proceedings..

[46]  James Madison,et al.  Agile Architecture Interactions , 2010, IEEE Software.

[47]  Philippe Kruchten,et al.  Architecture blueprints—the “4+1” view model of software architecture , 1995, TRI-Ada '95.

[48]  Bashar Nuseibeh,et al.  Characterizing Architecturally Significant Requirements , 2013, IEEE Software.

[49]  Philippe Kruchten,et al.  Voyage in the Agile Memeplex , 2007, ACM Queue.

[50]  Craig Larman,et al.  Agile and Iterative Development: A Manager's Guide , 2003 .

[51]  Mark Lycett,et al.  Migrating Agile Methods to Standardized Development Practice , 2003, Computer.

[52]  Stuart Blair,et al.  Responsibility-Driven Architecture , 2010, IEEE Software.

[53]  N. H. Lassing,et al.  The goal of software architecture analysis: confidence building or risk assessment , 1999 .

[54]  Muhammad Ali Babar An exploratory study of architectural practices and challenges in using agile software development approaches , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[55]  Ken Schwaber,et al.  Agile Software Development with SCRUM , 2001 .

[56]  Jane Cleland-Huang,et al.  A Persona-Based Approach for Exploring Architecturally Significant Requirements in Agile Projects , 2013, REFSQ.

[57]  Rick Kazman,et al.  Evaluating Software Architectures: Methods and Case Studies , 2001 .

[58]  Barry W. Boehm,et al.  Get Ready for Agile Methods, with Care , 2002, Computer.

[59]  Muhammad Ali Babar,et al.  An industrial case of exploiting product line architectures in agile software development , 2009, SPLC.