Session 3,4 SDLC Models

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 21

Session-3

Software Development life cycle


(SDLC)
• A software life cycle model (also called process model) is a descriptive
and diagrammatic representation of the software life cycle.
• A life cycle model represents all the activities required to make a
software product transit through its life cycle phases.
Need for a software life cycle model
• Without using of a particular life cycle model the development of a
software product would not be in a systematic and disciplined
manner.
• software life cycle model defines entry and exit criteria for every
phase. A phase can start only if its phase-entry criteria have been
satisfied and ends with exit criteria.
Waterfall Model
This model assumes that everything is carried out
and taken place perfectly as planned in the
previous stage and there is no need to think
about the past issues that may arise in the next
phase.
• Feasibility study
• The main aim of feasibility study is to
determine whether it would be financially
and technically feasible to develop the
product.
• Requirements analysis and specification
• The aim of the requirement analysis and
specification phase is 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.
• 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
Document is used to document all of this effort (SDD)
• 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 aim of
the unit testing phase is to check whether each module is working properly or
not.
• Integration and System testing:
• Integration of different modules are undertaken soon after they have been coded
and unit tested. Integration of various modules is carried out incrementally over a
number of steps.
• During each integration step, previously planned modules are added to the
partially integrated system and the resultant system is tested. Finally, 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
performed acceptance testing to determine whether to accept the delivered
software or reject it.
• 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
basically 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.
Advantages of Classical Waterfall Model
The classical waterfall model is an idealistic model for software development. It is
very simple, so it can be considered the basis for other software development life
cycle models. Below are some of the major advantages of this SDLC model:

• This model is very simple and is easy to understand.


• Phases in this model are processed one at a time.
• Each stage in the model is clearly defined.
• This model has very clear and well-understood milestones.
• Process, actions and results are very well documented.
• Reinforces good habits: define-before- design,
design-before-code.
• This model works well for smaller projects and projects where requirements are
well
understood.
Drawbacks of Classical Waterfall 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 actually customers’
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.
Iterative Waterfall Model
• The iterative waterfall model
provides feedback paths from every
phase to its preceding phases, which
is the main difference from the
classical waterfall model.
• It is good to detect errors in the same phase in
which they are committed. It reduces the
effort and time required to correct the errors.
Phase Containment of Errors :
The principle of detecting errors as close to their
points of commitment as possible is known as
Phase containment of errors.
Advantages of Iterative Waterfall Model :
• Feedback Path
In the iterative waterfall model feedback path from one phase to its preceding phase
allows correcting the errors that are committed and these changes are reflected in the
later phases.
• Simple
Iterative waterfall model is very simple to understand and use. That’s why it is one of the
most widely used software development models.
• Cost-Effective
It is highly cost-effective to change the plan or requirements in the model. Moreover, it is
best suited for agile organizations.
• Well-organized
In this model, less time is consumed on documenting and the team can spend more time
on development and designing.
Drawbacks of Iterative Waterfall Model :
• Difficult to incorporate change requests
The major drawback of the iterative waterfall model is that all the requirements must be
clearly stated before starting the development phase.
• Incremental delivery not supported
In the iterative waterfall model, the full software is completely developed and tested
before delivery to the customer. There is no scope for any intermediate delivery. So,
customers have to wait a long for getting the software.
• Overlapping of phases not supported
Iterative waterfall model assumes that 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.
Incremental process model
• A simple working system implementing only a few basic features is
built and then that is delivered to the customer. Then thereafter many
successive iterations/ versions are implemented and delivered to the
customer until the desired system is released.
Life cycle activities:
• Requirements of Software are first
broken down into several modules
that can be incrementally
constructed and delivered.
• The Development Team first undertakes to
develop core features (these do not need
services from other features) of the system.
• Each incremental version is usually
developed using an iterative waterfall model
of development.
• As each successive version of the software is
constructed and delivered, now the
feedback of the Customer is to be taken and
these were then incorporated into the next
version. Each version of the software has
more additional features than the previous
ones.
Types of Incremental model:
1. Staged Delivery Model: Construction of only one part of the project at a time.

2. Parallel Development Model: Different subsystems are developed at the same time. It can decrease
the calendar time needed for the development, i.e. TTM (Time to Market) if enough resources are
available.
• When to use this:
• Funding Schedule, Risk, Program Complexity, or need for early realization of
benefits.
• When Requirements are known up-front.
• When Projects have lengthy development schedules.
• Advantages-
• Prepares the software fast.
• Clients have a clear idea of the project.
• Changes are easy to implement.
• Provides risk handling support, because of its iterations.
• Disadvantages-
• A good team and proper planned execution are required.
• Because of its continuous iterations the cost increases.
Evolutionary Process Models
• Evolutionary models are iterative. They are
characterized in a manner that enables you to
develop increasingly more complete versions of the
software with each iteration. There are two common
evolutionary process models.
• Prototyping Model:
• Prototype Model is used when the customer is
not known completely about how the end
product should be and its requirements.
• So in this model, a prototype of the end product is
first developed by the developers and then tested
and changes were made as per customer
feedback until the customer is satisfyed with the
prototype.
Spiral Model
• Spiral model is one of the most
important Software Development Life
Cycle models, which provides support
for Risk Handling.
• Each loop of the spiral is called a Phase
of the software development process.
• The exact number of phases needed to
develop the product can be varied by
the project manager depending upon
the project risks.
Each phase of the Spiral Model is divided into four quadrants as shown in the above
figure. The functions of these four quadrants are discussed below-
• Objectives determination and identify alternative Solutions:
• Requirements are gathered from the customers and the objectives are identified,
elaborated, and analyzed at the start of every phase. Then alternative solutions
possible for the phase are proposed in this quadrant.
• Identify and resolve Risks:
• During the second quadrant, all the possible solutions are evaluated to select the
best possible solution. Then the risks associated with that solution are identified
and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
• Develop next version of the Product:
• During the third quadrant, the identified features are developed and verified
through testing. At the end of the third quadrant, the next version of the software is
available.
• Review and plan for the next Phase:
• In the fourth quadrant, the Customers evaluate the so far developed version of the
software. In the end, planning for the next phase is started.
Spiral Model is called Meta Model

• A single loop spiral actually represents the Iterative Waterfall Model.


• The spiral model incorporates the stepwise approach of the Classical
Waterfall Model.
• The spiral model uses the approach of the Prototyping Model by
building a prototype at the start of each phase as a risk-handling
technique. Also, the spiral model can be considered as supporting
the Evolutionary model: the iterations along the spiral can be
considered as evolutionary levels through which the complete system
is built.
Advantages of Spiral Model:

• Risk Handling: The projects with many unknown risks that occur as the
development proceeds, in that case, Spiral Model is the best development
model to follow due to the risk analysis and risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large
and complex projects.
• Flexibility in Requirements: Change requests in the Requirements at later
phase can be incorporated accurately by using this model.
• Customer Satisfaction: Customer can see the development of the product
at the early phase of the software development and thus, they habituated
with the system by using it before completion of the total product.
Disadvantages of Spiral Model:

• Complex: The Spiral Model is much more complex than other SDLC models.
• Expensive: Spiral Model is not suitable for small projects as it is expensive.
• Too much dependability on Risk Analysis: The successful completion of the
project is very much dependent on Risk Analysis. Without very highly
experienced experts, it is going to be a failure to develop a project using
this model.
• Difficulty in time management: As the number of phases is unknown at the
start of the project, so time estimation is very difficult.

You might also like