7. Software Assurance
7.1 Tasking for Software Assurance
- Confirm that the project collects, tracks, and reports on the software volatility metrics.
- Analyze software volatility measures to evaluate requirements stability as an early indicator of project problems.
7.2 Software Assurance Products.
- SA analysis of software volatility measures over time.
- Evidence that confirmation of Task 1. has been completed, including identifying any risks or issues.
- Software Requirements Volatility (# of requirements added, deleted, modified, # of TBDs over time)
Note: Metrics in bold type are required for all projects
Requirements volatility is the change in requirements (added, deleted, and modified) over a given time interval. The success of software projects is dependent on the quality of requirements, especially given that requirements are the basis for planning project schedules as well as design and test specifications.
Software requirements volatility is expected during the early stages of a project (conceptualize / requirements phase). It becomes a concern when it occurs after the software requirements phase (after CDR) is complete because it is likely to result in the re-work of the software components.
Even though there are good requirements, in the beginning, the software requirements may be changed during the project development. Software requirement changes during the software development process are also known as Requirements Volatility.
Requirements volatility has a great impact on the cost, the schedule and the quality of the final product. Due to requirements volatility, many projects fail and some are completed partially. Requirements volatility cannot be overcome fully but we can minimize it with some requirement measures or metrics. Requirement metrics are useful in identifying the risks of a project by locating errors in the requirements document.
Requirements evolution is due to factors.
- External Factors:
- Government regulations
- project direction and changes
- project funding
- Internal factors
- Hardware and interface constraints and unknowns
- Lack of experience of the system requirements and software requirements development team
- Feedback from milestone reviews and peer reviews
- Customer, operational, software and hardware changes
- Hazard identifications
- Lack of process maturity in requirements generation and requirements management
- Requirement or hardware reuse
- Environmental changes or mission profile changes
- Requirements instability (the extent of fluctuation in user requirements)
- Requirements diversity (the extent to which stakeholders disagree among themselves deciding on requirements).
- Requirements analyzability (the extent to which the process of producing requirement -specification can be reduced to objective procedure).
- Poor communication between users and the development team.
Requirements volatility contains schedule, cost and performance risk factors. Developing and maintaining a trending of software requirements volatility measurements is critical to determine the risks associated with the project.
Requirement volatility is not the only reason contributing to the success of any project, by can be a key indicator in the project risk and success.
There are several challenges that lead to Requirement Volatility.
- The change request form was not always complete. A change request form may have little information about the reason for the proposed change.
- No formal impact analysis and incomplete change effort estimation.
- Traceability between requirements and other software artifacts are not established. See SWE-052
The impact of requirement volatility on the software project has been seen as:
- Projects Schedule: If the schedule of one activity delays, obviously all subsequent activities schedule will be disturbed.
- Project Performance: Project performance decreases due to the changes in requirements. Requirement Volatility has a high impact on the coding and maintenance phases.
- Project Cost: Project cost increases due to a change in requirements.
- S/W Maintenance
- S/W Quality: Quality of software decreases due to continuous change in requirements.
Though requirements volatility has an impact on the project schedule, project performance, project cost, software maintenance, and software quality, it may have some positive effects as well as it may help us to have a better understanding of user requirements.