SDLC Models , Verification Vs Validation & Static Vs Dynamic Testing


  • Advantages of Waterfall Model:
    • Good Product Quality: The step-by-step process ensures a high-quality end product.
    • Fewer Bugs: Not allowing changes in requirements reduces the chance of finding bugs later.
    • Lower Initial Costs: Hiring testers later on means lower starting costs.
    • Ideal for Small Projects: Best for small projects with fixed requirements.
  • Disadvantages of Waterfall Model:
    • No Changes Allowed: Once requirements are set, they can't be changed.
    • Continued Defects: If there's a problem in the requirements, it carries through to later stages.
    • Higher Overall Costs: Fixing defects takes time, making the overall cost higher.
    • Testing Starts Late: Testing begins only after the coding is done.

  • Key Points:
    • Iterative Approach: The Spiral Model works in cycles, allowing us to revisit and improve things as we go along.
    • Improving on Waterfall: It's designed to fix the issues of the Waterfall Model by being more flexible and allowing changes during the development process.
    • Module Dependency: We use the Spiral Model when different parts of the software depend on each other.
    • Continuous Releases: At the end of each cycle, a new version of the software is given to the customer. It's like giving them a taste of the cake at each stage of baking.
    • Version Control: Because we release different versions, it's also known as a version control model.
  • Advantages of Spiral Model:
    • Continuous Testing: We test the software in each cycle, making sure it's working well before moving on.
    • Customer Involvement: The customer gets to use the software at various stages, giving them a hands-on experience.
    • Flexible Requirements: Changes in requirements are allowed after each cycle, giving room for adjustments.
  • Disadvantages of Spiral Model:
    • No Mid-Cycle Changes: Once a cycle starts, you can't make changes until it's finished.
    • Looks Like Waterfall: Each cycle might seem like the Waterfall Model, which can limit its flexibility.
    • No Testing Early On: Testing happens later in the process, not during the requirement and design phases.


  • Advantages of V-Model:
    • Easy to Understand: The V-Model is straightforward. It's like climbing a staircase – each step corresponds to a development or testing phase, making it easy to grasp.
    • Early Testing: Testing is planned right from the beginning, ensuring that any issues are identified early in the process.
    • Clear Correspondence: Each development stage has a corresponding testing phase, which makes it clear what needs to be tested at each step.
    • Reduced Uncertainty: Because testing is aligned with development phases, there's less uncertainty about what to test and when.
  • Disadvantages of V-Model:
    • Rigid and Sequential: Just like a staircase, you can't easily go back once you've moved to the next step. This can be a problem if changes are needed later on.
    • Late Feedback: Testing happens after development, so if there are issues, they might be discovered late in the process.
    • Not Agile-Friendly: It's not very adaptable to changes. If there are alterations in requirements, it might be challenging to adjust.
    • Limited Client Interaction: Unlike some other models, there's not much interaction with the client until later stages, which can be a disadvantage if their input is crucial early on.
Verification Vs Validation
  • Verification checks whether we are building the right product.
  • Focus on Documentation
  • Verification typically involves.
    • Reviews
    • Walkthroughs
    • Inspections
  • Validation checks whether we are building the product right.
    • Takes place after verifications are completed. 
    • Focus on Software
    • Validation typically involves actual testing.  
    • Unit testing, integration, system testing, UAT testing

Static V/S Dynamic Testing
  • Static testing is an approach to test project documents in the form of Reviews, Walkthroughs and Inspections.
  • Dynamic testing is an approach to test the actual software by giving inputs and observing results.