Skip to main content

2021 | Buch

Software Sustainability

herausgegeben von: Prof. Coral Calero, Dr. Mª Ángeles Moraga, Prof. Mario Piattini

Verlag: Springer International Publishing

insite
SUCHEN

Über dieses Buch

This book focuses on software sustainability, regarded in terms of how software is or can be developed while taking into consideration environmental, social, and economic dimensions. The sixteen chapters cover various related issues ranging from technical aspects like energy-efficient programming techniques, formal proposals related to energy efficiency measurement, patterns to build energy-efficient software, the role of developers on energy efficient software systems and tools for detecting and refactoring code smells/energy bugs; to human aspects like its impact on software sustainability or the adaptation of ACM/IEEE guidelines for student and professional education and; and an economics-driven architectural evaluation for sustainability. Also aspects as the elements of governance and management that organizations should consider when implementing, assessing and improving Green IT or the relationship between software sustainability and the Corporate Social Responsibility of software companies are included. The chapters are complemented by usage scenarios and experience reports on several domains as cloud applications, agile development or e-Health, among others. As a whole, the chapters provide a complete overview of the various issues related to sustainable software development.

The target readership for this book includes CxOs, (e.g. Chief Information Officers, Chief Executive Officers, Chief Technology Officers, etc.) software developers, software managers, auditors, business owners, and quality professionals. It is also intended for students of software engineering and information systems, and software researchers who want to know the state of the art regarding software sustainability.

Inhaltsverzeichnis

