Estimating the Complexity of Architectural Design Decision Networks

The stability and longevity of software systems rely on the quality of design decisions over time. In modern software-intensive systems the number of design decisions taken, the dependencies between those decisions, and the number of design alternatives considered, complicate software maintenance and jeopardize the system’s longevity. Despite the existence of complexity metrics applied to code, there is a lack of metrics for design decisions. As estimating the complexity of a set of design decisions is needed for understanding the difficulty of software evolution, this paper proposes and validates a new metric to estimate the complexity of decision networks. The metric is based on decision topologies and provides a way to understand the complexity of decision sets and reason about the maintenance difficulty. We validate our metric empirically in two different ways: (i) evaluating the complexity of two service-based platform systems, and (ii) analyzing the evolution of complexity in four open-source projects and compare how the evolution of complexity affects to the architecture in one of the open-source projects. Our results show that certain network topologies are more difficult to maintain, so we provide a set of tactics to reduce the complexity of design decision networks.

[1]  Uwe Zdun,et al.  Software metrics for measuring the understandability of architectural structures: a systematic mapping study , 2015, EASE.

[2]  Alain Abran,et al.  From software metrics to software measurement methods: a process model , 1997, Proceedings of IEEE International Symposium on Software Engineering Standards.

[3]  Thomas P. Moran,et al.  Questions, Options, and Criteria: Elements of Design Space Analysis , 1991, Hum. Comput. Interact..

[4]  Ivica Crnkovic,et al.  Framing sustainability as a property of software quality , 2015, Commun. ACM.

[5]  Peng Liang,et al.  An empirical investigation of modularity metrics for indicating architectural technical debt , 2014, QoSA '14.

[6]  Jesús M. González-Barahona,et al.  Managing Libre Software Distributions under a Product Line Approach , 2008, 2008 32nd Annual IEEE International Computer Software and Applications Conference.

[7]  Stefan Sobernig,et al.  Architectural Decision Making for Service-Based Platform Integration: A Qualitative Multi-Method Study , 2012, 2012 Joint Working IEEE/IFIP Conference on Software Architecture and European Conference on Software Architecture.

[8]  Henry Muccini,et al.  Supporting Architectural Design Decisions Evolution through Model Driven Engineering , 2011, SERENE.

[9]  Rafael Capilla,et al.  Ripple effect to evaluate the impact of changes in architectural design decisions , 2018, ECSA.

[10]  Alessandro F. Garcia,et al.  On the Relevance of Code Anomalies for Identifying Architecture Degradation Symptoms , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[11]  Nenad Medvidovic,et al.  Relating Architectural Decay and Sustainability of Software Systems , 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA).

[12]  Tom Mens,et al.  A Graph-Based Metamodel for Object-Oriented Software Metrics , 2002, Electron. Notes Theor. Comput. Sci..

[13]  Raghvinder S. Sangwan,et al.  Structural Epochs in the Complexity of Software over Time , 2008, IEEE Software.

[14]  Cláudio Sant'Anna,et al.  From retrospect to prospect: Assessing modularity and stability from software architecture , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[15]  Muhammad Awais,et al.  Design Quality Metrics to Determine the Suitability and Cost-Effect of Self-* Capabilities for Autonomic Computing Systems , 2019, IEEE Access.

[16]  Jean-Louis Letouzey,et al.  Managing Technical Debt with the SQALE Method , 2012, IEEE Software.

[17]  Colin C. Venters,et al.  Software sustainability: Research and practice from a software architecture viewpoint , 2018, J. Syst. Softw..

[18]  Derek Rayside,et al.  Measuring the Impact of Code Dependencies on Software Architecture Recovery Techniques , 2018, IEEE Transactions on Software Engineering.

[19]  Stefan Richter,et al.  Centrality Indices , 2004, Network Analysis.

[20]  A. Ananda Rao,et al.  A Quantitative Evaluation of Software Quality Enhancement by Refactoring Using Dependency Oriented Complexity Metrics , 2009, 2009 Second International Conference on Emerging Trends in Engineering & Technology.

