Skip to content
UoL CS Notes

Software Processes

COMP201 Lectures

Requirements Engineering & Specification

Software specification is the process of establishing what services are requires and the constraints on the system’s operation and development.

Requirements Engineering Process

flowchart LR
fs([Feasibility Study]) --> re([Requirements Elicitation & Analysis]) <--> rs([Requirements Specification]) <--> rv([Requirements Validation])
fs --> fr[Feasibility Report]
re --> sm[System Models]
rs --> usr[User & System Requirements]
sm --> rd[Requirements Document]
usr --> rd

Software Design & Implementation

This is the process of converting the system specification into an executable system. This includes:

  1. Software Design
    • Design a software structure that realises the specification.
    • There are many tasks that comprise this section.
  2. Implementation
    • Translate this structure into an executable program.

Design and implementation are closely related and may be inter-leaved.

Design Process Activities

  1. Architectural Design (Separating web service modules)
    • Sub-systems making up the ystem and their relationships are identified and documented.
  2. Abstract Specification
    • For each sub-system, an abstract specification of its operation constraints and services is produces.
  3. Interface Design
    • For each sub-system, an unambiguous interface with other sub-systems is designed and documented.
  4. Components Design
    • Services are allocated to components and the interfaces of these components are desgned.
  5. Data Structure Design
    • The data structures used in the system implementation are designed in detail and specified.
  6. Algorithm Design
    • The algorithms used in components to provide services are designed and specified.

Design Methods

Design methods are systematic approaches to developing a software design. This design is usually documented as a set of graphical models.

You could use the following types of model:

  • Data-flow
  • Entity relation attribute model.
  • Structural Model
  • Object Models
  • State Transition Model (Showing system states and triggers)

Programming & Debugging

Programming should be an iterative activity where small pieces are written and testing is completed.

Testing

flowchart LR
ut[Unit Testing] <--> mt[Module Testing] <--> st[Sub-system Testing] <--> sst[System Testing] <--> at[Acceptance Testing]
subgraph Component Testing
ut
mt
end
subgraph Integration Testing
st
sst
end
subgraph User Testing
at
end

The prior stages are described as:

  1. Unit Testing - Individual components are tested.
    • Testing classes.
  2. Module Testing - Related collections of dependent components are tested.
    • Testing class integration.
  3. Sub-system Testing - Modules are integrated into sub-systems and tested. The focus here should be on interface testing.
    • Testing classes as a service. An organised package or JAR library.
  4. System Testing - Testing of the system as a while. Testing of emergent properties.
    • Whole system test.
  5. Acceptance Testing - Testing with customer data to check that it is acceptable.