1.1.1.3.2 Define Plans For Performing Detailed Software Development Activities

Overview

In this activity, a software development life cycle approach and any intermediate builds are selected based upon the software project’s scope, organization, and resources. From these selections, the software development activities are defined and documented in the Software Development Plan (SDP) (see Appendix E).

Roles and Responsibilities

The project software manager completes the SDP sections defining the software development process.

The software engineering manager works with the project software manager to tailor the Software Development Volume of this Guidebook and complete the SDP sections defining the software development process.

Controls

See parent activity 1.1.1.3 Define Software Development Process.

Inputs

See parent activity 1.1.1.3 Define Software Development Process.

The System Requirements Analysis and System Design sections of the SDP that define the systems engineering approach to be followed by the software developers.

Procedures

This activity focuses on tailoring the Software Development Volume activities to the project’s software development tasks. Thus, the project software and software engineering managers should be very familiar with activity 3.2 Perform Software Development and all of its subactivities. The Software Development Volume tailoring is documented in the SDP.

When documenting software project plans in the SDP, the project software and software engineering managers cover how activity results will be recorded and the preparation of any associated deliverables, if necessary. When deviating from the organizational standard software process, the managers submit a Request for Deviation/Waiver (see Appendix C) (see activity 4.1.1 Review Request For Deviation/Waiver). These Requests for Deviation/Waiver are necessary in instances such as using new techniques and/or new tools, or when there is a lack of resources. The following steps are performed to complete SDP sections describing the approach for performing detailed software development activities:

1) The project software and software engineering managers review the software project scope and software project organization and resources. The managers also review the System Requirements Analysis and System Design sections of the SDP. Both sets of documentation may help the managers gain a better understanding of the software project.

2) The project software and software engineering managers select a software life cycle for the project. "Software life cycle" is the period of time that begins when a software product is conceived, and ends when the software is no longer available for use [IEEE 610.12-1990, 1991]. A life cycle is typically divided into phases, which may or may not coincide with the system life cycle phases. Five life cycle models are recommended for use on NASA projects: waterfall, incremental, evolutionary or spiral, package-based development, and legacy system maintenance models. The NASA Software Management Guidebook [NASA-GB-001-96] describes each model and provides guidance for selecting an appropriate model for a project. Once the life cycle is determined, cost and schedule estimates should be updated accordingly.

3) A "software build" is an operational version of a system or component that incorporates a specified subset of the capabilities that the final product will have [IEEE 610.12-1990, 1991]. Based on the project size, schedule, and requirements, the project software and software engineering managers may choose to identify different software builds. These builds should be noted as milestones and/or deliveries in the schedule (see activity 1.1.1.1.5 Develop Software Development Schedule) and taken into consideration when planning further tasks (i.e., the remaining steps in this activity) for the software project.

4) The software developer(s)’ approach to software requirements definition is decided as the managers tailor activity 3.2.1 CSCI Software Requirements Analysis. The managers decide which requirements analysis method to use from those suggested in activity 3.2.1.1 Perform Software Requirements Definition. All decisions regarding software requirements definition are documented in the Software Requirements Analysis section of the SDP.

5) The project software and software engineering managers tailor activities 3.2.2 CSCI Architectural Design and 3.2.3 Develop Detailed Design for this project’s needs. The managers decide what design method to from those suggested in activities 3.2.2.1 Develop Architectural Design and 3.2.3.1 Develop Unit Detailed Design. CSCI-wide design decisions, and CSCI architectural and detailed designs are considered, and all decisions regarding software design are documented in the Software Design Section of the SDP. Because all design decisions are not made at one time, the SDP should be regularly updated as these types of decisions are made.

6) Software implementation and unit testing are considered as the project software and software engineering managers tailor activity 3.2.4 Software Implementation and Unit Testing. Coding standards are selected as specified in activity 3.2.4.1.1 Code Unit. The entire unit implementing and testing life cycle should be considered: software implementation, preparing for unit testing, performing unit testing, revision and re-testing, and analyzing and recording unit test results. All decisions are documented in the Software Implementation and Unit Testing section of the SDP.

7) The managers tailor activity 3.2.5 Unit Integration And Testing. Project size, unit size, and staff size are considered when tailoring the activity. The areas of: preparation, integration, testing, revision and re-testing, and recording also are considered. The testing method and documentation may be very informal depending on size factors, but the results are always documented in some manner. All decisions are documented in the Unit Integration and Testing section of the SDP.

8) Activity 3.2.6 CSCI Qualification Testing is tailored by the project software and software engineering managers. Embedded flight software will not undergo this testing as it is required to be integrated with the hardware before testing can take place. Ground support, mission operations, and post-mission data analysis software are candidates for CSCI qualification testing. As with unit testing, consideration is given to the areas of preparation, integration, testing, revision and re-testing, and recording. All decisions are documented in the CSCI Qualification Testing section of the SDP.

Outputs

The software development process that defines plans for performing detailed software development activities. This is documented in the Software Requirements Analysis, Software Design, Software Implementation and Unit Testing, Unit Integration and Testing, and CSCI Qualification Testing sections of the SDP.