Topic 7.12 addresses the history of the NASA software improvement efforts and provides a brief overview of the recent activities for software process improvement to provide a background and impetus for the development of this electronic Handbook.
NASA's software development activities began with the earliest projects headed to space (Gemini, 1962 408). Usually, the software activities were project specific and were created with the particular project in mind. Often, the spacecraft design dictated the size and shape of the computer. New software development was required because software adaptation and reuse were essentially non-existent, because of unique platforms, individual programming styles, and the relative non-existence of other software.
The early occurrence and recognition of software issues (software faults caused computer restarts during the Apollo 11 lunar landing in 1969 409), as well as the increasing costs of software development, encouraged NASA to address the software engineering approaches used in the Agency. In 1976, the first NASA Software Engineering Workshop was held to address these issues. In the late 1980s, NASA followed up these efforts with the kickoff of a SW Management and Assurance Program. The relationship between these early software improvement efforts and several major NASA projects of this time period is shown in Figure 1, NASA Software Engineering Timeline, 1957-1988.
From these initial activities came the impetus for the NASA Software Engineering Initiative (NSEI) at the beginning of the new century. NSEI came into existence as one of three basic components of NASA's Engineering Excellence Initiative (EEI). (Systems Engineering and Project Engineering are the other two main components.) Results and related activities stemming from the NSEI are shown in Figure 2, NASA Software Engineering Initiative Timeline, 2002-2010.
The year 2004 saw the beginnings of the NASA SARP Software Research Infusion Initiative. 204 This initiative encourages the uptake of new research results within real NASA missions. A key success feature is realized when a NASA Center adds the research product resulting from an initiative to its list of recommended practices. Table 1 shows a list of early initiative results.
Also in 2004, the OCE conducted the first annual software inventory and issued the initial version of NPR 7150.2. The Office of Safety and Mission Assurance completed the updates to the software safety standard (NASA Software Safety Standard, NASA STD 8719.13), 271 and the software assurance standard (NASA Software Assurance Standard, NASA STD 8739.8. 278)
Figure 2 highlights software training with callouts for the design of the software curriculum
<ac:macro ac:name="unmigrated-wiki-markup"> ]]></ac:plain-text-body>
During the development of the NPR 7150.2, there was an intentional effort to minimize the size of the document by keeping it focused on the requirements. However, the 7150 team had developed a lot of additional material for the NPR, so they decided that this additional guidance material could be more effectively utilized in a handbook instead of the NPR itself. Therefore, after the OCE released the current version of the NPR (i.e., NPR 7150.2A 039)the effort to develop this electronic handbook in wiki format was initiated.
Numerous other components and related tasks have been developed and executed under OCE sponsorship. Some of these include the development of a software engineering curriculum (see the discussion on the DACUM below), the development and tracking of the Top Ten Software Issues list, the inventory of the software development activities (see the SIMS tool discussion below), and the implementation of the OCE surveys. Others include:
Software engineering is a core capability and a key enabling technology necessary for the support of NASA's Enterprises. Surveys and assessments identified and documented many software challenges within the Agency. Additionally, continuing exponential growth in the scope, complexity, and importance of software within NASA systems challenged the Agency's ability to manage it effectively. As a result, the NASA Headquarters OCE formed the NASA Software Engineering Initiative 205 in 2002. In coordination with Center software engineering improvement activities, the OCE defined a NASA-wide comprehensive approach for improving software engineering to quantifiable maturity levels commensurate with mission criticality in order to meet the software challenges of NASA.
The following key principles guide NASA's software improvement activities:
- Software engineering is a core capability and a key enabling technology for NASA's missions and supporting infrastructure.
- The NASA Software Engineering Requirements (NPR 7150.2) 039 support the implementation of the NASA Engineering and Program/Project Management Policy, NPD 7120.4. 057
- The NASA Software Engineering Requirements provide a minimal set of requirements established by the Agency for software acquisition, development, maintenance, retirement, operations, and management.
- The NASA Software Engineering Requirements are intended to help NASA programs and projects accomplish their planned goals (e.g., mission success, safety, schedule, and budget) while satisfying their specified requirements.
This initiative covers software process improvement as well as items related to software research: software safety, reliability, and quality; attraction and retention of software engineers, and improving NASA's software engineering knowledge and skills. It applies to both mission critical and non-mission critical software.
- What is it?
- A NASA-wide comprehensive approach for improving software engineering processes and technology
- Why are we doing it?
- To meet the challenges facing NASA in software engineering (schedule, cost, project commitments, ensuring the use of best practices...)
- Who is deploying it?
- OCE, in collaboration with each Center
- NASA Software Working Group (NSWG)
- Center Management Steering Groups (MSGs) and Software Engineering Process Groups (SEPGs)
- What are the elements of the OCE's approach?
- Component plans from each Center
- The use of the Software Engineering Institute's Capability Maturity Model Integration as a benchmark for assessments
- Increasing the availability of software engineering tools
- Software metrics
- The integration of sound software engineering principles and standards
- The enhancement of software engineers' knowledge and skills through training based on an agreed upon curriculum
- Development of a Software Engineering Electronic Handbook
- Benchmarking of industry, government agencies and academic institutions to learn about and share best practices
- Consolidation of Agency processes and practices
- Benchmarking and consolidation of best practices associated with cost estimation
- Small project implementation of requirements
The NASA Software Engineering Initiative Implementation Plan (NSEIIP) 038 requires NASA to:
- Implement a continuous software process and product improvement program across NASA and its contract community.
- Improve safety, reliability, and quality of software through the establishment and integration of sound software engineering principles and standards.
- Improve NASA's software engineering practices through research.
- Improve software engineers' knowledge and skills and attract and retain software engineers.
The baseline NSEIIP was approved in 2002 (see [SWE-002]). As part of the NSEIIP, each Center developed its own improvement plan for advancing the in-house software engineering capability (see [SWE-003]).
Center plans: The OCE allowed the individual Centers some latitude in implementing the NSEI to take into account the mission of their Center's activities. While the implementation varies across research and flight Centers, certain basic features can be found to be common to all Centers.
To address the key NSEI components, each Center uses one or more of the following to meet its objectives for the initiative:
- Center Software Engineering Process Group (SEPG) -This group is the primary organization responsible for developing software development process improvements, and in creating, measuring, and interpreting software metrics.
- Management Steering Groups (MSG) --These groups provide the basic guidance for software engineering practices and applications at the Centers.
- Software Policy – The key governing document 257 provides NASA policy for software.
- Training, CMMI Appraisals & Career Development
- SW Technology Infusion
- Engineering, Assurance, and Safety Collaboration
Process assessment: NASA chose to appraise its software engineering improvement activities against a common industry process framework. Initially, it selected the Software Engineering Institute's (Carnegie Mellon University) process model, the Capability Maturity Model (CMM). This was succeeded by the CMMI for Development, Version 1.3. 157 Today (see Table 2 above) NASA Center software development engineering process development activities are appraised (see [SWE-032]) for Maturity Level 2 and Level 3 capabilities in order to be properly credentialed to develop Class A and Class B software systems (see [SWE-020]). The OCE Surveys assess the results of the Center CMMI assessments and evaluate related improvements to Center processes.
Tools: A key part of the NSEIIP to increase software developer's skills and knowledge is the development of a set of tools useable in software development. Center and Agency repositories catalogue many of the tools used around the Agency. In addition, several tools have been developed to assist in achieving the above implementation elements:
- NASA SW Process Asset Library (PAL) 066(see [SWE-098])
- NASA SW Inventory (SIMS) 330 web-based tool (sponsored by the CEO); (see [SWE-006])
- Classification Tool and Safety Critical assessment Tool (see Topic 7.2)
- NASA Engineering Network 258 (NEN, a repository for resources, tools, useful documentation)
The PAL provides for viewing of the Agency-level process assets. This library may contain information in many forms including, but not limited to, processes, templates, web links, design principles, books, periodicals, presentations, tools, examples of documents, and conference descriptions.
NASA utilizes the SIMS tool to develop and maintain an inventory of software (see [SWE-006] ) across the Agency for the purpose of facilitating strategic decisions with actual data. The analysis of the inventory results also directly supports NASA's Chief Safety and Mission Assurance Officer and the IV&V Board of Advisors (IBA) in the selection of projects to receive IV&V services. (See [SWE-131]).
Each SWE entry in this Handbook may include references to tools that have specific or related applicability to the SWE statement. The Resources section within each SWE description includes information as shown in the example panel below. The Handbook format allows users to suggest additional tools, as indicated in the second paragraph in the example panel. (Editor's note: the Tools sub-section in the Resources section normally is numbered as '5.1', which is shown in the panel.)
Metrics: Some basic measures are developed to assess the level and degree of improvement in software process activities across the Agency. Several activities and sources of measurement to form these metrics are used. The OCE conducts its assessments of Center progress by synthesizing and analyzing the information it gains through the conduct of Center surveys. See the OCE Software Survey Instructions and Templates 290 for details on the content, frequency, and content required for these events. The OCE also authorizes appraisals against selected requirements of NPR 7150.2 (see [SWE-129] ). In addition, the results of the CMMI Maturity Level 2 and Maturity Level 3 appraisals are collected and reported in a non-attributed manner to indicate, from both a Center and an Agency perspective, the process areas that are well-developed and those that need further training and development assistance.
The PAL also includes support materials for projects to set up software measurement collection as well as templates to analyze metrics to determine accurately evaluate the status of software development.
Process integration: As the NSEII achieves results, it is important to collect and document these software process improvements. The integration of these achievements allows for the distribution of the best in class processes around the Agency. This Agency-wide distribution encourages the development of uniform process efforts, which in turn helps the efficiency of software development activities across NASA's programs and projects. One means of achieving this integration and dissemination is by using annual workshops. NASA sponsored events such as the NASA Project Management 410 from the OCE and the NASA Workshop on Validation and Verification 411 from the NASA IV&V Facility, serve this purpose. The NASA PM Challenge is an annual seminar designed to examine current program/project management trends, as well as provide a forum for knowledge sharing and the exchange of lessons learned. The IV&V Workshop offers an understanding of the challenges that IV&V organizations face in assuring that systems software operates safely and reliably.
The use of the Agency Process Asset Library (see [SWE-098]) is another mechanism being employed for the distribution of the best in class processes around the Agency. This repository allows the efficient collection and storage of useful and best in class documents that are easily available through the NASA Engineering Network. The Headquarters, Center, and Facility representatives to the NSWG currently manage population of the PAL.
Training: One additional step in the NSEII approach is the development of better-informed software engineers through improved and readily accessible training opportunities. The NSEII recognizes that both the software discipline and other discipline abilities are necessary for the development of quality software (see [SWE-017]). Headquarters and Center training organizations provide the appropriate and prioritized training events (see [SWE-101] and [SWE-107]). The OCE and the NSWG have sponsored the development of a NASA Software Engineering '
<ac:macro ac:name="unmigrated-wiki-markup"> ]]></ac:plain-text-body>
Ensuring the quality, safety, and reliability of NASA software is of paramount importance in achieving mission success for the Agency's programs and projects. The NASA Software Process Improvement Initiative brings together an integrated spectrum of software engineering professionals, researchers, trained practitioners, improved processes, ratings and appraisal systems, accredited tools, and numerous engineering productivity tools to promote software improvement and overall excellence.
Tools to aid in compliance with this Topic, 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.
A documented lesson from the NASA Lessons Learned database notes the following:
Independent Verification and Validation of Embedded Software, Lesson Number 0723: Besides the recognition of the need for extensive project retesting (see the Introduction section for computer restarts 409), this lesson learned indicates the need for independent verification of performance results due to recognition of earlier problems (e.g., Failure to perform IV&V for software projects could result in software system weaknesses, performance of unintentional functions, and failure of the system and the mission. Anything less than a methodical, systematic rigorous treatment of IV&V could cause loss of mission, life, and valuable resources.)(http://www.nasa.gov/offices/oce/llis/0723.html)