Keywords

1 Software Engineering for Sustainability

Sustainability from the point of view of software systems has two major aspects: The software system as technical implementation independent of its purpose, and the software system as means of interaction between users and application context. To define what sustainability for any kind of system, exact scoping needs to be performed by answering the questions of what to sustain, for whom, over which time frame, and at what cost [15]. Once that is established, we can apply systems thinking [16] and follow sustainability principles, e.g. [3], while honoring the axioms defined by Heinberg [7], to improve the sustainability of the given system. This encompasses the individual, social, economic, environmental, and technical sustainability aspects of a system [10]. For a software system, there are two scopes that may be chosen for an analysis, domain-dependent and domain-independent.

Scope (1): Domain-Dependent Sustainability. The software system in its application context, under consideration of the purpose of the software system. This scoping includes an analysis of the economic, social, and environmental dimensions of sustainability on a higher level. This part of the analysis is largely within the responsibility of business analysts and domain experts. Following the code of ethics [1], it is our responsibility to support in translating the arising demands into system-related requirements. This is what we call domain-dependent sustainability: The Sustainability of a Software System and its Surrounding Application Context, is characterized by the domain experts. This scoping is domain-dependent and we call it domain-dependent sustainability, software engineers can translate those requirements into constraints for the software system.

Scope (2): Domain-Independent Sustainability. The artifacts and implementation of a software system, without any consideration of the purpose of the software system. This scoping focuses on the technical characteristics of the system and its operational environment. All domain-relevant information has already been refined into domain-independent constraints for a technical solution by business analysts. This is the responsibility of the software engineers. This is what we call domain-independent sustainability: The Sustainability of a Software System is its capacity to endure, i.e. its energy efficiency, its maintainability over a long period of time, and its adherence to standards and laws. This scoping is independent of the application domain of the software system; therefore we call this domain-independent sustainability.

In order to develop software systems that implement sustainability goals, we need the discipline of software engineering to embrace sustainability as major objective for systems development. Software Engineering for Sustainability (SE4S) denotes the concept of applying software engineering techniques to facilitate the refinement of higher level sustainability concerns as defined in the domain into lower level, technical requirements for the design and implementation of the system. This means the translation and refinement from domain-dependent to domain-independent sustainability.

In this paper, we present a design fiction of how SE4S can be supported in a toolkit. In more detail, the story line follows software developer Valery through her workday and points out open questions and research challenges by describing which inputs have to be made to implement the GreenYaCode toolkit system. We illustrate its usage with the support that it makes when Valery goes through the individual steps taken during software development.

2 Background

This section provides background information on design fiction, on free open source software development, and on the Software Engineering for Sustainability (SE4S) research project.

2.1 Design Fiction

Research is often inspired by visions of the future, for example the Vision 2050 [17]. These visions can take on various narrative forms, and can fall anywhere along the spectrum from utopian to dystopian [2]. Even though we recognize the importance of such visions to help us shape research questions and inspire rich design spaces to be explored, the opportunity to discuss them is rarely given in a research context [12].

2.2 Free Open Source Software Development and Open Innovation

Open-source software development has been a large part of the creation of the World Wide Web as we know it, with Tim Berners-Lee contributing his HTML code development as the original platform upon which the internet is now built [4]. Free and open sources software (FOSS) are software products available with its source code under an open-source license to study, change, and improve its design. Examples of some popular open-source software products are Mozilla Firefox, Google Chromium, Android, LibreOffice and the Apache OpenOffice Suite. FOSS is said to reduce costs, avoid lock-in, ease use, and provide open security [13].

2.3 SE4S Research Project

The Software Engineering for Sustainability (SE4S) research project has developed a number of contributions with regard to how software engineers can include sustainability as major objective into software systems development [11]. Specifically requirements engineers have the means to establish designing for sustainability early on during the development process [10], and quality engineers help carry it through the rest of the development process [8]. This paper proposes the vision of a toolkit to support these concepts in practice, so that every software developer can easily apply them in their daily work.

