You are on page 1of 29

Life-Cycle Models

• Waterfall model
• Prototyping model
• Evolutionary/Incremental model
• Spiral Model
Classical Waterfall Model
• The classical Waterfall Model was the first Process Model. It is also known as
a linear-sequential life cycle model. It is very simple to understand and use.
• Classical waterfall model is the earliest, best known and most commonly used
methodology. It is a sequential lifecycle that is simple to understand and use each
phase has to be completed finished before another start which means no
overlapping is allowed.

Six Phases of Classical Waterfall Model
Classical Waterfall Model
• Advantages of Waterfall Model
• Classical waterfall model is easy to understand and simple to use.
• In the waterfall model, only one phase is executed at a time or phases cannot
overlap.
• In this model, each phase is clearly defined.
• Waterfall model works best for a small project, where requirements are clearly
defined.
• It has clearly understood milestones.
• Each Process, actions and results are well documented.
Disadvantages of Waterfall Model
• Idealistic Model: The classical waterfall model is an idealistic one since it assumes that no
development error is ever committed by the engineers during any of the life cycle phases.
• Waterfall model assumes that all requirements are defined correctly at the beginning of the
project, and on the basis of that, the development work starts. However, that is rarely the case in
real life projects.
• Phases are sequential: Classical waterfall model assumes, that all the phases are sequential. However,
that is rarely the case.

Iterative Waterfall Model
• In Iterative waterfall model, the feedback paths are provided from every
phase to its preceding phase.
Notes:
• When to use Iterative Waterfall Model
• The requirement of the defined and clearly understood.
• New technology is being learned by the development team.
• There are some high risk features and goals which might in the future.
• Advantages of Iterative Waterfall Model
• Feedback Path: iterative waterfall allows the mechanism of error connection because there is a feedback
path from one phase to its preceding phase which it lacks in the Waterfall Model.
• Simple: iterative waterfall model is simple to understand and use. It is the most widely used software
development model evolved so far.
• Parallel development: can be done.
Notes:
• Disadvantage of Iterative Waterfall Model
• More resource: may be required to implement the iterative waterfall model.
• Difficult to include change requests: In the iterative waterfall model, all the requirements must be
clearly defined before starting of the development phase but sometimes customer requirement changes
which is difficult to incorporate change requests that are made after development phase starts.
• Not support Intermediate delivery: Project has to be fully completed before it delivered to the
customer.
• Risk handling: Project is prone to many types of risk but there is no risk handling mechanism.
• Not suitable for a small project.
Prototyping Model
• The prototyping model can be considered to be an extension of
the Iterative Waterfall model. This model suggests building a
working Prototype of the system, before the development of the
actual software.
• A prototype is a toy and crude implementation of a system.
• It has limited functional capabilities, low reliability, or
inefficient performance as compared to the actual software.
• A prototype can be built very quickly by using several shortcuts
by developing inefficient, inaccurate or dummy functions.
• The prototyping model is especially useful when the exact
technical solutions are unclear to the development team.
Prototyping Model Contd..
Prototyping Model Contd..

Listen to Build/Revise
Customer Mock-Up

Customer
Test-drives
Mock-up
[Pressman 97]
Prototyping Model Contd..
• Advantages of Prototyping Model – This model is most appropriate for the
projects that suffer from technical and requirements risks. Important for
technically inexperienced team.
• Disadvantages of Prototyping Model –
• Cost of the development of the software by using prototyping model can
increase in various cases where the risks are very less.
• It may take more time to develop a software by using Prototyping model.
• The Prototyping model is effective only for those projects for which the risks
can be identified before the development starts. Since the prototype is
developed at the start of the project, so the Prototyping model is ineffective for
risks that identified after the development phase starts.
Evolutionary Model (Incremental Model)
• Evolutionary model is also referred to as the successive
versions model and sometimes as the incremental model.
• In Evolutionary model, the software requirement is first broken
down into several modules (or functional units) that can be
incrementally constructed and delivered.
• The development first develops the core modules of the system.
• The initial product skeleton is refined into increasing levels of
capability by adding new functionalities in successive versions.
• Each evolutionary model may be developed using an iterative
waterfall model of development.
Evolutionary Model Contd..
Evolutionary Model Contd..
Advantages of Evolutionary Model
• Large project: Evolutionary model is normally useful for very large products.

