Challenge

Project 2 - V&V SW Analysis II

Explain the different software development lifecycle models.

Software development life cycle (SDLC) is a structured process that is used to design, develop, and test good-quality software. SDLC, or software development life cycle, is a methodology that defines the entire procedure of software development step-by-step. The goal of the SDLC life cycle model is to deliver high-quality, maintainable software that meets the user’s requirements. SDLC in software engineering models outlines the plan for each stage so that each stage of the software development model can perform its task efficiently to deliver the software at a low cost within a given time frame that meets users requirements.

The waterfall model is a software development model used in the context of large, complex projects, typically in the field of information technology. It is characterized by a structured, sequential approach to project management and software development.

The waterfall model is useful in situations where the project requirements are well-defined and the project goals are clear. It is often used for large-scale projects with long timelines, where there is little room for error and the project stakeholders need to have a high level of confidence in the outcome.

Following are the features of the waterfall model:

  1. Sequential Approach: The waterfall model involves a sequential approach to software development, where each phase of the project is completed before moving on to the next one.
  2. Document-Driven: The waterfall model depended on documentation to ensure that the project is well-defined and the project team is working towards a clear set of goals.
  3. Quality Control: The waterfall model places a high emphasis on quality control and testing at each phase of the project, to ensure that the final product meets the requirements and expectations of the stakeholders.
  4. Rigorous Planning: The waterfall model involves a careful planning process, where the project scope, timelines, and deliverables are carefully defined and monitored throughout the project lifecycle.

The classical waterfall model divides the life cycle into a set of phases. This model considers that one phase can be started after the completion of the previous phase. That is the output of one phase will be the input to the next phase. Thus the development process can be considered as a sequential flow in the waterfall. Here the phases do not overlap with each other. The Waterfall Model has six phases which are:


1. Feasibility Study

The main goal of this phase is to determine whether it would be financially and technically feasible to develop the software. The feasibility study involves understanding the problem and then determining the various possible strategies to solve the problem. These different identified solutions are analyzed based on their benefits and drawbacks. The best solution is chosen and all the other phases are carried out as per this solution strategy.

2. Requirements Analysis and Specification

The Requirements Analysis and specification phase aims to understand the exact requirements of the customer and document them properly. This phase consists of two different activities.

  • Requirement gathering and analysis: Firstly all the requirements regarding the software are gathered from the customer and then the gathered requirements are analyzed. The goal of the analysis part is to remove incompleteness (an incomplete requirement is one in which some parts of the actual requirements have been omitted) and inconsistencies (an inconsistent requirement is one in which some part of the requirement contradicts some other part).
  • Requirement specification: These analyzed requirements are documented in a software requirement specification (SRS) document. SRS document serves as a contract between the development team and customers. Any future dispute between the customers and the developers can be settled by examining the SRS document.

3. Design

The goal of this phase is to convert the requirements acquired in the SRS into a format that can be coded in a programming language. It includes high-level and detailed design as well as the overall software architecture. A Software design development is used to document all of this effort (SDD).

4. Coding and Unit Testing

In the coding phase software design is translated into source code using any suitable programming language. Thus each designed module is coded. The unit testing phase aims to check whether each module is working properly or not.

5. Integration and System testing

Integration of different modules is undertaken soon after they have been coded and unit tested. Integration of various modules is carried out incrementally over several steps. During each integration step, previously planned modules are added to the partially integrated system and the resultant system is tested. Finally, after all the modules have been successfully integrated and tested, the full working system is obtained and system testing is carried out on this. System testing consists of three different kinds of testing activities as described below.

  • Alpha testing: Alpha testing is the system testing performed by the development team.
  • Beta testing: Beta testing is the system testing performed by a friendly set of customers.
  • Acceptance testing: After the software has been delivered, the customer performs acceptance testing to determine whether to accept the delivered software or reject it.

6. Maintenance

Maintenance is the most important phase of a software life cycle. The effort spent on maintenance is 60% of the total effort spent to develop a full software. There are three types of maintenance.

  • Corrective Maintenance: This type of maintenance is carried out to correct errors that were not discovered during the product development phase.
  • Perfective Maintenance: This type of maintenance is carried out to enhance the functionalities of the system based on the customer’s request.
  • Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to work in a new environment such as working on a new computer platform or with a new operating system.

Below are some of the major advantages of this SDLC model.

  • Easy to Understand: The Classical Waterfall Model is very simple and easy to understand.
  • Individual Processing: Phases in the Classical Waterfall model are processed one at a time.
  • Properly Defined: In the classical waterfall model, each stage in the model is clearly defined.
  • Clear Milestones: The classical Waterfall model has very clear and well-understood milestones.
  • Properly Documented: Processes, actions, and results are very well documented.
  • Reinforces Good Habits: The Classical Waterfall Model reinforces good habits like define-before-design and design-before-code.
  • Working: Classical Waterfall Model works well for smaller projects and projects where requirements are well understood.

