Object Oriented Software Engineering - Software Process and SDLC Models
Software Process
Definition: A software process consists of activities and associated outcomes that produce a software product, primarily executed by software engineers.
Key Process Activities:
Software Specifications: Define what the software should do and any constraints on its operation.
Software Development: Craft the software that meets the requirements defined in specifications.
Software Validation: Ensure the software meets customer expectations and functions as intended.
Software Evolution: Adapt and modify the software as client needs change over time.
Software Process Models
Definition: A software process model is an abstract representation of the actual software process viewed from a specific perspective.
Types of Models:
Workflow Model: Shows sequences of activities, inputs, outputs, and dependencies. Focuses on human actions.
Dataflow/Activity Model: Represents the process through activities that transform data; can involve individual or automated actions.
Role/Action Model: Highlights the roles of individuals involved in the software process and their associated activities.
Need for Process Model
- A process model ensures systematic software development, helping team members understand their roles and the activities preceding their tasks.
- Benefits:
- Enforces discipline and clarity in the development process.
- Facilitates effective monitoring of project progress.
- Establishes clear entry and exit criteria for each phase, minimizing chaos during development.
- Essential for avoiding failures in software projects due to uncoordinated efforts.
Software Development Life Cycle (SDLC) Models
Definition: SDLC is a structured model outlining the phases of developing an information system from feasibility studies to software maintenance.
Phases of SDLC:
Requirement Analysis
Designing
Coding
Testing
Deployment
Maintenance
Types of SDLC Models:
Waterfall
Rapid Application Development (RAD)
Spiral
V-Model
Incremental
Agile
Iterative
Big Bang
Waterfall Model
Introduction: Proposed by Winston Royce in 1970, this model outlines a linear sequence of five phases.
Phases of Waterfall Model:
- Requirements Analysis and Specification: Documenting software requirements, creating a Software Requirement Specification (SRS) document.
- Design: Transforming requirements into a detailed software design documented in a Software Design Document (SDD).
- Implementation and Unit Testing: Coding based on the design, followed by testing of individual components.
- Integration and System Testing: Validating the integration of various modules and overall system testing to ensure quality.
- Operation and Maintenance: Ongoing support and updates post-delivery to meet evolving user needs.
Advantages:
Simple and easy to manage, especially suitable for small projects with well-understood requirements.
Fixed phases allow clear progress tracking and deliverables management.
Customer clarity due to strict reporting.
Disadvantages:
Limited customer interaction; feedback is late in the project.
Difficulty in changing requirements once development starts.
High risk with complex projects where requirements may change.
When to Use Waterfall Model:
Requirements are clear, fixed, and understood.
The project is short and well-defined with minimal changes expected.
Examples:
Construction projects, where stages are linear (requirements, design, construction, testing).
Software applications development, similarly reflecting a stepped process.
Practice Questions
- Describe the phases in a typical SDLC process.
- How does the Waterfall Methodology differ from other SDLC methodologies?
- Explain each stage of the waterfall methodology.
- What applications suit the Waterfall Model?
- Discuss the pros and cons of the Spiral model.
- Assess the feasibility of reverting to an earlier phase after transitioning to later ones in the Waterfall Model.