- 1. The Requirement
- 2. Rationale
- 3. Guidance
- 4. Small Projects
- 5. Resources
- 6. Lessons Learned
- 7. Software Assurance
5.1.5 The project manager shall establish and implement procedures to:
- Designate the levels of control through which each identified software configuration item is required to pass.
- Identify the persons or groups with authority to authorize changes.
- Identify the persons or groups to make changes at each level.
IEEE 828-2012, describes configuration management processes to be established, how they are to be accomplished, who is responsible for doing specific activities, when they are to happen, and what specific resources are required. It addresses configuration management activities over a product's life cycle. Configuration management in systems and software engineering is a specialty discipline within the larger discipline of configuration management. Configuration management is essential to systems engineering and software engineering.
1.2 HistoryClick here to view the history of this requirement: SWE-082 History
1.3 Applicability Across Classes
Key: - Applicable | - Not Applicable
A & B = Always Safety Critical; C & D = Sometimes Safety Critical; E - F = Never Safety Critical.
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.
The software configuration management (SCM) plan documents the configuration control and change authorization procedures (see SWE-079 and SCMP). When developing these procedures, all of the following topics are included: levels of control, change authority, authorization requests, change request process, and version maintenance. The STEP Software Configuration Management and Data Management course 343 taught by the Westfall Team, and now on video in SATERN, includes recommendations and suggestions for change control, some of which are summarized in this guidance.
Levels of control
Each identified configuration item (CI) has a defined level of control for making changes to that item. Documentation might have one level of change control, while source code might require a different level of control. For each identified CI or group/class of items, the change control procedures identify the appropriate level of control. Consider the following when defining levels of configuration control:
- Each CI or class of items has a defined "owner" who is responsible for authorizing changes to that item, e.g., the software Change Control Board (CCB) might be the designated owner for all software libraries while the documentation peer review team might be the owner for product marketing materials.
- Depending on the effect of the change, multiple levels of control may need to be defined, e.g., a change to the software that is shared among projects may require change approval from multiple change authorities.
- Levels of control may vary throughout the life cycle, e.g., changes to code in development may require a lower level of control than changes to the same code after it has been released.
- Levels of control may be affected by the change originator, e.g., a change request from outside the organization, such as customers or end-users, may require different authority for approval than changes requested by software developers.
Change control procedures include defining the persons or groups with authority to authorize changes and to make changes at each level. Examples of change authority include CCBs, Change Authorization Board (CAB), Engineering Change Boards (ECBs), peer review teams, project managers, etc. The change approval authority may be determined by the complexity, cost, risk, or effect of the change. When defining the change authority, consider the following:
- Include software assurance/safety personnel to ensure safety impact is considered.
- Involve stakeholders based on the expertise and authority required to disposition the change.
- People with authority in the appropriate fields.
- Experts in a particular field.
- Systems engineers.
- Software engineers.
- Hardware engineers.
- Use different levels of change authority, as appropriate, for cost and time savings.
- Product level CCB for changes to functional baseline, product baseline, system-level changes or changes that will affect the fielded product.
- Project level CCB for changes to allocated baselines, changes that only affect the project, not the system.
- Software development CCB for changes to development baselines, changes that only affect the software, not hardware or documentation.
- If different levels of authority are used:
- Group size can be less at the lower levels.
- Typically one representative from the lower level sits on the next level CAB.
- Escalation can occur if a lower level change authority cannot agree on the disposition of a change.
- An escalation plan is typically defined as part of the change control procedures.
- Coordination plans may be required if multiple change authorities are required to disposition a change.
- Typically costs more in time and effort to convene higher-level change authority boards, so they tend to meet less frequently.
- Document the responsibilities of each level of authority, including, as applicable:
- Area of change authority, such as software changes, system-level changes, documentation changes, etc.
- Review and disposition of change requests.
- Authorizing release and delivery of baselined software products.
- Documenting and retaining evidence of the group's authorization activities.
- Informing the appropriate stakeholders of the results of those authorization activities.
Change control procedures include steps to be followed to request authorization for changes. Consider the following when documenting the steps to request authorization for making a change:
- Include instructions for choosing the proper change request to submit (e.g., Engineering Change Proposal (ECP), change request (CR), problem report (PR), etc. as appropriate and applicable for the project).
- Include instructions for properly completing the change request, typically a form in an automated change control system (see CR-PR for recommended change request contents), such that the change authority can make an informed disposition decision.
- Include instructions for supplying information not captured in the change request, but necessary for the change authority to disposition the request.
- Include instructions for determining the proper change authority.
- Include instructions for submitting a request to the proper change authority.
- Include information regarding when the change originator expects to receive the disposition decision from the change authority.
Change request process
The change request process consists of three steps described in the change control procedures: Change request processing, tracking changes, and distributing changes.
When developing procedures for processing change requests, consider:
- Using a screener to ensure the changes requests are properly completed and have been checked for technical correctness before higher-level CABs spends time on incomplete or out-of-scope requests (see CR-PR for change request contents).
- Giving the change authority board the ability to perform impact analysis (see SWE-080) themselves or to call on another group with greater specific expertise to do the analysis.
- Describing the disposition options (once the analysis is complete, the change authority dispositions the change request, typically, in one of three ways: Approve for implementation, defer the change until some later point in time, or reject the change request).
- Requiring the basis for the disposition to be documented and the disposition disseminated to the appropriate stakeholders.
A sample process flow might look like this chart adapted from the STEP Level 2 Software Configuration Management and Data Management course: 343
When developing procedures for tracking changes, consider:
- Collecting status as the change request is processed (e.g., open, fixed, resolved, closed, etc.) along with the status change dates.
- Capturing the impact analysis for each change.
- Collecting disposition status (e.g., approved, deferred, rejected) and date.
- Capturing the solution implemented for each change.
- Capturing the verification activity and results for each implemented change.
- Identifying and updating all CIs affected by the change (e.g., requirements, design, tests, source code, documentation, etc.).
- Using the features of CM tools to track changes and related metrics and data.
- Tracking changes to all identified CIs (see SWE-081).
- Reporting status of changes to project management on a regular basis; reporting frequency may be established based on the life-cycle phase of the project with documentation in the CM plan.
- The guidance provided in SWE-080 in this Handbook for tracking and evaluating changes.
When developing procedures for distributing changes, consider:
- Releasing changes only after verification and approval of their implementation.
- Releasing changes in a controlled manner, typically as part of a baseline (during development), patch or update (for changes to fielded software), or new fielded release.
- Using a software version description document (VDD) to identify the changes included in a software release.
When developing procedures for maintaining past versions of the software, consider:
- The ease of retrieving past versions to address issues found in fielded software.
- Tracking all released software that uses a particular version of a CI so that changes can be made to all affected software, not just the version for which the change was requested.
- Using features of CM tools, such as "tagging," to identify all items and their versions in a baseline or release.
When establishing change authority, 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 configuration control and authorizing changes.
NASA-specific change control 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 authorizing changes may be found in the following related requirements in this Handbook:
4. Small Projects
For projects with a small staff size, the change authority or Change Control Board (CCB) for baselines and modifications to CIs may be a single person with the proper vision and oversight, such as the software manager, systems manager, product development lead, etc.
Small projects with a limited budget or limited access to complex or expensive change request tools may choose to use a simpler spreadsheet tool such as the Problem Report Tool to manage change requests, authorizations, and obtain associated metrics.
- STEP Level 2 Software Configuration Management and Data Management course, SMA-SA-WBT-204, SATERN (need user account to access SATERN courses).This NASA-specific information and resource is available in at the System for Administration, Training, and Educational Resources for NASA (SATERN), accessible to NASA-users at https://saterninfo.nasa.gov/.
6. Lessons Learned
6.1 NASA Lessons Learned
A documented lesson from the NASA Lessons Learned database notes the following related to configuration change control. The lesson discusses hardware configuration control in the details, but the ultimate lesson learned could also apply to software:
- Configuration Control at All Levels of Change. Lesson Number 1213 546: Account for all levels of authorized changes: "Configuration control processes must account for all levels of authorized changes and provide feedback to affected program elements including training and operations."
6.2 Other Lessons Learned
No other Lessons Learned have currently been identified for this requirement.
7. Software Assurance
7.1 Tasking for Software Assurance
Confirm that software assurance has participation in software control activities.
Perform an audit against the configuration management procedures to confirm that the project is following the established procedures.
7.2 Software Assurance Products
Software Configuration Management Procedure Audit Report
- CM audit results and findings, including risks and issues.
Definition of objective evidence
- Evidence of SA involvement in software CM activities.
Objective evidence is an unbiased, documented fact showing that an activity was confirmed or performed by the software assurance/safety person(s). The evidence for confirmation of the activity can take any number of different forms, depending on the activity in the task. Examples are:
- Observations, findings, issues, risks found by the SA/safety person and may be expressed in an audit or checklist record, email, memo or entry into a tracking system (e.g. Risk Log).
- Meeting minutes with attendance lists or SA meeting notes or assessments of the activities and recorded in the project repository.
- Status report, email or memo containing statements that confirmation has been performed with date (a checklist of confirmations could be used to record when each confirmation has been done!).
- Signatures on SA reviewed or witnessed products or activities, or
- Status report, email or memo containing Short summary of information gained by performing the activity. Some examples of using a “short summary” as objective evidence of a confirmation are:
- To confirm that: “IV&V Program Execution exists”, the summary might be: IV&V Plan is in draft state. It is expected to be complete by (some date).
- To confirm that: “Traceability between software requirements and hazards with SW contributions exists”, the summary might be x% of the hazards with software contributions are traced to the requirements.
- # of findings open versus # of findings identified.
- # of software process Non-Conformances by life-cycle phase over time.
- # of process Non-Conformances (e.g., activities not performed) identified by SA vs. # accepted by the project.
- Trends of # Open vs. # Closed over time.
- # of Non-Conformances per audit (including findings from process and compliance audits, process maturity).
- # of Configuration Management Audits conducted by the project – Planned vs. Actual.
- Trends of # of Non-Conformances from audits over time (Include counts from process and standards audits and work product audits.).
- # of Compliance Audits planned vs. # of Compliance Audits performed.
To assess the compliance with NPR 7150.2 and Center requirements on configuration management procedures, gather any Center configuration management procedures that apply to the project as well as the configuration management processes and procedures listed in NPR 7150.2. The following requirements in NPR 7150.2 also include configuration management activities that must be followed and need to be considered in the Project configuration management processes and procedures.
The project procedures for configuration management, including data management, should be documented in either the project or Software Management/Development Plan or in a stand-alone Configuration Management Plan. Data Management Plans can be documented either in a separate plan or in the Software Configuration Management Plan. Compare the descriptions of the documented project configuration management procedures with the Center procedures and the requirements listed in the NPR requirements above. Record any issues or discrepancies as non-conformances, report those to the project management and track them to closure.
Review the project CM documentation that discusses the establishment of CCBs, identification of authorized personnel and identification of CCB membership. Confirm that the documentation describes the levels of control through which a configuration item must pass through for approval. (Small projects may only have one level.). The documentation should also describe the membership of the different level control boards and indicate who has the approval authority in each. In addition, the person or people who are allowed to make changes at each level should be documented. Confirm that a software assurance person is a voting member of each control board. (See the software Requirements Mapping Matrix for applicability.) Additional information can be found on this requirement can be found in the Guidance section for this software requirement (SWE-082).
Every task that involves performing an audit should also clarify that all audit findings are promptly shared with the project will be addressed in the handbook guidance.