Below are some major drawbacks of this model.

  • No Feedback Path: In the classical waterfall model evolution of software from one phase to another phase is like a waterfall. It assumes that no error is ever committed by developers during any phase. Therefore, it does not incorporate any mechanism for error correction.
  • Difficult to accommodate Change Requests: This model assumes that all the customer requirements can be completely and correctly defined at the beginning of the project, but the customer’s requirements keep on changing with time. It is difficult to accommodate any change requests after the requirements specification phase is complete.
  • No Overlapping of Phases: This model recommends that a new phase can start only after the completion of the previous phase. But in real projects, this can’t be maintained. To increase efficiency and reduce cost, phases may overlap.
  • Limited Flexibility: The Waterfall Model is a rigid and linear approach to software development, which means that it is not well-suited for projects with changing or uncertain requirements. Once a phase has been completed, it is difficult to make changes or go back to a previous phase.
  • Limited Stakeholder Involvement: The Waterfall Model is a structured and sequential approach, which means that stakeholders are typically involved in the early phases of the project (requirements gathering and analysis) but may not be involved in the later phases (implementation, testing, and deployment).
  • Late Defect Detection: In the Waterfall Model, testing is typically done toward the end of the development process. This means that defects may not be discovered until late in the development process, which can be expensive and time-consuming to fix.
  • Lengthy Development Cycle: The Waterfall Model can result in a lengthy development cycle, as each phase must be completed before moving on to the next. This can result in delays and increased costs if requirements change or new issues arise.

Here are some cases where the use of the Waterfall Model is best suited:

  • Well-understood Requirements: Before beginning development, there are precise, reliable, and thoroughly documented requirements available.
  • Very Little Changes Expected: During development, very little adjustments or expansions to the project’s scope are anticipated.
  • Small to Medium-Sized Projects: Ideal for more manageable projects with a clear development path and little complexity.
  • Predictable: Projects that are predictable, low-risk, and able to be addressed early in the development life cycle are those that have known, controllable risks.
  • Regulatory Compliance is Critical: Circumstances in which paperwork is of utmost importance and stringent regulatory compliance is required.
  • Client Prefers a Linear and Sequential Approach: This situation describes the client’s preference for a linear and sequential approach to project development.
  • Limited Resources: Projects with limited resources can benefit from a set-up strategy, which enables targeted resource allocation.

Here are some application of SDLC waterfall model:

  • Large-scale Software Development Projects: The Waterfall Model is often used for large-scale software development projects, where a structured and sequential approach is necessary to ensure that the project is completed on time and within budget.
  • Safety-Critical Systems: The Waterfall Model is often used in the development of safety-critical systems, such as aerospace or medical systems, where the consequences of errors or defects can be severe.
  • Government and Defense Projects: The Waterfall Model is also commonly used in government and defense projects, where a rigorous and structured approach is necessary to ensure that the project meets all requirements and is delivered on time.
  • Projects with well-defined Requirements: The Waterfall Model is best suited for projects with well-defined requirements, as the sequential nature of the model requires a clear understanding of the project objectives and scope.
  • Projects with Stable Requirements: The Waterfall Model is also well-suited for projects with stable requirements, as the linear nature of the model does not allow for changes to be made once a phase has been completed.

V-Model (Verification and Validation Model) is widely used for its systematic approach to software testing and development. It is also known as the Validation and Verification Model because each development phase has a corresponding testing phase. Unlike the traditional Waterfall Model, which follows a linear progression, the V-Model emphasizes simultaneous development and testing, reducing defects at an early stage.The V-Model is called so because of its V-shaped representation, which visually depicts the relationship between development and testing phases. It follows a sequential design where each stage must be completed before moving to the next, with corresponding validation phases.

Phases of the V-Model


The V-Model consists of two major components:

  1. Verification Phases (Development Phase)

  2. Validation Phases (Testing Phase)

Each development phase has a corresponding testing phase to ensure early defect detection and prevention. Let’s explore each phase in detail.

Verification Phases

1. Requirement Analysis

  • The first phase in the V-Model is gathering and analyzing customer requirements.

  • Business Analysts and stakeholders define system requirements and expected functionalities.

  • These requirements are documented in a Software Requirement Specification (SRS) document.

  • Testing Focus: Acceptance Test Plan is created to validate customer needs.

2. System Design

  • This phase focuses on defining system architecture based on the requirements.

  • Hardware and software specifications are outlined.

  • Testing Focus: System Test Plan is prepared to verify the system's overall functionalities.

