Software Processes in Software Engineering
Software Process Overview
- Definition: A structured set of activities required to develop a software system.
- Key Activities in Software Processes:
- Specification: Define what the system should do.
- Design and Implementation: Define how the system will be built and subsequently develop it.
- Validation: Ensure the software meets customer expectations and requirements.
- Evolution: Adapt and improve the software in response to new requirements.
Types of Software Processes
Plan-driven Process:
Structured and systematic approach.
All activities planned in advance; progress measured against a predefined plan.
Agile Process:
Flexible and adaptive, allowing teams to respond to changing requirements.
Planning is incremental.
Combination of Approaches:
Most practical processes include elements of both plan-driven and agile approaches.
Software Process Models
- Waterfall Model
- Plan-driven model.
- Separate and distinct phases for specification, development, and validation.
- Incremental Development
- Specification, development, and validation are interleaved.
- May be either plan-driven or agile.
- Reuse-oriented Software Engineering
- Assembles systems from existing components (COTS).
- Can be plan-driven or agile.
Waterfall Model Details
Benefits:
Clear documentation.
Structured approach, better for defined requirements.
Well-suited for critical projects.
Drawbacks:
Inflexible to changes, late testing stage.
Difficult to adapt as each phase must be completed sequentially.
Problems:
Inflexibility to changing customer requirements.
Appropriateness for well-understood and stable requirements only.
Often used in large systems engineering projects.
Incremental Development
- Benefits:
- Lower cost for changes, faster feedback from customers, earlier delivery of functionality.
- Easier analysis and documentation management.
- Drawbacks:
- Process visibility may suffer; system structure can degrade.
- Regular documentation may not reflect rapid development changes.
Reuse-oriented Software Engineering
- Process Stages:
- Component analysis, requirements modification, system design with reuse, development, and integration.
- Benefits:
- Reduces development time, cost efficiency, improves quality, faster time to market.
- Drawbacks:
- Dependency on existing components, integration challenges, limited flexibility, quality variability.
The Role of Software Process Models
- Structure: They offer a predefined approach organizing development activities.
- Planning and Control: Helps in scheduling and controlling project progress.
- Communication: Establishing common language among stakeholders.
- Quality Enhancement: Ensuring adherence to standards and improving software quality.
Software Specification
- Definition: Establish service requirements and operational constraints.
- Processes:
- Requirements engineering process: Feasibility studies, elicitation, specification, validation.
Software Design and Implementation
- Activities:
- Architectural design, interface design, component design, database design.
Software Validation and Testing
- Verification and Validation (V&V):
- Crucial for ensuring that the system meets specifications and customer needs.
- Testing Stages:
- Development testing, system testing, acceptance testing.
Software Evolution
- Need for Evolution: Software must adapt to changing business and technology environments.
- Coping with Change:
- Change avoidance and change tolerance strategies.
- Prototyping:
- Initial versions of systems used to demonstrate concepts, validate requirements, and design UI.
Incremental Delivery
- Benefits include earlier customer value delivery and lower project risk.
- Issues such as identifying common requirements across increments can arise.
Boehm’s Spiral Model
- Iterative model focusing on continuous risk assessment and resolution.
Rational Unified Process (RUP)
- A modern generic process integrating various models: inception, elaboration, construction, and transition phases.
- Emphasizes iterative development and managing requirements efficiently.