3 Vision of the Toolkit and its Application

It is the year 2020 and Valery has been working as software engineer at GreenCode for 5 years after graduating from California State University Long Beach with a Master’s degree in Computer Science. She had been eager to find a software development company that would allow her to work on projects where she can foster environmental and social sustainability. When GreenCode emerged as an academic spin-off from the GreenIT lab at UC Irvine, she got in touch with their team and found an alike mindset of motivated software engineers who wanted to take their share of responsibility to make software systems that would improve the status quo in social responsibility and environmental protection.

They mainly work on projects in two domains: scientific software to facilitate research in their local environment, the ocean and the mountains, and educational software to improve the access to knowledge for children of all ages. In that latter domain, Valery has been assigned to the CodeFairy project, an educational game targeted at attracting girls to computer science.

Before GreenCode became an academic spin-off, the team had developed the SE4S toolkit GreenYaCode, a software development environment that helps to translate domain-dependent, high-level sustainability goals into domain-independent, software-specific constraints — i.e. it helps design sustainability into the software system. GreenCode is a web-based SE4S guide that provides easy access to the reference models and related examples in form of a knowledge database, see the wireframe in Fig. 2. This knowledge base can be extended over time with further examples from case studies and with recommender systems that actively guide the user, i.e., the requirements engineer. This is the most flexible way of accommodating the pace of change in popular programming languages and therefore provides the greatest possible outreach to the software development community. The toolkit ties together efforts in software engineering for sustainability, free open source software development, recommender systems, usability best practices, open innovation, and user engagement.

SE4S starts with requirements engineering and determining the stakeholders for the system, which is the basis for being able to elicit requirements. In more detail, there are four elicitation and analysis steps that are preempted by guiding questions [10]. For CodeFairy, Valery develops a number of artifacts that document the information needed to start the actual design process. She composes a business case, stakeholder model, goal model, system vision, domain model, usage model, and non-functional requirements, all by using the guidance provided by GreenYaCode to make sure the sustainability goals issued by the stakeholders for CodeFairy are incorporated into the design process. These artifacts form the basis that allows to decide on the implementation platform and to start the design of CodeFairy. In the following, we will walk through those steps and their application for CodeFairy (Fig. 1).

Fig. 1.
figure 1figure 1

CodeFairy

3.1 Scope System and Derive System Vision

Clear scoping lies the foundation for successful systems development. The scoping allows for deriving a system vision, a conception of what is to be developed commonly agreed upon by all stakeholders. Valery opens the GreenYaCode start page and the quick start guide provides the guiding question for the first step: Does the system under consideration have an explicit purpose towards environmental or social sustainability? If yes, this can be analyzed in depth. If no, it can be considered whether such an aspect is desirable and feasible to add.

For CodeFairy, the purpose is to engage girls from the age of twelve to learn coding in a playful way. Inspired by “The Hour of Code”Footnote 1 and “Alice”Footnote 2, CodeFairy provides means to understand concepts in computer science and mathematics, and shows how they are applied when making software. It promotes social sustainability in terms of education and gender equality in STEM. On this basis, Valery develops a system vision using an integrated diagramming tool that helps her define the system boundary, operational context and the most central user features of CodeFairy.

3.2 Analyse Sustainability of Context

The second guiding question posed by GreenYaCode is: Does the system under consideration have an impact on the environment? We need to analyze what are the direct (first order), indirect (second order), and systemic as well as potential rebound effects (third order) [9].

GreenYaCode provides an analysis checklist of influencing factors for each of those orders of effect. Most obvious are the first order effects. First order effects are the resources that the system itself (the application on different devices and the database) consume. For software, that is predominantly the energy that a software consumes, which can be influenced by good design strategies and energy-efficient code. For the hardware part of a system, measures include following green IT principles. The second order effects are the resources the system triggers in its application domain. That means, the developer has to look at how the software system interacts with its operational environment. Which processes are triggered, for example which machines are used or what do users do because of having this software system in place? The third order effects remain to be observed in the long run but can be predicted using future scenario techniques and extrapolation. In simple terms, imagine what could happen if the user base of this system increases dramatically and many people use the system over many years in high intensity. How could that affect overall resource consumption and how could that change behavior?