3. High-Level Design (HLD)

  • The high-level design provides an abstract overview of modules, data flow, and system architecture.

  • Defines major functionalities, module interactions, and security requirements.

  • Testing Focus: Integration Test Plan is created to validate module interaction.

4. Low-Level Design (LLD)

  • The low-level design specifies detailed module design, algorithms, and logic.

  • Each module is further broken down into sub-modules.

  • Testing Focus: Unit Test Plan is created to validate each component's functionality.

5. Coding (Implementation Phase)

  • This phase involves actual code writing based on the LLD.

  • Developers implement and integrate the software modules.

  • Testing Focus: Unit testing ensures each module functions correctly.

Validation Phases

Each verification phase has a corresponding validation (testing) phase to ensure quality at every stage.

1. Unit Testing

  • Conducted during the coding phase.

  • Each software module is tested individually for correctness.

  • Typically performed using automated tools like JUnit, NUnit, etc.

2. Integration Testing

  • Verifies communication between integrated modules.

  • Ensures seamless interaction between software components.

  • Types: Top-down, Bottom-up, and Hybrid Integration Testing.

3. System Testing

  • Conducted on a complete system to validate its functionality.

  • Tests for performance, security, load, and usability.

  • Ensures compliance with the system design.

4. Acceptance Testing

  • Final testing phase performed by end-users or customers.

  • Ensures the system meets business and functional requirements.

  • Types: Alpha Testing (internal users) and Beta Testing (real users).

Advantages of V-Model

  1. Early Defect Detection: Testing begins at the requirement phase, reducing the risk of major defects.

  2. Clarity in Phases: Each phase has clearly defined deliverables, making tracking easier.

  3. Better Quality Assurance: Testing at each phase improves the final product quality.

  4. Well-structured and Disciplined Approach: Ensures systematic software development and validation.

  5. Easy to Manage: Since phases are sequential, project progress is easy to monitor.

Disadvantages of V-Model

  1. Rigidity: Once a phase is completed, making changes is difficult and costly.

  2. Time-consuming: Extensive documentation and testing at each phase increase project duration.

  3. Not Suitable for Complex or Evolving Projects: It struggles with projects where requirements change frequently.

Real-World Applications of the V-Model

The V-Model is widely used in industries where reliability is critical. Some applications include:

  • Aerospace and Defense Systems: Ensures high reliability and safety.

  • Medical Software Development: Compliance with regulatory standards like FDA.

  • Automobile Embedded Systems: Ensures bug-free automotive software.

  • Banking and Financial Systems: Security and accuracy are paramount.


The V-Model provides a robust framework for systematic software development and validation. It is highly beneficial for projects requiring high-quality standards and minimal errors. However, its rigidity makes it unsuitable for rapidly evolving projects. Understanding the V-Model helps organizations implement structured software development, ensuring reliable and efficient software products.

The Agile Model is one of the most widely used Software Development Life Cycle (SDLC) methodologies due to its flexibility, iterative nature, and customer-centric approach. Unlike traditional SDLC models such as the Waterfall Model or V-Model, Agile promotes adaptive planning, evolutionary development, and continuous improvement while allowing rapid and flexible responses to changes.The Agile methodology has gained immense popularity due to its ability to deliver high-quality software faster while maintaining adaptability to ever-changing customer requirements.

The Agile Model is an iterative and incremental approach to software development, where requirements and solutions evolve through collaboration between cross-functional teams. Agile aims to deliver software in small, functional increments rather than developing the entire system in one go.

Key Principles of Agile (As per the Agile Manifesto)

The Agile Manifesto, introduced in 2001, outlines the following core values:

  1. Individuals and interactions over processes and tools.

  2. Working software over comprehensive documentation.

  3. Customer collaboration over contract negotiation.

  4. Responding to change over following a plan.

In addition to these values, Agile follows 12 Principles, which emphasize customer satisfaction, flexibility, frequent delivery, continuous improvement, and sustainable development.

Phases of the Agile Model


The Agile Model consists of several iterative cycles called Sprints (or Iterations), typically lasting 2-4 weeks. Each sprint delivers a potentially shippable product increment. The Agile SDLC is divided into multiple phases:

1. Concept / Planning Phase

  • The project stakeholders, product owners, and development team collaborate to define the overall vision and scope of the project.

  • The product backlog is created, listing all features and requirements.

  • High-level estimation of cost, time, and resources is performed.

  • A minimum viable product (MVP) is identified to ensure early feedback and validation.

2. Requirement Gathering & Analysis

  • Unlike traditional models, Agile does not rely on static requirements.

  • Instead, user stories (short descriptions of functionalities from an end-user perspective) are written.

  • Requirements are broken down into smaller, prioritized backlog items that can be developed in iterations.

  • Constant collaboration with customers ensures requirements remain flexible and adaptable to changes.

