Supporting Software Architecture Evolution

Today it is more a rule than an exception that software systems have a lifecycle of more than several years. Hence, software evolution is inevitable. During the life span of a software system the domain in which the system is working evolves and changes. This causes changes to the software system, and the software system may also be evolved to satisfy new markets. The ability to evolve gracefully, and thus the long-term success of a software system, is to a large extent governed by its software architecture and the ability of the software architecture to fulfil requirements on quality attributes and to adapt to evolving requirements. In this thesis we study evolution of software architectures and what can be done to support this evolution. We focus on three particular aspects of evolution support: how to ensure that the correct blend of quality attributes is met (architecture selection), the technical means available for supporting changes in the software system (variability), and what types of changes that are likely to occur during evolution (categories of evolution). We introduce a method for architecture evaluation and selection that focus on ensuring that the selected software architecture is the architecture candidate with the most potential for fulfilling a particular blend of quality attributes. The method is based on quantification of expert opinions and focused discussions where these expert opinions differ. The architecture evaluation and selection method is studied in both an academic and in an industry setting. We also introduce a taxonomy of techniques for realising variability in a software system and study how the techniques in this taxonomy are applied in different evolution situations. The taxonomy is based on several industry case studies. Two industry cases are studied in further detail and the evolution of these systems are followed over a number of releases and generations. During this evolution it is shown how variability mechanisms are used to also support evolution, and that there are typical cases of evolution that a software system can be prepared to cope with. The contribution of this thesis is that it increases the understanding of how evolution occurs in a software system, how to create software that is flexible enough to support evolution and how to evaluate and select a software architecture that meets a particular blend of quality attributes. Together this ensures that a software system is based on a software architecture that fits the current quality requirements and that is flexible in the right places so that it is able to evolve gracefully.

[1]  Jim Wilson,et al.  Applying Software Product-Line Architecture , 1997, Computer.

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

[3]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[4]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .

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

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

[7]  David C. Gross,et al.  Managing Domain-Specific, Product-Line Development , 1996, IEEE Softw..

[8]  E. Burton Swanson,et al.  The dimensions of maintenance , 1976, ICSE '76.

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

[10]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

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

[12]  Robyn R. Lutz,et al.  An approach to architectural analysis of product lines , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

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

[14]  Martin L. Griss,et al.  Implementing Product-Line Features with Component Reuse , 2000, ICSR.

[15]  Nicholas Rescher,et al.  On the Epistemology of the Inexact Sciences , 1959 .

[16]  Thomas M. Pigoski Practical Software Maintenance: Best Practices for Managing Your Software Investment , 1996 .

[17]  Rafael Capilla,et al.  Modelling Variability with Features in Distributed Architectures , 2001, PFE.

[18]  Martin Becker,et al.  Comprehensive Variability Modelling to Facilitate Efficient Variability Treatment , 2001, PFE.

[19]  G. Kerr Quality factors. , 1988, Health physics.

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

[21]  Mike Mannion,et al.  Using Patterns to Model Variability in Product Families , 1999, IEEE Softw..

[22]  Nicolas Farcet,et al.  Expression and Usage of the Variability in the Software Product Lines , 2001, PFE.

[23]  Jaejoon Lee,et al.  FORM: A feature-;oriented reuse method with domain-;specific reference architectures , 1998, Ann. Softw. Eng..

[24]  Murray Turoff,et al.  The Delphi Method: Techniques and Applications , 1976 .

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

[26]  Jan Bosch,et al.  Superimposition: a component adaptation technique , 1999, Inf. Softw. Technol..

[27]  Reidar Conradi,et al.  Version models for software configuration management , 1998, CSUR.

[28]  Sholom Cohen,et al.  Product Line Practice Workshop Report. , 1998 .

[29]  Martin Höst,et al.  The importance of quality requirements in software platform development-a survey , 2001, Proceedings of the 34th Annual Hawaii International Conference on System Sciences.

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

[31]  Dietmar Pfahl,et al.  Quantitative WinWin: a new method for decision support in requirements negotiation , 2002, SEKE '02.

[32]  Jan Bosch,et al.  Software architecture design: evaluation and transformation , 1999, Proceedings ECBS'99. IEEE Conference and Workshop on Engineering of Computer-Based Systems.

[33]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2000, The Kluwer International Series in Software Engineering.

[34]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[35]  Don Roberts,et al.  Evolving Frameworks A Pattern Language for Developing Object-Oriented Frameworks , 2004 .

[36]  Martin Höst,et al.  Tracking degradation in software product lines through measurement of design rule violations , 2002, SEKE '02.

[37]  John Leaney,et al.  Structural Analysis of the Software Architecture - A Maintenance Assessment Case Study , 1999, WICSA.

[38]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

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

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

[41]  Jan Bosch,et al.  Product-line architectures in industry: a case study , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[42]  E. B. Swanson,et al.  Software maintenance management , 1980 .

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

[44]  Jan Bosch,et al.  On the notion of variability in software product lines , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[45]  Jan Bosch,et al.  Issues Concerning Variability in Software Product Lines , 2000, IW-SAPF.

