Software Sustainability: A Systematic Literature Review and Comprehensive Analysis

Software Engineering is a constantly evolving subject area that faces new challenges every day as it tries to automate newer business processes. One of the key challenges to the success of a software solution is attaining sustainability. The inability of numerous software to sustain for the desired time-length is caused by limited consideration given towards sustainability during the stages of software development. This review aims to present a detailed and inclusive study covering both the technical and non-technical challenges and approaches of software sustainability. A systematic and comprehensive literature review was conducted based on 107 relevant studies that were selected using the Evidence-Based Software Engineering (EBSE) technique. The study showed that sustainability can be achieved by conducting specific activities at the technical and non-technical levels. The technical level consists of software design, coding, and user experience attributes. The non-technical level consists of documentation, sustainability manifestos, training of software engineers, funding software projects, and leadership skills of project managers to achieve sustainability. This paper groups the existing research efforts based on the above aspects. Next, how those aspects affect open and closed source software is tabulated. Based on the findings of this review, it is seen that both technical and non-technical sustainability aspects are equally important, taking one into contention and ignoring the other will threaten the sustenance of software products.

[1]  Geir Kjetil Hanssen,et al.  A longitudinal case study of an emerging software ecosystem: Implications for practice and theory , 2012, J. Syst. Softw..

[2]  Judith Segal,et al.  Some Challenges Facing Scientific Software Developers: The Case of Molecular Biology , 2009, 2009 Fifth IEEE International Conference on e-Science.

[3]  Ruzanna Chitchyan,et al.  Sustainability Design in Requirements Engineering: State of Practice , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[4]  Birgit Penzenstadler,et al.  Towards a definition of sustainability in and for software engineering , 2013, SAC '13.

[5]  Daniel S. Katz,et al.  The State of Sustainable Research Software: Results from the Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE5.1) , 2018, ArXiv.

[6]  Mary Beth Rosson,et al.  Leadership Roles and Communication Issues in Partially Distributed Emergency Response Software Development Teams: A Pilot Study , 2008, Proceedings of the 41st Annual Hawaii International Conference on System Sciences (HICSS 2008).

[7]  Anshu Dubey,et al.  Experience report: refactoring the mesh interface in FLASH, a multiphysics software , 2018, 2018 IEEE 14th International Conference on e-Science (e-Science).

[8]  Giuseppe Lami,et al.  Measuring Software Sustainability from a Process-centric Perspective , 2012, 2012 Joint Conference of the 22nd International Workshop on Software Measurement and the 2012 Seventh International Conference on Software Process and Product Measurement.

[9]  Shigeru Yamada,et al.  Relationship between software availability measurement and the number of restorations with imperfect debugging , 2003 .

[10]  Douglas C. Schmidt,et al.  Pattern Oriented Software Architecture: On Patterns and Pattern Languages (Wiley Software Patterns Series) , 2007 .

[11]  Warren S. Vaz,et al.  Empirically Examining the Quality of Source Code in Engineering Software Systems , 2018, 2018 IEEE International Conference on Electro/Information Technology (EIT).

[12]  Julia Allen CERT ®1 System and Network Security Practices i , 2001 .

[13]  Gail C. Murphy,et al.  Who should fix this bug? , 2006, ICSE.

[14]  Arie van Deursen,et al.  An Exploratory Study on Faults inWeb API Integration in a Large-Scale Payment Company , 2017, 2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP).

[15]  Dana Petcu,et al.  Towards a Cross Platform Cloud API - Components for Cloud Federation , 2011, CLOSER.

[16]  Gregory V. Wilson,et al.  Four simple recommendations to encourage best practices in research software [version 1; referees: 3 approved] , 2017 .

[17]  Birgit Penzenstadler,et al.  Teach sustainability in software engineering? , 2011, 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T).

[18]  Link,et al.  Willingness to share research data is related to the strength of the evidence and the quality of reporting of statistical results , 2014 .

[19]  Qiang Zhou,et al.  Poster: Guiding Developers to Make Informative Commenting Decisions in Source Code , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion).

