Software Development 1 SDLC P2

Download as pdf or txt
Download as pdf or txt
You are on page 1of 51

IETI COLLEGE OF SCIENCE AND TECHNOLOGY, INC.

SIX EFFECTIVE SDLC MODELS


SOFTWARE DEVELOPMENT
2023
WATERFALL MODEL
The Waterfall Model was the 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. This means that any phase in the development
process begins only if the previous phase is complete. In this waterfall
model, the phases do not overlap.
Requirement Gathering and analysis − All possible
requirements of the system to be developed are captured in
this phase and documented in a requirement specification
document.

System Design − The requirement specifications from first


phase are studied in this phase and the system design is
prepared. This system design helps in specifying hardware and
system requirements and helps in defining the overall system
architecture.
Development/Implementation − With inputs from the system
design, the system is first developed in small programs called
units, which are integrated into the next phase. Each unit is
developed and tested for its functionality, which is referred to
as Unit Testing.

Integration and Testing − All the units developed in the


implementation phase are integrated into a system after
testing of each unit. Post integration the entire system is
tested for any faults and failures.
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 that 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.
WATERFALL MODEL - ADVANTAGES

The advantages of waterfall development are that it allows for departmentalization


and control. A schedule can be set with deadlines for each stage of development and
a product can proceed through the development process model phases one by one.
Some of the major advantages of the Waterfall Model are as follows −
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.
WATERFALL MODEL - ADVANTAGES

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.
WATERFALL MODEL - DISADVANTAGES
The disadvantage of waterfall development is that it does not allow much reflection
or revision. Once an application is in the testing stage, it is very difficult to go back
and change something that was not well-documented or thought upon in the concept
stage.
The major disadvantages of the Waterfall Model are as follows −
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
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.
It is difficult to measure progress within stages.
Cannot accommodate changing requirements.
Adjusting scope during the life cycle can end a project.
Integration is done as a "big-bang. at the very end, which doesn't allow identifying
any technological or business bottleneck or challenges early.
ITERATIVE MODEL
Iterative and Incremental development is a combination of both iterative design
or iterative method and incremental build model for development. "During
software development, more than one iteration of the software development cycle
may be in progress at the same time." This process may be described as an
"evolutionary acquisition" or "incremental build" approach." As the software
evolves through successive cycles, tests must be repeated and extended to verify
each version of the software.
ITERATIVE MODEL - PROS
The advantage of this model is that there is a working model of the system at a
very early stage of development, which makes it easier to find functional or
design flaws. Finding issues at an early stage of development enables to take
corrective measures in a limited budget.

The advantages of the Iterative and Incremental SDLC Model are as follows −
Some working functionality can be developed quickly and early in the life
cycle.
Results are obtained early and periodically.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an
easily managed milestone.
Easier to manage risk - High risk part is done first.
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be
utilized/applied to the next increment.
It supports changing requirements.
ITERATIVE MODEL - CONS
The disadvantage with this SDLC model is that it is applicable only to large and
bulky software development projects. This is because it is hard to break a small
software system into further small serviceable increments/modules.

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.
Not suitable for smaller projects.
Management complexity is more.
End of project may not be known which is a risk.
V-MODEL DESIGN
V-MODEL
The V-model is an SDLC model where execution of processes happens in a
sequential manner in a V-shape. It is also known as Verification and Validation
model.

The V-Model is an extension of the waterfall model and is based on the


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. This is a highly-disciplined model and the next phase
starts only after completion of the previous phase.
Business Requirement Analysis

This is the first phase in the development cycle where the product
requirements are understood from the customer’s perspective. This
phase involves detailed communication with the customer to
understand his expectations and exact requirement.
This is a very important activity and needs 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 clear and detailed product requirements, it is time


to design the complete system. The system design will have the
understanding and detailing of the complete hardware and
communication setup for the product under development. The
system test plan is developed based on the system design. Doing
this at an earlier stage leaves more time for the 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. The system design is broken down further into modules
taking up different functionality. This is also referred to as High
Level Design (HLD).
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. The unit
tests are an essential part of any development process and helps
eliminate the maximum faults and errors at a very early stage.
These 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 Integration Testing


