Introduction to Software
Engineering
Anand Kumar
Assistant Professor
Department of Computer Science and Engineering,
SEC, Sasaram
Waterfall SDLC Models
● The Waterfall model is one of the oldest and most straightforward approaches to
software development. We can think of the waterfall model as a generic model that
has been extended in many ways for catering to certain specific software.
● The Waterfall model follows a linear and sequential approach to software
development. Each phase in the development process must be completed before
moving on to the next one, resembling the downward flow of a waterfall.
Waterfall SDLC Models
Phases of Waterfall SDLC Models:
1. Requirements: The first phase involves gathering requirements from stakeholders and
analyzing them to understand the scope and objectives of the project.
2. Design: Once the requirements are understood, the design phase begins. This involves
creating a detailed design document that outlines the software architecture, user interface,
and system components.
3. Development: The Development phase includes implementation involves coding the software
based on the design specifications. This phase also includes unit testing to ensure that each
component of the software is working as expected.
4. Testing: In the testing phase, the software is tested as a whole to ensure that it meets the
requirements and is free from defects.
5. Deployment: Once the software has been tested and approved, it is deployed to the production
environment.
6. Maintenance: The final phase of the Waterfall Model is maintenance, which involves fixing
any issues that arise after the software has been deployed and ensuring that it continues to
meet the requirements over time.
Advantages of the Waterfall SDLC Models:
● Simplicity: The linear and sequential nature of the Waterfall models makes it easy
to understand and implement.
● Clear Documentation: Each phase has its own set of documentation, making it
easier to track progress and manage the project.
● Stable Requirements: Well-suited for projects with stable and well-defined
requirements at the beginning.
● Predictability: Due to its structured nature, the Waterfall model allows for better
predictability in terms of timelines and deliverables
Disadvantages of the Waterfall SDLC Models:
● Rigidity: The model is highly inflexible once a phase is completed, making it challenging
to accommodate changes.
● Late Testing: Testing is performed after the implementation phase, so defects might not
be discovered until late in the process.
● Limited Client Involvement: Clients are involved mainly in the initial phase, and
significant changes cannot be easily accommodated later in the development process.
● No Prototyping: The models lack the provision for creating prototypes, which could be a
disadvantage in projects where user feedback is crucial.
When to Use the Waterfall SDLC Models:
● Well-Defined Requirements: When project requirements are clear, stable, and unlikely to
change significantly.
● Small to Medium-Sized Projects: For smaller projects with straightforward objectives and
limited complexity.
● Mission-Critical Systems: In scenarios where it is crucial to have a well-documented and
predictable development process, especially for mission-critical systems.
Iterative Waterfall Model
● In a practical software development project, the classical Waterfall Model is hard to
use. So, the Iterative Waterfall Model can be thought of as incorporating the necessary
changes to the classical Waterfall Model to make it usable in practical software
development projects. It is almost the same as the classical Waterfall Model, except it
has backward feedback path.
● The Iterative Waterfall Model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical Waterfall Model.
Iterative Waterfall Model Cont…
1. When errors are detected at some later phase, these feedback paths allow for
correcting errors committed by programmers during some phase.
2. The feedback paths allow the phase to be reworked in which errors are committed
and these changes are reflected in the later phases.
3. Although the feasibility study phase doesn’t usually get frequent feedback, the
iterative nature of this model allows for revisiting and updating it if new
requirements or changes in technology come up later. This helps keep the project
aligned with its goals throughout development.
4. It is good to detect errors in the same phase in which they are committed.
5. It reduces the effort and time required to correct the errors.
6. A real-life example could be building a new website for a small business.
Process of Iterative Waterfall Model
Process of Iterative Waterfall Model Cont…
1. Requirements Gathering: This is the first stage where the business owners and developers
meet to discuss the goals and requirements of the website.
2. Design: In this stage, the developers create a preliminary design of the website based on the
requirements gathered in stage 1.
3. Implementation: In this stage, the developers begin to build the website based on the design
created in stage 2.
4. Testing: Once the website has been built, it is tested to ensure that it meets the requirements
and functions properly.
5. Deployment: The website is then deployed and made live to the public.
6. Review and Improvement: After the website has been live for a while, the business owners
and developers review its performance and make any necessary improvements.
Advantages of Iterative Waterfall Model
● Phase Containment of Errors: Errors are detected and fixed as close to their source as
possible, reducing costly rework and delays.
● Collaboration: Continuous collaboration between business owners and developers
ensures the product meets business needs and improves with feedback at each
iteration.
● Flexibility: The model allows for easy incorporation of new requirements or features
in subsequent iterations, ensuring the product evolves with the business.
● Testing and Feedback: Regular testing and feedback cycles help identify and fix
issues early, improving the product’s quality and relevance.
● Faster Time to Market: Incremental development allows parts of the product to be
delivered sooner, enabling user feedback while further improvements are made.
● Risk Reduction: Continuous feedback and testing help identify risks early, reducing
the likelihood of costly errors and delays.
Drawbacks of Iterative Waterfall Model
1. Difficult to incorporate change requests: The iterative waterfall model does not
allow change requests after the development phase starts.
2. Incremental delivery not supported: The full software is completely developed and
tested as there is no scope for any intermediate delivery.
3. Overlapping of phases not supported: One phase can start after completion of the
previous phase, But in real projects, phases may overlap to reduce the effort and
time needed to complete the project.
4. Risk handling not supported: Projects may suffer from various types of risks. But,
the Iterative waterfall model has no mechanism for risk handling.
5. Limited customer interactions: Customer interaction occurs at the start of the
project at the time of requirement gathering and at project completion at the time
of software delivery. These fewer interactions with the customers may lead to many
problems as the finally developed software may differ from the customers’ actual
requirements.
V-Process Model
● The V-model is named after its shape,
which resembles the letter “V.”
● software development life cycle is
divided into phases and each phase is
associated
with a corresponding testing phase.
● The left-hand side of the V represents
the verification phase while the
right-hand side represents the
validation phase.
● The V-Process model emphasizes the
importance of testing and quality
assurance throughout the entire
development process.
Verification and Validation
Verification: Are we building the product correctly?
verification ensures the product is built correctly. It ensures that the software is built
correctly according to the design specifications and requirements at each stage of
development, focusing on internal consistency and adherence to standards.
Validation: Are we building the correct product?
validation ensures the right product is built for the user's needs. validation is about checking
if the software meets the user’s needs, If you’re building a website, validation would involve
checking if it provides the information users are looking for along with other technical
concerns like whether the website loads quickly and is easy to navigate.
Difference between Verification and Validation
Verification Validation
Aspect
Definition Ensures the software is being built correctly Ensures the software meets the user’s needs and
according to specifications and design documents. requirements.
Scope Focuses on compliance with specifications, design, It focuses on real-world scenarios, usability, and
and technical standards. fulfilling end-user requirements.
Outcome Identifies defects in the product development Ensures the software delivers value to the end-user
process. and fulfills business requirements.
Focus Focuses on the internal aspects of the software Focuses on the external aspects (e.g., functionality,
(e.g., design, code). user experience).
Timing in Happens early in the SDLC during the design, Happens later in the SDLC, usually after
SDLC development, and implementation stages. verification, during testing, and after deployment.
Techniques Reviews, walkthroughs, inspections, static analysis, User Acceptance Testing (UAT), functional testing,
Used and code reviews. system testing, beta testing.
Nature Typically, it is a static process (without executing Typically, a dynamic process (involves the actual
the code). execution of the software).
Cost of This can lead to issues in system design or This can lead to a product that doesn’t meet user
Failure implementation, which will require rework. needs, which will require significant rework or
redesign.
V-Process Model cont…
V-Model Verification Phases
The verification phase includes several
steps: business requirement analysis,
system analysis, software architecture
design, module design and coding.
In the business requirement analysis step,
the team comes to understand the product
requirements as laid out by the customer.
In the system analysis step, the system
engineers analyze and interpret the
business requirements of the proposed
system by studying the user requirements
document.
V-Process Model cont…
In the software architecture design stage, the
team selects the software architecture based on
the list of modules, the brief functionality of each
module, the interface relationships, dependencies,
database tables, architecture diagrams, technology
detail and more. The integration testing model is
developed in this phase.
In the module design stage, the development team
breaks down the system into small modules and
specifies the detailed design of each module,
which we call low-level design.
Finally, we begin coding. The development team
selects a suitable programming language based on
the design and product requirements. There are, of
course, guidelines and standards for coding and
the code will go through many reviews to check its
performance.
V-Process Model cont…
V-Model Validation Phases
The validation phase involves dynamic analysis
methods and testing to ensure the software
product meets the customer’s requirements and
expectations. This phase includes several stages
including unit testing, integration testing,
system testing and acceptance testing.
During the unit testing stage, the team develops
and executes unit test plans to identify errors at
the code or unit level. This testing happens on
the smallest entities, such as program modules,
to ensure they function correctly when isolated
from the rest of the code.
V-Process Model cont…
The integration testing stage involves executing
integration test plans developed during the
architectural design step in order to verify that
groups created and tested independently can coexist
and communicate with each other.
The system testing stage involves executing system
test plans developed during the system design step,
which are composed by the client’s business team.
System testing ensures the team meets the
application developer’s expectations.
The acceptance testing step is related to the business
requirement analysis part of the V-model and
involves testing the software product in the user
environment to identify compatibility issues with the
different systems available within the user
environment. Acceptance testing also identifies
non-functional issues like load and performance
defects in the real user environment.
Prototype Model
The prototyping model is a systems
development method in which a prototype or
toy model is built, tested and then reworked
as necessary until an acceptable outcome is
achieved from which the complete system or
product can be developed.
This model works best in scenarios where
not all the project requirements are known in
detail ahead of time. It is an iterative,
trial-and-error process that takes place
between the developers and the users.
Steps of Prototype Model
1. The new system requirements are defined in as much detail as possible. This usually involves
interviewing a number of users representing all the departments or aspects of the existing system.
2. A preliminary, simple design is created for the new system.
3. The first prototype of the new system is constructed from the preliminary design. This is usually a
scaled-down system and represents an approximation of the characteristics of the final product.
4. The users thoroughly evaluate the first prototype and note its strengths and weaknesses, what needs to
be added and what should be removed. The developer collects and analyzes the remarks from the users.
5. The first prototype is modified, based on the comments supplied by the users and a second prototype of
the new system is constructed.
6. The second prototype is evaluated in the same manner as the first prototype.
7. The preceding steps are iterated as many times as necessary, until the users are satisfied that the
prototype represents the final product desired.
8. The final system is constructed, based on the final prototype.
9. The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing
basis to prevent large-scale failures and to minimize downtime.
10. Once the customer approves the prototype, the actual system is developed using the iterative waterfall
approach.
Type of Prototype Model
● Rapid throwaway. This method involves exploring ideas by quickly developing a
prototype based on preliminary requirements that is then revised through customer
feedback. The name rapid throwaway refers to the fact that each prototype is
completely discarded and may not be a part of the final product.
● Evolutionary. This approach uses a continuous, working prototype that is refined
after each iteration of customer feedback. This method saves time and effort because
each prototype is not started from scratch.
● Incremental. This technique breaks the concept for the final product into smaller
pieces and prototypes are created for each one. In the end, these prototypes are
merged into the final product.
● Extreme. This prototype model is used specifically for web development. All web
prototypes are built in an HTML format with a services layer and are then integrated
into the final product.
Rapid Application Development Model
Rapid application development is a
software development methodology that
uses minimal planning in favor of rapid
prototyping. A prototype is a working
model that is functionally equivalent to a
component of the product.
The functional modules are developed in
parallel as prototypes and are integrated
to make the complete product for faster
product delivery. Since there is no
detailed preplanning, it makes it easier to
incorporate the changes within the
development process.
RAD v/s Prototype Model
In Prototyping Model
1. The development prototype is primarily used to gain insight into the solution.
2. Choose between alternatives
3. Elicit customer feedback
4. The developed prototype is usually thrown away.
In Rapid Application Development (RAD) Model
1. The developed prototype evolves into deliverable software.
2. RAD leads to faster development compared to traditional models. However, the quality and
reliability would possibly be poorer.
In short: In the RAD model, the prototype itself is refined to be the actual software, whereas in the
prototyping model, which is a derivative of the waterfall model, used to get customer feedback, thrown
away the developed prototype, and start development afresh
Spiral Model
The spiral model also called,
Meta Model, combines the idea
of iterative development with
waterfall model with a very high
emphasis on risk analysis. It
allows incremental releases of
the product or incremental
refinement through each
iteration around the spiral.
Planning Phase (Identify Objectives)
In the planning phase, goals and requirements are defined.
This includes specifying the project scope, understanding user needs, and outlining
potential risks associated with the project.
This phase sets the foundation for risk assessment, which continues throughout the
lifecycle.
This initial phase focuses on establishing the goals for the current iteration.
Teams define the software requirements, expected functionalities, and constraints,
ensuring that stakeholder feedback is incorporated to align with user needs.
Engagement with stakeholders is crucial, as it sets the foundation for the project and
clarifies what success looks like for the ensuing development cycle.
Risk Analysis Phase
Following the definition of objectives, the team conducts a thorough risk analysis to
identify potential challenges that may affect the project.
Risks can stem from technical hurdles, resource limitations, or evolving requirements.
The development team formulates strategies to mitigate identified risks, ensuring that
adequate measures are in place to handle potential setbacks.
This crucial phase helps developers create strategies to manage uncertainties, ensuring a
more robust and resilient project.
Risks can be assessed using quantitative and qualitative techniques, allowing teams to
prioritize which risks need addressing.
Product Development Phase
Once risks have been analyzed and strategies in place, the development phase begins.
In this phase, the project team develops and tests the software according to the specified
objectives.
The actual coding, integration, and testing take place here.
This stage employs a mini-Waterfall approach, meaning that design, coding, and testing
occur in a sequential manner.
Afterward, the results are evaluated against the objectives to determine if the project is on
track and to uncover any immediate issues.
Feedback from customer involvement and initial prototypes aids in refining the software
product through iterative cycles of development.
Evaluation Phase (Plan Next Iteration)
Once the evaluation of the current iteration is complete, the team prepares for the
subsequent spiral.
The final phase involves reviewing the product against initial goals and capturing
customer feedback.
They review lessons learned, re-assess objectives, identify new risks, and make necessary
adjustments to project scope and timelines.
This ongoing cycle continues until the software development project reaches its
conclusion.
This phase ensures that the software meets the established requirements and allows for
necessary changes before moving forward.
Advantages of the Spiral Model
The Spiral Model offers various advantages that make it highly attractive for complex
software development projects:
● Risk Management: Continuous risk assessment throughout the development process
allows teams to address potential challenges before they escalate into critical issues.
● Flexibility: The model's inherent iterative nature supports modifications and
enhancements at every stage of development, facilitating an adaptive approach.
● Customer Involvement: Regular feedback loops with stakeholders ensure that the final
software product meets client expectations and needs effectively.
● Improved Quality: The iterative cycle promotes continuous refinement, leading to a
higher-quality output through regular inspections and adaptations.
● Early Error Detection: The model emphasizes early testing, which enhances the ability
to identify and resolve problems proactively.
Disadvantages of the Spiral Model
Despite its benefits, the Spiral model has a few drawbacks:
1. Cost: The continuous risk analysis and iterative development can make the Spiral model more
expensive than other SDLC methodologies.
2. Time-Consuming: The model's cyclic nature can prolong the development process.
3. Complexity: The Spiral model can be challenging to manage, especially for smaller teams or
projects with well-defined requirements.
4. Lack of Documentation: The focus on iterative development may lead to inadequate
documentation.
Conclusion
The Spiral Model stands out as a valuable choice in software engineering, especially for
projects that prioritize robust risk management and flexibility.
By supporting iterative development and continuous client feedback, it helps in delivering
high-quality software.
Its structured yet adaptable approach makes it ideal for tackling complex and large-scale
projects