Professional Documents
Culture Documents
Abstract
Information Technology is playing a critical role in bringing social and environmental sustainability.
However, the social and environmental impact of the IT project itself is rarely accounted or managed.
Thus, a huge amount of waste is generated: Billions of dollars are lost annually in mismanaged software
projects, while e-waste increases at astonishing rates. Despite these facts, there is little to no awareness in
the industry as to the impact of the software development process in society and the environment. Hence,
there are no standards or guidelines to effectively minimize such impacts. With this in mind, this paper is
for anyone involved in an IT project and it introduces a methodology to measure and incrementally
improve the sustainability of software projects that can be easily adopted without impacting the overall
product development cycle. This methodology is composed of a set of metrics that are used to assess the
Sustainability Performance of a given software-based project, with the goal of promoting the use of
Software Engineering, Project Management and IT Adoption practices that enable economic, social and
environmental benefits. The paper also illustrates how this methodology was used in a software project
developed for NASA.
Acknowledgements
This paper was produced in December/2004, as part of the Masters of Science in Information Technology
– Software Engineering Program at Carnegie Mellon Silicon Valley (http://sv.cmu.edu).
This paper would not have been possible without the guidance of Dr. Illah Nourbakhsh (NASA Ames
Research Center), Dr. Edward Katz and Todd Sedano (Carnegie Mellon Silicon Valley). Appreciation is
extended to the Carnegie Mellon’s faculty for the extremely valuable feedback and support, in special Dr.
Martin Griss and Dr. Jamie Dinkelacker. And very special thanks to the Tag Team who made this project
happen: Melanie Gabriel, Curtis Huang, Stephen Nelson, Thuan Ngo and Ryan Prichard.
This work was inspired by the pioneering concept of “Environmental Accounting” invented and
implemented by Eckart Wintzen at Origin in the early nineties1, and IfPeople's ResponsibleIT2 standard.
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 United States License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to
Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Improve Assess
Establish improvement goals the Sustainability
and actions. Performance
Reflect
Analyze assessment results
• Assessment Phase: In this phase the team compiles the data collected throughout the project in order
to measure the performance of the project against a set of properties that leverage an economical,
social and environmental benefit (modifiability, reusability, etc…).
• Reflection Phase: In this phase the team analyzes the results of the assessment phase and suggests
improvements for each one of the properties.
• Goal Improvement Phase: In this phase the team evaluates the suggestions for improvement resulted
from the Reflection Phase and selects a few that can be realistically improved during the next release
cycle based on the following criteria:
1. Customer value
2. Feasibility / likelihood for adoption
3. Level of improvement
The goal is not to implement sustainability at once, but instead to enable continuous improvement
throughout many release cycles. In fact, any effort that aims to improve sustainability must be itself
sustainable, and methodologies that embrace continuous improvement (such as Six Sigma and CMMI)
have a proven record of success exactly because of the continuous improvement aspect, which enables
organizations to increase efficiency in an ongoing and sustainable fashion.
The list below outlines a set of simple metrics that will be used to quantify each one of the properties.
MODIFIABILITY
In order to measure modifiability we will use a number of OO design quality metrics13 that will result in a
single number per package, representing how much the package is prepared to accommodate change.
First we calculate the Instability of each package, which represents the ability of changing a package
without impacting the other packages:
Instability = Efferent Coupling / (Afferent Coupling + Efferent Coupling).
Where:
• Afferent Coupling: The number of classes outside a package that depend on classes inside the
package.
• Efferent Coupling: The number of classes inside a package that depend on classes outside the package.
A number close to zero means that the package is “stable” (i. e.: the package has more incoming
dependencies than outgoing dependencies), and therefore a change in the package is likely impact other
Future Work
By no means does this set of metrics try to encompass the entire spectrum of indicators related to
Sustainability (such as environmental and social indicators, for example). The goal of this methodology is
to simply offer a starting point for further evolution, by having a small but relevant set of metrics.
Future improvements of this methodology should use more qualitative metrics, especially in measuring
Accessibility.
This methodology does not define thresholds because the goal is to allow a continuous improvement of
the software throughout its releases, and therefore a metric does not have a “good” or “bad” meaning per
se. However it would be beneficial to include some kind of baseline for benchmarking purposes, which
can be accomplished by applying this methodology in a number of projects of different sizes.
In order to guarantee continuous sustainability improvement, the Goal Improvement Phase should define a
method of tracking the accomplishment of the goals from the previous release cycle.
A tool that automatically calculates the sustainability metrics at the end of a project’s release cycle would
increase the likelihood of the broad adoption of this methodology.
Conclusion
Given that the very first principle of the Software Engineering Code of Ethics is to act consistently with
the public interest17 and also considering the huge impact of the software industry in the society, we must
expand our understanding of how software-related activities affect human development at local and global
levels, in addition to creating practices that improve the long-term sustainability of software projects.
Background
Personal Exploration Rover (PER)18 is a project conducted by the Robotics Institute
at Carnegie Mellon University with support from NASA, which developed a robot
that resembles the Mars Exploration Robot (MER) landed on Mars. The goal is to
educate and inspire high-school students about the role of rovers in space science.
The PER 2 Project was executed by a team of 6 CMU-Silicon Valley Masters of
Software Engineering students during 3 months, with the goal of implementing new PER Robot
features to enhance the interface and improving the usability of the initial
Iconic Programming Interface software application implemented by a
previous team of CMU students (PER 1 Project).
The Iconic Programming Interface is a Java-based application that allows
the user (high-school students) to define “missions” based on the robot’s
body and head actions. The application allows the user to program
movements and transmit them to the robot via wireless networking.
Note: This study considers only the PER 2 Project and its software
components. Sustainability aspects of the robot (such as power Iconic Programming Interface
consumption, etc…) are not considered.
According to the criteria above, the 3 Sustainability Improvement Goals for the next release are:
1. Improve PER’s Supportability and decrease estimated installation time to 5 minutes,
by integrating an automatic installer method to PER, such as InstallShield, InstallAnywhere or
open source installers such as LiftOff, Packlet, IzPack and many others.
2. Improve PER’s Usability and increase the Learnability level to 0.13,
by introducing small but effective improvements to the UI. For example, the usability study
has shown that the user took many minutes to find out that he should start using the
application by clicking on the “add” button. Even though all buttons except the “add” are
grayed-out, still the user got confused because the “add” icon uses some gray color. Therefore
one of the ways that learnability could be improved changing the color of the “add” icon.
3. Reduce PER’s Footprint and increase Conference Calls Rate to 0.60,
by simply using more conference calling and virtual meeting systems instead of physical
meetings.