TIP: Click on subject to list as thread! ANSI
echo: c_echo
to: Roy J. Tellason
from: Neil Heller
date: 2004-04-06 17:56:00
subject: [C] Re: C Digest, Vol 8,

> As you can see by how long it took me to respond, things have been
> busy. The project I've been working on since early last year is
> starting field trials on a real well next week, so I've been pretty
> much buried in last minute adjustments and documentation for the
> past month. I just finished the 120 page detailed
> the design/implementation spec yesterday. My partner on project is
> taking the spec with him to the field for further revisions, so I
> have a week of lower-intensity stuff to do, hence my return here.

BDW> Aren't you supposed to write the SRS and SDD BEFORE you write
BDW> the code? :-) 

RJ>What are these abbreviations?  (I haven't had my coffee yet... :-)

That's the language of software engineering.  Here's some more along the 
same line:

Professional Practice Guidelines:
The Use of Computer Software Tools 
by Professional Engineers and the Development of Computer Software 
Affecting Public Safety and Welfare
1993 

2. SOFTWARE ENGINEERING MODEL

Software engineering is usually part of the overall computer system 
engineering process, and is also closely linked to the hardware 
engineering process. The system and hardware engineering processes 
provide inputs to the software engineering process (see Figure 1 for an 
overview of the computer system engineering process). The software 
engineering processes can be categorized as development, verification, 
and support processes with well defined inputs and outputs. The intent 
of these processes is to achieve the required outputs through a 
comprehensive sequence of development and verification steps. Table 1 
summarizes the software engineering processes and their products, while 
Figure 2 provides an overview of the software development and 
verification processes. 

Figure 1 will be uploaded later. We apologize for the inconvenience.

Table 1 - Software Engineering Processes and Products


Process Product Acronym 
DEVELOPMENT   
Software Requirements Definition Software Requirements Specification SRS 
Software Design Software Design Description SDD 
Code Implementation Source Code  
VERIFICATION   
Requirements Review Requirements Review Report RRR 
Design Review Design Review Report DRR 
Code Review Code Review Report CRR 
Unit Testing Unit Test Procedures UTP 
 Unit Rest Report UTR 
System Integration Testing System Integration Test Procedures SITP 
 System Integration Test Report SITR 
Validation Testing Validation Test Procedures VTP 
 Validation Test Report VTR 
SUPPORT   
Planning Software Development Plan SDP 
 Standards and Procedures Handbook SPH 
Configuration Management Releases  
 Approved Change Requests Status Reports  
Training Training Records  

Software development involves software requirements definition, software 
design and code implementation; verification of the development process 
outputs is performed after each of these steps have been completed. In 
practice, this sequential model is not followed exactly, since there is 
feedback to preceding processes, and iterations are required. But 
feedback and iteration must be performed in conformance with the 
established development process. 

Figure 2 will be uploaded later. We apologize for the inconvenience.

Each release of the software throughout its lifetime must satisfy all 
requirements as if the sequential model had been followed exactly. 

2.1 Functional Requirements 

It is essential that engineers specify the user requirements that must 
be met by the system in sufficient detail and in a quantifiable manner. 
Functional requirements that cannot be verified, or are inadequately 
defined, ambiguous or unfeasible, will lead to the development of an 
inadequate software product. Engineers should consider any past 
experience with other similar systems to determine requirements, and 
specify requirements in terms of quality characteristics and sub 
characteristics (see Appendix A). They should prioritize these 
characteristics according to the importance of the application, so that 
any conflicting requirements can be managed during development. 

2.2 Conceptual Design 

This process is undertaken once functional requirements have been 
determined. It involves breaking the functional requirements down into 
subsystems, which are then mapped to hardware architecture and software 
components. Software can be either pre developed, off-the-shelf 
software, software to be developed, or a combination of both. 

2.3 Development Processes 

The development processes are: 

software requirements definition; 
software design, and 
code implementation. 
Engineers should define completely the development process and outputs 
for a specific software engineering project in a software development 
plan (SDP) and a standards and procedures handbook (SPH). Development 
should proceed according to the SDP and the SPH. Development processes 
do not apply to off-the-shelf software, but verification and maintenance 
processes do. 

2.3.1 Software Requirements Definition 

This process involves the analysis of the software's functional and 
conceptual design requirements, and all other requirements related to 
the specific environment in which it will operate. Engineers should 
determine these requirements by developing a software requirements 
specification (SRS). The SRS presents an external view of the software 
by providing a complete "black box" description of its behaviour. To 
help ensure that software design decisions are not artificially 
constrained, internal design details are not included in the SRS. The 
SRS does, however, document all necessary software design constraints, 
which may limit the developer's choice of solutions. 

2.3.2 Software Design 

This process involves developing a detailed software design that defines 
a software's architecture. It interfaces with any predeveloped software 
included in a software design description (SDD) that satisfies the 
requirements in the SRS and is compatible with the conceptual design. 
The SDD is a representation of the software design. When developing an 
SDD, engineers should describe the design in sufficient detail that no 
further refinement of the tasks, databases, inter-task communications, 
libraries, module structure and interfaces, data structures, and 
databases is required in the code. 

2.3.3 Code Implementation 

In this process, the design specified in the SDD is translated into 
debugged source code, and all databases using the programming 
language(s) selected for development are initialized. 

2.4 Verification Processes 

The verification processes are: 

software requirements review; 
software design review; 
code review; 
unit testing; 
system integration testing, and 
validation testing. 
Engineers should completely define the verification processes and 
outputs for a specific software engineering project in the SDP and the 
SPH. For each verification process, they should produce a report to 
record the methods they have used and process results. They should 
perform verification according to the SDP and the SPH, and can add or 
delete verification processes depending on the criticality of the 
application. 

2.4.1 Software Requirements Review 

This process involves a technical review of the SRS against the 
functional requirements and conceptual design. It verifies that the 
requirements specified in the SRS are complete, adequate, unambiguous, 
feasible, verifiable and consistent with the intended application. 

2.4.2 Software Design Review 

This process is a technical review that determines whether the design 
described in the SDD meets the intent of the functional requirements, 
conceptual design and SRS. 

2.4.3 Code Review 

This process involves the verification of whether the code fulfills the 
design specified in the SDD, and whether it complies with coding 
standards specified in the SPH. 

2.4.4 Testing Processes 

Testing processes involve preparing, verifying and implementing test 
procedures that specify the environment in which the code is tested, the 
steps to be followed by the tester, the set of inputs, the execution 
conditions, and the expected results. Engineers should specify the 
procedures for each testing process in the SPH. 

2.4.5 Unit Testing 

In the unit testing process, modules and programs are tested to ensure 
that they behave as specified by the SDD. Each module and program is 
tested singly, as well as their interfaces, and integrated sets of 
modules and programs (subsystems). 

2.4.6 System Integration Testing 

This process involves testing subsystems integrated with predeveloped 
software and hardware in a systematic manner to ensure that they behave 
as specified by the SRS. Its objectives are to find any errors in the 
software, hardware and predeveloped software interfaces, and in the 
handling of stress conditions, timing, fail-safe features, error 
conditions and error recovery. 

2.4.7 Validation Testing 

This process involves testing the integrated system to ensure that it 
meets functional and conceptual design requirements. It is the final 
verification step before the software is turned over to the user. 

2.5 Software Management Framework 

The software management framework consists of four main components: 

planning; 
configuration management; 
training, and 
quality assurance. 

2.5.1 Planning 

In the planning process, all software engineering tasks expected to be 
performed during the software's life cycle are defined in terms of how 
and when they are to be performed, and who is to perform them. To focus 
planning, engineers should use a model of the software's life cycle with 
these tasks mapped to it. At the start of the project, they should 
identify and document all development, verification and support 
processes, and all project-specific standards and procedures. They 
should also develop an organizational structure to meet the requirements 
of personnel participating in software engineering processes and to 
ensure that work is carried out objectively and effectively. This should 
include establishing estimates, schedules, budgets and resource 
requirements that support the effort required to develop procedures, 
support tools and facilities. The inputs to this process are the 
functional requirements, conceptual design, all umbrella project plans, 
and quality system standards and procedures. The outputs are the SDP and 
SPH. These documents are necessary prerequisites for software project 
management. 

2.5.2 Configuration Management 

Configuration management involves identifying the configuration of a 
software system at discrete points in time, to ensure that the correct 
version of each process output is being used at any point in time. It 
also includes controlling all changes made to the software, ensuring 
that new configuration items are developed and verified with the same 
rigor as the original items, and analyzing detected errors to improve 
software continuously according to adopted standards and procedures. 
Inputs to the process include all items that fall under configuration 
management, including the SDP and SPH, and all software change requests. 
The outputs of this process include the controlled version of all 
project documents, software releases, approved change requests, and 
software configuration status reports. This process is applicable to any 
developed or procured software. 

2.5.3 Training 

Training helps ensure that the personnel involved in software 
engineering projects have the necessary skills to perform their tasks, 
and are completely conversant with the procedures and standards that 
affect their work. 

2.5.4 Quality Assurance 

This process consists of systematic management reviews and quality 
audits, which assure that processes, products and services in the 
software engineering process conform to their established and intended 
requirements, and to their established plans, standards and procedures. 
The quality assurance function should be performed by a second party, 
rather than the software developers and verifiers. It can be performed 
by an outside quality assurance organization, or internally as a 
separate quality function dedicated purely to the project. 


___-------------------------------------------------------------

þ CMPQwk 1.42 999

--- Maximus/2 3.01
* Origin: COMM Port OS/2 juge.com 204.89.247.1 (281) 980-9671 (1:106/2000)
SEEN-BY: 633/267 270
@PATH: 106/2000 633/267

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.