For CodeFairy, the first order effects are the energy that the software uses and the usage of laptops or desktop machines to run the software. Second order effects are increased computer literacy and software engineering knowledge (education is part of individual sustainability), increased social skills in collaboration with other girls on teams (social sustainability) but also increased hardware usage in classroom and therefore e-waste (environmental impact). Third order effects might be increased rates of female students in computer science if outreach is successful (potential individual, social, and economic benefits) but also further environmental impact due to increased energy usage and e-waste production. However, as CodeFairy would not be the reason for ordering new hardware, but rather sharing common resources (laptops or computers that are used in class anyways), this environmental impact is comparatively small.

3.3 Find Sustainability Stakeholders

The third guiding question is: Is there an explicit stakeholder for sustainability? In case there is an explicit stakeholder who advocates for environmental sustainability, there is already a significant representative who issues objectives, constraints and considerations to support that quality in the system under consideration. In case there is no such advocate, it can be decided to establish such a role. Otherwise, at the very least, a domain expert should be established as a representative for sustainability for providing information on applying environmental standards, legislation, and regulations.

To find sustainability stakeholders, GreenYaCode provides a reference list of stakeholders who might have an interest in sustainability concerns. The reference list is ordered by sustainability aspect and describes for each stakeholder role that is common in software development, what their interest w.r.t. in a specific sustainability aspect is, for example a user is interested in their own individual sustainability, and a network administrator is mainly interested in the technical sustainability of the system they have to maintain. Furthermore, the list references dedicated sustainability stakeholders, for example legal representatives for environmental regulations.

For CodeFairy, the usual software development stakeholders have to be considered. In addition, Valery might engage a sustainability consultant to, for example, add a case study system with environmental objectives, so the students can learn how software systems can support and help to protect the environment.

Fig. 2.
figure 2figure 2

Wireframe of the reference model screen of the toolkit

3.4 Elicit Sustainability Objectives, Goals and Constraints

The fourth guiding question is: What are the sustainability goals and constraints for the system? Independent of whether the system has an explicit purpose for supporting environmental sustainability or not, there certainly are a number of objectives that pertain to the different dimensions of sustainability that may be chosen to apply. For example, a social network might not have an explicit environmental purpose, but it certainly has objectives supporting social sustainability. Furthermore, any system will at least have some constraints with respect to the environment, as stated in Q2.

To elicit sustainability objectives, goals and constraints, GreenYaCode provides the sustainability reference model. Examples for instances are depicted in the wireframe on the right side in Fig. 2. It shows an example that distinguishes three levels of abstraction: The business goals (What benefits is this system going to bring?), the usage goals (What can the user do with the system?), and the system goals (How will the system provide that?). Each of those should be analyzed for the five sustainability aspects.

For CodeFairy, a central business objective is to increase the education of girls in software engineering and thereby reach out early on to get them excited about STEM fields. A usage goal derived from this business objective is to have them interact with the system in a playful way so the intrinsical motivation remains high. A system goal deducted from that usage goal is that the user interface must be simple and intuitive enough so the target age group is addressed adequately. This way, Valery can develop a goal model that brings together the interests of the different stakeholders (who are the issuers of these objectives), that includes the different aspects of sustainability, and that uses continuous, integrated software engineering techniques for requirements that can be traced back to their originators.

4 Benefits and Challenges

The development and evolution of the GreenYaCode toolkit brings with it a number of benefits and challenges, inter alia the transition from domain-dependent to domain-independent sustainability, the prioritization by stakeholders, economic return on investment, and the acceptance of the toolkit.