Frontmatter
Chapter 1. Introduction to Software Sustainability
Abstract
Sustainability is gaining importance worldwide, reinforced by several initiatives that have highlighted the importance of reducing energy consumption and carbon footprint. Although these initiatives highlight ICTs as a key technology in achieving these goals, we must be aware that ICTs can also have a negative impact on the environment.
The main objective of this chapter is to provide an overview of the software sustainability concept and its dimensions (human, environmental, and economic), as well as the research efforts related to this area.
On the one hand, a review of the literature to define all the concepts related to software sustainability has been carried out. On the other, a bibliometric analysis is used to identify the main forum employed in the area for publishing the works and the percentage of papers related to each of the software sustainability dimensions.
Several definitions for the different sustainability levels are presented. As a result of the bibliometric analysis, it can be highlighted that the majority of the papers are published in conferences and are focused on the environmental dimension, whereas the number of books as well as the number of book chapters focused on software sustainability remains low.
Regarding the software sustainability dimensions, most of the works are on the environmental dimensions, highlighting the need for more research focused on the human and economic dimensions.
Coral Calero, Mª Ángeles Moraga, Mario Piattini
Chapter 2. Criteria for Sustainable Software Products: Analyzing Software, Informing Users, and Politics
Abstract
The energy consumption of information and communication technology is still increasing and comprises components such as data centers, the network, end devices, and also the software running on these components. Following the motto “What you can’t measure you can’t manage,” it is helpful and reasonable to develop and validate criteria for software products. In our chapter we describe some of these criteria, and also introduce a label for sustainable software products, the German “Blue Angel.” We also introduce some energy-efficient programming techniques in order to reduce consumption even during the development phase, and a measurement method for the energy consumption of software. We conclude with some implications of our results and an outlook.
Achim Guldner, Eva Kern, Sandro Kreten, Stefan Naumann
Chapter 3. GSMP: Green Software Measurement Process
Abstract
To improve the sustainability of software it is necessary to be able to measure the energy efficiency of the software. For this purpose, there are several measuring instruments, but for these measurements to be as correct and reliable as possible there must be a process to guide researchers in this effort.
The objective of this chapter is to define the activities to be carried out during the software energy efficiency analysis process, so as to obtain greater control over the measurements performed, ensuring the reliability and consistency of the information obtained regarding energy efficiency. To this end, we have collected a set of good practices in the measurement of energy consumption found in the literature and, together with our own experience, we have defined the Green Software Measurement Process (GSMP) that details all the activities and roles necessary to carry out the measurement and analysis of the energy consumption of the software executed. The GSMP ensures the reliability and consistency of the measurements, and also allows the repetition and comparison of the studies carried out. Furthermore, to validate the process, it was applied to a case study in which energy consumption was analyzed using two measuring instruments.
Javier Mancebo, Coral Calero, Félix García
Chapter 4. FEETINGS: Framework for Energy Efficiency Testing to Improve eNvironmental Goals of the Software
Abstract
Energy consumption and carbon emissions caused by the use of software have been increasing in recent years, and it is necessary to increase the energy awareness of both software developers and end users.
The objective of this chapter is to establish a framework that provides a solution to the lack of a single and agreed terminology, a process that helps researchers evaluate the energy efficiency of the software, and a technology environment that allows for accurate measurements of energy consumed. The result is FEETINGS (Framework for Energy Efficiency Testing to Improve eNvironmental Goals of the Software), which promotes the reliability of capture, analysis, and interpretation of software energy consumption data.
FEETINGS is composed of three main components: an ontology to provide precise definitions and harmonize the terminology related to software energy measurement; a process to guide researchers in carrying out the energy consumption measurements of the software, and a technological environment which allows the capture, analysis, and interpretation of software energy consumption data.
In addition, an example of the application of FEETINGS is presented, as well as a guide to good practice for energy efficiency of software, based on different experiments carried out with this framework.
The results obtained demonstrate that FEETINGS is a consistent, valid, and useful framework to analyze the energy efficiency of software, promoting the accuracy of its energy consumption measurements. Therefore, FEETINGS serves as a tool to make developers and users aware of the impact that software has on the environment.
Javier Mancebo, Coral Calero, Félix García, Mª Ángeles Moraga, Ignacio García-Rodríguez de Guzmán
Chapter 5. Patterns and Energy Consumption: Design, Implementation, Studies, and Stories
Abstract
Software patterns are well known to both researchers and practitioners. They emerge from the need to tackle problems that become ever more common in development activities. Thus, it is not surprising that patterns have also been explored as a means to address issues related to energy consumption. In this chapter, we discuss patterns at code and design level and address energy efficiency not only as the main concern of patterns but also as a side effect of patterns that were not originally intended to deal with this problem. We first elaborate on state-of-the-art energy-oriented and general-purpose patterns. Next, we present cases of how patterns appear naturally as part of decisions made in industrial projects. By looking at the two levels of abstraction, we identify recurrent issues and solutions. In addition, we illustrate how patterns take part in a network of interconnected components and address energetic concerns. The reporting and cases discussed in this chapter emphasize the importance of being aware of energy-efficient strategies to make informed decisions, especially when developing sustainable software systems.
Daniel Feitosa, Luís Cruz, Rui Abreu, João Paulo Fernandes, Marco Couto, João Saraiva
Chapter 6. Small Changes, Big Impacts: Leveraging Diversity to Improve Energy Efficiency
Abstract
In this chapter, we advocate that developers should leverage software diversity to make software systems more energy efficient. Our main goal is to show that non-specialists can build software that consumes less energy by alternating at development time between readily available, diversely designed pieces of software implemented by third parties. By revisiting the main findings of research work we conducted in the past few years, we noticed that they share a common observation: small changes can make a big difference in terms of energy consumption. These changes can usually be implemented by very simple modifications, sometimes amounting to a single line of code. Based on experimental results, one small change that could make a big difference is to replace most of the uses of a Hashtable class with uses of the ConcurrentHashMap class. In most of the cases, it was only necessary to modify the line where the Hashtable object was created. This simple reengineering effort promoted a reduction of up to 17.8% in the energy consumption of Xalan and up to 9.32% for Tomcat, when using the workloads of the DaCapo benchmark suite.
Conclusions: The main insight we draw is that small changes can make a big contribution to reducing energy consumption, especially in mobile devices. We have also witnessed in practice that the huge variability of devices in the market and the vast number of factors influencing energy consumption is a real problem when experimenting with energy consumption. To try to minimize this problem, we finally present an initiative that aims to collect real-world usage information about thousands of mobile devices and make it publicly available to researchers and companies interested in energy efficiency.
Wellington Oliveira, Hugo Matalonga, Gustavo Pinto, Fernando Castor, João Paulo Fernandes
Chapter 7. Tool Support for Green Android Development
Abstract
Mobile applications are developed with limited battery resources in mind. To build energy-efficient mobile apps, many support tools have been developed which aid developers during the development and maintenance phases. To understand what is already available and what is still needed to support green Android development, we conducted a systematic mapping study to overview the state of the art and to identify further research opportunities. After applying inclusion/exclusion and quality criteria, we identified tools for detecting/refactoring code smells/energy bugs, and for detecting/migrating third-party libraries in Android applications. The main contributions of this study are: (1) classification of identified tools based on the support they offer to aid green Android development, (2) classification of the identified tools based on techniques used to offer support to developers, and (3) characterization of the identified tools based on the user interface, IDE integration, and availability. The most important finding is that the tools for detecting/migrating third-party libraries in Android development do not provide support to developers to optimize code w.r.t. energy consumption, which merits further research.
Hina Anwar, Iffat Fatima, Dietmar Pfahl, Usman Qamar
Chapter 8. Architecting Green Mobile Cloud Apps
Key Considerations for Implementation and Evaluation of Mobile Cloud Apps
Abstract
With the resource-constrained nature of mobile devices, and the resource-abundant offerings of the cloud, several promising optimization techniques have been proposed by the green computing research community. Prominent techniques and unique methods have been developed to offload resource-/computation-intensive tasks from mobile devices to the cloud. Most of the existing offloading techniques can only be applied to legacy mobile applications as they are motivated by existing systems. Consequently, they are realized with custom runtimes, which incurs overhead on the application. Moreover, existing approaches which can be applied to the software development phase are difficult to implement (based on manual process) and also fall short of overall (mobile to cloud) efficiency in software quality attributes or awareness of full-tier (mobile to cloud) implications.
To address the above issues, this chapter first examines existing approaches to highlight key sources of overhead in the current methods of MCA implementation and evaluation. It then proposes key architectural considerations for implementing and evaluating MCA applications which easily integrate software quality attributes with the green optimization objective of Mobile Cloud Computing—in other words, minimizing overhead. The solution proposed in the chapter builds on the benefits of already existing software engineering concepts, such as Model-Driven Engineering and Aspect-oriented Programming for MCA implementation, and Behavior-Driven Development and full-tier test coverage concepts for MCA evaluation.
Samuel Jaachimma Chinenyeze, Xiaodong Liu
Chapter 9. Sustainability: Delivering Agility’s Promise
Abstract
Sustainability is a promise by agile development, as it is part of both the Agile Alliance’s and the Scrum Alliance’s vision. Thus far, however, not much has been delivered on this promise. This chapter explores the Agile Manifesto and points out how agility could contribute to sustainability in its three dimensions – social, economic, and environmental. Additionally, it provides some sample cases of companies focusing on both sustainability (partially or holistically) and agile development.
Jutta Eckstein, Claudia de O. Melo
Chapter 10. Governance and Management of Green IT
Abstract
Sustainability has become a main pillar for the development of our civilization. It is increasingly evident that achieving sustainable development is not only necessary to have a future, but also helps us create greater value by being more effective and efficient. This has led to more and more organizations implementing sustainable practices across different fields. One of these fields with the greatest impact and which is evolving the most is Information Technology (IT). Through what is known as Green IT, organizations are implementing measures to reduce the environmental impact of their IT, as well as using their IT to be more sustainable in other areas. However, organizations are conducting these Green IT implementations at their own discretion, due to the lack of guidelines, standards, or frameworks in this regard. With the objective of helping organizations, this chapter presents a framework that guides the way in which organizations should properly govern and manage Green IT. To this end, we have developed the Governance and Management Framework for Green IT (GMGIT), validating and refining it through different case studies at an international level, obtaining several versions through an iterative and incremental cycle. The results of this development show that the GMGIT is a very useful framework for organizations to implement, evaluate, and improve the governance and management of Green IT.
J. David Patón-Romero, Maria Teresa Baldassarre, Moisés Rodríguez, Mario Piattini
Chapter 11. Sustainable Software Engineering: Curriculum Development Based on ACM/IEEE Guidelines
Abstract
Climate change risk and environmental degradation are the most critical issues of our society. Our technology-influenced daily lifestyle involves many types of software and apps which are used by society at large, and their use is increasing more than ever before. Sustainability is a significant topic for future professionals and more so for software engineers due to its impact on society. It is crucial to motivate and raise concern among students and faculty members regarding sustainability by including it in the Software Engineering (SE) curriculum. This chapter discusses how sustainability can be included in various courses of the SE curriculum by considering ACM/IEEE curriculum guidelines for the SE curriculum, literature review, and various viewpoints so that SE students can attain knowledge on sustainable software engineering. It also includes an assessment of key competences in sustainability for proposed units in the SE curriculum.
Alok Mishra, Deepti Mishra
Chapter 12. The Impact of Human Factors on Software Sustainability
Abstract
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 to sustainability during the stages of software development. This chapter presents a detailed and inclusive study covering human factor-related challenges of and approaches to software sustainability. Sustainability can be achieved by conducting specific activities at the human, environmental, and economic level. Human factors include critical social activities such as leadership and communication. This chapter groups the existing research efforts based on the above aspects. Next, how those aspects affect software sustainability is studied via a survey of software practitioners. Based on the findings, it was observed that human sustainability aspects are important, and that taking one into consideration and ignoring the other factors will threaten the sustainability of software products. Despite the noteworthy advantages of making a software sustainable, the research community has presented only a limited number of approaches that contribute to improving the human factors to achieve sustainability. To the best of our knowledge, these representations require further research. In this regard, an organized, structured, and detailed study is required on existing human factor-related sustainability approaches which will serve as a one-stop-service for researchers and software engineers who are willing to learn about these.
Asif Imran, Tevfik Kosar
Chapter 13. Social Sustainability in the e-Health Domain via Personalized and Self-Adaptive Mobile Apps
Abstract
Within software engineering, social sustainability is the dimension of sustainability that focuses on the “support of current and future generations to have the same or greater access to social resources by pursuing social equity.” An important domain that strives to achieve social sustainability is e-Health, and more recently e-Health mobile apps.A wealth of e-Health mobile apps is available for many purposes, such as lifestyle improvement and mental coaching. The interventions, prompts, and encouragements of e-Health apps sometimes take context into account (e.g., previous interactions or geographical location of the user), but they still tend to be rigid, e.g., apps use fixed sets of rules or they are not sufficiently tailored toward individuals’ needs. Personalization to the different users’ characteristics and run-time adaptation to their changing needs and context provide a great opportunity for getting users continuously engaged and active, eventually leading to better physical and mental conditions. This chapter presents a reference architecture for enabling AI-based personalization and self-adaptation of mobile apps for e-Health. The reference architecture makes use of a dedicated goal model and multiple MAPE loops operating at different levels of granularity and for different purposes. The proposed reference architecture is instantiated in the context of a fitness-based mobile application and exemplified through a series of typical usage scenarios extracted from our industrial collaborations.
Eoin Martino Grua, Martina De Sanctis, Ivano Malavolta, Mark Hoogendoorn, Patricia Lago
Chapter 14. Human Sustainability in Software Development
Abstract
Human thriving and outsourcing can go hand in hand. This research aims to outline outsourcing approaches for facilitating human thriving by conducting a semi-systematic literature review. We identified three outsourcing approaches that consider corporate social responsibility: impact sourcing, ethical outsourcing, and Fair Trade Software. The aim of this research is to understand the effect of these approaches on marginalized people, and the benefits and challenges for client organizations. The following main conclusions are drawn. First, impact sourcing provides marginalized people with the opportunity to generate an income, to develop themselves professionally, and to build a social circle. In some cases it can generate harmful impacts such as stress. Second, the benefits of impact sourcing for client organizations compared to traditional outsourcing are reduced costs, reduced employee turnover, improved corporate social responsibility, and new chances for growth. Third, ethical outsourcing protects brand image and can improve stakeholder management. However, the extra investments required may reduce competitiveness. Last, Fair Trade Software is a relatively new model, and therefore the benefits and challenges have yet to be assessed. A potential benefit is capacity building by knowledge transfer and network strengthening. Currently some of the biggest challenges are the lack of audits, caused by a lack of resources, and increasing the adoption rate of this outsourcing model.
Vijanti Ramautar, Sietse Overbeek, Sergio España
Chapter 15. The Importance of Software Sustainability in the CSR of Software Companies
Abstract
Organizations around the world, as well as their stakeholders, are becoming increasingly aware of the need for, and the benefits of, socially responsible behavior, and sustainability is a core aspect of this. Given the presence of software systems in most companies and almost every aspect of modern-day life, the promotion of the environmental aspects of software systems is a key factor in sustainable development, and any company aspiring to be considered as a first-class corporate citizen should provide for it in their CSR.
This chapter aims to ascertain how well the policies of companies that develop software are aligned with Software Sustainability, as well as to give recommendations on including specific actions in their CSR to promote Software Sustainability.
The CSR policies of the ten biggest software companies have been studied, identifying a list of actions that the software industry should include in their CSR. In order to do this, different meetings were held among researchers. As a result, a list of actions specific to Software Sustainability that the software industry should be including in their CSR has been proposed. Moreover, we have analyzed the CSR of a Spanish software company, obtaining that the percentage of coverage in respect of the actions defined is 40%. The dimension with more actions is the human dimension, where the percentage of coverage is above 90%. Regarding the economic and environmental dimensions, the company took into consideration 36% and 13% of the actions, respectively. These resulted in a D level of Software Sustainability (possible values: A–E). Based on these results, we have suggested some actions to be implemented in order to improve the industry’s Software Sustainability level.
Mª Ángeles Moraga, Ignacio García-Rodríguez de Guzmán, Félix García, Coral Calero
Chapter 16. Sustainability ArchDebts: An Economics-Driven Approach for Evaluating Sustainable Requirements
Abstract
Sustainability refers to the ability of an architecture to achieve its goals and continue to deliver value on technical, environmental, social, and/or economic dimensions. Given the increased awareness of the need to conserve resources and be more sustainable, users are becoming more reluctant to support design decisions that are overdesigned or underperforming. There is a need for an efficient requirement evaluation framework that ensures that optimal software performance is achieved at a minimal cost. The goal of this chapter is to develop an objective decision-support framework for reasoning about sustainability requirements in relation to architecture decisions under uncertainty. We propose an economics-driven architectural evaluation method which extends Cost Benefit Analysis Method (CBAM) and integrates principles of modern portfolio theory to address the risks when linking sustainability requirements to architectural design decisions. The method aims at identifying portfolios of architecture design decisions which are more promising for adding/delivering value while reducing risk on the sustainability dimensions, and it quantifies the sustainability debt of these decisions. The results show that the method can make the value, cost, and risks of architectural design decisions and sustainability requirements explicit.
Bendra Ojameruaye, Rami Bahsoon
Metadaten
Titel
Software Sustainability
herausgegeben von
Prof. Coral Calero
Dr. Mª Ángeles Moraga
Prof. Mario Piattini
Copyright-Jahr
2021
Electronic ISBN
978-3-030-69970-3
Print ISBN
978-3-030-69969-7
DOI
https://doi.org/10.1007/978-3-030-69970-3

Premium Partner