1. IntroductionSoftware Engineering activities are conducted in a predictable sequence. This sequence may be a once through / "waterfall" cycle. Or, it may be an iterative or evolutionary series of cycles which build toward a final product. Regardless of the model chosen, individual activities in all these cycles are very similar. The major activity groupings here give you a quick way to find guidance in the SWEHB to help you satisfy the needs of the development project while also satisfying the requirements of NPR 7150.2. The activities associated with Software Engineering are listed in the tabs of this page. Each tab takes you to a list of links to pages where the activity is is explained in more detail. At the lowest level, there is a list of links to specific pages in the SWEHB where details of the activity are explained and more guidance is provided. In some cases, templates or other Process Assets are included to further help you in conducting the activity.

1.1 Activity GroupingsThe tabs in this page initially will contain all of the activities in Ch 2 through 5 of NPR 7150.2. This is done to ensure that all SWEs are accounted for. As the page matures, Topics, PATs, and other resources will be distributed to enrich the content of the activities. SWEs from NPR 7150.2 are reproduced in a floatbox on the right to ensure that all SWEHB content is accounted for somewhere in the view.
|
2. Institutional ActivitiesThe Management activities associated with Software Development Projects are listed as links below. Management activities are typically conducted by those in leadership roles. Supervisors, managers and team leads are involved to varying degrees. Some activities even involve Support, Assurance and Safety roles. Interactions are explained in the activities. 2.1 OCE and OSMA Software Engineering InitiativeAgency Level Activities are intended to provide "enabling support" to project teams. These activities include direction, guidance and support to project teams. Process Definition  




Requirement Mapping and Tailoring
 




Measurements and Metrics


Benchmarking and Appraisals




Training

Process Library


Licensing, Sharing and Reuse