Unit tests designed in the module Integration testing is associated
design phase are executed on the with the architectural design
code during this validation phase. phase. Integration tests are
Unit testing is the testing at code performed to test the coexistence
level and helps eliminate bugs at and communication of the internal
an early stage, though all defects modules within the system.
cannot be uncovered by unit
testing.
System Testing Acceptance Testing
System testing is directly Acceptance testing is associated with
associated with the system the business requirement analysis
design phase. System tests phase and involves testing the
check the entire system product in user environment.
functionality and the Acceptance tests uncover the
communication of the system compatibility issues with the other
under development with external systems available in the user
systems. Most of the software environment. It also discovers the
and hardware compatibility non-functional issues such as load
issues can be uncovered during and performance defects in the
this system test execution. actual user environment.
V- MODEL ─ APPLICATION
V- Model application is almost the same as the waterfall model, as both the
models are of sequential type. Requirements have to be very clear before the
project starts, because it is usually expensive to go back and make changes. This
model is used in the medical development field, as it is strictly a disciplined
domain.
The following pointers are some of the most suitable scenarios to use the 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.
V-MODEL - PROS
The advantage of the V-Model method is that it is very easy to understand and
apply. The simplicity of this model also makes it easier to manage. The
disadvantage is that the model is not flexible to changes and just in case there is
a requirement change, which is very common in today’s dynamic world, it
becomes very expensive to make the change.
The advantages of the V-Model method are as follows −
This is 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.
V-MODEL - CONS
The disadvantages of the V-Model method are as follows −
High risk and uncertainty.
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.
Once an application is in the testing stage, it is difficult to go back and change
a functionality.
No working software is produced until late during the life cycle.
BIG BANG MODEL
The Big Bang model is an 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. This Big Bang Model does not follow a process/procedure
and there is a very little planning required. Even the customer is not sure about
what exactly he wants and the requirements are implemented on the fly without
much analysis.
Usually this model is followed for small projects where the development teams
are very small.
BIG BANG MODEL DESIGN AND ─
APPLICATION
The Big Bang Model comprises of focusing all the possible resources in the
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 is an ideal
model for the product where requirements are not well understood and the
final release date is not given.
BIG BANG MODEL - PROS AND CONS
The advantage of this Big Bang Model is that it is very simple and requires
very little or no planning. Easy to manage and no formal procedure are
required.
However, the Big Bang Model is a very high risk model and changes in the
requirements or misunderstood requirements may even lead to complete
reversal or scraping of the project. It is ideal for repetitive or small projects
with minimum risks.
BIG BANG MODEL - PROS
The advantages of the Big Bang Model are as follows −
This is a very simple model
Little or no planning required
Easy to manage
Very few resources required
Gives flexibility to developers
It is a good learning aid for new comers or students.
BIG BANG MODEL - CONS
The disadvantages of the Big Bang Model are as follows −
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
AGILE MODEL
Agile SDLC 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.
Following are the 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 customers to understand their requirements, 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.
WHAT IS THE DIFFERENCE OF AGILE
TO OTHER MODEL?
Agile Vs Traditional SDLC Models

Agile is based on the adaptive software development methods,


whereas the traditional SDLC models like the waterfall model is
based on a predictive approach. Predictive teams 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.
Agile Vs Traditional SDLC Models

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.
Agile uses an 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.
Agile Vs Traditional SDLC Models

Customer Interaction is the backbone of this 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.
AGILE MODEL - PROS
Agile methods are being widely accepted in the software world recently.
However, this method may not always be suitable for all products. Here are
some pros and cons of the Agile model.
The advantages of the Agile Model are as follows −
Is a very realistic approach to software development.
Promotes teamwork and cross training.
Functionality can be developed rapidly and demonstrated.
Resource requirements are minimum.
AGILE MODEL - PROS
Resource requirements are minimum.
Suitable for fixed or changing requirements
Delivers early partial working solutions.
Good model for environments that change steadily.
Minimal rules, documentation easily employed.
Enables concurrent development and delivery within an overall planned
context.
Little or no planning required.
Easy to manage.
Gives flexibility to developers.
AGILE MODEL - CONS
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.
Strict delivery management dictates the scope, functionality to be
delivered, and adjustments to meet the deadlines.
AGILE MODEL - CONS

Depends heavily on customer interaction, so if customer is not clear, team


can be driven in the wrong direction.
There is a very high individual dependency, since there is minimum
documentation generated.
Transfer of technology to new team members may be quite challenging due
to lack of documentation.
RAD MODEL
The RAD (Rapid Application Development) model is based on prototyping and
iterative development with no specific planning involved. The process of
writing the software itself involves the planning required for developing the
product.
Rapid Application Development focuses on gathering customer requirements
through workshops or focus groups, early testing of the prototypes by the
customer using iterative concept, reuse of the existing prototypes
(components), continuous integration and rapid delivery.
WHAT IS RAD?
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.
In the RAD model, 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.
The most important aspect for this model to be successful is to make sure
that the prototypes developed are reusable.
FOLLOWING ARE THE VARIOUS PHASES OF
THE RAD MODEL −
Business Modelling
The business model for the product under development is designed in
terms of flow of information and the distribution of information between
various business channels. A complete business analysis is performed to
find the vital information for business, how it can be obtained, how and
when is the information processed and what are the factors driving
successful flow of information.
Data Modelling
The information gathered in the Business Modelling phase is reviewed and
analyzed to form sets of data objects vital for the business. The attributes
of all data sets is identified and defined. The relation between these data
objects are established and defined in detail in relevance to the business
model.
Process Modelling
The data object sets defined in the Data Modelling phase are converted to
establish the business information flow needed to achieve specific
business objectives as per the business model. The process model for any
changes or enhancements to the data object sets is defined in this phase.
Process descriptions for adding, deleting, retrieving or modifying a data
object are given.
Application Generation
The actual system is built and coding is done by using automation tools to
convert process and data models into actual prototypes.

Testing and Turnover


The overall testing time is reduced in the RAD model as the prototypes are
independently tested during every iteration. However, the data flow and
the interfaces between all the components need to be thoroughly tested
with complete test coverage. Since most of the programming components
have already been tested, it reduces the risk of any major issues.
WHAT IS RAD?
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.
In the RAD model, 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.
The most important aspect for this model to be successful is to make sure
that the prototypes developed are reusable.

You might also like