We have developed an expertise in designing sustainable software, ie software that minimises its negative impacts on environment and society, and maximises the positive ones. We have done so through using state of the art techniques, and adding our own research results (see this post) to this body of knowledge. Below we summarize our understanding of the “Sustainable Software” concept, and we discuss what tools can be used by people who design software: requirements engineers.
Sustainability Informatics has been suggested as a new research field in 2010 . Within this discipline, Sustainable Software has received a significant attention. Results have been mainly published in specialized venues, of which a nice summary can be found in . In this publication, Naumann et al. combine many existing works, as well as environmental sciences knowledge, to lay solid foundations for studying Sustainable Software. Their holistic study result in new definitions for Sustainable Software and its Engineering, as well as in a framework for designing sustainable software called the GreenSoft Model. It specifies where to look for software impacts on sustainability and makes initial suggestions on how to measure them and how to deal with them according to your process and role regarding software. This is, to our knowledge, the most advanced and comprehensive model of the genre to date. But still, a lot of research will be needed to make it really helpful to Requirements engineers out there.
Sustainability: a complex concept
The university of Namur (FUNDP) has recently set up an interdisciplinary research group around sustainability. It is pursuing mainly 4 research directions, one of them being centered on the definition of the sustainability concept. The group is composed of researchers in Human and Nature Sciences, aiming at elaborating a map of research in “Sustainable development”. What is in fact a research in Sustainability? What are the criteria to say that a research concerns Sustainability? The first and only current result is that researchers are now aware that a long time will be needed in order to answer these questions, due to the intrinsically interdisciplinary nature of the sustainability concept.
Notwithstanding this, research has already delivered frameworks to analyze sustainability. The famous Life Cycle Analysis (LCA) framework, used in , is a prominent example, but its scope is quite limited. More complex models can also be found, see for example: [3–6]. They’re all incomplete as any model is, but here particularly as they usually result from mono-disciplinary efforts. They however offer interesting tools to requirements engineers.
Requirements Engineering and impacts on the software life-cycle.The first part of the GreenSoft model  recalls that software impacts sustainability all along its lifecycle (Development, Usage, Disposal), at least at three levels: First-order impacts are direct effects like resource use and pollution from mining, hardware production, power consumption, and disposal of electronic equipment waste. Second-order impacts are effects that result indirectly from using ICT, like energy and resource conservation by process optimization (dematerialization effects), or resource conservation by substitution of material products with their immaterial counterparts (substitution effects). Third-order impacts are long term indirect effects that result from ICT usage, like changing life styles that promote faster economic growth and, at worst, outweigh the formerly achieved savings (rebound effects) . The paper also insists on the fact that second- and third-order effects might well be the most important, but the harder to grasp.
RE is obviously primarily concerned by the usage phase of the software. But RE can also reduce the relative impact of the development and disposal phase: by enabling software to last longer. This in turn relates to qualities such as reliability, adaptability, maintainability or context-awareness of software. While specific development paradigms such as Agile claim their share of the pie in this area , it is clear that the fitness for purpose of the software is the prime quality that will save it from being thrown in the bin too early. Consequently, a correct requirements engineering work has a lot to do with software that lasts.
So far as software is concerned, fighting negative 1st-order impacts means designing “lean” software: software that will consume just what it needs in terms of energy and hardware. While programming languages and techniques have a predominant impact here, the requirements work also plays an important role. Keeping the software to functionalities that are strictly needed is key. Variability management techniques can also help software engineers to offer more customizable products, so users can select what they need and only this, removing unused features and associated energy costs.
Caring about 2nd- and 3rd-order effects means designing software that induce more sustainable human behaviours. For any software, the functionalities that we design may have an impact on sustainability. The Requirements Engineer is the most appropriate person to integrate sustainability at this time. But this won’t be easy, as the complexity of software is multiplied by the complexity of sustainability and human behaviour. For example, e-bay, which fosters reuse of physical goods (positive impact), may very well foster over-consumption (negative rebound). It’s functionality to show goods that are close to your home saves on transport impacts, but the one that shows you results from far away has the reverse effect. E-bay fosters individual exchanges between people, and provides a sense of community, bringing people together, which seems to be positive. But is it really so? Social networking tools in general, a prominent example, have a clear impact on social sustainability of our society. But how can we measure this impact? How can we assess if it serves a more or less sustainable society?
In an experience report, Mahaux et al.  show that Requirements Engineers can take the time to assess at least second-order effects of a business-oriented software. They experimented with very concrete adapted techniques and highlighted how Requirements Engineers needed to talk to Sustainability specialists in order to master the complexity of this domain and integrate it into their developments. Just as Requirements Engineers do with other quality requirements like security , they have to tailor specific techniques and craft the collaboration between Requirements Engineers and other disciplines specialists to reach the desired quality levels. In , Cabot et al. propose to consider sustainability as a high level goal amongst others, and using goal-oriented techniques to help decision-making for Requirements Engineers and stakeholders. They also observe that the first problem is the lack of standard definitions for sustainability concepts, and suggest Requirements Engineers should work on defining taxonomies for this concept.
 I.-E. consortium, “Sustainability Informatics – A new Subfield of Applied Informatics?,” 15-Apr-2010. [Online]. Available: http://iai- uiserv1.iai.fzk.de/ictensure/site?mod=litdb&subject=art&pid=L26FE698D&action=d etail. [Accessed: 23-Jan-2012].
 S. Naumann, M. Dick, E. Kern, and T. Johann, “The GREENSOFT Model: A reference model for green and sustainable software and its engineering,” Sustainable Computing: Informatics and Systems, vol. 1, no. 4, pp. 294-304, Dec. 2011.
 P. Ekins, S. Simon, L. Deutsch, C. Folke, and R. De Groot, “A framework for the practical application of the concepts of critical natural capital and strong sustainability,” Ecological Economics, vol. 44, no. 2-3, pp. 165–185, 2003.
S. López-Ridaura, O. Masera, and M. Astier, “Evaluating the sustainability of complex socio-environmental systems. The MESMIS framework,” Ecological indicators, vol. 2, no. 1-2, pp. 135–148, 2002.
E. Ostrom, “A general framework for analyzing sustainability of social-ecological systems,” Science, vol. 325, no. 5939, p. 419, 2009.
“Reliable Prosperity – A pattern language for sustainability.” [Online]. Available: http://www.reliableprosperity.net/. [Accessed: 26-Jan-2012].
K. Tate, Sustainable Software Development: An Agile Perspective, 1st ed. Addison-Wesley Professional, 2005.
M. Mahaux, P. Heymans, and G. Saval, “Discovering Sustainability Requirements: An Experience Report,” in Requirements Engineering: Foundation for Software Quality, 2011, pp. 19–33.
D. Firesmith, “Engineering Safety and Security Related Requirements for Software Intensive Systems,” in ICSE Companion, 2007, p. 169.
J. Cabot, S. Easterbrook, J. Horkoff, L. Lessard, S. Liaskos, and J. N. Mazón, “Integrating Sustainability in Decision-Making Processes: A Modelling Strategy,” in 31st International Conference on Software Engineering-Companion Volume, 2009. ICSE-Companion 2009, 2009, pp. 207–210.