Software is inherent in today’s complex systems and is often the primary cost, schedule, and technical performance driver in Department of Defense (DoD) programs. For DoD mission critical systems, the associated software size, complexity, interdependencies, reliance-on for mission and safety critical functionality, and software assurance (high quality and free from vulnerabilities) related challenges are all continuing to rapidly increase. Successful software project execution for DoD mission critical programs is vital to maintaining our national security. This in turn requires the ability to efficiently as possible develop and deliver high quality software systems that fully meet the warfighter’s operational needs and that are safe, secure, reliable, maintainable and scalable. There are many reports from various software acquisition and performance assessment organizations such as the Defense Science Board (DSB), Government Accounting Agency (GAO), and the Carnegie Mellon University Software Engineering Institute (SEI) that document the common challenges that have contributed to the inconsistent execution of DoD software system projects. This paper provides a brief high-level introduction to some of the proven key approaches and techniques required for successful software project execution.
In general, the primary reason for software project failure is often not due to the lack of technical expertise by the software development engineers; but rather it is due to poor project estimation, planning and control. Per the referenced reports above, some of the most commonly reported reasons for software project execution failure include:
- Poor software effort cost and schedule estimation and tracking
- Poor requirements and interface management
- Limited data-driven execution control and continuous improvementLimited awareness and enforcement of best software engineering practices
- Lack of integrated software assurance techniques in all development phases
- Lack of frequent, regular, and structured cross-discipline communication
- Lack of formal risk management
- Lack of investment in automated testing, simulations, and data-extraction
- Lack of multi-mission-platform capable software architectures
- Program leaders lacking applied software engineering experience and expertise
- Over-reliance on private industry for system and software development
- Failure to apply lessons-learned from previous efforts
Despite the common challenges to success listed above, some DoD software intensive projects have been consistently successful with regards to cost, schedule, technical, quality and operational performance. These consistently successful software projects span a wide range of missions (e.g. strategic, tactical, simulations), development methodologies (e.g. nuclear certified, DoD 5000 waterfall, agile, prototyping), complexity (numerous interfaces), and sizes (multi-million lines of code to tens of thousands); but they all utilize many of the same software system acquisition and development techniques to ensure success. Some of the common keys to software project execution success are addressed in the following sections.