[21]  Norman F. Schneidewind,et al.  Methodology For Validating Software Metrics , 1992, IEEE Trans. Software Eng..

[22]  Stefan Sobernig,et al.  A pattern language for service-based platform integration and adaptation , 2012, EuroPLoP.

[23]  Nenad Medvidovic,et al.  Identifying Architectural Bad Smells , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[24]  Wolfgang Slany Catroid: a mobile visual programming system for children , 2012, IDC '12.

[25]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[26]  Elvira-Maria Arvanitou,et al.  A mapping study on design-time quality attributes and metrics , 2017, J. Syst. Softw..

[27]  Olaf Zimmermann,et al.  Guidelines and Metrics for Configurable and Sustainable Architectural Knowledge Modelling , 2015, ECSA Workshops.

[28]  Kuntz Werner,et al.  Issues as Elements of Information Systems , 1970 .

[29]  Charles W. Butler,et al.  Design complexity measurement and testing , 1989, CACM.

[30]  Ruzanna Chitchyan,et al.  Sustainability Debt: A Metaphor to Support Sustainability Design Decisions , 2015, RE4SuSy@RE.

[31]  Michalis Faloutsos,et al.  Graph-based analysis and prediction for software evolution , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[32]  Olaf Zimmermann Metrics for Architectural Synthesis and Evaluation -- Requirements and Compilation by Viewpoint. An Industrial Experience Report , 2015, 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics.

[33]  Jing Liu,et al.  A Hybrid Set of Complexity Metrics for Large-Scale Object-Oriented Software Systems , 2010, Journal of Computer Science and Technology.

[34]  .. V. Heescha,et al.  A documentation framework for architecture decisions , 2011 .

[35]  Raymond McCall,et al.  Rationale Management in Software Engineering , 2006 .

[36]  Vladimir Batagelj,et al.  Generalized blockmodeling of two-mode network data , 2004, Soc. Networks.

[37]  Adam Tornhill Assessing Technical Debt in Automated Tests with CodeScene , 2018, 2018 IEEE International Conference on Software Testing, Verification and Validation Workshops (ICSTW).

[38]  L. da F. Costa,et al.  Characterization of complex networks: A survey of measurements , 2005, cond-mat/0505185.

[39]  Miroslaw Staron,et al.  Evaluating code complexity triggers, use of complexity measures and the influence of code complexity on maintenance time , 2017, Empirical Software Engineering.

[40]  Apostolos Ampatzoglou,et al.  The Effect of GoF Design Patterns on Stability: A Case Study , 2015, IEEE Transactions on Software Engineering.

[41]  Nenad Medvidovic,et al.  Recovering Architectural Design Decisions , 2018, 2018 IEEE International Conference on Software Architecture (ICSA).

[42]  Tu Honglei,et al.  The Research on Software Metrics and Software Complexity Metrics , 2009, 2009 International Forum on Computer Science-Technology and Applications.

[43]  Sanjay Misra,et al.  A Suite of Object Oriented Cognitive Complexity Metrics , 2018, IEEE Access.

[44]  Miroslaw Staron,et al.  Automotive Software Architectures , 2017, Springer International Publishing.

[45]  Sjaak Brinkkemper,et al.  Design Erosion in Evolving Software Products , 2003 .

[46]  Olaf Zimmermann,et al.  Sustainable Architectural Design Decisions , 2013, IEEE Software.

[47]  Nenad Medvidovic,et al.  An Empirical Study of Architectural Change in Open-Source Software Systems , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[48]  Muhammad Ali Babar,et al.  10 years of software architecture knowledge management: Practice and future , 2016, J. Syst. Softw..

[49]  Nenad Medvidovic,et al.  Architectural-Based Speculative Analysis to Predict Bugs in a Software System , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[50]  Rafael Capilla,et al.  Toward Architecture Knowledge Sustainability: Extending System Longevity , 2017, IEEE Software.

[51]  Yuanfang Cai,et al.  Hotspot Patterns: The Formal Definition and Automatic Detection of Architecture Smells , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.