[20]  Stephan Druskat A Proposal for the Measurement and Documentation of Research Software Sustainability in Interactive Metadata Repositories , 2016, ArXiv.

[21]  Ian T. Foster Globus Toolkit Version 4: Software for Service-Oriented Systems , 2005, NPC.

[22]  Jan Bosch,et al.  Architecture challenges for software ecosystems , 2010, ECSA '10.

[23]  Grady Booch,et al.  Reusing Open-Source Software and Practices: The Impact of Open-Source on Commercial Vendors , 2002, ICSR.

[24]  Yang Liu,et al.  Dynamic and Automatic Feedback-Based Threshold Adaptation for Code Smell Detection , 2016, IEEE Transactions on Software Engineering.

[25]  Arnold Kamis,et al.  A Review of Three Directed Acyclic Graphs Software Packages , 2006 .

[26]  Keiko Kurata,et al.  Conceptual design for comprehensive research support platform: Successful research data management generating big data from little data , 2017, 2017 IEEE International Conference on Big Data (Big Data).

[27]  Niels Jørgensen,et al.  Putting it all in the trunk: incremental software development in the FreeBSD open source project , 2001, Inf. Syst. J..

[28]  Fabio Palomba,et al.  Textual Analysis for Code Smell Detection , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

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

[30]  P ? ? ? ? ? ? ? % ? ? ? ? , 1991 .

[31]  Jenifer Tidwell,et al.  Designing interfaces - patterns for effective interaction design , 2019 .

[32]  Carole A. Goble,et al.  The Software Sustainability Institute: Changing Research Software Attitudes and Practices , 2013, Computing in Science & Engineering.

[33]  Harald C. Gall,et al.  Predicting the fix time of bugs , 2010, RSSE '10.

[34]  Imtiaz Ahmad,et al.  A Green Model for Sustainable Software Engineering , 2013 .

[35]  Andrea C. Arpaci-Dusseau,et al.  The Popper Convention: Making Reproducible Systems Evaluation Practical , 2017, 2017 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW).

[36]  John M. Carroll,et al.  Making Use: Scenario-Based Design of Human-Computer Interactions , 2000 .

[37]  Ruzanna Chitchyan,et al.  Sustainability Design and Software: The Karlskrona Manifesto , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[38]  Christoph Meinel,et al.  CodeOcean - A versatile platform for practical programming excercises in online environments , 2016, 2016 IEEE Global Engineering Education Conference (EDUCON).

[39]  Mladen A. Vouk,et al.  On predicting the time taken to correct bug reports in open source projects , 2009, 2009 IEEE International Conference on Software Maintenance.

[40]  Tom Mens,et al.  A survey of software refactoring , 2004, IEEE Transactions on Software Engineering.

[41]  Timo Johann,et al.  The GREENSOFT Model: A reference model for green and sustainable software and its engineering , 2011, Sustain. Comput. Informatics Syst..

[42]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[43]  Patricia Lago,et al.  The Service Greenery: Integrating Sustainability In Service Oriented Software , 2010, ICSE 2010.

[44]  James D. Herbsleb,et al.  Social coding in GitHub: transparency and collaboration in an open software repository , 2012, CSCW.

[45]  Daniel J. Abadi,et al.  Data Management in the Cloud: Limitations and Opportunities , 2009, IEEE Data Eng. Bull..

[46]  Victor I. Chang,et al.  A Review of Cloud Business Models and Sustainability , 2010, 2010 IEEE 3rd International Conference on Cloud Computing.

[47]  Christopher Hutton,et al.  Most computational hydrology is not reproducible, so is it really science? , 2016, Water Resources Research.

[48]  Zhenhua Zhang,et al.  An Ontology Framework of Software Requirements Change Management Process Based on Causality , 2018, ICISDM '18.

[49]  Jan Bosch,et al.  Dynamic Test Case Selection in Continuous Integration , 2018, Analytic Methods in Systems and Software Testing.

[50]  Asif Imran,et al.  Web Data Amalgamation for Security Engineering: Digital Forensic Investigation of Open Source Cloud , 2016, J. Univers. Comput. Sci..

[51]  Simon Hettrick Research Software Sustainability: Report on a Knowledge Exchange Workshop , 2016 .

