Proactive Software Complexity Assessment
Large software development companies primarily deliver value to their customers by continuously enhancing the functionality of their products. Continuously developing software for customers insures the enduring success of a company. In continuous development, however, software complexity tends to increase gradually, the consequence of which is deteriorating maintainability over time. During short periods of time, the gradual complexity increase is insignificant, but over longer periods of time, complexity can develop to an unconceivable extent, such that maintenance is no longer profitable. Thus, proactive complexity assessment methods are required to prevent the gradual growth of complexity and instead build quality into developed software. Many studies have been conducted to delineate methods for complexity assess-ment. These focus on three main areas: 1) the landscape of complexity, i.e., the source of the complexity; 2) the possibilities for complexity assessment, i.e., how complexity can be measured and whether the results of assessment reflects reality; and 3) the practicality of using complexity assessment methods, i.e., the successful integration and use of assessment methods in continuous software development. Partial successes were achieved in all three areas. Firstly, it is clear that com-plexity is understood in terms of its consequences, such as spent time or re-sources, rather than in terms of its structure per se, such as software character-istics. Consequently, current complexity measures only assess isolated aspects of complexity and fail to capture its entirety. Finally, it is also clear that existing complexity assessment methods are used for isolated activities (e.g., defect and maintainability predictions) and not for integrated decision support (e.g., con-tinuous maintainability enhancement and defect prevention). This thesis presents 14 new findings across these three areas. The key findings are that: 1) Complexity increases maintenance time multifold when software size is constant. This consequential effect is mostly due to a few software characteristics, and whilst other software characteristics are essential for software development, they have an insignificant effect on complexity growth; 2) Two methods are proposed for complexity assessment. The first is for source code, which represents a combination of existing complexity measures to indicate deteriorating areas of code. The second is for textual requirements, which represents new complexity measures that can detect the inflow of poorly specified requirements; 3) Both methods were developed based on two critical factors: (i) the accuracy of assessment, and (ii) the simplicity of interpretation. The methods were integrated into practitioners’ working environments to allow proactive complexity assessment, and prevent defects and deteriorating maintainability. In addition, several additional key observations were made: Primarily the focus should be in creating more sophisticated software complexity measures based on empirical data indicative of the code characteristics that most influence com-plexity. It is desirable to integrate such complexity assessment measures into the practitioners’ working environments to ensure that complexity is assessed and managed proactively. This would allow quality to be built into the product rather than having to conduct separate, post-release refactoring activities.
Parts of work
Vard Antinyan, Miroslaw Staron, Wilhelm Meding, Per Österström, Anders Henriksson Jörgen Hansson, “Monitoring evolution of code complexity and magnitude of changes.” Published in Journal of Acta Cybernetica (0324-721X, Vol. 21, pp. 367-382), 2014.Vard Antinyan, Miroslaw Staron, Wilhelm Meding, Per Österström, Erik Wikström, Johan Wranker, Anders Henriksson, Jörgen Hansson, “Identifying risky areas of software code in Agile/Lean software development: an industrial experience report”. Published in 21th IEEE International Conference on of Software Analysis, Evolution and Reengineering (SANER, former CSMR/WCRE conferences), pp. 154-163, IEEE 2014.Vard Antinyan and Miroslaw Staron, “Rendex: A method for automated reviews of textual requirements”. Published in Journal of Systems and Software. DOI /10.1016/j.jss.2017.05.079. Elsevier, 2017.Vard Antinyan, Miroslaw Staron, Anna Sandberg, “Evaluating code complexity triggers, use of complexity measures, and the influence of code complexity on maintenance time”. Published in Empirical Software Engineering Journal. DOI: 10.1007/s10664-017-9508-2. Springer, 2017.Vard Antinyan, Jesper Derehag, Anna Sandberg, Miroslaw Staron, “Mythical unit test coverage”. Published in IEEE Software Magazine, 2017 (scheduled for printing).Vard Antinyan, Miroslaw Staron, Anna Sandberg, & Jörgen Hansson “Validating software measures using action research a method and industrial experiences”. Published in 20th International Conference on Evaluation and Assessment in Software Engineering (EASE), p. 23. ACM, 2016.
Doctor of Philosophy
Göteborgs universitet. IT-fakulteten
Department of Computer Science and Engineering ; Institutionen för data- och informationsteknik
13:15, 7th of November, 2017. Hörselgången 5, Jupiter, room Omega.
Date of defence
komplexitet, mäta, kod, krav, mjukvarukvalitet, teknisk risk, teknisk skuld, kontinuerlig integration.
complexity, metric, measure, code, requirement, software quality, technical risk, technical debt, continuous integration, agile development.