3. Design Phase

  • Instead of a single, rigid design document, Agile follows an evolutionary design approach.

  • Teams create a high-level architectural framework, focusing on modularity and scalability.

  • User interfaces, databases, and APIs are planned but remain adaptable to changes.

  • Design decisions are refined continuously based on feedback.

4. Development Phase

  • Agile promotes incremental and iterative development.

  • Small, functional software features are built in short cycles (sprints).

  • Continuous coding, testing, and integration occur to ensure quality.

  • Development follows best coding practices, including Test-Driven Development (TDD) and Pair Programming.

5. Testing Phase

  • Unlike traditional models where testing is a separate phase, Agile follows a continuous testing approach.

  • Developers and testers work closely to test features as they are developed.

  • Automated and manual testing techniques such as Unit Testing, Integration Testing, Regression Testing, and User Acceptance Testing (UAT) are applied.

  • Each sprint ends with a Sprint Review, where the completed functionalities are demonstrated to stakeholders.

6. Deployment & Release

  • Once a sprint is completed and approved, the tested functionality is deployed to production or staging environments.

  • Agile follows Continuous Deployment (CD) and Continuous Integration (CI) methodologies to release features faster.

  • Feedback is gathered from end-users to refine and improve the next iterations.

7. Maintenance & Support

  • Agile ensures that software remains updated and efficient through continuous improvements.

  • Bug fixes, performance enhancements, and new feature additions are prioritized in future sprints.

  • Customer feedback is incorporated into the next iteration cycle.

Agile Methodologies

There are several frameworks under the Agile umbrella, each tailored to different development environments and team structures. The most common Agile methodologies include:

1. Scrum

  • One of the most widely used Agile frameworks.

  • Development occurs in short, time-boxed iterations called Sprints (typically 2-4 weeks).

  • A Scrum Master facilitates the process, and a Product Owner manages the backlog.

  • Daily stand-up meetings ensure transparency and progress tracking.

2. Kanban

  • Focuses on visualizing work using a Kanban Board with columns (To Do, In Progress, Done).

  • Work items are moved across the board as they progress.

  • Limits work-in-progress (WIP) to prevent bottlenecks and improve efficiency.

3. Extreme Programming (XP)

  • Emphasizes high-quality coding through Test-Driven Development (TDD) and Pair Programming.

  • Short development cycles ensure quick feedback.

  • Encourages continuous refactoring to improve code maintainability.

4. Lean Development

  • Inspired by Lean Manufacturing principles.

  • Focuses on minimizing waste and maximizing customer value.

  • Encourages Just-In-Time (JIT) development and continuous delivery.

5. Feature-Driven Development (FDD)

  • Centered around feature-based planning and iterative delivery.

  • Follows a model where each feature is designed, developed, and tested separately.

  • Works well for large-scale enterprise projects.

Advantages of Agile Model

  1. Customer Satisfaction: Continuous engagement with stakeholders ensures the final product meets business needs.

  2. Flexibility & Adaptability: Agile quickly adapts to requirement changes.

  3. Faster Time-to-Market: Small incremental releases enable quicker delivery of working software.

  4. Improved Quality: Continuous testing and feedback loops enhance software quality.

  5. Risk Reduction: Early identification of issues reduces project risks.

  6. High Team Collaboration: Agile fosters better communication and teamwork.

  7. Cost Efficiency: Frequent feedback ensures that only necessary features are developed, reducing wasted effort.

Disadvantages of Agile Model

  1. Requires Skilled Team Members: Agile demands high collaboration and technical expertise.

  2. Scope Creep: Frequent requirement changes can lead to uncontrolled project expansion.

  3. Lack of Documentation: Prioritization of working software over documentation may lead to insufficient records.

  4. Difficult to Predict Costs & Timelines: Since requirements evolve, precise estimates can be challenging.

  5. Not Suitable for All Projects: Large-scale projects with rigid regulatory requirements may struggle with Agile.

Real-World Applications of Agile

Agile is widely used across various industries, including:

  • Software & IT Industry: Web and mobile applications, SaaS products.

  • Banking & Finance: Online banking, fraud detection systems.

  • Healthcare: Electronic Health Records (EHR), Telemedicine applications.

  • E-commerce: Personalized shopping experiences, recommendation engines.

  • Automotive & Embedded Systems: Agile adoption in self-driving cars and IoT.

The Spiral Model is a risk-driven Software Development Life Cycle (SDLC) model that combines iterative development with systematic aspects of the Waterfall Model. It is particularly useful for large, complex, and high-risk projects where continuous risk assessment and customer feedback are essential.

The Spiral Model, introduced by Barry Boehm in 1986, allows software development teams to refine and improve their projects through multiple iterations while managing potential risks effectively.




Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.