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 - ...
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
- object model
- sequence model
- state transition model (how system's states change)
- structural model
- data-flow model (how data is changed and transformed)
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;