What is SDLC
SDLC is a process followed for a
software project, within a software
organization. It consists of a
detailed plan describing how to
develop, maintain, replace and
alter or enhance specific software.
The life cycle defines a
methodology for improving the
quality of software and the overall
development process.
What is a Design
methodology
A software development
methodology or system
development methodology in
software engineering is a framework
that is used to structure, plan, and
control the process of developing an
information system.
A methodology can also include
aspects of the development
environment (i.e. IDEs), model-based
development, computer aided software
development, and the utilization of
particular frameworks .
SDLC Models
There are various software
development life cycle models
defined and designed which are
followed during software
development process. These models
are also referred as "Software
Development Process Models".
Each process model follows a Series
of steps unique to its type, in order
to ensure success in process of
software development.
Commonly used models
The other related methodologies
are Agile Model, RAD Model,
Rapid Application
Development and Prototyping
Models.
Waterfall Model
The Waterfall Model was first Process Model to be
introduced. It is also referred to as a linear-
sequential life cycle model. It is very simple to
understand and use. In a waterfall model, each
phase must be completed before the next phase
can begin and there is no overlapping in the phases.
The waterfall Model illustrates the software
development process in a linear sequential flow;
hence it is also referred to as a linear-sequential life
cycle model.
In "The Waterfall" approach, the whole process of
software development is divided into separate
phases. In Waterfall model, typically, the outcome
of one phase acts as the input for the next phase
sequentially.
The sequential phases in
Waterfall model
Requirement Gathering and analysis: All
possible requirements of the system to be
developed are captured in this phase and
documented in a requirement specification doc.
System Design: The requirement specifications
from first phase are studied in this phase and
system design is prepared. System Design helps in
specifying hardware and system requirements and
also helps in defining overall system architecture.
Implementation: With inputs from system design,
the system is first developed in small programs
called units, which are integrated in the next
phase. Each unit is developed and tested for its
functionality which is referred to as Unit Testing.
Phases continued
Deployment of system: Once the functional and
non functional testing is done, the product is
deployed in the customer environment or released
into the market.
Maintenance: There are some issues which come up
in the client environment. To fix those issues patches
are released. Also to enhance the product some
better versions are released. Maintenance is done to
deliver these changes in the customer environment.
Allthese phases are cascaded to each other in which
progress is seen as flowing steadily downwards (like a
waterfall) through the phases. The next phase is
started only after the defined set of goals are
achieved for previous phase and it is signed off, so
the name "Waterfall Model". In this model phases do
not overlap.
Waterfall Model
Application
whenever we are developing a
small application we go for
waterfall model.
when we have a short term
project.
Technology is understood and is
not dynamic.
when we are sure that the
requirement never changes.
Advantages of waterfall
model
Simple and easy to understand and use
Easy to manage due to the rigidity of
the model . each phase has specific
deliverables and a review process.
Phases are processed and completed
one at a time.
Works well for smaller projects where
requirements are very well understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well
documented.
Disadvantages of waterfall
model
• No working software is produced
until late during the life cycle..
• Not a good model for complex and
object-oriented projects.
• Poor model for long and ongoing
projects.
• Not suitable for the projects where
requirements are at a moderate to
high risk of changing. So risk and
uncertainty is high with this process
model.
• Cannot accommodate changing
requirements.
Iterative Incremental
Model
The Iterative Incremental Model in
software engineering is a development
approach that combines elements of both
iteration and incremental development.
It is used to gradually build a system
through repeated cycles (iterations) and
in smaller portions at a time (increments),
allowing for refinement and feedback
throughout the development process.
At each iteration, design modifications
are made and new functional
capabilities are added.
Iterative model design
Key Concepts
Iteration: Repetition of
development phases (like planning,
design, coding, testing) to refine and
improve the system.
Increment: Delivery of functional
parts (modules or features) of the
system, which gradually build up to
the final product.
Advantages
Some working functionality can be
developed quickly and early in the
life cycle.
Results are obtained early and
periodically.
Parallel development can be
planned.
Progress can be measured.
Less costly to change the
scope/requirements.
Disadvantages
More resources may be required.
More management attention is required.
System architecture or design issues
may arise because not all requirements
are gathered in the beginning of the
entire life cycle.
Defining increments may require
definition of the complete system.
Not suitable for smaller projects.
Spiral Model
The Spiral Model is a software development
process that builds a project step-by-step in
a spiral shape, where each round focuses on
planning, designing, building, testing, and
checking for risks. It helps manage big and
risky projects by improving the system
through repeated cycles.
Spiral
model is a combination of iterative
development process model and
sequential linear development model.
It allows for incremental releases of the
product, or incremental refinement through
each iteration around the spiral.
Spiral Model design
1. Objectives Determination and Identify Alternative
Solutions
→ Set goals for the current phase and gather requirements
→ Explore different methods or solutions to achieve these
goals.
2. Identify and Resolve Risks
→ Analyze each solution to find possible risks or problems.
→ Take steps to reduce or eliminate those risks before
moving forward.
3. Develop Next Version of the Product
→ Build a part or version of the software based on the
selected solution.
→ Test and validate this version to ensure it meets the
objectives.
4. Review and Plan for the Next Phase
→ Evaluate the completed work and gather feedback.
→ Plan the goals, tasks, and timeline for the next loop of
the spiral.
Advantages
Changing
requirements can be
accommodated.
Allows for extensive use of prototypes
Requirements can be captured more
accurately.
Users see the system early.
Development can be divided into smaller
parts and more risky parts can be developed
earlier which helps better risk management.
Disadvantages
Management is more complex.
End of project may not be known early.
Not suitable for small or low risk projects
and could be expensive for small
projects.
Process is complex
Spiral may go indefinitely.
Largenumber of intermediate stages
requires excessive documentation.
V- Model
The V - model is SDLC model where execution of
processes happens in a sequential manner in V-shape.
It is also known as Verification and Validation
model.
V - Model is an extension of the waterfall model
and is based on association of a testing phase for each
corresponding development stage. This means that
for every single phase in the development cycle
there is a directly associated testing phase.
Under V-Model, the corresponding testing phase of the
development phase is planned in parallel. So there
are Verification phases on one side of the .V.
and Validation phases on the other side. Coding
phase joins the two sides of the V-Model.
Verification Phases
Business Requirement Analysis: This is the first phase in the
development cycle where the product requirements are understood
from the customer perspective. This phase involves detailed
communication with the customer to understand his expectations and
exact requirement. This is a very important activity and need to be
managed well, as most of the customers are not sure about what
exactly they need. The acceptance test design planning is done at
this stage as business requirements can be used as an input for
acceptance testing.
System Design: Once you have the clear and detailed product
requirements, it.s time to design the complete system. System design
would comprise of understanding and detailing the complete
hardware and communication setup for the product under
development. System test plan is developed based on the system
design. Doing this at an earlier stage leaves more time for actual test
execution later.
Architectural Design: Architectural specifications are understood
and designed in this phase. Usually more than one technical approach
is proposed and based on the technical and financial feasibility the
final decision is taken. System design is broken down further into
modules taking up different functionality. This is also referred to as
High Level Design (HLD).
Verification phase continued
The data transfer and communication between
the internal modules and with the outside world
(other systems) is clearly understood and
defined in this stage. With this information,
integration tests can be designed and
documented during this stage.
Module Design:In this phase the detailed
internal design for all the system modules is
specified, referred to as Low Level Design (LLD).
It is important that the design is compatible with
the other modules in the system architecture
and the other external systems. Unit tests are an
essential part of any development process and
helps eliminate the maximum faults and errors at
a very early stage. Unit tests can be designed at
this stage based on the internal module designs.
Coding Phase
The actual coding of the system
modules designed in the design phase is
taken up in the Coding phase. The best
suitable programming language is
decided based on the system and
architectural requirements. The coding
is performed based on the coding
guidelines and standards. The code goes
through numerous code reviews and is
optimized for best performance before
the final build is checked into the
repository.
Validation Phases
Unit Testing: Unit tests designed in the module design phase are
executed on the code during this validation phase. Unit testing is the
testing at code level and helps eliminate bugs at an early stage,
though all defects cannot be uncovered by unit testing.
Integration Testing: Integration testing is associated with the
architectural design phase. Integration tests are performed to test the
coexistence and communication of the internal modules within the
system.
System Testing: System testing is directly associated with the
System design phase. System tests check the entire system
functionality and the communication of the system under
development with external systems. Most of the software and
hardware compatibility issues can be uncovered during system test
execution.
Acceptance Testing: Acceptance testing is associated with the
business requirement analysis phase and involves testing the product
in user environment. Acceptance tests uncover the compatibility
issues with the other systems available in the user environment. It
also discovers the non functional issues such as load and performance
defects in the actual user environment
V- Model Application
Requirements are well defined,
clearly documented and fixed.
Product definition is stable.
Technology is not dynamic and is
well understood by the project
team.
There are no ambiguous or
undefined requirements.
The project is short.
Advantages
Thisis a highly disciplined model and
Phases are completed one at a time.
Works well for smaller projects where
requirements are very well
understood.
Simple and easy to understand and
use.
Easy to manage due to the rigidity of
the model . each phase has specific
deliverables and a review process.
Disadvantages
High risk and uncertainty.
Nota good model for complex and object-
oriented projects.
Poor model for long and ongoing projects.
Notsuitable for the projects where requirements
are at a moderate to high risk of changing.
Once an application is in the testing stage, it is
difficult to go back and change a functionality
Noworking software is produced until late during
the life cycle.
Big Bang Model
The Big Bang model is SDLC model where
we do not follow any specific process. The
development just starts with the required
money and efforts as the input, and the
output is the software developed which
may or may not be as per customer
requirement.
Big Bang Model is SDLC model where
there is no formal development followed
and very little planning is required. Even
the customer is not sure about what
exactly he wants and the requirements are
implemented on the fly without much
analysis.
Big Bang Model design and
Application
Big bang model comprises of focusing
all the possible resources in software
development and coding, with very
little or no planning. The requirements
are understood and implemented as they
come. Any changes required may or may
not need to revamp the complete software.
This model is ideal for small projects
with one or two developers working
together and is also useful for
academic or practice projects. It.s an
ideal model for the product where
requirements are not well understood and
the final release date is not given.
Advantages
This is a very simple model
Little or no planning required
Easy to manage
Very few resources required
Gives flexibility to developers
Isa good learning aid for new comers
or students
Disadvantages
Very High risk and uncertainty.
Not a good model for complex and
object-oriented projects.
Poor model for long and ongoing
projects.
Can turn out to be very expensive if
requirements are misunderstood
Agile Model
AgileSDLC model is a combination of iterative
and incremental process models with focus on
process adaptability and customer
satisfaction by rapid delivery of working
software product.
Agile Methods break the product into small
incremental builds. These builds are provided in
iterations. Each iteration typically lasts from about
one to three weeks. Every iteration involves cross
functional teams working simultaneously on various
areas like planning, requirements analysis, design,
coding, unit testing, and acceptance testing.
Atthe end of the iteration a working product is
displayed to the customer and important
stakeholders.
Agile Design
Agile model believes that every project
needs to be handled differently and the
existing methods need to be tailored to best
suit the project requirements. In agile the
tasks are divided to time boxes (small
time frames) to deliver specific
features for a release.
Iterativeapproach is taken and working
software build is delivered after each
iteration. Each build is incremental in
terms of features; the final build holds
all the features required by the
customer.
Agilethought process had started early in the
software development and started becoming
popular with time due to its flexibility and
adaptability.
Themost popular agile methods include
Rational Unified Process (1994), Scrum
(1995), Crystal Clear, Extreme
Programming (1996), Adaptive Software
Development, Feature Driven
Development, and Dynamic Systems
Development Method (DSDM) (1995).
These are now collectively referred to as
agile methodologies, after the Agile
Manifesto was published in 2001.
Agile Manifesto principles
Individuals and interactions - in agile development,
self-organization and motivation are important, as are
interactions like co-location and pair programming.
Working software - Demo working software is
considered the best means of communication with the
customer to understand their requirement, instead of
just depending on documentation.
Customer collaboration - As the requirements cannot
be gathered completely in the beginning of the project
due to various factors, continuous customer interaction
is very important to get proper product requirements.
Responding to change - agile development is focused
on quick responses to change and continuous
development.
Agile Vs Traditional SDLC
Models
Agileis based on the adaptive software
development methods where as the
traditional SDLC models like waterfall
model is based on predictive approach.
Predictiveteams in the traditional SDLC
models usually work with detailed
planning and have a complete forecast of
the exact tasks and features to be
delivered in the next few months or during
the product life cycle. Predictive methods
entirely depend on the requirement
analysis and planning done in the
beginning of cycle. Any changes to be
incorporated go through a strict change
control management and prioritization.
Agileuses adaptive approach where there is
no detailed planning and there is clarity on
future tasks only in respect of what features
need to be developed. There is feature driven
development and the team adapts to the
changing product requirements dynamically. The
product is tested very frequently, through the
release iterations, minimizing the risk of any
major failures in future.
Customer interaction is the backbone of
Agile methodology, and open communication
with minimum documentation are the typical
features of Agile development environment. The
agile teams work in close collaboration with
each other and are most often located in the
same geographical location.
Advantages
Is a very realistic approach to
software development
Promotes teamwork and cross
training.
Functionality can be developed
rapidly and demonstrated.
Resource requirements are
minimum.
Easy to manage
Gives flexibility to developers
Disadvantages
Not suitable for handling complex dependencies.
More risk of sustainability, maintainability and
extensibility.
An overall plan, an agile leader and agile PM
practice is a must without which it will not work.
Strictdelivery management dictates the scope,
functionality to be delivered, and adjustments to
meet the deadlines.
Depends heavily on customer interaction, so if
customer is not clear, team can be driven in the
wrong direction.
Thank You