Specialty Engineering Disciplines for Software (SW) Assurance
As indicated before, this section will provide more detailed definitions about SW Assurance disciplines.
“Software quality consists of a planned and systematic set of activities to assure quality is built into the software.”3 SW quality will see that the standards, processes, and procedures are appropriate for the project. SW quality will ensure reliability, maintainability, and testability of all CSCIs (Computer Software Configuration Item). More information on the topics on this page can be found in NASA-STD-8739.8.3
It is up to you: According NASA-GB-A201 13 , "qualities for which an Software Quality evaluation is to be done must first be selected and requirements set for them. Some commonly used qualities are reliability, maintainability, transportability, interoperability, testability, usability, reusability, traceability, sustainability, and efficiency". The interactive content below, based on the same reference, intends to present some of these qualities.
SW Safety has become more prevalent in NASA systems that have critical functions and the possibility of compromised mission success. SW safety works in conjunction with system safety “to provide a systematic approach to identifying, analyzing, tracking, mitigating and controlling software hazards and hazardous functions (data and commands) to ensure safer software operation within a system.” It will ensure that all related safety issues are addressed in reviews and that specific safety analyses and tests are performed. Software safety assures that all identified safety issues are traced throughout the life cycle of the software. NASA-STD-8719.133, the NASA Software Safety Standard, provides details for implementing software safety.
It is up to you: Take a look on the course presentation below in order to review a sample of good programming practices to ensure safety. These table was extracted from the NASA Software Safety Guidebook.14 The user may switch to the full screen mode in order to improve readability.
Software reliability is concerned with reliability in the outputs of each process of the life cycle. “Software reliability optimizes the software through emphasis on requiring and building in software error prevention, fault detection, isolation, recovery, and/or reduced functionality states.”3 Software reliability also includes measuring and analyzing defects in the software products during development activities. Measures may be found in the IEEE 982.1, IEEE Standard Dictionary of Measures to Produce Reliable Software.12 (The user can purchase a copy of this standard in the IEEE website)
Verification and Validation (V&V)
Software V&V ensures that software being developed or maintained satisfies all requirements that each phase of the development process yields the intended product. The V&V process may include rigorous analyses and other techniques to evaluate the SW based on the conditions imposed at the start of that phase. The V&V process may also evaluate the SW at the end of the development process to confirm that it will fulfill its intended use.
Independent Verification and Validation (IV&V)
IV&V is performed by an organization that is technically, managerially, and financially independent of the development organization. IV&V provides additional reviews, analyses, and evaluations of the CSCIs that have the highest risk. IV&V works independently from the project, but must remain in communication with the other software assurance disciplines. IV&V is costly but when dealing with large projects and mission critical SW it is highly advised. IV&V is one of the most effective methods for proofing out SW.