• User gets a chance to experiment with a partially developed software much


before the complete version of the system is released.

• Evolutionary model helps to accurately elicit user requirements during the


delivery of different versions of the software.

• The core modules get tested thoroughly, thereby reducing the chances of
errors in the core modules of the final products.

• Evolutionary model avoids the need to commit large resources in one go for
development of the system.
Evolutionary Model Contd..
Disadvantages of Evolutionary Model

• Difficult to divide the problem into several versions that would be


acceptable to the customer and which can be incrementally implemented and
delivered.
Spiral Model
• The spiral model is a software process model that couples the
iterative nature of prototyping with the controlled and systematic
aspects of the linear sequential model.
• Barry Boehm mentioned the Spiral model in this paper (1986).
• The spiral model is also known as meta-model since it
encompasses all other life cycle models.
• This model appears like a spiral with many loops, The exact
number of loops in the spiral model is not fixed.
Spiral Model Contd..
Spiral Model Contd..
• First Quadrant (Objective Setting)
– Identify the objectives of the phase.
– Examine the risks associated with these objectives.

• Second Quadrant (Risk Assessment and Reduction)


– A detailed analysis is carried out for each identified project risk.
– Steps are taken to reduce the risks.

• Third Quadrant (Development and Validation)


– Develop and validate the next level of the product after resolving the identified risks.

• Fourth Quadrant (Review and Planning)


– Review the results achieved so far with the customer and plan the next iteration.
– Progressively more complete version of the software gets built with each iteration
around the spiral.
Spiral Model Contd..
When to use Spiral Model
• The spiral model is suitable for the development of technically challenging software
products that are prone to several kinds of risks.
• When there is complexity in requirements and need frequent evaluation.
Advantages of Spiral Model
• Suitable for large projects: It is suggested to use the spiral model for large and complex
projects.
• Risk handling capability: Project which is complex and large are prone to unknown risk
and error. So the spiral model is suitable under these high-risk environments.
• New requirement: Based on the feedback, the requirements are redefined.
Disadvantages of Spiral Model
• Complex: It is one of the most complex SDLC models.
• Documentation: is more as it has many loop iteration.
• Expensive: It is not suitable for small projects.
• Management: is more complex.
Agile Development Models
• In earlier days Iterative Waterfall model was very popular to complete a project. But nowadays
developers face various problems while using it to develop software.
• The main difficulties included handling change requests from customers during project
development and the high cost and time required to incorporate these changes.
• To overcome these drawbacks of Waterfall model, in the mid-1990s the Agile Software Development
model was proposed.

• The Agile model was primarily designed to help a project to adapt to change requests quickly. So, the
main aim of the Agile model is to facilitate quick project completion. To accomplish this task agility
is required. Agility is achieved by fitting the process to the project, removing activities that may not be
essential for a specific project. Also, anything that is waste of time and effort is avoided.
Agile Development Models contd..

• Actually Agile model refers to a group of development processes. These processes share some
basic characteristics but do have certain subtle differences among themselves.
• A few Agile SDLC models are given below:
• Crystal
• Atern
• Feature-driven development
• Scrum
• Extreme programming (XP)
• Lean development
• Unified process
Agile Development Models contd..
• In the Agile model, the requirements are decomposed into many small parts
that can be incrementally developed.
• The Agile model adopts Iterative development. Each incremental part is
developed over an iteration. Each iteration is intended to be small and easily
manageable and can be completed within a couple of weeks only. At a time
one iteration is planned, developed and deployed to the customers.
• The time to complete an iteration is known as a Time Box. Time-box
refers to the maximum amount of time needed to deliver an iteration to
customers. So, the end date for an iteration does not change. Though the
development team can decide to reduce the delivered functionality during a
Time-box if necessary to deliver it on time.
• The central principle of the Agile model is the delivery of an increment to
the customer after each Time-box.
Principles of Agile model:
• Each Agile project usually includes a customer representative on the team to establish close contact
with the customer during development
• Agile model relies on working software deployment rather than comprehensive documentation.
• Frequent delivery of incremental versions of the software to the customer representative in intervals
of few weeks.
• The customer are encouraged to update their requirements which are then efficiently incorporated.
• It emphasizes on having efficient team members and enhancing communications among them is
given more importance.
• It is recommended that the development team size should be kept small (5 to 9 people) to help the team
members meaningfully engage in face-to-face communication and have collaborative work
environment.
• Agile development process usually deploys Pair Programming. In Pair programming, two
programmers work together at one work-station. One does coding while the other reviews the code as it
is typed in. The two programmers switch their roles every hour or so.
Case Study of Development in Agile: Let’s see a brief overview of how development
occurs in Agile philosophy.

