Abstract
The average lifetime of software systems has been growing steadily over the last few decades, and thus, they are demanding increasing resources to remain in operation while still meeting business needs. As a software system ages, it needs to be continuously modified and expanded to stay useful. Whether intentional or not, the various maintenance activities performed during the software’s lifetime inevitably introduce quality violations, contributing to building up the software’s technical debt. If these violations are not adequately addressed, they can negatively impact the software’s maintainability and, thus, the software’s capacity to adapt and evolve. In general terms, usually, the aim is to sustain satisfactory levels of technical quality characteristics of the software and, at the same time, preserve the maintenance costs and the tangible software asset itself at acceptable levels to organizations. The long-term impact of various maintenance investment decisions inevitability influences the software’s evolutionary path, which goes through numerous iterations throughout its lifetime. This work uses the systems thinking approach to map the main concepts related to the software maintenance processes that account for this tradeoff analysis and decisions and describe their causal relationships. Moreover, it presents a systemic causal-effect relationship map capable of evidencing how some of the emergent behavior arising from long-term operating and maintaining software systems could be endogenously explained.
Similar content being viewed by others
Data availability
All data generated or analyzed during this study are included in this published article (and its supplementary information files).
References
Abdel-Hamid, T. K. (1984). The dynamics of software development project management - an integrative system dynamics perspective.
Abdel-Hamid, T. K. (1988a). The economics of software quality assurance: A simulation-based case study. MIS Quarterly, 12(3), 395. https://doi.org/10.2307/249206
Abdel-Hamid, T. K. (1988b). Understanding the “90% syndrome” in software project management: A simulation-based case study. Journal of Systems and Software, 8(4), 319–330. https://doi.org/10.1016/0164-1212(88)90015-5
Abdel-Hamid, T. K. (1989). The dynamics of software project staffing: A system dynamics based simulation approach. IEEE Transactions on Software Engineering, 15(2), 109–119. https://doi.org/10.1109/32.21738
Abdel-Hamid, T. K. (1990). Investigating the cost/schedule trade-off in software development. IEEE Software, 7(1), 97–105. https://doi.org/10.1109/52.43055
Abdel-Hamid, T. K., & Madnick, S. E. (1986). Impact of schedule estimation on software project behavior. IEEE Software, 3(4), 70–75. https://doi.org/10.1109/MS.1986.234072
Abdel-Hamid, T. K., Sengupta, K., & Swett, C. (1999). The impact of goals on software project management: An experimental investigation. MIS Quarterly, 23(4), 531. https://doi.org/10.2307/249488
Abdel-Hamid, T. K., & Leidy, F. H. (1991). An expert simulator for allocating the quality assurance effort in software development. SIMULATION, 56(4), 233–240. https://doi.org/10.1177/003754979105600407
Abdel-Hamid, T. K., & Madnick, S. (1982). A model of software project management dynamics. The 6th International Computer Software and Applications Conference (COMPSAC).
Abdel-Hamid, T. K., & Madnick, S. (1989). Software productivity: Potential, actual, and perceived. System Dynamics Review, 5(2), 93–113. https://doi.org/10.1002/sdr.4260050202
Abdel-Hamid, T. K., & Madnick, S. (1991). Software project dynamics: An integrated approach (first edit). Prentice Hall.
Ali, N., & bin, Petersen, K., & Wohlin, C. (2014). A systematic literature review on the industrial use of software process simulation. Journal of Systems and Software, 97, 65–85. https://doi.org/10.1016/j.jss.2014.06.059
Allman, E. (2012). Managing technical debt. Communications of the ACM, 55(5), 50–55. https://doi.org/10.1145/2160718.2160733
Ampatzoglou, A., Ampatzoglou, A., Chatzigeorgiou, A., & Avgeriou, P. (2015). The financial aspect of managing technical debt: A systematic literature review. Information and Software Technology, 64, 52–73. https://doi.org/10.1016/j.infsof.2015.04.001
Arnold, R. D., & Wade, J. P. (2015). A definition of systems thinking: A systems approach. Procedia Computer Science, 44, 669–678. https://doi.org/10.1016/j.procs.2015.03.050
Avgeriou, P., Kruchten, P., Ozkaya, I., & Seaman, C. (2016). Managing technical debt in software engineering (Dagstuhl Seminar 16162). Dagstuhl Reports, 6(4). https://doi.org/10.4230/DagRep.6.4.110
Bakota, T., Hegedus, P., Ladanyi, G., Kortvelyesi, P., Ferenc, R., & Gyimothy, T. (2012). A cost model based on software maintainability. 2012 28th IEEE International Conference on Software Maintenance (ICSM), 316–325. https://doi.org/10.1109/ICSM.2012.6405288
Belady, L., & Lehman, M. (1971). Programming system dynamics or the metadynamics of systems in maintenance and growth. Research Report RC3546, IBM.
Belady, L., & Lehman, M. (1972). An introduction to growth dynamics. Statistical Computer Performance Evaluation (pp 503–511). Elsevier. https://doi.org/10.1016/B978-0-12-266950-7.50030-X
Belady, L., & Lehman, M. (1976). A model of large program development. IBM System Journal, 15(3), 225–252.
Bennett, K. H., & Rajlich, V. T. (2000). Software maintenance and evolution: A roadmap. Proceedings of the Conference on The Future of Software Engineering - ICSE ’00, 73–87. https://doi.org/10.1145/336512.336534
Besker, T., Martini, A., & Bosch, J. (2018). Managing architectural technical debt: A unified model and systematic literature review. Journal of Systems and Software, 135, 1–16. https://doi.org/10.1016/j.jss.2017.09.025
Cao, L., Ramesh, B., & Abdel-Hamid, T. (2010). Modeling dynamics in agile software development. ACM Transactions on Management Information Systems, 1(1), 1–26. https://doi.org/10.1145/1877725.1877730
Chapin, N., Hale, J. E., Khan, KMd., Ramil, J. F., & Tan, W.-G. (2001). Types of software evolution and software maintenance. Journal of Software Maintenance and Evolution: Research and Practice, 13(1), 3–30. https://doi.org/10.1002/smr.220
Chatters, B. W., Lehman, M., Ramil, J. F., & Wernick, P. (2000). Modelling a software evolution process: A long-term case study. Software Process: Improvement and Practice, 5(2–3), 91–102. https://doi.org/10.1002/1099-1670(200006/09)5:2/3%3c91::AID-SPIP123%3e3.0.CO;2-L
Cook, S., Harrison, R., Lehman, M. M., & Wernick, P. (2006). Evolution in software systems: Foundations of the SPE classification scheme. Journal of Software Maintenance and Evolution: Research and Practice, 18(1), 1–35. https://doi.org/10.1002/smr.314
Cunningham, W. (1993). The WyCash portfolio management system. ACM SIGPLAN OOPS Messenger, 4(2), 29–30. https://doi.org/10.1145/157710.157715
Downs, J. S. (2014). Prescriptive scientific narratives for communicating usable science. Proceedings of the National Academy of Sciences, 111(supplement_4), 13627–13633. https://doi.org/10.1073/pnas.1317502111
Eick, S. G., Graves, T. L., Karr, A. F., Marron, J. S., & Mockus, A. (2001). Does code decay? Assessing the evidence from change management data. IEEE Transactions on Software Engineering, 27(1), 1–12. https://doi.org/10.1109/32.895984
Fernandez-Ramil, J., Lozano, A., Wermelinger, M., & Capiluppi, A. (2008). Empirical studies of open source evolution. Software Evolution (pp 263–288). Springer Berlin Heidelberg. https://doi.org/10.1007/978-3-540-76440-3_11
Fowler, M. (2009). Technical debt quadrant. Retrieved July 25, 2022, from https://martinfowler.com/bliki/TechnicalDebtQuadrant.html
Fowler, M., Beck, K., Brant, J., Opdyke, W., & Roberts, D. (1999). Refactoring: Improving the design of existing code (1st ed.). Addison-Wesley Professional.
Franco, E. F., Hirama, K., & Carvalho, M. M. (2017). Applying system dynamics approach in software and information system projects: A mapping study. Information and Software Technology. https://doi.org/10.1016/j.infsof.2017.08.013
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns: Elements of reusable object-oriented software (1st ed.). Addison-Wesley Professional.
Georgantzas, N. C., & Katsamakas, E. G. (2008). Information systems research with system dynamics. System Dynamics Review, 24(3), 247–264. https://doi.org/10.1002/sdr.420
Glass, R. (2005). IT failure rates - 70% or 10–15%? IEEE Software, 22(3), 112, 110–111. https://doi.org/10.1109/MS.2005.66
Glass, R. (2006). The Standish report: Does it really describe a software crisis? Communications of the ACM, 49(8), 15. https://doi.org/10.1145/1145287.1145301
Godfrey, M. W., & German, D. M. (2014). On the evolution of Lehman’s Laws. Journal of Software: Evolution and Process, 26(7), 613–619. https://doi.org/10.1002/smr.1636
Godfrey M. W., & Tu, Q. (2000). Evolution in open source software: a case study. Proceedings International Conference on Software Maintenance ICSM-94, 131–142. https://doi.org/10.1109/ICSM.2000.883030
Herraiz, I., Rodriguez, D., Robles, G., & Gonzalez-Barahona, J. M. (2013). The evolution of the laws of software evolution: A discussion based ona systematic literature review. ACM Computing Surveys, 46(2), 1–28. https://doi.org/10.1145/2543581.2543595
Highsmith, J. (2009). Agile project management: Creating innovative products (2nd ed). Addison-Wesley Professional.
Hofman-Bergholm, M. (2022). Storytelling as an educational tool in sustainable education. Sustainability, 14(5), 2946. https://doi.org/10.3390/su14052946
INCOSE. (2015). Systems engineering handbook: A guide for system life cycle processes and activities (D. D. Walden, G. J. Roedler, K. J. Forsberg, R. D. Hamelin, & T. M. Shortell, Eds.; 4th ed.). Wiley.
ISO/IEC 25010. (2011). Systems and software engineering — systems and software quality requirements and evaluation (SQuaRE) — system and software quality models (p 34). International Organization for Standardization.
Johnson, J. (2020). CHAOS2020 beyond infinity. Standish Group.
Jones, C. (2007). Geriatric issues of aging software. CrossTalk, the Journal of Defense Software Engineering, 20(12), 4–8.
Jones, C. (2008). Applied software measurement: Global analysis of productivity and quality (3rd ed.). McGraw-Hill Education.
Kahen, G., Lehman, M. M. M., Ramil, J. F. F., & Wernick, P. (2001). System dynamics modelling of software evolution processes for policy investigation: Approach and example. Journal of Systems and Software, 59(3), 271–281. https://doi.org/10.1016/S0164-1212(01)00068-1
Keating, E., Oliva, R., Repenning, N., Rockart, S., & Sterman, J. (1999). Overcoming the improvement paradox. European Management Journal, 17(2), 120–134. https://doi.org/10.1016/S0263-2373(98)00072-3
Kellner, M. I., Madachy, R. J., & Raffo, D. M. (1999). Software process simulation modeling: Why? What? How? Journal of Systems and Software, 46(2–3), 91–105. https://doi.org/10.1016/S0164-1212(99)00003-5
Kruchten, P., Nord, R. L., & Ozkaya, I. (2012). Technical debt: From metaphor to theory and practice. IEEE Software, 29(6), 18–21. https://doi.org/10.1109/MS.2012.167
Lehman, M. (1980). Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9), 1060–1076. https://doi.org/10.1109/PROC.1980.11805
Lehman, M. (1996a). Laws of software evolution revisited. EWSPT ’96 Proceedings of the 5th European Workshop on Software Process Technology, 1149, 108–124.
Lehman, M. (1996b). Feedback in the software evolution process. Information and Software Technology, 38(11), 681–686. https://doi.org/10.1016/0950-5849(96)01121-4
Lehman, M., Kahen, G., & Ramil, J. (2002). Behavioural modelling of long-lived evolution processes? Some issues and an example. Journal of Software Maintenance and Evolution: Research and Practice, 14(5), 335–351. https://doi.org/10.1002/smr.259
Lehman, M., Perry, D., & Ramil, J. (1998a). Implications of evolution metrics on software maintenance. Proceedings. International Conference on Software Maintenance, 208–217. https://doi.org/10.1109/ICSM.1998.738510
Lehman, M., Perry, D., & Ramil, J. (1998b). On evidence supporting the FEAST hypothesis and the laws of software evolution. Proceedings Fifth International Software Metrics Symposium Metrics, 84–88. https://doi.org/10.1109/METRIC.1998.731229
Lehman, M., & Ramil, J. (2001). Rules and tools for software evolution planning and management. Annals of Software Engineering, 11(1), 15–44. https://doi.org/10.1023/A:1012535017876
Lehman, M., & Ramil, J. C. (2006). Software evolution. Software Evolution and Feedback (pp 7–40). John Wiley & Sons, Ltd. https://doi.org/10.1002/0470871822.ch1
Li, Z., Avgeriou, P., & Liang, P. (2015). A systematic mapping study on technical debt and its management. Journal of Systems and Software, 101, 193–220. https://doi.org/10.1016/j.jss.2014.12.027
Lin, C. Y., Abdel-Hamid, T., & Sherif, J. S. (1997). Software-engineering process simulation model (SEPS). Journal of Systems and Software, 38(3), 263–277. https://doi.org/10.1016/S0164-1212(96)00156-2
Lyneis, J. M., & Ford, D. N. (2007). System dynamics applied to project management: A survey, assessment, and directions for future research. System Dynamics Review, 23(2–3), 157–189. https://doi.org/10.1002/sdr.377
McConnell, S. (1996). Rapid development: Taming wild software schedules. Microsoft Press.
Meadows, D. H. (2008). Thinking in systems: A primer. Chelsea Green Publishing.
Melville, N., Kraemer, K., & Gurbaxani, V. (2004). Information technology and organizational performance: An integrative model of IT business value. MIS Quarterly, 28(2), 283–322.
Mens, T., Wermelinger, M., Ducasse, S., Demeyer, S., Hirschfeld, R., & Jazayeri, M. (2005). Challenges in software evolution. Eighth International Workshop on Principles of Software Evolution (IWPSE’05), 13–22. https://doi.org/10.1109/IWPSE.2005.7
Neamtiu, I., Xie, G., & Chen, J. (2013). Towards a better understanding of software evolution: An empirical study on open-source software. Journal of Software: Evolution and Process, 25(3), 193–218. https://doi.org/10.1002/smr.564
Oliva, R., & Sterman, J. D. (2001). Cutting corners and working overtime: Quality erosion in the service industry. Management Science, 47(7), 894–914. https://doi.org/10.1287/mnsc.47.7.894.9807
OMG. (2018). Automated technical debt measure (ATDM). Retrieved July 25, 2022, from https://www.omg.org/spec/ATDM/
Parnas, D. L. (1994). Software aging. Proceedings of 16th International Conference on Software Engineering, 279–287. https://doi.org/10.1109/ICSE.1994.296790
Plate, R. (2010). Assessing individuals’ understanding of nonlinear causal structures in complex systems. System Dynamics Review, 26(1), 19–33. https://doi.org/10.1002/sdr.432
Rahmandad, H., & Repenning, N. (2016). Capability erosion dynamics. Strategic Management Journal, 37(4), 649–672. https://doi.org/10.1002/smj.2354
Rahmandad, H., & Weiss, D. M. (2009). Dynamics of concurrent software development. System Dynamics Review, 25(3), 224–249. https://doi.org/10.1002/sdr.425
Ramasubbu, N., & Kemerer, C. (2014). Managing technical debt in enterprise software packages. IEEE Transactions on Software Engineering, 5589(c), 1–1. https://doi.org/10.1109/TSE.2014.2327027
Ramasubbu, N., Kemerer, C. F., & Woodard, C. J. (2015). Managing technical debt: Insights from recent empirical evidence. IEEE Software, 32(2), 22–25. https://doi.org/10.1109/MS.2015.45
Repenning, N. P., & Sterman, J. D. (2001). Nobody ever gets credit for fixing problems that never happened: Creating and sustaining process improvement. California Management Review, 43(4), 64–88. https://doi.org/10.2307/41166101
Richmond, B. (1994). Systems thinking/system dynamics: Let’s just get on with it. System Dynamics Review, 10(2–3), 135–157. https://doi.org/10.1002/sdr.4260100204
Rios, N., de Mendonça Neto, M. G., & Spínola, R. O. (2018). A tertiary study on technical debt: Types, management strategies, research trends, and base information for practitioners. Information and Software Technology, 102, 117–145. https://doi.org/10.1016/j.infsof.2018.05.010
Sauer, C. (1993). Why information systems fail: A case study approach. Alfred Waller.
Senge, P. M. (2006). The fifth discipline: The art & practice of the learning organization (2nd ed.). Crown Business.
Sengupta, K., & Abdel-Hamid, T. K. (1993). Alternative conceptions of feedback in dynamic decision environments: An experimental investigation. Management Science, 39(4), 411–428. https://doi.org/10.1287/mnsc.39.4.411
Sengupta, K., & Abdel-Hamid, T. K. (1996). The impact of unreliable information on the management of software projects: A dynamic decision perspective. IEEE Transactions on Systems, Man, and Cybernetics - Part a: Systems and Humans, 26(2), 177–189. https://doi.org/10.1109/3468.485744
Sengupta, K., Abdel-Hamid, T. K., & Bosley, M. (1999). Coping with staffing delays in software project management: An experimental investigation. IEEE Transactions on Systems, Man, and Cybernetics - Part a: Systems and Humans, 29(1), 77–91. https://doi.org/10.1109/3468.736362
Sterman, J. (2000). Business dynamics: Systems thinking and modeling for a complex world. McGraw-Hill/Irwin.
Sterman, J. (2002). System dynamics: Systems thinking and modeling for a complex world. ESD-WP-2003–01.13-ESD Internal Symposium, 29.
Stroh, D. P. (2015). Systems thinking for social change: A practical guide to solving complex problems, avoiding unintended consequences, and achieving lasting results (illustrated edition). Chelsea Green Publishing.
Sundin, A., Andersson, K., & Watt, R. (2018). Rethinking communication: Integrating storytelling for increased stakeholder engagement in environmental evidence synthesis. Environmental Evidence, 7(1), 6. https://doi.org/10.1186/s13750-018-0116-4
Turski, W. M. (2002). The reference model for smooth growth of software systems revisited. IEEE Transactions on Software Engineering, 28(8), 814–815. https://doi.org/10.1109/TSE.2002.1027802
Waeselynck, H., & Pfahl, D. (1994). System dynamics applied to the modeling of software projects. Software-Concepts and Tools, 15(4), 162–176.
Wernick, P., & Hall, T. (2003). Simulating Global Software Evolution Processes by Combining Simple Models: An Initial Study. https://doi.org/10.1002/spip.159
Wernick, P., & Lehman, M. M. (1999). Software process white box modelling for FEAST/1. Journal of Systems and Software, 46(2–3), 193–201. https://doi.org/10.1016/S0164-1212(99)00012-6
Woodside, C. M. (1979). A mathematical model for the evolution of software. Journal of Systems and Software, 1, 337–345. https://doi.org/10.1016/0164-1212(79)90035-9
Yeo, K. T. (2002). Critical failure factors in information system projects. International Journal of Project Management, 20(3), 241–246. https://doi.org/10.1016/S0263-7863(01)00075-8
Zhang, H., Kitchenham, B., & Pfahl, D. (2008). Reflections on 10 years of software process simulation modeling: A systematic review. In Q. Wang, D. Pfahl, & D. M. Raffo (Eds.), Making Globally Distributed Software Development a Success Story (Vol. 5007, pp 345–356). Springer Berlin Heidelberg. https://doi.org/10.1007/978-3-540-79588-9
Zhang, H., Kitchenham, B., & Pfahl, D. (2010). Software process simulation modeling: An extended systematic review. New Modeling Concepts for Today’s Software Processes, 6195, 309–320. https://doi.org/10.1007/978-3-642-14347-2
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Competing interests
The authors declare no competing interests.
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
Springer Nature or its licensor holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Franco, E.F., Hirama, K., Armenia, S. et al. A systems interpretation of the software evolution laws and their impact on technical debt management and software maintainability. Software Qual J 31, 179–209 (2023). https://doi.org/10.1007/s11219-022-09600-6
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11219-022-09600-6