The updated software development standard (TR-RS-2020-00012) removed much of the heavy documentation required by the traditional software development method that emphasized achieving the highest Capability Maturity Model Integration maturity. The objective of the update was to capture key software development practices regardless of the development method and to better accommodate the use of newer tools. With the wider application of hybrid software development methods, program offices should enlist the help of appropriate software subject matter experts to tailor the standard according to the specific method being applied.
The updated standard includes more references to other software standards to avoid duplicate or conflicting requirements, which is consistent with IEEE and ISO standards. The referenced software standards include configuration management and cyber standards. Aligning the software development standard with other recommended standards ensures that the appropriate subject matter experts are leveraged and coordinated on both system and software tasks. In this way, software development will and should be considered at the system level rather than as a separate siloed unit.
The new standard has greatly streamlined the number of requirements and deleted the mandatory appendices that explicitly specified format and content of contract data requirements list items that may not be applicable to some of the newer software development methods (e.g. agile and DevSecOps). Those appendices or tailored versions will be included in future guidance documents for specific software development methods.
The updated software development standard will reduce software cost by imposing fewer requirements on the contractors and foster greater coordination between the system and software engineers on a subset of common tasks. Coordination between systems engineering and software engineering is a critical element in successful software developments, particularly with the newer agile methods. The goal of the standard is to bridge system and software engineering tasks early in the system acquisition lifecycle.