Most of you work on complex systems, and we all know that complexity is growing, due to size growth, legacy issues and “software aging,” accommodating underlying platform and technology changes, new requirements, and a host of other things.
NASA commissioned a “Study on Flight Software Complexity”, to help them understand the causes and plan corrective action. Not surprisingly (to us, at least), architecture, or more precisely, lack of architecture, played a prominent role.
The study begins with the premise that complexity is “how hard something is to understand or verify. This implies that the main consequence of complexity is risk.” They distinguish between essential functionality which is unavoidable, and “incidental complexity, which arises from decision about architecture, design, and implementation.”
One of the main findings was “Good software architecture is the most important defense against incidental complexity…but good architecting skills are uncommon.” There were three corrective actions recommended:
- “If we view a project as a zero-sum game, meaning that there is a fixed budget to be allocated across different phases of work…most projects should allocated a larger percentage of resources to early analysis and architecture in order to avoid later problems and rework, when it is more costly to fix.”
- “Create a professional architecture review board to provide constructive early feedback to projects.”
- Nurture software architects, and increase the number of trained software architects through hiring and internal training and mentoring.
The report and findings are summarized in a conference presentation made by the report editor.
You may find it worthwhile to compare the situation at NASA to your own organization. If you are seeing similar problems, then you may be able to leverage their recommendations.
–John Klein, SEI