[Left] [Up] [Right] Reusable Component-Specification Pairs [Left] [Up] [Right]

Writing Requirements and Specifications

Requirements and specifications need to be written in a manner that balances two key aspects: (1) they should be readable, and (2) they should lend themselves to various forms of automated processing.

Table 1 summarizes the key features of requirements and specifications.

Requirements
Specifications
Initial requirements tend to be "qualitative" statements for what we want ..... Specifications tend to be "quantitative" statements that are based upon a detailed knowledge of a product and its (required or established) capabilities...
The system should ....
The system must ....
Requirements and capabilities:
  • The system (input) requirements are ....
  • The system (output) capabilities are ....
Constraints:
  • You'll need to make sure .....
Natural language sentences....

Natural language sentences suffer the limitation of being informal and, often, incomplete and ambiguous.

  • Pseudo-code. Technical sentences (e.g., written in BNF).
  • UML-like class diagrams for system structure.
  • UML-like FSM/statechart and activity diagrams for system behavior.
  • Equations, charts, tables .....
  • Design rules .....
Validation of requirements supported by traceability to specifications and design subsystems/objects. Verification of specifications supported by formal testing procedures, numerical simulations of system behavior, experiments in the lab ... etc.

Table 1. Comparison of Requirements and Specifications

Sample Requirements Document -- Implemented in XML

     <?xml version="1.0" encoding="UTF-8" ?> 
     <!--  Requirement for a Pulse-Doppler Radar System --> 

     <Project file="radarsystem.xml"> 

     <ToBeChecked Value="false"> 
     <Requirement ID="SYS.REQ.1"> 
        <Name>         System Description        </Name>
        <Rationale>    Overall System Objective  </Rationale>
        <Verification> User Input                </Verification>
        <Comment> No comments </Comment>
        <Revision Month="4" Date="8" Year="2003" />
        <Mappedto> Signal Processing Unit </Mappedto>
        <Template No="-1" />
        <Description> I need a Pulse-Doppler Radar System. </Description>
     </Requirement> 

     <Requirement ID="SYS.REQ.2"> 
        <Name>         Total System Cost                     </Name>
        <Rationale>    Overall Cost Objective of the system  </Rationale>
        <Verification> Add the sum of the components of the system.  </Verification>
        <Comment> No comments </Comment>
        <Revision Month="4" Date="8" Year="2003" />
        <Mappedto> null </Mappedto>
        <Template No="-1" />
        <Description> The total cost must be less than or equal to USD $8,000,000 </Description>
     </Requirement> 

     ..... etc ..... 


Section 4-2: June, 2003. [Left] [Up] [Right]