Software Process Overview
1. SOFTWARE PROCESS:
A structured set of activities required to develop a software system, including:
- Specification: Defining what the system should do.
- Design and Implementation: Creating the system structure and coding.
- Validation: Ensuring the system meets customer requirements.
- Evolution: Adapting the system to changing needs.
2. SOFTWARE PROCESS MODELS:
Abstract representations of processes, including:
- Waterfall Model: Sequential phases (requirements, design, implementation, testing, maintenance).
Best for stable requirements but inflexible to change.
- Incremental Development: Interleaves specification, development, and validation. Allows for faster
delivery and customer feedback but can lead to degraded system structure over time.
- Reuse-Oriented Engineering: Builds systems from existing components or COTS
(Commercial-off-the-shelf) systems. Common in business systems.
PROCESS ACTIVITIES:
1. SOFTWARE SPECIFICATION:
- Feasibility Study: Determines if the system is technically and financially viable.
- Requirements Elicitation and Analysis: Gathers stakeholder needs.
- Requirements Specification: Defines requirements in detail.
- Requirements Validation: Ensures requirements are valid.
2. SOFTWARE DESIGN AND IMPLEMENTATION:
- Architectural Design: Defines the overall system structure.
- Interface Design: Specifies interactions between components.
- Component Design: Details how each component operates.
- Database Design: Structures system data.
3. SOFTWARE VALIDATION:
- Verification and Validation (V&V): Ensures the system meets specifications and user needs.
- Testing Stages:
- Component Testing: Tests individual components.
- System Testing: Tests the system as a whole.
- Acceptance Testing: Validates the system with customer data.
4. SOFTWARE EVOLUTION:
- Software must evolve to meet changing business needs. The distinction between development and
maintenance is becoming less relevant as most systems are not entirely new.
COPING WITH CHANGE:
1. Change Avoidance: Anticipates changes early (e.g., through prototyping).
2. Change Tolerance: Designs processes to accommodate changes at low cost (e.g., incremental
development).
3. Software Prototyping:
- Used for requirements elicitation, design exploration, and testing.
- Throw-away Prototypes: Discarded after development as they are not suitable for production.
4. Incremental Delivery:
- Delivers functionality in increments, allowing for early user feedback and reduced risk of project
failure.
- Challenges include identifying common facilities needed by all increments and aligning with
organizational procurement models.
BOEHM'S SPIRAL MODEL:
1. Iterative and Risk-Driven:
- Each loop in the spiral represents a phase, with explicit risk assessment and resolution.
- Phases include Objective Setting, Risk Assessment, Development and Validation, and Planning.
- Influential but rarely used in its pure form.
RATIONAL UNIFIED PROCESS (RUP):
1. Modern Generic Process: Combines aspects of waterfall, incremental, and reuse-oriented
models.
2. Phases:
- Inception: Establishes the business case.
- Elaboration: Develops problem understanding and system architecture.
- Construction: System design, programming, and testing.
- Transition: Deployment in the operating environment.
3. Iterative: Both within phases and across phases.