• Example: Let’s go through an example to understand clearly how agile actually works.
A Software company named ABC wants to make a new web browser for the latest release of its operating system. The deadline for the task is
10 months. The company’s head assigned two teams named Team A and Team B for this task. In order to motivate the teams, the company
head says that the first team to develop the browser would be given a salary hike and a one-week full-sponsored travel plan. With the dreams
of their wild travel fantasies, the two teams set out on the journey of the web browser. Team A decided to choose the Waterfall model for
the development. Team B after a heavy discussion decided to take a leap of faith and choose Agile as their development model.

• The Development plan of the Team A is as follows:


• Requirement analysis and Gathering – 1.5 Months
• Design of System – 2 Months
• Coding phase – 4 Months
• System Integration and Testing – 2 Months
• User Acceptance Testing – 5 Weeks

• The Development plan for the Team B is as follows:


• Since this was an Agile, the project was broken up into several iterations.
• The iterations are all of the same time duration.
• At the end of each iteration, a working product with a new feature has to be delivered.
• Instead of Spending 1.5 months on requirements gathering, They will decide the core features that are required in the
product and decide which of these features can be developed in the first iteration.
• Any remaining features that cannot be delivered in the first iteration will be delivered in the next subsequent iteration, based on the
priority
• At the end of the first iterations, the team will deliver working software with the core basic features.
Case Study of Development in Agile Contd..

• Both the team have put their best efforts to get the product to a complete stage. But due to the rapidly changing
environment, the company’s head come up with an entirely new set of features and want to be implemented as
quickly as possible and wanted to push out a working model in 2 days.
• Team A was now in a problamatic situation, they were still in their design phase and did not yet start
coding and they had no working model to display. And moreover, it was practically impossible for them to
implement new features since waterfall model there is not reverting back to the old phase once you proceed to the
next stage, which means they would have to start from the square one again. That would incur their heavy cost
and a lot of overtime.

• Team B was ahead of Team A in a lot of aspects, all thanks to Agile Development. They also had the working
product with most of the core requirements since the first increment. And it was a piece of cake for them to
add the new requirements. All they had to do is schedule these requirements for the next increment and then
implement them.
• Advantages:
Agile Development Models contd..
• Working through Pair programming produce well written compact
programs which have fewer errors as compared to programmers working alone.
• It reduces total development time of the whole project.
• Easy to change any requirement if needed as the customer representatives get
the idea of updated software products after each iteration.
• Deployment of software is quicker and thus helps in increasing the trust of
the customer.
• Can better adapt to rapidly changing requirements and respond faster.
• Helps in getting immediate feedback which can be used to improve the software
in the next increment.
• People – Not Process. People and interactions are given a higher priority rather
than process and tools.
• Continuous attention to technical excellence and good design.
Disadvantages: Agile Development Models contd..
• Due to lack of formal documents, it creates confusion and important decisions taken
during different phases can be misinterpreted at any time by different team members.
• Due to the absence of proper documentation, when the project completes and the
developers are assigned to another project, maintenance of the developed project can
become a problem
• In case of large software projects, it is difficult to assess the effort required at the initial
stages of the software development life cycle.
• The Agile Development is more code focused and produces less documentation.
• Agile development is heavily depended on the inputs of the customer. If the customer has
ambiguity in his vision of the final outcome, it is highly likely for the project to get off
track.
• Face to Face communication is harder in large-scale organizations.
• Only senior programmers are capable of taking the kind of decisions required during the
development process. Hence it’s a difficult situation for new programmers to adapt to
the environment.

You might also like