- 1. Introduction
- 2. Initiation and Planning
- 3. Estination
- 4. Schedules
- 5. Training
- 6. Classification
- Assurance and Safety
- Coding
- 9. Cybersecurity
- 10. Scope
1. Introduction
Software coding activities occur at the throughout the project. They may include prototyping and development of some throw-away code to experiment with approaches. The final code must be carefully produced and traced to prevent unforeseen problems from occurring after release.
A project may be for the creation of a new product, or the enhancement of an existing product. It may even involve the merging of capabilities from multiple products into a new, more capable product.
Coding must be closely tied to requirements to avoid wasting time building something that is not wanted.
The activities on this page include links to pages in the SWEHB that cover requirements from NPR 7150.2 as well as related Topics on techniques and Process Assets that may be used to help you in your project.
2. Make / Buy / Reuse
This is one of the early decisions that must be made early in a project. Once the product requirements are settled, at least at a high level, the project team must decide how the code will be obtained.
- Making code is always attractive among talented coders who are excited to create code from scratch. The advantage of this is that the code is highly customized and may be fixed using the project team's talent. This presumes that these talented individuals will always be available to do additional development and fix problems.
- Buying code is attractive for smaller project teams where the coding talent is not readily available. Third party coders may solve problems with talent availability but this code my be carefully monitored to ensure it performs as required.
- Reusing code may provide an attractive starting point for many project teams. It can be used to jumpstart a development effort when large portions of the reused code is adapted to the new needs. If the reused code is not up to current standards, it can be a challenge to cleanup to the projects needs and standards.
2.1 Related NPR 7150.2 SWEs
- SWE-033 - Acquisition vs. Development Assessment
- SWE-027 - Use of Commercial, Government, and Legacy Software
2.2 Related Topics and Process Assets
3. Estimation
3.1 Software Life Cycle Planning
SWE-033 - Acquisition vs. Development
Assessment
SWE-013 - Software Plans
SWE-024 - Plan Tracking
SWE-034 - Acceptance Criteria
SWE-036 - Software Process Determination
SWE-037 - Software Milestones
SWE-039 - Software Supplier Insight
SWE-040 - Access to Software Products
SWE-042 - Source Code Electronic Access
SWE-139 - Shall Statements
SWE-121 - Document Tailored Requirements
SWE-125 - Requirements Compliance Matrix
SWE-027 - Use of Commercial, Government,
and Legacy Software
3.2 Software Cost Estimation
SWE-015 - Cost Estimation
SWE-151 - Cost Estimate Conditions
SWE-174 - Software Planning Parameters
4. Schedules
3.3 Software Schedules
SWE-016 - Software Schedule
SWE-018 - Software Activities Review
SWE-046 - Supplier Software Schedule
6. Classification
3.5 Software Classification Assessments
SWE-020 - Software Classification
SWE-176 - Software Records
3.9 Software Development Processes and Practices
SWE-032 - CMMI Levels for
Class A and B Software
7. Assurance and Safety
3.6 Software Assurance and Software
Independent Verification & Validation
SWE-022 - Software Assurance
SWE-141 - Software Independent Verification
and Validation
SWE-131 - Independent Verification and
Validation Project Execution Plan
SWE-178 - IV&V Artifacts
SWE-179 - IV&V Submitted Issues and Risks
3.7 Safety-Critical Software
SWE-205 - Determination of Safety-
Critical Software
SWE-023 - Software Safety-Critical
Requirements
SWE-134 - Safety Critical Software
Design Requirements
SWE-219 - Test Coverage for Safety
Critical Software Components
SWE-220 - Cyclomatic Complexity Values
for Safety Critical Software
8. Coding Techniques
3.8 Automatic Generation of Software Source Code
SWE-146 - Auto-generated Source Code
SWE-206 - Auto-Generation Software Inputs
3.10 Software Reuse
SWE-147 - Specify Reusability Requirements
SWE-148 - Contribute to Agency
Software Catalog
9. Cybersecurity
3.11 Software Cybersecurity
SWE-156 - Evaluate Systems for
Security Risks
SWE-154 - Identify Security Risks
SWE-157 - Protect Against
Unauthorized Access
SWE-159 - Verify and Validate Risk
Mitigations
SWE-207 - Secure Coding Standard
SWE-185 - Verification of Software Code
to Coding Standards
SWE-210 - Detection of Adversarial Actions


