bannerd

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

SE-Coding

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. 


1.1 Related Activities


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

2.2 Related Topics and Process Assets



3. Automatic Code Generation

Defining the approach to be used for the automatic generation of software source code allows projects to review and verify their plans for the use and management of auto-generated software before implementation to ensure the development approach and the resulting software will meet the expectations and goals of the project without introducing unacceptable levels of risk. 

Auto-generated software is the result of translating a model of the system behavior into different software languages through the use of a code generator. It is important to capture the approach used for the automatic generation of software because issues can exist with auto-generated software and projects need to be prepared to address them.

Model-based software development uses a model as the centerpiece of the development process. Software engineers create a model of the system behavior that can then be translated into different languages such as C or Ada by the appropriate code generator. The model is continually refined throughout the development process and can even be executable. For maximum benefit, the generated code should not be modified by software engineers; when changes are desired, the model is revised, and code is generated from the revised model.

3.1 Related NPR 7150.2 SWEs

3.8 Automatic Generation of Software Source Code

SWE-146 - Auto-generated Source Code 
SWE-206 - Auto-Generation Software Inputs

3.2 Related Topics and Process Assets

8.11 - Auto-Generated Code - 

4. Software Reuse

Software systems are often designed using existing components from other systems. It is recognized that reusing existing software components can help achieve the resulting system more quickly and at a lower cost. However, for software components to be truly reusable, reusability needs to be part of the planned initial development of those components.

With the focus on software reuse increasing, projects need to plan for future reuse of developed software by specifying requirements that facilitate software reuse in the future.  These requirements enhance the benefits of reuse and address the known pitfalls of reuse where that is possible.  These requirements, which should be captured as early in the life cycle as possible, address development processes as well as project technical requirements and are captured in project documentation such as the software development/management plan for processes, project coding standards, and the requirements document or repository for technical requirements.  The software reuse-related requirements are included as a part of the normal software requirements review process and verification & validation process.

Reusing software can have many benefits for the Agency, including, but not limited to, cost savings.  For this reason, software project managers consider future reuse of software components created for their projects and make those selected components available to future projects through an Agency repository. When evaluating software for potential reuse, remember to consider single components as well as entire software products.

4.1 Related NPR 7150.2 SWEs

3.10 Software Reuse

SWE-147 - Specify Reusability Requirements
SWE-148 - Contribute to Agency
                   Software Catalog

4.2 Related Topics and Process Assets


5.

6.

7.  

8.

9.

10. 

  • No labels