UNDER CONSTRUCTION
08. Software Configuration Management Activity Overview
Software Configuration Management planning encompasses the practices and procedures for administering source code, producing software development builds, controlling change, and managing software configurations for all of the software products, tools, data, and components produced by the project. For Software Configuration Management to be implemented on a project, the project has to identify what software configuration items are to be controlled for the project. Software Configuration Management encompasses the practices and procedures for administering source code, producing software development builds, controlling change, and managing software configurations for all of the software products, tools, data, and components produced by the project.
As software teams design, develop, and deploy software, it is common for multiple versions of the same software to be used on different sites and for the software developers to be working simultaneously on updates. Bugs or defects in the software are often only present in certain versions (because of the fixing of some problems and the introduction of others as the program develops). Therefore, to locate and fix bugs, it is important to be able to retrieve and run different versions of the software to determine in which version(s) the problem occurs. It may also be necessary to develop two versions of the software concurrently (for instance, where one version has bugs fixed, but no new features, while the other version is where new features are developed. Change requests address not only new or changed requirements but also failures and defects in software products. Change requests are analyzed to determine the impact that the change will have on the software product, related software products, the budget, and the schedule. Tracking and evaluating changes are useful for a variety of reasons, not the least of which is to maintain documented descriptions of problems, issues, faults, etc., their impact on the software and system, and their related resolutions. Evaluating changes allows key stakeholders to determine the cost-benefit of implementing changes and to make decisions based on that information.
Configuration status accounting (CSA) provides a way for a project to determine the content of configuration items (CIs) throughout the life cycle by capturing the status of submitted products such as data, models, scripts, code, and their associated change requests. It also allows project managers to monitor the developing software and know, based on status accounting reports, the contents of versions and releases of software. Configuration audits provide checks to ensure that the planned product is the developed product.
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.
Frequency Of This Activity
Configuration control helps ensure that changes are managed in a structured way, that the impact of changes is assessed before those changes are implemented, and that changes are authorized before being implemented. Using various levels of control can reduce the time and effort it takes to disposition a change request based on the criticality and range of the effect of the change. Less critical or risky changes can use a lower level of authority to make decisions about those changes while more critical or far-reaching changes can require authorization from a more formal body with a broader view of the system.
Configuration Control is a continuous activity for all work products on the project.
08.1 Related SWEs
- SWE-079 - Develop CM Plan - 5.1.2 The project manager shall develop a software configuration management plan that describes the functions, responsibilities, and authority for the implementation of software configuration management for the project.
- SWE-080 - Track and Evaluate Changes - 5.1.3 The project manager shall track and evaluate changes to software products.
- SWE-081 - Identify Software CM Items - 5.1.4 The project manager shall identify the software configuration items (e.g., software records, code, data, tools, models, scripts) and their versions to be controlled for the project.
- SWE-082 - Authorizing Changes - 5.1.5 The project manager shall establish and implement procedures to:
a. Designate the levels of control through which each identified software configuration item is required to pass.
b. Identify the persons or groups with authority to authorize changes.
c. Identify the persons or groups to make changes at each level. - SWE-083 - Status Accounting - 5.1.6 The project manager shall prepare and maintain records of the configuration status of software configuration items.
- SWE-084 - Configuration Audits - 5.1.7 The project manager shall perform software configuration audits to determine the correct version of the software configuration items and verify that they conform to the records that define them.
- SWE-085 - Release Management - 5.1.8 The project manager shall establish and implement procedures for the storage, handling, delivery, release, and maintenance of deliverable software products.
- SWE-045 - Project Participation in Audits - 5.1.9 The project manager shall participate in any joint NASA/developer audits.
08.2 Related Work Products
- 5.01 - CR-PR - Software Change Request - Problem Report - Minimum recommended content for the Software Change Request - Problem Report.
- 5.06 - SCMP - Software Configuration Management Plan - Minimum recommended content for the Software Configuration Management Plan.
- 5.16 - VDD - Version Description Document - Minimum recommended content for the Version Description Document.
- 7.08 - Maturity of Life Cycle Products at Milestone Reviews - This chart summarizes current guidance approved by the NASA Office of the Chief Engineer (OCE) for software engineering life cycle products and their maturity level at the various software project life cycle reviews.
- 7.09 - Entrance and Exit Criteria - This guidance provides the recommended life cycle review entrance and exit criteria for software projects and should be tailored for the project class.
- A.10 Software Peer Reviews and Inspections - Plans are good candidates for a Peer Review
08.2.1 Related Process Asset Templates
08.3 Related Topics
- 8.12 - Basics of Software Auditing - Software audits provide an independent evaluation of the conformance of software products and processes to applicable requirements, standards, guidelines, plans, and procedures.
- 8.51 - Software Assurance Plan - The Software Assurance (SA) Plan product documents the expected work for the Software Assurance and Software Safety (if applicable) personnel for the project.
08.4 Related SPAN Links