Saturday, February 7, 2009

Four fundamental process activities

There are four fundamental process activities common to all software processes: click


1. Software specification (= requirements engineering)
- the process of establishing what services are required from the system, and identifying the constraints on the system's operation and development; leads to the production of a requirements document that is specification for the system;

Consists of following phases (page 75):
  • Feasibility study - ...
  • Requirements elicitation and analysis - ...
  • Requirements specification - ...
  • Requirements validation - ...
These phases are interleaved, they are not carried out in a strict sequence.


2. Software design and implementation
- the process of converting a system specification into an executable system; except from design and programming may also include refinement of the specification (in an evolutionary approach)

a) design - design of a structure that realizes the specification;
-> consists of activities:
  • architectural design
  • abstract specification
  • interface design
  • component design
  • data structure design
  • algorithm design
-> usually documented as a set of graphical models:
  • object model
  • sequence model
  • state transition model (how system's states change)
  • structural model
  • data-flow model (how data is changed and transformed)
b) implementation - translate this structure into an executable program; remove errors from that program;
debugging != defect testing
debugging: locate error -> design error repair (not to create more bugs!) -> repair error -> retest program

These two activities (design and implementation) are closely related and may be interleaved;

3. Software validation (verification and validation)
- intended to show that a system conforms to its specification and the system meets expectations if the customer buying the system; involves checking proceses: inspections and reviews at each stage of the software process

Testing stages:
  • Component (unit) testing - individual components are tested independently; components may be functions or objects, ...
  • System testing - the components are integrated; looking for errors resulting from interactions between the components; validating if system meets the functional and non-functional requirements
  • Acceptance testing - testing with customer data to check that the system meets the customer's needs

4. Software evolution (= software maintenance)
- software must be changing; this activity is when system is in use;