4.1 Domain-Dependent Sustainability

Sustainability is a very broad concept that is closely tied in with personal values. Consequently, it is used in very different forms. One end of the spectrum is the capacity to endure [14], which can be interpreted as “survival of the fittest”, and that leads to a concept of competence without considering values. The other end of the spectrum is life flourishing forever [5], where flourish needs interpretation that will include personal values. Consequently, domain-dependent sustainability is strongly dependent on the project context and tied in with the values of the stakeholders. This strong interdependence makes it impossible to clearly decompose domain-dependent sustainability for the general case.

4.2 Prioritization by Stakeholders

There are potentially conflicting quality criteria, which again is tied to the specifics of the chosen definition for domain-dependent sustainability; for example sustainability and privacy: On one hand the absolute availability of information would make sustainability easier in many domains, and that is in conflict with privacy. For example, if companies had to provide all information on how “green” (environmentally sustainable) they really are with consumption of any type of resources, their processes, and their waste production. On the other hand, privacy can be understood as part of the individual sustainability of a person, for example security breaches in online banking. Consequently the occurrence of the conflict again depends on the definition of the domain-dependent sustainability and which values that definition is based on. Finally, how it is prioritized again depends on the importance that these stakeholders assign to it.

4.3 Economic Return on Investment

For the economic perspective, (1) Valery can get credit for her company by contributing back into the knowledge base of GreenYaCode and (2) she can provide added value for her company by using GreenYaCode to demonstrate how sustainability is designed into the system. This is because the toolkit provides the traceability to prove the integration of sustainability throughout the development process and into the final product.

The first point, the contribution back into the knowledge base, is a central principle in any open collaboration. For solving sustainability issues, sharing our knowledge and building up the databases that provide examples for best practices, is vital to success as there are so many different factors that have to be taken into account. A specific economic benefit of contributing back to the knowledge base will depend on the implementation of the tool. One way to imagine a win-win situation is to offer free use of the tool if the results that they were used for are contributed back to the knowledge base. In case of confidentiality issues, the contributions could be made more abstract or names and numbers could be modified and sources anonymized.

The second point, providing added value to the company by demonstrating that sustainability was designed into the system, is relevant for marketing. As sustainability has received an increased awareness by companies in all application areas and business domains, it is likely that sustainability standards will develop that require the use of certain reference models to ensure compliance with such standards. In an ideal world, the GreenYaCode toolkit could become one of the toolkits to ensure this compliance.

4.4 Tool Acceptance

To facilitate their application in practice for any proposed concept (including SE4S), it is necessary to provide adequate tooling to disseminate them. However, establishing new reference tools within a development company always faces challenges of acceptance. It is easier to stick to established tools and avoid learning curves for new tools, unless the benefits early on significantly outweigh the initial effort.

There are several open source development environments, for example Eclipse, that may welcome plug-ins that access GreenYaCode and use its reference models for providing additional guidance within their programming environments. The availability of such plug-ins is likely to increase application of SE4S in practice because the integration reduces the user effort for looking up yet another reference. Contributing to free open source software is an incentive to improve your coding skills and get familiar with large projects [6]. Therefore, students with interest in sustainability should be encouraged to engage in such activities.

5 Conclusion and Future Work

As this is design fiction, we cannot present an evaluation of the concepts presented in this paper. However, the fiction is based on elements that have resulted from previous research and now have to be integrated into an encompassing guidance for software engineering for sustainability. The contribution of this paper is to provide a research roadmap for software engineers who aim at making our profession a part of the way of our society towards sustainability and to outline questions and challenges that have to be solved along that way.

Future work includes:

  • The iterative implementation of the proposed tool vision in increments with a growing list of features and capabilities.

  • The qualitative evaluation of applicability and usability in feasibility studies in collaboration with software development companies in different contexts.

  • The long-term evaluation of benefits for systems’ development in terms of the impact on the different dimensions of sustainability and the return on investment.