Background
The size and relative cost of software continue to grow in many major systems the federal government acquires. In 1997, software accounted for less than half of a typical defense system’s cost. However, its cost is projected to be 80 percent or more by 2020.62 The growth in software code and the associated development cost for aircraft supports this trend in both the commercial and military realms. During the ten-year period between the first flights of the Boeing 757 and of the Boeing 777, software code increased 21-fold and the software development cost increased by a factor of more than 28-fold. On the military side, the first F-35 was flown 32 years after the first F-16 with 177 times as much computer code and the software development effort cost totaling almost 300 times as much.63
In 2018, the Project Management Institute reported that 14 percent of IT projects were deemed failures and that on average 9 percent of every dollar spent on IT projects was wasted. Among the projects surveyed, 56 percent reported on-time completion while 60 percent were completed within budget. Even so, half of the projects reported requirements creep.64
Software often costs more and takes longer to complete than expected and fails to meet intended performance objectives. Historically, many projects have relied on an approach known as waterfall which consists of a “grand design” of extensive planning followed by a long development period. The resulting product in many cases did not meet user requirements. One approach to reduce the risks from broadly-scoped, multiyear projects is to shorten the software delivery timeframe. These shorter efforts incorporate user feedback on the newly delivered functionality, which can guide future development to meet needs as they evolve. These efforts may be described generally as spiral development. One specific approach of this type is Agile software development.
Agile software development supports the practice of continuous software delivery and is well-suited for projects in which the best solution comprises distinct features, some of which may be discovered during development rather than planned up front. Specifically, Agile calls for the delivery of software in short, incremental segments rather than in the typically long, sequential phases of a traditional waterfall development approach. Agile allows for flexibility and adaptation when the customer needs change. The frequent iterations effectively measure progress, reduce technical and programmatic risk, and allow the development team to rapidly respond to feedback from stakeholders’ changing requirements. Because of the importance of Agile development, this subject is treated in more detail in its own guide.65
Software life cycle costs are not limited to code development. They also include any pre-deployment testing, information technology infrastructure and services, and sustainment after the system is deployed. Estimates for each of these elements in the software life cycle rely on different approaches. A comparison of the program of interest to similar programs may reveal useful techniques to construct estimates of the various cost elements.
Zubrow, David, Robert Stoddard, Ipek Ozkaya, William Novak. “SEI Research Combats Mounting Acquisition Costs.” Software Engineering Institute 2017 Year in Review. 2017: 12.↩︎
https://savi.avsi.aero/about-savi/savi-motivation/exponential-system-complexity/(accessed January 31, 2020).↩︎
Project Management Institute, “Pulse of the Profession 2018” (2018).↩︎
A detailed discussion of Agile software development is presented in the GAO Agile Assessment Guide, GAO-20-590G (Washington, D.C.: September 28, 2020).↩︎