2.4.1 The project shall plan software verification activities, methods, environments, and criteria for the project. Software verification is a software engineering activity that shows confirmation that software products properly reflect the requirements specified for them. In other words, verification ensures that "you built it right." Examples of verification methods include but are not limited to: software peer reviews/inspections of software engineering products for discovery of defects, software verification of requirements by use of simulations, black box and white box testing techniques, software load testing, software stress testing, software performance testing, decision table-based testing, functional decomposition-based testing, acceptance testing, path coverage testing, analyses of requirement implementation, and software product demonstrations. Refer to the software plan requirements for software verification planning and incorporation, including the planned use of software IV&V activities. Class D and not Safety Critical and Class G are labeled with "P (Center)." This means that an approved Center-defined process which meets a non-empty subset of the full requirement can be used to achieve this requirement. Class A_SC A_NSC B_SC B_NSC C_SC C_NSC D_SC D_NSC E_SC E_NSC F G H Applicable? P(C) P(C) Key: A_SC = Class A Software, Safety-Critical | A_NSC = Class A Software, Not Safety-Critical | ... | - Applicable | - Not Applicable Verification planning ensures that all requirements will be properly evaluated and matched to the appropriate method of verification. Planning helps identify and propose revisions to requirements that are not verifiable. Planning the software verification activities allows the software development team to evaluate and choose from the best of existing and new techniques and tools, and be trained in their use, before they are needed. Planning also allows a current project to utilize lessons learned from previous software project verification activities, including using more appropriate or more efficient techniques and ensuring the completeness of all steps in the process. Having a plan also allows the software verification activity to be reviewed, checked for omissions, improved, and approved before it is implemented to ensure the outcome will meet the expectations and goals of the verification activity. Planning also helps to ensure the verification activity is cost-efficient and timely and allows a project to develop, schedule, or procure verification assets or environments before they are needed as well as allocate and train people in the use of these assets prior to the verification activities. Software verification solicits the confirmation that work products properly reflect the requirements specified for them. In other words, verification ensures that "you built it right." The software verification process and the software validation process (see SWE-029) are both interrelated and complementary. Each process uses the other's process results to establish completion criteria for each software life cycle activity. Software verification and validation (V&V) processes determine whether the work products of a given activity conform to the requirements for that product and whether the software satisfies its intended use and user needs. Software V&V life cycle processes can be selected and tailored as needed for different software classes. Software verification processes have applicability to software-based systems, computer software, hardware, and interfaces. Software verification processes include analysis, evaluation, review, inspection, assessment, and testing of software products during each phase of the software life cycle (see the NASA Systems Engineering Handbook 273 for an explanation of these verification activities). The IEEE Std 1012, Standard for Software Verification and Validation, 209 also has a good overview and definition of the different software verification tasks that can be executed on particular software classes as needed). The purpose of these processes is to help the development organization build quality into the software during the software life cycle. The processes provide an objective assessment of software products and processes throughout the software life cycle. This assessment demonstrates whether the software requirements and system requirements (i.e., those allocated to software) are correct, complete, accurate, consistent, and testable. Software V&V is performed in parallel with software development, not at the conclusion of the development effort. Software V&V is an extension of program management and software systems engineering. The execution of this rigorous methodology collects objective data and formulates conclusions to provide feedback about software quality, performance, and schedule to the development organization. This feedback suggests anomaly resolutions, performance improvements, and quality improvements over all expected operating conditions and also across the full spectrum of the system and its interfaces. Early feedback results allow the development organization to modify the software products in a timely fashion, thereby restraining project and schedule impacts. Without a proactive approach, anomalies and associated software system changes remain undiscovered until later in the program schedule, resulting in proportionately greater program costs and schedule delays. The verification process provides objective evidence regarding the ability of the software and its associated products and processes to: Software verification includes: The development of a reasonable body of evidence requires a trade-off between the amount of time required versus the set size of system conditions and assumptions used to perform the software verification tasks. Each project defines criteria for a reasonable body of evidence (i.e., selecting a software level establishes one of the basic parameters), time, schedule, and scope of the analysis and test tasks (i.e., range of system conditions and assumptions). This requirement does not assign the responsibility for performing the software verification tasks to any specific organization. The analysis, evaluation, and test activities may be performed by multiple organizations; however, the methods and purpose will differ for each organization's functional objectives. Organizational assignments are captured during V&V planning and documented in an appropriate project plan. The completion of the software V&V activity results in the following benefits to the program: The choices for software verification activities are dependent upon the software requirements (see SWE-050 and SWE-051), the software architecture (see SWE-057) and design (see SWE-056 and SWE-058), the method of component and system integration (see SWE-060 and SWE-063), and the overall testing philosophy and approach (see SWE-062 and SWE-066 and SWE-073). The software verification engineer gains an understanding of these portions of the software development activities prior to developing the plan for software verification. In addition, the software verification engineer coordinates planning with the software validation planning activities (see SWE-029) to achieve the most efficient and integrated verification activities. Verification Activities The verification work flow cycle in Figure 3-1 presents the basic steps for conducting a logical verification activity. It can be used iteratively and recursively during each phase of the software development life cycle (see SWE-019) to verify the software requirements, software work products, and the software units/components up to integrated systems of hardware and software. The four steps enveloped in the larger box are treated in this guidance. (The remaining two steps are discussed in the guidance for SWE-030.) Figure 3.1. Verification Work Flow 1 The project team and software team review the plan and verification results at various life cycle reviews (see Topic 7.08 - Maturity of Life Cycle Products at Milestone Reviews ), particularly whenever requirements change during the project. Any identified issues are captured in problem reports, change requests, and action items and resolved before the requirements are used as the basis for development activities. The verification plan document contains a detailed description of the planned activities, including the verification methods, test activities, the testing environment(s), and a controlled schedule showing all the verification activities. The software verification activity plans are typically included in the Software Management or Development Plan (see SWE-102), or in a standalone Software Verification & Validation plan. Alternatively, they can be included in a project plan's V&V section. The following list suggests information items to include in a software verification section or plan: See the Resources section for other template examples 340, 353 of information to include in a software verification plan. It is important to remember that verification activities occur in all phases of the project life cycle (e.g., requirements verification during Formulation, and design verification during Implementation see SWE-019). When planning the methods to use, the verification engineer uses the most appropriate method and does not simply assume that testing is the only choice. Software Work Product Selection Software work products include requirements and specifications, environmental and coding standards, software architectures, design descriptions, units, components, systems, and related items. The plan covers verification of software work products that are developed in specific phases of the software development life cycle. Verification planning is reviewed during each phase of the life cycle and updated as needed based on results from earlier verification activities. Any identified issues are captured in problem reports, change requests, and corrective action activities. Each issue is tracked to closure. Verification Criteria Verification planning requires the software development team to develop expected results for each verification activity. Satisfaction criteria may be given in numerical form (a specific value, a minimum value, a range of values). They may also be in a pass/fail or true/false format. The expected criteria for successful requirement verifications are typically entered into planning documents and data definition books. Small projects may wish to consolidate their verification planning into the Software Development Plan (SDP) or document it as part of a verification or traceability matrix. They may also reduce the work effort to develop verification plans by using a plan template. 340, 353 Tools to aid in compliance with this SWE, if any, may be found in the Tools Library in the NASA Engineering Network (NEN). NASA users find this in the Tools Library in the Software Processes Across NASA (SPAN) site of the Software Engineering Community in NEN. The list is informational only and does not represent an “approved tool list”, nor does it represent an endorsement of any particular tool. The purpose is to provide examples of tools being used across the Agency and to help projects and centers decide what tools to consider. The NASA Lessons Learned database contains the following lessons learned related to verification planning:
See edit history of this section
Post feedback on this section
1. Requirements
1.1 Notes
1.2 Applicability Across Classes
X - Applicable with details, read above for more | P(C) - P(Center), follow center requirements or procedures2. Rationale
3. Guidance
Software V&V needs to be executed during all of the primary software life cycle processes including:4. Small Projects
5. Resources
5.1 Tools
6. Lessons Learned
SWE-028 - Verification Planning
Web Resources
View this section on the websiteUnknown macro: {page-info}
"Verification proves that a realized product for any system model within the system structure conforms to the build to requirements (for software elements)...". 273