Sustainability guidelines for long-living software systems

Economically sustainable software systems must be able to cost-effectively evolve in response to changes in their environment, their usage profile, and business demands. However, in many software development projects, sustainability is treated as an afterthought, as developers are driven by time-to-market pressure and are often not educated to apply sustainability-improving techniques. While software engineering research and practice has suggested a large amount of such techniques, a holistic overview is missing and the effectiveness of individual techniques is often not sufficiently validated. On this behalf we created a catalog of “software sustainability guidelines” to support project managers, software architects, and developers during system design, development, operation, and maintenance. This paper describes how we derived these guidelines and how we applied selected techniques from them in two industrial case studies. We report several lessons learned about sustainable software development.

[1]  Leonard J. Bass,et al.  Scenario-Based Analysis of Software Architecture , 1996, IEEE Softw..

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

[3]  Krzysztof Czarnecki,et al.  Generative Programming , 2001, ECOOP Workshops.

[4]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[5]  Ivica Crnkovic,et al.  A Systematic Review on Architecting for Software Evolvability , 2010, 2010 21st Australian Software Engineering Conference.

[6]  Robert C. Martin Clean Code - a Handbook of Agile Software Craftsmanship , 2008 .

[7]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[8]  Heiko Koziolek,et al.  Sustainability evaluation of software architectures: a systematic review , 2011, QoSA-ISARCS '11.

[9]  Roland J. Weiss,et al.  Towards Software Sustainability Guidelines for Long-living Industrial Systems , 2011, Software Engineering.

[10]  Johannes Stammel,et al.  ABB DARWIN Software Evolution for Industrial Automation Systems: Literature Overview , 2011 .

[11]  Eoin Woods,et al.  Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives , 2005 .

[12]  Elias Pimenidis,et al.  Clean Code: A Handbook of Agile Software Craftmanship , 2009 .

[13]  Hannes Schwarz,et al.  Model-Driven Software Development , 2013 .

[14]  Grace A. Lewis,et al.  Measuring software sustainability , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[15]  Volker Gruhn,et al.  Model-Driven Software Development , 2005 .

[16]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[17]  Pekka Abrahamsson,et al.  Agile methods in European embedded software development organisations: a survey on the actual use and usefulness of Extreme Programming and Scrum , 2008, IET Softw..

[18]  Michael W. Godfrey,et al.  The past, present, and future of software evolution , 2008, 2008 Frontiers of Software Maintenance.

[19]  Ned Chapin,et al.  Types of software evolution and software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[20]  Tom Mens,et al.  Challenges in software evolution , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[21]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[22]  Tom Mens,et al.  Towards a taxonomy of software change: Research Articles , 2005 .

[23]  Joaquin Miller,et al.  MDA Guide Version 1.0.1 , 2003 .

[24]  Wilhelm Hasselbring,et al.  The Dublo architecture pattern for smooth migration of business information systems: an experience report , 2004, Proceedings. 26th International Conference on Software Engineering.

[25]  A.E. Hassan,et al.  The road ahead for Mining Software Repositories , 2008, 2008 Frontiers of Software Maintenance.

[26]  Stephen H. Kan,et al.  Metrics and Models in Software Quality Engineering , 1994, SOEN.

[27]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[28]  Jan Bosch,et al.  Design and use of software architectures - adopting and evolving a product-line approach , 2000 .

[29]  Meir M. Lehman,et al.  Software evolution - Background, theory, practice , 2003, Inf. Process. Lett..

[30]  Rick Kazman,et al.  The architecture tradeoff analysis method , 1998, Proceedings. Fourth IEEE International Conference on Engineering of Complex Computer Systems (Cat. No.98EX193).

[31]  Tom Mens,et al.  Towards a taxonomy of software change , 2005, J. Softw. Maintenance Res. Pract..

[32]  Christopher Wolf,et al.  Virtualization: from the desktop to the enterprise , 2005 .

[33]  Jan Bosch,et al.  Architecture-level modifiability analysis (ALMA) , 2004, J. Syst. Softw..