SDLC-Part 1
SDLC-Part 1
• No overlapping of phases:
– This model recommends that the phases be
carried out sequentially—new phase can start only after
the previous one completes.
– However, it is rarely possible to adhere to this
recommendation and it leads to a large number of team
members to idle for extended periods.
• For example,
– for efficient utilisation of manpower,
– the testing team might need to design the system test
cases immediately after requirements specification is
complete.
– In this case, the activities of the design and testing
phases overlap.
– Consequently, it is safe to say that in a practical software
development scenario, rather than having a precise
point in time at which a phase transition occurs, the
different phases need to overlap for cost and efficiency
reasons.
• Is classical Waterfall model useful at all?
– We have already pointed out that it is hard to use the classical
waterfall model in real projects.
– In any practical development environment, as the
software takes shape, several iterations through the different
waterfall stages become necessary for correction of errors
committed during various phases.
– Therefore, the classical waterfall model is hardly usable for
software development. But, as suggested by Parnas [1972] the
final documents for the product should be written as if the
product was developed using a pure classical waterfall model.
– The documents at end of each stage are: Feasibility report, SRS
document, System Design document, detailed design document,
Code or Programs, test plan and test reports and installation
manual etc.
Iterative Waterfall Model
• Iterative Waterfall Model
– In a practical software development project, the
classical waterfall model is hard to use.
– The classical waterfall model is an idealistic model.
– In this context, 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.
• The feedback paths introduced by the iterative waterfall model are
shown in Figure.
• The feedback paths allow for correcting errors committed by a
programmer during some phase, as and when these are detected in a
later phase.
• For example, if during the testing phase a design error is identified,
then the feedback path allows the design to be reworked and the
changes to be reflected in the design documents and all other
subsequent documents.
• Please notice that in the Figure there is no feedback path to the
feasibility stage. This is because once a team having accepted to take
up a project, does not give up the project easily due to legal and
moral reasons.
In Iterative Waterfall Model, there is feedback for every stage EXCEPT FEASIBILITY
STUDY AS ONCE THE PROJECT IS ACCEPTED TO BE UNDERTAKEN, IT IS USUALLY NOT
GIVEN UP.
Almost every life cycle model that we discuss are iterative in nature, except
the classical waterfall model and the V-model—which are sequential in
nature. In a sequential model, once a phase is complete, no work product of
that phase are changed later.
Disadvantages of iterative waterfall Model
• Requirements need to be frozen before the development starts.
• Accommodating change requests are not possible.
• Model is inflexible as changes are sure to be made at later
stages.
• Incremental delivery not supported.
• The full software is completely developed and tested before it is
delivered to the customer. There is no provision for any
intermediate deliveries to occur.
• This is problematic because the complete application may take
several months or years to be completed and delivered to the
customer. By the time the software is delivered, installed, and
becomes ready for use, the customer’s business process might
have changed substantially. This makes the developed
application a poor fit to the customer’s requirements.
• Error correction unduly expensive:
– In waterfall model, validation is delayed till the complete
development of the software.
– As a result, the defects that are noticed at the time of
validation incur expensive rework and result in cost escalation
and delayed delivery.
• Limited customer interactions:
– This model supports very limited customer interactions.
– It is generally accepted that software developed in isolation
from the customer is the cause of many problems.
– In fact, interactions occur only at the start of the project and at
project completion. As a result, the developed software usually
turns out to be a misfit to the customer’s actual requirements.
• Heavy weight:
– The waterfall model over emphasizes documentation.
– A significant portion of the time of the developers is spent in
preparing documents, and revising them as changes occur over
the life cycle.
– Heavy documentation though useful during maintenance and for
carrying out review, is a source of team inefficiency.
• No support for risk handling and code reuse:
– It becomes difficult to use the waterfall model in projects that
are susceptible to various types of risks,
or those involving significant reuse of existing development
artifacts.
– Please recollect that software services types of projects usually
involve significant reuse.
• Incremental delivery not supported: In the iterative waterfall
model, the incremental delivery is not supported.
.
• Iterative development:
– Once the customer approves the prototype, the actual
software is developed using the iterative waterfall approach.
– In spite of the availability of a working prototype, the SRS
document is usually needed to be developed since the SRS
document is invaluable for carrying out traceability analysis,
verification, and test case design during later phases.
– The requirements also should be decided upon at the
beginning.
– However, for GUI parts, the requirements analysis and
specification phase becomes redundant since the working
prototype that has been approved by the customer serves as
an animated requirements specification.
– The code for the prototype is usually thrown away. However,
the experience gathered from developing the prototype
helps a great deal in developing the actual system
• Strengths of the prototyping model
This model is the most appropriate for projects that suffer from technical
and requirements risks
• Weaknesses of the prototyping model
• The prototype model can increase the cost of development for projects
that are routine development work and do not suffer from any
significant risks.
• Even when a project is susceptible to risks, the
prototyping model is effective only for those projects for which the risks
can be identified upfront before the development starts.
• Since the prototype is constructed only at the start of the project, the prototyping
model is ineffective for risks identified later during the development
cycle.
• Incremental Development Model/Successive
Versions Model
In this life cycle model, first a simple working system implementing only a
few basic features is built and delivered to the customer.
• Over many successive iterations successive
versions are implemented and delivered to the customer until the desired
system is realised. The incremental development model has been shown
in Figure.
•
• Life cycle activities of incremental development model
– In the incremental life cycle model, the requirements of the software are
first broken down into several modules or features that can be incrementally
constructed and delivered. This has been pictorially depicted in Figure 2.7.
– At any time, plan is made only for the next increment and no long-term
plans are made. Therefore, it becomes easier to accommodate change
requests from the customers.
– The development team first undertakes to develop the core features of the
system. The core or basic features are those that do not need to invoke any
services from the other features.
– On the other hand, non-core features need services from the core features.
• Once the initial core features are developed,
these are refined into increasing levels of capability by adding new
functionalities in successive versions.
• Each incremental version is usually developed using an iterative waterfall
model of development. The incremental model is schematically shown in
Figure 2.8.
• As each successive version of the software is constructed and
delivered to the customer, the customer feedback is obtained
on the delivered version and these feedbacks are
incorporated in the next version.
• Each delivered version of the software incorporates additional
features over the previous version and also refines the
features that were already delivered to the customer.
• After the requirements gathering and specification, the
requirements are split into several versions.
• Starting with the core (version 1), in each successive
increment, the next version is constructed using an iterative
waterfall model of development and deployed at the
customer site.
• After the last (shown as version n) has been developed and
deployed at the client site, the full software is deployed.
• Advantages
• The incremental development model offers several
advantages.
• Two important ones are the following:
– Error reduction: The core modules are used by the
customer from the beginning and therefore these get
tested thoroughly. This reduces chances of errors in the
core modules of the final product, leading to
greater reliability of the software.
– Incremental resource deployment: This model obviates
the need for the customer to commit large resources at
one go for development of the system. It also saves the
developing organisation from deploying
large resources and manpower for a project in one go.
• Evolutionary Model
– This model has many of the features of the incremental model.
– As in case of the incremental model, the software is developed over a number
of increments.
– At each increment, a concept (feature) is implemented and is deployed at the
client site.
– The software is successively refined and feature-enriched until the full
software is realised.
– The principal idea behind the evolutionary life cycle model is conveyed by its
name.
– In the incremental development model, complete requirements are first
developed and the SRS document prepared. Later, the product is developed in
increments;
– In contrast, in the evolutionary model, the requirements, plan, estimates, and
solution evolve over the iterations, rather than fully defined and frozen in a
major up-front specification effort before the development iterations begin.
– Such evolution is consistent with the pattern of unpredictable feature
discovery and feature changes that take place in new product development.
– Though the evolutionary model can also be viewed as an
extension of the waterfall model.
– But it incorporates a major paradigm shift that has been
widely adopted in many recent life cycle models.
– Due to obvious reasons, the evolutionary software
development process is sometimes referred to as design
a little, build a little, test a little, deploy a little model.
– This means that after the requirements have been
specified, the design, build, test, and deployment
activities are iterated.
– A schematic representation of the evolutionary model of
development has been shown in Figure 2.9.
• Advantages
• The evolutionary model of development has several advantages. Two
important advantages of using this model are the following:
• Business modeling:
– The information flow is identified between various business functions.
• Data modeling:
– Information gathered from business modeling is used to define data objects that are
needed for the business.
• Process modeling:
– Data objects defined in data modeling are converted to achieve the business
information flow to achieve some specific business objective.
– Description are identified and created for CRUD of data objects.
• Application generation:
– Automated tools are used to convert process models into code and the actual
system.
• Testing and turnover:
– Test new components and all the interfaces.
• Advantages of the RAD model:
• Reduced development time.
• Increases reusability of components
• Quick initial reviews occur
• Encourages customer feedback
• Integration from very beginning solves a lot of
integration issues.
• Disadvantages of RAD model:
• Depends on strong team and individual performances for
identifying business requirements.
• Only system that can be modularized can be built using RAD
• Requires highly skilled developers/designers.
• High dependency on modeling skills
• Inapplicable to cheaper projects as cost of modeling and
automated code generation is very high.
• When to use RAD model:
• RAD should be used when there is a need to create a
system that can be modularized in 2-3 months of time.
• It should be used if there’s high availability of
designers for modeling and the budget is high enough
to afford their cost along with the cost of automated
code generating tools.
• RAD SDLC model should be chosen only if resources
with high business knowledge are available and there
is a need to produce the system in a short span of
time (2-3 months).
Agile Model
• Please note that agile model is being used as an umbrella term to refer
to a group of development processes. These processes share certain
common characteristics, but do have certain subtle differences among
themselves. A few popular agile SDLC models are the following:
• Crystal
• Atern (formerly DSDM)
• Feature-driven development
• Scrum
• Extreme programming (XP)
• Lean development
• Unified process
• In the agile model, the requirements are decomposed into many small
parts that can be incrementally developed.
• The agile model adopts an iterative approach. Each incremental part is
developed over an iteration. Each iteration is intended to be small and easily
manageable and lasting for a couple of weeks only. At a time, only one
increment is planned, developed, and then deployed at the customer site.
• No long-term plans are made. The time to complete an iteration is called a
time box. The implication of the term time box is that the end date for an
iteration does not change. That is, the delivery date is considered sacrosanct.
• The development team can, however, decide to reduce the delivered
functionality during a time box if necessary.
• A central principle of the agile model is the delivery of an increment to the
customer after each time box.
• Agile models are incremental models which are developed over an iteration
in a time-box.
SPIRAL MODEL
• Refer to slides of SPIRAL MODEL in SDLC
Process Models Part 2.
• Important question: Why is Spiral Model
called Metamodel?
• Why Spiral Model is called evolutionary
approach?
• Spiral model as a meta model