Supporting Software Architecture Evolution by Functional Decomposition

David Faitelson, Robert Heinrich, Shmuel Tyszberowicz


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. Boehm, B. W. et al. (2000). Software Cost Estimation with Cocomo II with Cdrom. Prentice Hall.
  2. Clements, P. et al. (2002). Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley.
  3. Cuesta, C. E., Navarro, E., Perry, D. E., and Roda, C. (2013). Evolution styles: using architectural knowledge as an evolution driver. Journal of Software: Evolution and Process, 25(9):957-980.
  4. Faitelson, D. and Tyszberowicz, S. (2015). Improving design decomposition. In Li, X., Liu, Z., and Yi, W., editors, SETTA, volume 9409 of LNCS, pages 185-200. Springer.
  5. Garlan, D. et al. (2009). Evolution styles: Foundations and tool support for software architecture evolution. In Software Architecture, WICSA/ECSA, pages 131-140. IEEE.
  6. Heger, C. and Heinrich, R. (2014). Deriving work plans for solving performance and scalability problems. In Computer Performance Engineering, volume 8721 of LNCS, pages 104-118. Springer.
  7. Heinrich, R., Rostami, K., Stammel, J., Knapp, T., and Reussner, R. (2015). Architecture-based analysis of changes in information system evolution. 17th Workshop Software-Reengineering & Evolution, SWTTrends, 34(3).
  8. Jackson, D. (2012). Software Abstractions: Logic, Language, and Analysis. The MIT Press.
  9. Jacobson, I., Christerson, M., Jonsson, P., and Overgaard, G. (1992). Object-oriented software engineering - a use case driven approach. Addison-Wesley.
  10. Kamada, T. and Kawai, S. (1989). An algorithm for drawing general undirected graphs. Information Processing Letters, 31(1):7-15.
  11. Lehman, M. M. (1980). On understanding laws, evolution, and conservation in the large-program life cycle. Journal of Systems and Software, 1:213-221.
  12. North, S. C. (2004). Drawing graphs with NEATO. NEATO User's Manual.
  13. Paulish, D. J. and Bass, L. (2001). Architecture-Centric Software Project Management: A Practical Guide. Addison-Wesley.
  14. Reussner, Ralf H. et al., editor (2016). Modeling and Simulating Software Architectures - The Palladio Approach. MIT Press.
  15. Rostami, K., Stammel, J., Heinrich, R., and Reussner, R. (2015). Architecture-based assessment and planning of change requests. In QoSA, pages 21-30.
  16. Streekmann, N. (2011). Clustering-Based Support for Software Architecture Restructuring. Software Engineering Research. Vieweg+Teubner Verlag.
  17. Vanya, A., Klusener, S., Premraj, R., and van Vliet, H. (2013). Supporting software architects to improve their software system's decomposition - lessons learned. Journal of Software: Evolution and Process, 25(3):219-232.
  18. Williams, B. J. and Carver, J. C. (2010). Characterizing software architecture changes: A systematic review. Inf. Softw. Technol., 52(1):31-51.

Paper Citation

in Harvard Style

Faitelson D., Heinrich R. and Tyszberowicz S. (2017). Supporting Software Architecture Evolution by Functional Decomposition . In Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development - Volume 1: MODELSWARD, ISBN 978-989-758-210-3, pages 435-442. DOI: 10.5220/0006206204350442

in Bibtex Style

author={David Faitelson and Robert Heinrich and Shmuel Tyszberowicz},
title={Supporting Software Architecture Evolution by Functional Decomposition},
booktitle={Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development - Volume 1: MODELSWARD,},

in EndNote Style

JO - Proceedings of the 5th International Conference on Model-Driven Engineering and Software Development - Volume 1: MODELSWARD,
TI - Supporting Software Architecture Evolution by Functional Decomposition
SN - 978-989-758-210-3
AU - Faitelson D.
AU - Heinrich R.
AU - Tyszberowicz S.
PY - 2017
SP - 435
EP - 442
DO - 10.5220/0006206204350442