Sustainable Software Systems: The Core Characteristics and Their Achievement

Guidelines for creating sustainable software systems were presented in the last years to aid developers to achieve sustainability goals. Most of the guidelines are stated as a result of an experimental study, or even as lessons learned, thus, secondary studies are an important tool to summarize these guidelines and present them to the community. Our study surveyed the literature to gather the guidelines presented in this area and we present these results in the table below.
# Study Guideline Classification
1 1 Schedule daily stand‐up meeting to encourage the communication of team members. Communication
2 1 Arrange face to face meetings and use web technologies such as online chats, webinars, email, and discussion forums for strong interactions between customer and developers. Communication
3 1 Arrange social activities for providing opportunities to the team members for informal communication. Communication
4 [1][22] Plan interaction sessions among developers and customers to understand the complexity of software project. Communication
5 1 Encourage informal communication across the team members. Communication
6 1 Feedback from customers during retrospective meeting should be recorded to improve the overall quality of software. Communication
7 1 Perform regular team sessions for effective software development plans (schedule, iteration, quality, and sustainability). Communication
8 1 Arrange a milestone retrospective meeting to ensure the green and sustainable behavior of a software project Communication
9 8 Create mechanisms to reduce CPU energy consumption Energy saving techniques
10 8 Avoid the use of frameworks when developing small applications to improve energy efficiency. Energy saving techniques
11 8 Choose an energy efficient Design Patterns Energy saving techniques
12 8 Choose an energy efficient storage technology. Energy saving techniques
13 8 Choose less energy consuming design patterns. Energy saving techniques
14 8 Implement an architecture to automatically organize VM to use less energy not impacting the QoS. Energy saving techniques
15 8 Use of HVMM management to reduce energy consumption of an application on virtual or physical architecture Energy saving techniques
16 8 Use of memoization techniques, optimized use of garbage collection and optimized use of memory increase energy efficiency. Energy saving techniques
17 8 Use of Memoization, pure functions and memory allocation can lead to reduce time execution and energy consumption. Energy saving techniques
18 8 Use of neural networks to identify patterns of energy usage and automatically reconfigure the VM. Energy saving techniques
19 8 Identify energy efficient applications based on ERPs, Image editors and games are less energy efficient than FTP clients and servers and calendar. Energy saving techniques
20 8 Use of a browser that consumes less energy when processing web pages. Energy saving techniques
21 8 Use of energy test case scenarios for web page energy consumption. Energy saving techniques
22 [2][8] Identify and reduce energy cost on facilities. Energy saving techniques
23 8 Implement multithreaded applications to use less time and turn the application energy efficient. Energy saving techniques
24 8 Use of pure SQL code in class rather than Frameworks like Hibernate improve energy efficiency. Energy saving techniques
25 8 Improve energy efficiency by repartitioning databases across fewer disks. Energy saving techniques
26 8 Employ energy efficiency techniques as Compiler optimization Sets Energy saving techniques
27 8 Employ energy efficiency techniques as Interpreted versus Compiled Energy saving techniques
28 8 Employ energy efficiency techniques as Overclocking (Turbo boost) Energy saving techniques
29 8 Employ energy efficiency techniques as Parallelism Energy saving techniques
30 8 Employ energy efficiency techniques as Processor Frequency Tuning Energy saving techniques
31 8 Employ energy efficiency techniques as Processor Sleep States Energy saving techniques
32 8 Employ energy efficiency techniques as Source Code Tuning Energy saving techniques
33 8 Use of Dynamic Voltage and Frequency Scaling (DVFS) power management technique. Energy saving techniques
34 8 Use of quality attributes as Energy Efficiency considering the resource usage like, CPU, Memory and system performance. Energy saving techniques
35 8 Use of quality attributes as Energy Efficiency regarding time to response, amount of resources and software performance. Energy saving techniques
36 8 Use of quality attributes as Functionalities regarding accuracy, suitability, security and interoperability. Energy saving techniques
37 19 A better architecture in terms of maintainability can certainly be worse in terms of power consumption Energy saving techniques
38 8 Cache the pages can reduce the energy consumption of webpage. Energy saving techniques
39 19 Improve the codes number of operations and the optimum usage of main memory and cache there is more room for energy savings." Energy saving techniques
40 1 Always code the software in pairs (pair programming). Energy saving techniques
41 8 Use of Software Sustainability Guidelines during software development. Energy saving techniques
42 8 Use of a GNU Complier optimizations program reduce energy consumption of the code. Energy saving techniques
43 8 Use of Java using the default options is energy efficient. Energy saving techniques
44 8 Use of modular architecture build for agile software programming (POWERAPI). Energy saving techniques
45 8 Test the energy efficiency performance of different programming languages. Energy saving techniques
46 19 Recommended practices to enhance performance can also optimize energy efficiency Energy saving techniques
47 19 Define energy wasting code patterns to improve software quality maintainability towards energy efficiency Energy saving techniques
48 19 For both C and C++ code [of FFT], using optimization flags not only improves performance, but also reduces energy consumption. Energy saving techniques
49 19 Use efficient data structures fast Fourier Transform, Linked List Insertion/Deletion and Quicksort. Energy saving techniques
50 19 The functions must be implemented considering their, Functional complexity, type of functionality offered by a category of software product affects Energy comsumption Energy saving techniques
51 1 Use information radiators to share the information about software development among developers and customers. Knowledge Management
52 7 Identify a sustainability expert within software project Knowledge Management
53 7 Consult relevant experts in any of the sustainability dimensions Knowledge Management
54 8 Support from senior managers. Knowledge Management
55 21 Knowledge bases should be created to capture and reuse the experiences from former sustainability evaluations. Knowledge Management
56 22 Provide knowledge sharing strategies Knowledge Management
57 22 Create knowledge base Knowledge Management
58 22 Acquire knowledge by hiring skillful and knowledgeable software engineers Knowledge Management
59 22 Increase organizational learning Knowledge Management
60 22 Avoid knowledge loss by effective knowledge sharing Knowledge Management
61 22 Develop a framework for individual or group discussions in collective learning and problem solving Knowledge Management
62 22 Provide effective knowledge sharing platforms, for example, social media Knowledge Management
63 22 Provide tutorial and teaching courses to software engineers Knowledge Management
64 22 Introduce sustainable software engineering education and knowledge in Software engineering Curricula Knowledge Management
65 1 Track the velocity of development to deliver software in time. Measures / Metrics
66 1 Use energy estimation software such as “Green Tracker” to measure the energy consumption estimates of software. Measures / Metrics
67 8 Collect the energy consumption data. Measures / Metrics
68 8 Estimate energy consumption via data transferred over the network. Measures / Metrics
69 8 Identify consumption peak from the source code. Measures / Metrics
70 8 Identify consumption peak when launching an application. Measures / Metrics
71 8 Implement energy monitoring of the source code. Measures / Metrics
72 8 Enable software developers to continuously measure and monitor energy consumption of software under development. Measures / Metrics
73 8 Create an environment for software energy measurements during the development. Measures / Metrics
74 8 Use of controlling methods to measure browser energy consumption Measures / Metrics
75 8 Estimate third-party server’s energy consumption (CDNs) when the data from datacenter is not available. Measures / Metrics
76 8 Monitor user devices when using the system. Measures / Metrics
77 8 Choose of consumption measurement analysis. Measures / Metrics
78 8 Use of a hardware to measure many types of energy measures Measures / Metrics
79 8 Use of modularization metrics to achieve sustainability quality system. Measures / Metrics
80 8 Use of regulators and special agency data to be the base of energy consumption estimation. Measures / Metrics
81 8 Collect power utilization effectiveness (PEU) from cooling and power. Measures / Metrics
82 8 Use of Power Measurements during application execution. Measures / Metrics
83 8 Use of software power metrics like disk hits transaction per second. Measures / Metrics
84 8 Use of software power metrics like KB active (memory that was recently active) Measures / Metrics
85 8 Use of software power metrics like User-time per second (user space CPU usage). Measures / Metrics
86 8 Analyze the impact of the web page size on power consumption. Measures / Metrics
87 8 Use of integration and acceptance testing framework to measure the energy consumption of web server Measures / Metrics
88 8 Measure energy efficiency by collecting data transferred and user actions on the system. Measures / Metrics
89 8 Report the results of sustainability assessment Measures / Metrics
90 8 Monitor company and product performance on Requirements sustainability Measures / Metrics
91 8 Estimate efficiency by using the add value to the customer versus project- related effort to measure Project Efficiency. Measures / Metrics
92 8 Estimate the project footprint by considering the amount of hours working in house or in office. Measures / Metrics
93 8 Define sustainability indicators. Measures / Metrics
94 8 Use of metrics for sustainability improvement goals to achieve better results in sustainability. Measures / Metrics
95 8 Use of Defect Density to measure Dependability. Measures / Metrics
96 8 Use of Distance measurement for Modifiability and Reusability. Measures / Metrics
97 8 Use of Effectiveness to measure usability. Measures / Metrics
98 8 Use of error rate to measure usability Measures / Metrics
99 8 Use of Estimated System Lifetime to measure Portability. Measures / Metrics
100 8 Use of Estimation Quality Rate to measure the predictability. Measures / Metrics
101 8 Use of Learnability to measure usability. Measures / Metrics
102 8 Use of Relative Response Time to measure Performance Measures / Metrics
103 8 Use of Support Rate to measure Supportability. Measures / Metrics
104 8 Use of Sustainability Performance Metrics to improve sustainability aspects. Measures / Metrics
105 [2][8] Evaluate product's sustainability. Measures / Metrics
106 8 Monitor software impact in the environment Measures / Metrics
107 8 Use of metrics to assess Accessibility regarding social aspects of the system. Measures / Metrics
108 8 Mitigate the idle consumption using Relative Idle Consumption metric Measures / Metrics
109 8 Determine the energy consumption of the application by calculating the hardware consumption when a component has been executed. Measures / Metrics
110 8 Identify power consumption during peak workload. Measures / Metrics
111 8 Quantify the energy consumption scale with an increasing. Measures / Metrics
112 8 Use of quality attributes as Reliability to measure failure-free operation of the system Measures / Metrics
113 8 Identify high energy consuming user interface functionalities. Measures / Metrics
114 8 Identify the user device by web analytics. Measures / Metrics
115 8 Identify user's behaviors when using the software Measures / Metrics
116 8 Use of web analytics to get energy consumption information. Measures / Metrics
117 8 Identify high energy consuming user interface functionalities. Measures / Metrics
118 8 Estimate the energy impact from delivery of service until the end user. Measures / Metrics
119 8 Calculate energy footprint end-to-end when developing a system. Measures / Metrics
120 19 Use code smell detection to identify patterns known or suspected to be detrimental to software quality (especially maintainability). Measures / Metrics
121 19 There is measures related to energy efficiency (30 of the 81 measures for product), an important subset of measures are related to resource optimization (23%) and perdurability (28%) Measures / Metrics
122 19 Define the Greenup, Powerup and Speedup metrics to explain the correlations of energy, power and performance when optimizing software. Measures / Metrics
123 21 Also architecture-level metrics could be accompanied with a catalogue or guidelines for architecture-level refactorings aiming at improving specific metric values. Measures / Metrics
124 [1] Develop reusable prototype instead of throw‐away prototype. Sustainable Practices
125 [1][19] Refactor the software system whenever required Sustainable Practices
126 [1] Design low dependent modules to avoid design complexity. Sustainable Practices
127 1 Adopt component‐based development strategy for reuse of the existing components in the development of a new system to minimize time, cost, and efforts. Sustainable Practices
128 8 Reduce the number of loops and database accesses by refactoring. Sustainable Practices
129 19 Software design patterns and refactoring techniques need to be studied in depth, to discover the way they affect energy consumption Sustainable Practices
130 19 Highly reusable assets are prone to be optimized, as is their greenability Sustainable Practices
131 19 If an asset is easy to modify, it is likely to keep (and not worsen) its greenability Sustainable Practices
132 7 Aggregate a sustainability role in a stakeholder list Sustainability Planning
133 7 Identify sustainability guidelines in the application domain Sustainability Planning
134 [7][16] Use a sustainable goals catalog to derive sustainability requirements Sustainability Planning
135 7 Define sustainability goals by means of a model (e.g. GQM, framework, meta-model, requirements patterns) Sustainability Planning
136 7 Create a glossary of terms Sustainability Planning
137 8 Define design choices may impact on energy consumption when made to support high performance production. Sustainability Planning
138 8 Identify carbon footprint based on countries emissions. Sustainability Planning
139 8 Plan usage scenarios Sustainability Planning
140 8 Refine and deduce sustainability requirements Sustainability Planning
141 8 Identify green deployment requirements for the system under development Sustainability Planning
142 8 Analyze the dimensions to find responsible roles and matching them top-down to the context. Sustainability Planning
143 8 Identify improvements on business process by using different approaches of sustainability. Sustainability Planning
144 8 Identify initiatives of sustainability in the company level. Sustainability Planning
145 8 Identify sustainability means for the company or product. Sustainability Planning
146 8 Include Green IT in strategic management of enterprises. Sustainability Planning
147 8 Specify a concrete and measurable sustainability actions. Sustainability Planning
148 8 Use of reference model to gather the sustainability activities, dimensions, values, indicators and regulation. Sustainability Planning
149 8 Inspect the context, understanding which concrete roles are involved, and match them bottom-up to the dimensions. Sustainability Planning
150 8 Develop a software in economic sustainable way Sustainability Planning
151 8 Identify practices of Process- Related Properties like predictability, efficiency and project's footprint. Sustainability Planning
152 8 Identify sustainable actives that impact positively the indicators. Sustainability Planning
153 8 Analyze and refine a generic sustainability model Sustainability Planning
154 8 Analyze sustainability of business or domain context Sustainability Planning
155 8 Derive non-obsolescence requirements and quality characteristics of maintainability, supportability and reliability Sustainability Planning
156 8 Identify quality requirements to measure sustainability dimensions. Sustainability Planning
157 8 Identify sustainability stakeholders who issues objectives, constraints and consideration about the system under development. Sustainability Planning
158 8 Specify sustainable interaction Sustainability Planning
159 8 Elicit sustainability constraints Sustainability Planning
160 8 Elicit sustainability objectives Sustainability Planning
161 8 Instantiate generic lists of sustainability stakeholders Sustainability Planning
162 8 Use of a model to identify sustainability stakeholders. Sustainability Planning
163 8 Identify practices related to Usage-related properties like performance, dependability, usability and accessibility. Sustainability Planning
164 8 Identify software sustainability. Sustainability Planning
165 8 Consider business process when Construction a Green System. Sustainability Planning
166 8 Evaluate company's sustainability impacts using a model. Sustainability Planning
167 8 Adopt a Life Cycle Assessment principles Sustainability Planning
168 16 Many sustainability problems can already be mitigated by good software engineering practice Sustainability Planning
169 21 Use approaches (e.g., based on simulation or other techniques) must be more explored instead of only using scenarios (most used method to evaluate architecture sustainability). Sustainability Planning
170 22 Provide the sustainable software engineering methodologies at the tactical and strategic level Sustainability Planning
171 22 Make software engineers familiar with the unknown and varying situations Sustainability Planning
172 8 Identify the cost of non-energy efficient application per unit of work. Sustainability Planning
173 [1] Design simple and user friendly software according to customer's needs. Sustainable design
174 1 Update the design as per the changes in customer's requirements. Sustainable design
175 [1][8] Manage to redesign software system according to the volatile customer's requirements. Sustainable design
176 3 Use Requirements engineering to support the identification of sustainability goals Sustainable design
177 8 Apply guidance to help on energy impact software design decisions Sustainable design
178 [8][19] Enhancing software process quality has a potentially positive interaction with energy efficiency Sustainable design
179 [13][16] Use requirements engineering for sustainable software development in the whole software life cycle Sustainable design
180 1 Involve the customer from the start of the software development till its completion. Sustainable Practices
181 1 Keep minimum development team for strong interaction and development. Sustainable Practices
182 1 Plan a schedule for the increments release to customer. Sustainable Practices
183 1 Follow short development cycles/iterations Sustainable Practices
184 1 Plan sprint review at the end of each sprint. Sustainable Practices
185 1 Involve the customer throughout software development to validate the work in iteration. Sustainable Practices
186 1 Use acceptance testing to validate the requirements of customer. Sustainable Practices
187 1 Avoid defect backlogs from the early days for each software development. Sustainable Practices
188 1 Focus on rapid software development by spending less time in analysis and design phases. Sustainable Practices
189 1 Focus on producing the working code instead of heavy documentations. Sustainable Practices
190 1 Do not rely heavily on written documents for requirement specifications, design, and testing Sustainable Practices
191 2 Avoid paper Sustainable Practices
192 1 Appoint security engineer to estimate, monitor, and mitigate security risks and perform real‐time security reviews of system's design and code Sustainable Practices
193 8 Identify practices of Development-Related Proprieties like modifiability, reusability, portability and supportability. Sustainable features
194 19 Functional suitability, performance efficiency and maintainability can participate in both positive and negative interactions with sustainability Sustainable features
195 19 Sustainability is more than only maintainability of software. A sustainable product should have a lower impact when introducing changes (reusability) or should improve usability that can make the product lifecycle longer Sustainable features
196 19 Reliability has a potentially positive interaction with sustainability Sustainable features
197 19 Usability can have a positive interaction with sustainability when addressing indirect sustainability impacts. Direct sustainability impact can have a negative interaction with usability Sustainable features
198 19 Quality attributes such as maintainability, portability and usability promote software perdurability Sustainable features
199 19 Modularity is likely to be related to greenability for two different reasons. Sustainable features
200 8 Choose a Green Data Center to design a Green System Sustainable features
201 8 Choose a well-planned data center to efficiently use the cooling system. Sustainable features
202 8 Identify hardware provisioning over a period. Sustainable features
203 8 Choose high-performance desktops and laptops that use efficiently hardware technologies. Sustainable features
204 19 Security has a potential negative interaction with sustainability Sustainable features
205 21 The outcome of most scenario based evaluation methods is still largely determined by the experience of the participants Development team
206 8 Have one or more stakeholders for each sustainability aspects economic, social, human, social, technical and environmental. Development team
207 1 Appropriately coach the development team before the project starts. Development team
208 8 Raise awareness of individuals about environment protection Development team
209 8 Develop a Green IT systems with skillful employees. Development team
210 22 Provide software engineers with varying situation awareness for each activity of software engineerings such as RE, Modeling, Construction, Code review and deployment Development team
211 22 Software Engineers must know how to learn and develop a high level of education Development team
212 22 Software engineers should be able to acquire education from the publications and other data sources Development team
213 22 Introduce sustainable software engineering education and knowledge in Software engineering Curricula Development team
214 1 Focus on technical excellence of developers to achieve simple and meaningful design. Technical Excellence
215 8 Adjust automatically servers CPU voltage. Technical Excellence
216 8 Apply compilation optimization techniques such as performance. Technical Excellence
217 8 Avoid the use of Non-pure functions that have input parameters such as global variables and objects. Technical Excellence
218 8 Avoid write C++ interactive algorithms without a GNU Compile Collection (GCC). Technical Excellence
219 8 Build a website with less flash contents. Technical Excellence
220 8 Identify user's monitor resolution Technical Excellence
221 8 Perform tuning database instructions Technical Excellence
222 8 Reduce the amount of complex code by using memoization techniques. Technical Excellence
223 8 Reduce the amount of videos in the web page Technical Excellence
224 8 Reduce the size, resolution or number of images in the web page. Technical Excellence
225 8 Reduce the usage of JavaScript in the web page. Technical Excellence
226 8 Reduce the video resolution inside the web pages. Technical Excellence
227 8 Reduce the web page rendering Technical Excellence
228 8 Use of pure function to write code and allow memoization. Technical Excellence
229 8 Reduce the use of third party servers. Technical Excellence
230 8 Use of memoization programming technique Technical Excellence
231 8 Use of user interface components can impact the energy consumption. Technical Excellence
232 8 Use of virtualized architectures can reduce the cost of dedicated hardware. Technical Excellence
233 8 Monitor servers activities when respond to users request. Technical Excellence
234 8 Set up reconfiguration actions when the application response time is outside a pre-defined configuration. Technical Excellence
235 8 Configure web server setting to reduce the energy consumption. Technical Excellence
236 8 Configure web servers to attend specifically the web application functionalities. Technical Excellence
237 8 Define memory allocation policy Technical Excellence
238 8 Avoid to develop noise systems. Technical Excellence
239 8 Implement non-functional requirements Technical Excellence
240 1 Use the existing tools for software development such as Jira, Axosoft on time Scrum, and LeanKit. Tools
241 2 Use electronic documentation Tools
242 2 Collect requirements through electronic means Tools
243 8 Use of a tool to detect class and methods that mostly consumes energy. Tools
244 8 Use of a tool to stores energy consumption samples. Tools
245 8 Use of Power consumption measurement tool to identify design patterns' energy consumption. Tools
246 8 Use of tool to estimate energy consumption at a code level of the application. Tools
247 8 Use of tool to monitor at runtime the power consumption of software. Tools
248 8 Change the device for online newspapers use of e-readers devices instead of PC/laptops is advice. Tools
249 8 Use of devices that do not cause too much pollution. Tools
250 21 Use integration methods to combine qualitative and quantitative metrics with architecture recovery tools or automated improvement tools Tools
251 22 Provide sustainable software engineering tools and methods to software engineers Tools
252 22 Avoid tools and methods that affect software engineers in their work negatively Tools
253 22 Demonstrate the current tools and methodologies applicability to software engineers. Tools
254 [1][8] Ensure team spirit and forward self‐motivation for better sustainable software productivity. Work Environment
255 8 Derive sustainable system vision. Work Environment
256 8 Define a mechanism of awards for rating employees' green behaviors. Work Environment
257 8 Identify individuals satisfaction Work Environment
258 [1][8] Change the organizational culture to develop Green IT systems. Work Environment
Return to index