Back in the day, software developers were too busy trying to keep their card decks in order and waiting in line for access to the mainframe to worry too much about complex software solutions and software development process improvements. As technology increased – so did the expectations for complexity in our software solutions leading eventually to what is referred to as the ‘software crises’. Software projects finishing way over budget and way over schedule. This crisis spurred a plethora of ‘silver bullet’ solutions such as structure programming, Computer Aided Software Engineering Tools (CASE), Capability Maturity Model (CMM & later CMMI), and many others. While they were many successes with these ‘silver bullet’, as increasing access to technology and software tools, they were, in many cases also viewed as an impediment to productive delivery of software solutions
In February 2001, a group of some really smart software development professionals sat down to talk about this ‘software crises’ and to consider situations where lightweight methodologies could be incorporated into software development processes and projects. From these discussions emerged the Agile Manifesto. This manifest introduced the following tenets for software development:
We are uncovering better ways of developing software by doing it and helping others to do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
(That is while there is value in the items on the right; we value the items on the left more)
Agile methods rely on experience, highly skilled people communicating with clients and each other to deliver software that provides the clients with the most value for their money. This requires both the developers and the consumers of software to accept the reality that things will change over the course of the project and that the software that is eventually delivered may not be the same as what was envisioned on day one of the project.
At first blush, the tenets of agile development lead one to believe that they would be completely inappropriate to be applied to space and safety critical systems which require:
- Compliance to industry Standards
- Detailed documentation
- Fixed Requirements
- Detailed up front planning,
There are however lots of instances where agile tenets and agile methodologies have been successfully applied to system critical and space software.
On November 5th, 2018 I spoke on this topic at the COCOMO forum held at the SEI building in Washington DC. I discussed the unique aspects of space and safety critical systems that present challenges for the execution of agile projects and providing some insight into which agile tenets can be successfully applied. I also discussed specific aspects of creating estimates for such software projects. Check out the program here – looks like a lot of great content!