|
3. ActivitiesThe Software and Assurance activities associated with Software Development Projects are listed as links below. Each page will contain an activity description and contain links to all the associated SWEs, Topics, PATs, and other pages in the SWEHB that are associated with the activity. 3.1 Activity PagesLinks go to existing pages. Underlined (Red in edit mode) links have not yet been created. All activity pages to be children of the Software Project Activities page. Content structure is contained in the Activity Template. Institutional Activities| Activity Name | Activity Components |
|---|
| OCE and SMA benchmarking and determining the capability and maturity of software development groups. Benchmarking techniques derived from CMMI best practices. | | Training at all levels from Agency (engineering practices and related training) down to project needs (training for personnel on using development tools). | | Development of repeatable processes and practices for OCE, SMA and Center development activities. | | Determining the applicability of NPR 7150.2 requirements to a particular project. Includes requirements necessary for particular software classifications. | | Suggested measurements and practices for software projects.
Software measurement is a primary tool for managing software processes and evaluating the quality of software products. Analysis of measures provides insight into the capability of the software organization and identifies opportunities for software process and product improvements. Software measurement programs at multiple levels are established to meet measurement objectives. The requirements below are designed to reinforce the use of measurement at the project, Center software organization, and NASA Chief Engineer levels to assist in managing projects, assuring quality, and improving software engineering practices. |
| | The NASA OCE shall maintain an Agency-wide process asset library of applicable best practices and process templates for all size projects |
| | Requirements related to the licensing, sharing and reuse of some or all of software products. |
Project Software Activities| Activity Name | Activity Components |
|---|
| Software Life Cycle Planning | Software life cycle planning covers the software aspects of a project from inception through retirement. The software life cycle planning is an organizing process that considers the software as a whole and provides the planning activities required to ensure a coordinated, well-engineered process for defining and implementing project activities. These processes, plans, and activities are coordinated within the project. At project conception, software needs for the project are analyzed, including acquisition, supply, development, operation, maintenance, retirement, decommissioning, and supporting activities and processes. The software effort is scoped, the development processes defined, measurements defined, and activities are documented in software planning documents. |
| | Software Peer Reviews and Inspections | Software peer reviews and inspections are the in-process technical examination of work products by peers to find and eliminate defects early in the life cycle. Software peer reviews and inspections are performed following defined procedures covering the preparation for the review, the review itself is conducted, results are recorded, results are reported, and completion criteria is certified. When planning the composition of a software peer review or inspection team, consider including software testing, system testing, software assurance, software safety, software cybersecurity, and software IV&V personnel. |
| | Used when software is acquired or secured from outside sources. | | Used for monitoring progress and keeping the project under control through minor adjustments | | Used for establishing cost of development of the software products. It includes multiple models and parameters, direct and indirect costs, for the work so that tracking can be effectively done. | | Used for establishing and maintaining the development and delivery schedule. Takes into account dependencies on other projects and programs. Includes time for reviews and tracking of issues to resolution, | | Ensures that the project follows established processes and practices. Includes audits and corrective actions. | | Independent testing and evaluation of software against requirements and performance criteria. Applicable to certain categories of projects. Includes planning, execution of tests and tracking issues and risks to closure. | | Includes determining of software is considered safety-critical, and implementing additional requirements to ensure safety of the software product. | |
| | Evaluation of software requirements and planning for their realization in the final software products. | | Experience confirms that the quality and longevity of a software-reliant system is primarily determined by its architecture. The software architecture underpins a system’s software design and code; it represents the earliest design decisions, ones that are difficult and costly to change later. The transformation of the derived and allocated requirements into the software architecture results in the basis for all software development work. |
| | Software design is the process of defining the software architecture, components, modules, interfaces, and data for a software system to satisfy specified requirements. The software architecture is the fundamental organization of a system embodied in its components, their relationships to each other and the environment, and the principles guiding its design and evolution. The software architectural design is concerned with creating a strong overall structure for software entities that fulfill the allocated system and software-level requirements. Typical views captured in an architectural design include the decomposition of the software subsystem into design entities, computer software configuration items, definitions of external and internal interfaces, dependency relationships among entities and system resources, and finite state machines. The design should be further refined into lower-level entities that permit the implementation by coding in a programming language. Typical attributes that are documented for lower-level entities include the identifier, type, purpose, function, constraints, subordinates, dependencies, interface, resources, processing, and data. Rigorous specification languages, graphical representations, and related tools have been developed to support the evaluation of critical properties at the design level. Projects are encouraged to take advantage of these improved design techniques to prevent and eliminate errors as early in the life cycle as possible. Software, developed or purchased, has additional requirements to comply with from Section 508 of the Rehabilitation Act, as defined in NPR 2800.2. |
| | Software implementation consists of implementing the requirements and design into code, data, and records. Software implementation also consists of following coding methods and standards. Unit testing is also usually a part of software implementation (unit testing can also be conducted during the testing phase). |
| | Includes integration of modules into a final deliverable package and testing of that package to determine if it is ready for delivery. The purpose of testing is to verify the software functionality and remove defects. Testing verifies the code against the requirements and the design to ensure that the requirements are implemented. Testing also identifies problems and defects that are corrected and tracked to closure before product delivery. Testing also validates that the software operates appropriately in the intended environment. Please note for Class A software there are additional software test requirements and software integration requirements as defined in NPR 8705.2. |
| | Final determination of the readiness of the software for release. Includes acceptance testing, and other readiness criteria. | | Addresses any ongoing maintenance considerations for the software products. Planning for operations, maintenance, and retirement are typically considered throughout the software life cycle. Operational concepts and scenarios are derived from customer requirements and validated in the operational or simulated environment. Software maintenance activities sustain the software product after the product is delivered to the customer until retirement. |
| | Addresses any ongoing operations considerations for the software products Planning for operations, maintenance, and retirement are typically considered throughout the software life cycle. Operational concepts and scenarios are derived from customer requirements and validated in the operational or simulated environment. Software maintenance activities sustain the software product after the product is delivered to the customer until retirement. |
| | Addresses any retirement or replacement considerations for the software products Planning for operations, maintenance, and retirement are typically considered throughout the software life cycle. Operational concepts and scenarios are derived from customer requirements and validated in the operational or simulated environment. Software maintenance activities sustain the software product after the product is delivered to the customer until retirement. |
| | Includes control over software products during development along with any associated work products. Software Configuration Management (SCM) is the process of applying configuration management throughout the software life cycle to ensure the completeness and correctness of software configuration items. SCM applies technical and administrative direction and surveillance to identify and record the functional and physical characteristics of software configuration items, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements. SCM establishes and maintains the integrity of the products of a software project throughout the software life cycle. Use of standard Center or organizational SCM processes and procedures is encouraged where applicable. |
| | Planning, monitoring and controlling risks which could impact the software products. Record, analyze, plan, track, control, and communicate all of the software risks and mitigation plans. |
| | Identification and tracking of non-conforming products and software. Includes ensuring that defects are removed or fixed. | | Includes the closing of projects and dispositioning work products that may need to be used in subsequent projects related to the software products. Planning for operations, maintenance, and retirement are typically considered throughout the software life cycle. Operational concepts and scenarios are derived from customer requirements and validated in the operational or simulated environment. Software maintenance activities sustain the software product after the product is delivered to the customer until retirement. |
|
|
|