Chapter 2 Software Development Life Cycle Models [Compatibility Mode]

Software Life Cycle Models

Introduction to Software Engineering

The goal of Software Engineering is to provide structured models and processes for producing high-quality, well-documented, maintainable software predictably while meeting user requirements and adhering to specified constraints, such as time and budget.

Definition of Software Life Cycle

Software Life Cycle: The period that starts from the conception of a software product until it is no longer available for use or has reached the end of its life cycle. The life cycle typically includes several critical phases, which are:

  1. Requirement Phase: Gathering and analyzing requirements from stakeholders to define what the software should accomplish.

  2. Design Phase: Detail-oriented planning on how the software will function, including architectural design and user interface.

  3. Implementation Phase: The actual coding of the software, where developers translate the design into a functional application.

  4. Test Phase: Rigorous testing of the software to identify and resolve bugs or issues before deployment.

  5. Installation and Checkout Phase: Deploying the software to the production environment and verifying that it functions as intended.

  6. Operation and Maintenance Phase: Ongoing support and updates after the software is in use to ensure performance, fix bugs, and add features.

  7. Retirement Phase (sometimes applicable): Determining when to decommission a software product that has reached the end of its useful life.

Software Development Models

1. Build & Fix Model

Characteristics:

  • Constructed without clear specifications or design guidelines.

  • Ad hoc approach with a simple two-phase model: Build -> Fix.

  • Most applicable for small tasks (typically within 100-200 lines of code).

  • Often unsatisfactory for larger software projects due to lack of structure.

  • Code can become unmaintainable and unenhanceable due to a lack of design.

2. Waterfall Model

Description:

  • Phases follow a linear progression: Requirements > Design > Implementation > Testing > Operation and Maintenance.

  • The model is visually represented as cascading down like a waterfall, hence the name.

Advantages:

  • Methodical and straightforward, making it easy to understand and manage.

  • Encourages defining requirements before initiating design and prior coding.

Disadvantages:

  • Difficulty in defining all requirements upfront, as they may evolve.

  • Inflexible to changes once the project has commenced.

  • Final working versions of the system become available late in the development process.

  • Scalability issues when applied to larger projects.

3. Incremental Process Models

Characteristics:

  • Allows for precise requirements definition without ambiguity about the final product's functionality.

  • Usable versions of the product are delivered incrementally after each cycle.

  • Popular in scenarios where a quick turnover for limited functionality systems is required.

4. Iterative Enhancement Model

Characteristics:

  • Comprises similar phases to the Waterfall model but with fewer restrictions on phase progression.

  • Phases occur in cycles, with enhancements made in each cycle as user feedback is incorporated.

Example Workflow:

  • Requirement Specification > Architectural Design > Detailed Design > Implementation and Unit Testing > Integration and Unit Testing > Operation and Maintenance.

5. Rapid Application Development (RAD) Model

Characteristics:

  • Originated in 1980 by IBM to facilitate rapid software development.

  • User participation is crucial for defining the requirements and directing the development process.

  • Involves building rapid prototypes, which are evaluated for user feedback as part of an iterative refinement process.

Advantages:

  • Significantly reduces the time taken for user feedback loops, improving overall responsiveness to user needs.

Challenges:

  • Not ideal for projects lacking active user engagement.

  • Requires a healthy supply of reusable components and skilled developers for effective implementation.

6. Evolutionary Process Models

Characteristics:

  • Similar to the Iterative Enhancement model but focuses on coding and transformation in cyclical phases rather than emphasizing the delivery of a full product after each cycle.

  • Particularly useful in projects that involve new or poorly understood technology.

7. Prototyping Model

Characteristics:

  • Involves creating a prototype that may be functional but is not intended to be the final product.

  • While initial costs may be higher due to prototyping, this approach can lead to reduced overall costs compared to the traditional Waterfall model due to better-defined requirements and reduced revisions.

8. Spiral Model

Overview:

  • Incorporates a focus on risk assessment and management, enabling proactive identification and resolution of project risks.

  • Developed by Barry Boehm in 1986, this model visualizes cost and progress through radial and angular dimensions.

Dimensions:

  • Radial: Represents cumulative costs incurred throughout the project lifecycle.

  • Angular: Represents the progress achieved during each phase of development.

Major Activities:

  1. Planning: Establishing project objectives, assessing alternatives, and defining constraints.

  2. Risk Analysis: Compiling risks and developing mitigation strategies.

  3. Development: Carrying out product development and testing.

  4. Assessment: Collecting feedback through customer evaluation.

Advantages:

  • Offers a wide range of options and integrates benefits from various models.

  • High flexibility allows adaptation to meet specific project requirements.

Challenges:

  • Often lacks explicit process guidance, making it complex and dependent on comprehensive risk assessment skills.

9. Unified Process

Overview:

  • Developed by I. Jacobson, G. Booch, and J. Rumbaugh to achieve high-quality and maintainable software that conforms to time and budget constraints.

  • The process is broken down into fixed-length iterations, resembling a series of mini-projects that enhance continuous development.

Phases:

  1. Inception: Focus on defining project scope and gathering essential requirements.

  2. Elaboration: Establish the architectural foundation for the project along with resource evaluation and overall project planning.

  3. Construction: Implementation of the product occurs, involving rigorous testing and resource optimization.

  4. Transition: Final testing and delivery along with training users on the product takes place in this phase.

Selection of Life Cycle Model

The selection of an appropriate life cycle model is highly contextual and depends upon factors such as:

  • Project requirements defined by stakeholders and users.

  • Capability and experience level of the development team.

  • Level of user involvement throughout the development process.

  • Type of project being undertaken, which informs the associated risk factors.

Multiple Choice Questions

Example Questions:

  • Spiral Model was developed by (b) Barry Boehm.

  • Most suitable model for frequently changing requirements: (c) RAD model.

  • Unified process is maintained by (b) Rational Software Corporation.