5.1.8 The project manager shall establish and implement procedures for the storage, handling, delivery, release, and maintenance of deliverable software products.
NPR 7150.2, NASA Software Engineering Requirements, does not include any notes for this requirement.
1.2 Applicability Across Classes
Given that software is considered a significant Agency investment, it is important to ensure that the delivered software is created and maintained from a controlled repository. Configuration management (CM) processes and controls provide the rigor and organization necessary for developers and their customers to have confidence that all changes to the code and documents are included in the released products. It is also important that the released product is stored, maintained, and delivered following a repeatable, controlled process. If a software product is intended to be released outside of a project, to another Center (not within the same project), to a contractor or to an entity outside of NASA, the project must follow release procedures documented in NPR 2210.1, Release of NASA Software, or potentially become liable for violations of the 1958 Space Act. Following NPR 2210.1 helps to identify and protect intellectual property contained in a software release and helps to ensure compliance with federal laws and export requirements (e.g., International Traffic in Arms Regulations (ITAR)).
As with other CM activities, the CM plan includes the plans and reference the procedures for software release management.
When developing procedures for release management, address all of the following:
Preparation of the release package.
Creation and delivery of the release package.
Storage and maintenance of the release package.
Release management procedures may vary depending of the recipient of the release. Internal releases, such as baselines released for testing, will most likely not require the same set of release activities and considerations as formal releases to external customers.
Preparation of the Release Package
The SMA (Safety and Mission Assurance) Technical Excellence Program (STEP) Level 2 Software Configuration Management and Data Management course taught by the Westfall Team
provides a good list of release planning and scheduling activities.
A checklist of activities to complete may be useful as part of the preparation to create the release package. A list of activities to consider includes:
Ensure the proper approvals have been documented and received, including:
Software assurance - "Software assurance shall provide objective evidence to the project and NASA Safety and Mission Assurance (SMA) of the software's readiness for operational release."
Release authority – Change Control Board (CCB) or other authorized "owner."
Ensure any required acceptance data package has been prepared (see NASA-GB-8719.13, NASA Software Safety Guidebook,
for typical content information), including the Version Description Document (SVD).
Ensure all required configuration audits have been completed (SWE-084).
Ensure all approved deviations and waivers are documented.
Ensure all change requests have been completed and verified.
Ensure all documents and training materials are complete, including installation and any special installation needs/support, customization and configuration documents, user and operator guides, and release notes.
Ensure all legal issues, such as licensing or export regulations (e.g., International Traffic in Arms Regulations (ITAR)), are addressed, as applicable.
Ensure any "ready to ship" reviews are completed.
Ensure all applicable portions of NPR 2210.1
have been completed, including the development of compliance matrices associated with NPR 7150.2
, NASA-STD-8739.8, Software Assurance Standard,
and NASA-STD-8719.13, NASA Software Safety Standard
Ensure all installation sites are prepared to receive and install the release, conducting any pre-installation visits as appropriate.
Ensure required support personnel are trained and ready to address issues related to the installed release.
Creation and Delivery of the Release Package
Procedures for creating the release package are used once the preparation steps have been completed and it is time to create the release package. Typically, there is a master copy of the release package and copies are distributed to customers. Depending on Center policy, the master may be created by the CM group and the copies created, packaged, and shipped by another group. Whatever process is used needs to be clearly defined in the release management procedures.
When developing those procedures, consider the following:
Identify the scope of the release, including the full set of configuration items (CIs) that are to be included, their versions and revisions.
Identify the tools to be used to create the release, including compilers and linkers.
Identify the software to be used to create the release, including the operating system, macros, libraries.
Identify software and tool options to be used (compiler options, environmental parameters).
Identify the procedures for creating the master copy of the release or reference them if captured elsewhere.
Identify who generates the master copy of the release package.
Document the format, layout, and media for the master.
Document the verification process to confirm the master contains the proper CI's.
Identify the media to be used for the delivery copies.
Document replication procedures to be used to generate copies of the master.
Document verification procedures to be used to confirm the copies match the master (keep in mind that compilers can insert dates and times, so byte-by-byte compares need to take this into account).
Document any virus checks that need to be run on the copies before delivery to the customer.
Document any testing to be performed at the customer site (e.g., regression testing).
When developing procedures for delivery of the created package, consider the following:
Document whether the release is a full release, partial release which requires a previous full release to be installed first, or a patch; if all types will be used, procedures for creating and installing each need to be created.
Document delivery methods and procedures, including shipping methods, if required.
Document security measures to be used when handling and shipping the release.
Determine an installation schedule that works with the customer's schedule.
Document responsibilities for performing installation and installation testing.
Document responsibilities for configuring and/or customizing the installed software.
Document plans to revert to an earlier release of the software, as applicable.
Storage and Maintenance of the Release Package
As part of release management, the master needs to be safely and securely stored following documented procedures. When developing procedures for storing and maintaining the release package, consider the following:
Document the retention period; e.g., "master copies of all configuration items in a release and the release itself shall be maintained for the life of the product" (IEEE Std 828-2012, IEEE Standard for Configuration Management in Systems and Software Engineering
Document how to place the master into the CM system with its unique identifier.
Document access restrictions.
Document or reference any specific procedures for storing code and documentation for safety or security critical functions.
Identify release records, such as the Version Description Document (VDD), to be captured and stored with the release, as applicable.
When defining activities for release management, consider coordinating or applying the same concepts as part of data management activities. A basic description of data management is provided in SWE-079.
NASA users should consult Center Process Asset Libraries (PALs) for Center-specific guidance and resources related to managing deliverables and releases.
NASA-specific configuration management information and resources are available in Software Processes Across NASA (SPAN), accessible to NASA users from the SPAN tab in this Handbook.
Additional guidance related to CM of deliverable and releases may be found in the following related requirements in this Handbook:
Projects with limited budgets may choose to follow a common Center or project-level release management procedure rather than have separate procedures for each project. Slight modifications may be required for each project, but the overall master process would not have to be developed or maintained on a per project basis.
6. Lessons Learned
The NASA Lesson Learned database contains the following lesson learned related to release management:
Computer Hardware-Software/International Space Station/Software Configuration Management. Lesson No: 1130: Although it was "grandfathered" out of NPR 7150.2 compliance, the experience regarding source code for the International Space Station (ISS) is an important caveat when establishing software supplier agreements. NASA does not have source code access for all partners' deliveries for the ISS. The partners cite their concerns that delivery of source code could compromise their contractors' proprietary data. The ISS has initiated discussions with all partners to reach agreement on what level of source code visibility is necessary to ensure adequate knowledge by the control centers for on-orbit anomaly resolution. It is not clear how much extra effort these discussions have taken
Place Flight Scripts Under Configuration Management Prior to ORT (Project attention to configuration control). Lesson Number 2476: "When flight scripts developed independently by project personnel are not placed under configuration control early enough in flight software development, multiple versions of the scripts tend to proliferate and cause confusion and delays. The MER, Juno, and GRAIL projects demonstrated the utility of placing flight scripts under change control prior to ORT."
COTS Change Processing. Lesson Number 3457: “The time-sensitive nature of commercial-off-the-shelf (COTS) configuration changes such as the application of routine security patches and vendor updates/upgrades could not be effectively managed using the time-consuming configuration management practices typical of a custom environment. Systems that use both COTS and custom hardware and software products must adopt configuration management practices that effectively address the unique requirements of both product categories."
Software Design for Maintainability. Lesson Number 0838: Impact of Non-Practice: "Because of increases in the size and complexity of software products, software maintenance tasks have become increasingly more difficult. Software maintenance should not be a design afterthought; it should be possible for software maintainers to enhance the product without tearing down and rebuilding the majority of code."
International Space Station (ISS)/Multiple Element Integrated Testing (MEIT)/Software Configuration Management. Lesson Number 1165: “Due to the rapid pace of ISS assembly launches and the many and varied resulting configurations, MultiElement Integration Testing MEIT with operational loads of Portable Computer System PCS software is limited and, in some cases, may only be accomplished in the brief time allocated for regression testing.”
Redundant Verification of Critical Command Timing (1995). Lesson Number 559: “When a new mission software release was uploaded to the spacecraft, the inflight upload failed to include a software patch that had been written to fix a defective countdown timer. Because an independent watchdog timer was planned, but never implemented due to constrained project resources, the thrusters continued to fire after the desired shutdown time and the mission was terminated. Recommendations centered on the need for rigorous software configuration management, a watchdog timer to terminate operations, and testbed verification of in-flight software updates.”
Reuse of Analysis Software. Lesson Number 2158: “When a project plans to reuse existing metrology software for a new application, a thorough independent review of the software and its new interfaces should be conducted.”
Institutional Configuration Management Organization. Lesson Number 4516: “Configuration and Data Management CDM is performed at the Kennedy Space Center KSC for hardware and software by the different programs and projects independently of the Center/Institution. What is important for CDM is having consistency in policy, guidelines, processes, and tools to provide seamless and efficient transaction of configuration information. A single institutional CDM organization can provide the consistent guidance and direction to comply with agency, program, and project CDM requirements.”