NASA launched the $328 million Mars Climate Orbiter into space back in 1998, with the mission to study the climate of the planet. Just nine months after the craft was launched, and before it had begun its investigation, it lost all communications and signal with the ground. Partly this failure was all down to a lack of communication in the software development life cycle, something which still remains a reason for project failure today.
The problem was that one half of the NASA team were using SI (standard units of measurement) whereas the others were using imperial units. The orbiter was programmed to understand SI units but NASA was sending data to the Mars Climate Orbiter in imperial measurements. This caused the orbiter to burn out in the atmosphere and the $328 million project to fail.
This expensive error could have been easily avoided had the teams communicated better, tested the systems more thoroughly and had clear requirements in place. This particular project failure may have happened a number of years ago, yet to this day software projects continue to fail. The Chaos Manifesto 2013 states that a massive 61% of software projects are either challenged or cancelled.
So, what can be done to help software projects avoid the same fate as the Mars Climate Orbiter?
Communication
For a start, we can learn from NASA the importance of communication in the software development life cycle. It is necessary for a process or software tool to be in place to ensure that everyone in the project understands the requirements and that there is clarity of vision across teams. It is not enough that these requirements are just written down because words are full of ambiguities which often leads to the wrong thing being developed. By using a tool that does not allow ambiguous requirements to be entered into the requirements process from the very beginning there can be no room for error in the final project.
Importance Of Testing
A further lesson to be taken from NASA’s $328 million failure is that testing is an important part of the software development process. Often time spent in testing and QA is cut short in order to meet deadlines and budgets. Testing software needs to be done rigorously and efficiently in order to meet the constraints and deliver valuable working software earlier.
If NASA had used such a tool to design their requirements and automatically write the minimum optimal test cases their mission would not have failed. Everyone in the team would have known the exact number units required to be used both in the craft and on the ground. Teams would have been easily able to communicate the requirements, rigorously test the systems before it went live and save the project from failure.
About the Author
Georgina Tilby is a marketing manager with Grid-Tools, who develop tools for the software development life cycle.