[52]  Stephan Flake,et al.  Third-Party-Initiated Context-Aware Real-Time Charging and Billing on an Open SOA Platform , 2008, 22nd International Conference on Advanced Information Networking and Applications - Workshops (aina workshops 2008).

[53]  Eric A. Wernert,et al.  Sustained Software for Cyberinfrastructure: Analyses of Successful Efforts with a Focus on NSF-funded Software , 2015, SCREAM@HPDC.

[54]  Arie van Deursen,et al.  Domain-specific language design requires feature descriptions , 2002 .

[55]  Martin P. Robillard,et al.  Sustainable software design , 2016, SIGSOFT FSE.

[56]  J. Aronson Safety , 2009, BMJ : British Medical Journal.

[57]  David Lorge Parnas,et al.  The Role of Inspection in Software Quality Assurance , 2003, IEEE Trans. Software Eng..

[58]  Gabrielle Allen,et al.  Report on the Second Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE2) , 2015, Journal of Open Research Software.

[59]  Robert Haines,et al.  How Should We Measure the Relationship Between Code Quality and Software Sustainability ? , 2016 .

[60]  Tsuyoshi Murata,et al.  {m , 1934, ACML.

[61]  Mateusz Kuzak,et al.  Lesson Development for Open Source Software Best Practices Adoption , 2018, 2018 IEEE 14th International Conference on e-Science (e-Science).

[62]  Tom Gilb,et al.  Principles of software engineering management , 1988 .

[63]  Xavier Franch,et al.  Sustainability in software engineering: A systematic literature review , 2012, EASE.

[64]  Yashwant Kumar Singh,et al.  CERT System and Network Security Practices , 2017 .

[65]  Tore Dybå,et al.  Evidence-based software engineering , 2016, Perspectives on Data Science for Software Engineering.

[66]  Daniel S. Katz,et al.  Report on the Third Workshop on Sustainable Software for Science: Practice and Experiences (WSSSPE3) , 2016, ArXiv.

[67]  Andrew Rice,et al.  Supporting Software Sustainability with Lightweight Specifications , 2016 .

[68]  Richard Deal Cisco Router Firewall Security , 2004 .

[69]  Pearl Brereton,et al.  A systematic review of systematic review process research in software engineering , 2013, Inf. Softw. Technol..

[70]  Ahmed Seffah,et al.  The Human Side of Software as a Service: Building a Tighter Fit between Human Experiences and SOA Design Practices , 2015, 2015 IEEE/ACM 8th International Workshop on Cooperative and Human Aspects of Software Engineering.

[71]  Cihan H. Dagli,et al.  System of Systems Architecting , 2008 .

[72]  Patrick J. Moran,et al.  Developing an Open Source Option for NASA Software , 2003 .

[73]  Kaveh Abhari,et al.  Data in the Wild: A KM Approach to Doing a Census Without Asking Anyone and the Issue of Privacy , 2019, HICSS.

[74]  Flávio Oquendo,et al.  A systematic literature review on the description of software architectures for systems of systems , 2015, SAC.

[75]  Wilson C. Hsieh,et al.  Bigtable: A Distributed Storage System for Structured Data , 2006, TOCS.

[76]  Daniel S. Katz,et al.  Building a Sustainable Structure for Research Software Engineering Activities , 2018, 2018 IEEE 14th International Conference on e-Science (e-Science).

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

[78]  Michael Franke,et al.  Recommendations on the development, use and provision of Research Software , 2018 .

[79]  Santiago Comella-Dorda,et al.  Volume II: Technical Concepts of Component-Based Software Engineering , 2000 .

[80]  Jeffrey C. Carver,et al.  US Research Software Sustainability Institute (URSSI) Pilot 'Summer' School , 2019, Proceedings of the Python in Science Conference.

[81]  Flávio Oquendo,et al.  The state of the art and future perspectives in systems of systems software architectures , 2013, SESoS.

[82]  Kishor S. Trivedi,et al.  Reproducibility of Environment-Dependent Software Failures: An Experience Report , 2014, 2014 IEEE 25th International Symposium on Software Reliability Engineering.

[83]  Andrei Lobov,et al.  Modeling system of systems: A generic method based on system characteristics and interface , 2011, 2011 9th IEEE International Conference on Industrial Informatics.

[84]  Lex Nederbragt,et al.  Good enough practices in scientific computing , 2016, PLoS Comput. Biol..

[85]  Xiangyu Wang,et al.  Big data transfer optimization based on offline knowledge discovery and adaptive sampling , 2017, 2017 IEEE International Conference on Big Data (Big Data).

[86]  Philippe Kruchten,et al.  Sustainability and longevity of systems and architectures , 2018, J. Syst. Softw..

[87]  Andrzej Wasowski,et al.  Influencers of Quality Assurance in an Open Source Community , 2018, 2018 IEEE/ACM 11th International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE).