[46]  Barry W. Boehm,et al.  Using the WinWin Spiral Model: A Case Study , 1998, Computer.

[47]  Christian Prehofer,et al.  Feature-Oriented Programming: A Fresh Look at Objects , 1997, ECOOP.

[48]  Lars Lundberg,et al.  QUALITY ATTRIBUTES IN SOFTWARE ARCHITECTURE DESIGN , 1999 .

[49]  Jan Bosch,et al.  Characterizing stability in evolving frameworks , 1999, Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275).

[50]  PerOlof Bengtsson,et al.  Architecture-Level Modifiability Analysis , 2002 .

[51]  Eila Niemelä,et al.  A Survey on Software Architecture Analysis Methods , 2002, IEEE Trans. Software Eng..

[52]  Sam Kash Kachigan Statistical Analysis: An Interdisciplinary Introduction to Univariate & Multivariate Methods , 1986 .

[53]  N. Giri Multivariate Statistical Analysis : Revised And Expanded , 2003 .

[54]  M. Shepperd,et al.  The Analytic Hierarchy Process and Data-less Prediction ESERG : TR 98-04 , 1999 .

[55]  Mark Klein,et al.  Attribute-Based Architectural Styles , 1999 .

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

[57]  Michael Jackson,et al.  Four dark corners of requirements engineering , 1997, TSEM.

[58]  Simona Ronchi Della Rocca,et al.  λ Δ -Models , 2004 .

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

[60]  David Garlan,et al.  Acme: an architecture description interchange language , 1997, CASCON.

[61]  Leonard J. Bass,et al.  Managing variability in software architectures , 2001, SSR '01.

[62]  Jan Bosch,et al.  Variability Issues in Software Product Lines , 2001, PFE.

[63]  Thomas Gilb,et al.  Software Inspection , 1994 .

[64]  Claes Wohlin,et al.  An evaluation of methods for prioritizing software requirements , 1998, Inf. Softw. Technol..

[65]  Michael Mattsson,et al.  Frameworks as Components : A Classification of Framework Evolution , 1998 .

[66]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[67]  하수철,et al.  [서평]「Component Software」 - Beyond Object-Oriented Programming - , 2000 .

[68]  Dennis J. Sweeney,et al.  Study guide to accompany an introduction to management science : quantitative approaches to decision making , 1985 .

[69]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[70]  Leonard J. Bass,et al.  Second Product Line Practice Workshop Report , 1998, ArXiv.

[71]  Nader Nada,et al.  An empirical study of a software reuse reference model , 2000, Inf. Softw. Technol..

[72]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

[73]  Martin Fowler,et al.  Planning Extreme Programming , 2000 .

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

[75]  Martin L. Griss,et al.  Integrating feature modeling with the RSEB , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[76]  T. Saaty,et al.  The Analytic Hierarchy Process , 1985 .

[77]  Jan Bosch,et al.  Representing Variability in Software Product Lines: A Case Study , 2002, SPLC.

[78]  Jan Bosch,et al.  Design Erosion: Problems & Causes , 2001 .

[80]  A. Berztiss,et al.  Requirements Engineering , 2002, J. Object Technol..

[81]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[82]  John Mylopoulos,et al.  Non-Functional Requirements in Software Engineering , 2000, International Series in Software Engineering.

[83]  Günther Ruhe,et al.  Software Engineering Decision Support ? A New Paradigm for Learning Software Organizations , 2002, LSO.

[84]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

[85]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

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

[87]  David C. Rine,et al.  Investments in reusable software. A study of software reuse investment success factors , 1998, J. Syst. Softw..

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

[89]  Ioannis Stamelos,et al.  A new method to evaluate software artifacts against predefined profiles , 2002, SEKE '02.

[90]  Mehdi Jazayeri,et al.  Software Architecture for Product Families: Principles and Practice , 2000 .

[91]  Felix Bachmann,et al.  Quality Attribute Design Primitives , 2000 .

[92]  Mikael Lindvall,et al.  An Empirically-Based Process for Software Architecture Evaluation , 2004, Empirical Software Engineering.

[93]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[94]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[95]  Charles W. Krueger,et al.  Easing the Transition to Software Mass Customization , 2001, PFE.

[96]  Joachim Karlsson,et al.  A Cost-Value Approach for Prioritizing Requirements , 1997, IEEE Softw..

[97]  Ivica Crnkovic,et al.  Component-based software engineering: building systems from components at 9th IEEE conference and workshops on engineering of computer-based systems , 2002, SOEN.

[98]  Michael Mattsson,et al.  Conditions and Restrictions for Product Line Generation Migration , 2001, PFE.

[99]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[100]  Peter van den Hamer,et al.  An Integral Hierarchy and Diversity Model for Describing Product Family Architecture , 1998, ESPRIT ARES Workshop.

[101]  Jan Bosch,et al.  Framework composition: problems, causes and solutions , 1997, Proceedings of TOOLS USA 97. International Conference on Technology of Object Oriented Systems and Languages.

[102]  Jr. Frederick P. Brooks,et al.  The mythical man-month (anniversary ed.) , 1995 .