Software Engineering



Software Engineering -- A disciplined approach to the design, production, and maintenance of computer programs that are developed on time and within cost estimates, using tools to help manage the size and complexity of the resulting software products.

Five Basic Steps in Software Engineering

  1. Requirements Specification
  Define in details exactly what the software must do. Understand the problem clearly and in know exactly what is required. List the requirements. Verify the requirements with the customer.
  Associated Documentation:
  Statement of Work (SOW) -- Usually provided by the customer(s) listing their requirements for the software.
Requirements Description Document (RDD) -- Prepared by the developers from the customer's SOW but with more attention to details. This document, which must be approved by the customer, is to ensure that the developers fully understand the customer's requirements and expectations for the software.
  2. Analysis
  A careful study of the requirements to insure a full understanding. Identification of the desired inputs, outputs, and constraints. Preliminary outline of the organization of the software and how it will be tested.
  Associated Documentation:
  Software Requirements Specification (SRS) -- An indept description of the software requirements based on the SOW, RDD, and careful analysis. The SRS is written in terms the designers and programmers will understand.
  3. Design
  Development of a detailed plan for the organization of the software. This includes a detailed description of any new algorithms and a detailed description of how the code will be organized and how each unit of code will be tested.
  Associated Documentation:
  Software Design Document (SDD) a.k.a Software Development Plan (SDP) -- A written, document describing in detail each module (class) within the software, each function within the module, the function inputs and outputs, and the algorithms each function will perform. In addition the SDD contains a description of the interface between each module and the interface with the user. This document should be in such detail that it could be turned over to an independent group of programmers for implementation.
  4. Implementation
  The actual coding of the software in the chosen programming language using the SDD/SDP as a guide.
  Associated Documentation:
  Software Test Plan (STP) -- A detailed, organized plan for testing the software, including a description of each test to be performed on each function, the inputs for the test, and the criteria required to pass the tes. The rough draft of this document is actually written after the SDD/SDP is completed and revised as required during implementation.
  5. Testing
  The process of performing verification (does the software do what it is supposed to do) and validation (does it do it correctly) tests of the software using the Software Test Plan as a guide.