Supporting Software Architecture Evolution by Functional Decomposition

Software systems evolve during their lifetime to reflect the changes in their users needs. However, unless implemented carefully, such changes may degrade the quality of the system’s architecture by reducing the cohesion and increasing the coupling between its subsystems. It is therefore important to systematically analyze the changes and modify the system’s structure to accommodate the changes without degrading the system’s architecture. However, looking just at functional aspects is not enough, because we may decide on a redesign that is too expensive to implement. In this paper we combine a functional decomposition analysis technique with a nonfunctional impact analysis technique to avoid this pitfall. The functional decomposition technique generates a set of plausible decompositions that accommodate the required evolutionary changes, and the impact analysis technique acts as a filter that selects only those decompositions that satisfy the cost constraints of the required changes. We briefly describe both techniques and then illustrate the approach with an example of a parking lot management system.

[1]  Shmuel S. Tyszberowicz,et al.  Improving Design Decomposition , 2015, SETTA.

[2]  Robert Heinrich,et al.  Architecture-based Analysis of Changes in Information System Evolution , 2015, Softwaretechnik-Trends.

[3]  Satoru Kawai,et al.  An Algorithm for Drawing General Undirected Graphs , 1989, Inf. Process. Lett..

[4]  Max E. Kramer,et al.  Modeling and Simulating Software Architectures: The Palladio Approach , 2016 .

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

[6]  Ivar Jacobson,et al.  Object-oriented software engineering - a use case driven approach , 1993, TOOLS.

[7]  Barry Boehm,et al.  Software Cost Estimation with Cocomo II with Cdrom , 2000 .

[8]  A. Steven Klusener,et al.  Supporting software architects to improve their software system's decomposition – lessons learned , 2013, J. Softw. Evol. Process..

[9]  Jeffrey C. Carver,et al.  Characterizing software architecture changes: A systematic review , 2010, Inf. Softw. Technol..

[10]  Robert Heinrich,et al.  Architecture-based assessment and planning of change requests , 2015, 2015 11th International ACM SIGSOFT Conference on Quality of Software Architectures (QoSA).

[11]  Elena Navarro,et al.  Evolution styles: using architectural knowledge as an evolution driver , 2013, J. Softw. Evol. Process..

[12]  Robert Heinrich,et al.  Deriving Work Plans for Solving Performance and Scalability Problems , 2014, EPEW.

[13]  Len Bass,et al.  Architecture-Centric Software Project Management: A Practical Guide , 2002 .

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

[15]  Niels Streekmann,et al.  Clustering-based support for software architecture restructuring , 2011 .

[16]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[17]  Bradley R. Schmerl,et al.  Evolution styles: Foundations and tool support for software architecture evolution , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.