[88]  Virgílio A. F. Almeida,et al.  Quantifying the sustainability impact of data center availability , 2010, PERV.

[89]  Bill Tomlinson,et al.  Safety, Security, Now Sustainability: The Nonfunctional Requirement for the 21st Century , 2014, IEEE Software.

[90]  Daniel S. Katz,et al.  Mapping the Research Software Sustainability Space , 2018, 2018 IEEE 14th International Conference on e-Science (e-Science).

[91]  Uirá Kulesza,et al.  An Empirical Study of Delays in the Integration of Addressed Issues , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

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

[93]  Andrea C. Arpaci-Dusseau,et al.  Standing on the Shoulders of Giants by Managing Scientific Experiments Like Software , 2016, login Usenix Mag..

[94]  Daniel S. Katz,et al.  Four simple recommendations to encourage best practices in research software , 2017, F1000Research.

[95]  Victoria Stodden,et al.  Best Practices for Computational Science: Software Infrastructure and Environments for Reproducible and Extensible Research , 2014 .

[96]  Jeffrey S. Norris,et al.  Mission-critical development with open source software: lessons learned , 2004, IEEE Software.

[97]  Robert Love,et al.  Linux Kernel Development (2nd Edition) (Novell Press) , 2005 .

[98]  Alim Ul Gias,et al.  Modeling Software Defects as Anomalies: A Case Study on Promise Repository , 2017, J. Softw..

[99]  Titus Winters,et al.  Non-Atomic Refactoring and Software Sustainability , 2018, 2018 IEEE/ACM 2nd International Workshop on API Usage and Evolution (WAPI).

[100]  Leon Moonen,et al.  Assuring software quality by code smell detection , 2012, 2012 19th Working Conference on Reverse Engineering.

[101]  Coral Calero,et al.  A systematic literature review for software sustainability measures , 2013, 2013 2nd International Workshop on Green and Sustainable Software (GREENS).

[102]  Rami Bahsoon,et al.  Sustainability Debt: A Portfolio-Based Approach for Evaluating Sustainability Requirements in Architectures , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[103]  Kai Petersen,et al.  Guidelines for conducting systematic mapping studies in software engineering: An update , 2015, Inf. Softw. Technol..

[104]  Roland J. Weiss,et al.  Sustainability guidelines for long-living software systems , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[105]  J. Byers,et al.  The Rise of the Sharing Economy: Estimating the Impact of Airbnb on the Hotel Industry , 2017 .

[106]  Paulo Pinheiro,et al.  User Interface Declarative Models and Development Environments: A Survey , 2000, DSV-IS.

[107]  B. Schneirdeman,et al.  Designing the User Interface: Strategies for Effective Human-Computer Interaction , 1998 .

[108]  Bill Tomlinson,et al.  Toward sustainable software engineering: NIER track , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[109]  Gabriel Alberto García-Mireles Environmental Sustainability in Software Process Improvement: a Systematic Mapping Study , 2016 .

[110]  Mary-Luz Sánchez-Gordón,et al.  Understanding the gap between software process practices and actual practice in very small companies , 2015, Software Quality Journal.

[111]  William Jones,et al.  Managing open source contributions for software project sustainability , 2010, PICMET 2010 TECHNOLOGY MANAGEMENT FOR GLOBAL ECONOMIC GROWTH.