Spiral Model

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 17

Software Engineering | Spiral Model

Spiral model is one of the most important Software Development Life Cycle
models, which provides support for Risk Handling. In its diagrammatic
representation, it looks like a spiral with many loops.

The exact number of loops of the spiral is unknown and can vary from project to
project.

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.

As the project manager dynamically determines the number of phases, so the


project manager has an important role to develop a product using the spiral
model. 
The Radius of the spiral at any point represents the expenses (cost) of the
project so far, and the angular dimension represents the progress made so far
Risk Handling in Spiral Model
A risk is any adverse situation that might affect the successful completion of a
software project. The most important feature of the spiral model is handling
these unknown risks after the project has started. Such risk resolutions are
easier done by developing a prototype. The spiral model supports coping up
with risks by providing the scope to build a prototype at every phase of the
software development. 
The Prototyping Model  also supports risk handling, but the risks must be
identified completely before the start of the development work of the project. But
in real life project risk may occur after the development work starts, in that case,
we cannot use the Prototyping Model. In each phase of the Spiral Model, the
features of the product dated and analyzed, and the risks at that point in time
are identified and are resolved through prototyping. Thus, this model is much
more flexible compared to other SDLC models. 
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other
SDLC models. For example, 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: 
Below are some advantages of the Spiral Model. 
1. 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. 
2. Good for large projects: It is recommended to use the Spiral Model in large
and complex projects. 
3. Flexibility in Requirements: Change requests in the Requirements at later
phase can be incorporated accurately by using this model. 
4. 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: 
Below are some main disadvantages of the spiral model. 
1. Complex: The Spiral Model is much more complex than other SDLC
models. 
2. Expensive: Spiral Model is not suitable for small projects as it is expensive. 
3. 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. 
4. Difficulty in time management: As the number of phases is unknown at the
start of the project, so time estimation is very difficult. 

Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process
model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model. It implements the potential for rapid
development of new versions of the software. Using the spiral model, the software is
developed in a series of incremental releases. During the early iterations, the additional
release may be a paper model or prototype. During later iterations, more and more
complete versions of the engineered system are produced.

The Spiral Model is shown in fig:


Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of purpose for
that cycle, the various alternatives that are possible for achieving the targets, and the
constraints that exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in this
stage is located on the risk perception for the project.

Development and validation: The next phase is to develop strategies that resolve


uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.

Planning: Finally, the next step is planned. The project is reviewed, and a choice made
whether to continue with a further period of the spiral. If it is determined to keep, plans
are drawn up for the next step of the project.
The development phase depends on the remaining risks. For example, if performance or
user-interface risks are treated more essential than the program development risks, the
next phase may be an evolutionary development that includes developing a more
detailed prototype for solving the risks.

The risk-driven feature of the spiral model allows it to accommodate any mixture of a


specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well as
enhancement projects.

When to use Spiral Model?


o When deliverance is required to be frequent.
o When the project is large
o When requirements are unclear and complex
o When changes may require at any time
o Large and high budget projects

Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.

Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.
Prototype Model
The prototype model requires that before carrying out the development of actual
software, a working prototype of the system should be built. A prototype is a toy
implementation of the system. A prototype usually turns out to be a very crude version
of the actual system, possible exhibiting limited functional capabilities, low reliability,
and inefficient performance as compared to actual software. In many instances, the
client only has a general view of what is expected from the software product. In such a
scenario where there is an absence of detailed information regarding the input to the
system, the processing needs, and the output requirement, the prototyping model may
be employed.
Steps of Prototype Model
1. Requirement Gathering and Analyst
2. Quick Decision
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
Types of Prototyping Models
Four types of Prototyping models are:

1. Rapid Throwaway prototypes


2. Evolutionary prototype
3. Incremental prototype
4. Extreme prototype

Rapid Throwaway Prototype


Rapid throwaway is based on the preliminary requirement. It is quickly
developed to show how the requirement will look visually. The customer's
feedback helps drives changes to the requirement, and the prototype is again
created until the requirement is baselined.

In this method, a developed prototype will be discarded and will not be a part
of the ultimately accepted prototype. This technique is useful for exploring
ideas and getting instant feedback for customer requirements.

Evolutionary Prototyping
Here, the prototype developed is incrementally refined based on customer's
feedback until it is finally accepted. It helps you to save time as well as effort.
That's because developing a prototype from scratch for every interaction of
the process can sometimes be very frustrating.

This model is helpful for a project which uses a new technology that is not well
understood. It is also used for a complex project where every functionality
must be checked once. It is helpful when the requirement is not stable or not
understood clearly at the initial stage.

Incremental Prototyping
In incremental Prototyping, the final product is decimated into different small
prototypes and developed individually. Eventually, the different prototypes are
merged into a single product. This method is helpful to reduce the feedback
time between the user and the application development team.
Extreme Prototyping:
Extreme prototyping method is mostly used for web development. It is
consists of three sequential phases.

1. Basic prototype with all the existing page is present in the HTML format.
2. You can simulate data process using a prototype services layer.
3. The services are implemented and integrated into the final prototype.

Best practices of Prototyping


Here, are a few things which you should watch for during the prototyping
process:

 You should use Prototyping when the requirements are unclear


 It is important to perform planned and controlled Prototyping.
 Regular meetings are vital to keep the project on time and avoid costly
delays.
 The users and the designers should be aware of the prototyping issues
and pitfalls.
 At a very early stage, you need to approve a prototype and only then
allow the team to move to the next step.
 In software prototyping method, you should never be afraid to change
earlier decisions if new ideas need to be deployed.
 You should select the appropriate step size for each version.
 Implement important features early on so that if you run out of the time,
you still have a worthwhile system

Advantage of Prototype Model


1. Reduce the risk of incorrect user requirement
2. Good where requirement are changing/uncommitted
3. Regular visible process aids management
4. Support early product marketing
5. Reduce Maintenance cost.
6. Errors can be detected much earlier as the system is made side by side.
Disadvantage of Prototype Model
1. An unstable/badly implemented prototype often becomes the final product.
2. Require extensive customer collaboration
o Costs customer money
o Needs committed customer
o Difficult to finish if customer withdraw
o May be too customer specific, no broad market
3. Difficult to know how long the project will last.
4. Easy to fail back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
5. Prototyping tools are expensive.
6. Special tools & techniques are required to build a prototype.
7. It is a time-consuming process.

INCREMENTAL MODEL VS EVOLUTIONARY MODEL

1. The requirements are clear to the development team.


2. The requirements are split into slices, and one by one, slices are picked
based on selection criteria.
3. The development team knows how much has been completed and how
much needs to be complete soon.
4. Picking criteria for the incremental model: when the requirements are more
or less fixed and clearer to the customer. 

Evolutionary Model

1. The requirements are not clear, and it evolves during the development
cycle.
2. At the initial stage, based on their understanding of the customer’s
requirements, they developed the core modules and functionalities and
delivered them to the customer for feedback.
3. This is called an iteration. In each iteration, they release a working
software after performing integration and level of testings.
4. The development team does not know how much has been completed and
how much needs to be complete in the near future.
5. Picking criteria for the evolutionary model: when the requirements are not
clear.

ISO 9000 Certification


ISO (International Standards Organization) is a group or consortium of 63 countries
established to plan and fosters standardization. ISO declared its 9000 series of standards
in 1987. It serves as a reference for the contract between independent parties. The ISO
9000 standard determines the guidelines for maintaining a quality system. The ISO
standard mainly addresses operational methods and organizational methods such as
responsibilities, reporting, etc. ISO 9000 defines a set of guidelines for the production
process and is not directly concerned about the product itself.

Types of ISO 9000 Quality Standards

The ISO 9000 series of standards is based on the assumption that if a proper stage is
followed for production, then good quality products are bound to follow automatically.
The types of industries to which the various ISO standards apply are as follows.

1. ISO 9001: This standard applies to the organizations engaged in design, development,


production, and servicing of goods. This is the standard that applies to most software
development organizations.
2. ISO 9002: This standard applies to those organizations which do not design products
but are only involved in the production. Examples of these category industries contain
steel and car manufacturing industries that buy the product and plants designs from
external sources and are engaged in only manufacturing those products. Therefore, ISO
9002 does not apply to software development organizations.
3. ISO 9003: This standard applies to organizations that are involved only in the installation
and testing of the products. For example, Gas companies.

How to get ISO 9000 Certification?


An organization determines to obtain ISO 9000 certification applies to ISO registrar
office for registration. The process consists of the following stages:

1. Application: Once an organization decided to go for ISO certification, it applies to the


registrar for registration.
2. Pre-Assessment: During this stage, the registrar makes a rough assessment of the
organization.
3. Document review and Adequacy of Audit: During this stage, the registrar reviews the
document submitted by the organization and suggest an improvement.
4. Compliance Audit: During this stage, the registrar checks whether the organization has
compiled the suggestion made by it during the review or not.
5. Registration: The Registrar awards the ISO certification after the successful completion
of all the phases.
6. Continued Inspection: The registrar continued to monitor the organization time by
time.

Software Engineering Institute Capability


Maturity Model (SEI-CMM)
The Capability Maturity Model (CMM) is a procedure used to develop and refine an
organization's software development process.

The model defines a five-level evolutionary stage of increasingly organized and consistently
more mature processes.

CMM was developed and is promoted by the Software Engineering Institute (SEI), a research
and development center promote by the U.S. Department of Defense (DOD).

Capability Maturity Model is used as a benchmark to measure the maturity of an organization's


software process.

77.2K

How to learn code effectively | Learning programming | Correct mindset to start

Methods of SEICMM
There are two methods of SEICMM:

Capability Evaluation: Capability evaluation provides a way to assess the software process


capability of an organization. The results of capability evaluation indicate the likely contractor
performance if the contractor is awarded a work. Therefore, the results of the software process
capability assessment can be used to select a contractor.

Software Process Assessment: Software process assessment is used by an organization to


improve its process capability. Thus, this type of evaluation is for purely internal use.

SEI CMM categorized software development industries into the following five maturity levels.
The various levels of SEI CMM have been designed so that it is easy for an organization to build
its quality system starting from scratch slowly.

Level 1: Initial
 The software process is characterized as inconsistent, and occasionally even
chaotic. Defined processes and standard practices that exist are abandoned
during a crisis. Success of the organization majorly depends on an individual
effort, talent, and heroics. The heroes eventually move on to other organizations
taking their wealth of knowledge or lessons learnt with them.

Therefore, it is also called a chaotic level.


Level 2: Repeatable
At this level, the fundamental project management practices like tracking cost and schedule are
established. Size and cost estimation methods, like function point analysis, COCOMO, etc. are
used.

Level 3: Defined
At this level, the methods for both management and development activities are defined and
documented. There is a common organization-wide understanding of operations, roles, and
responsibilities. The ways through defined, the process and product qualities are not measured.
ISO 9000 goals at achieving this level.

Level 4: Managed
At this level, the focus is on software metrics. Two kinds of metrics are composed.

Product metrics measure the features of the product being developed, such as its size,
reliability, time complexity, understandability, etc.

Process metrics follow the effectiveness of the process being used, such as average
defect correction time, productivity, the average number of defects found per hour
inspection, the average number of failures detected during testing per LOC, etc. The
software process and product quality are measured, and quantitative quality
requirements for the product are met. Various tools like Pareto charts, fishbone
diagrams, etc. are used to measure the product and process quality. The process metrics
are used to analyze if a project performed satisfactorily. Thus, the outcome of process
measurements is used to calculate project performance rather than improve the process.

Level 5: Optimizing
At this phase, process and product metrics are collected. Process and product
measurement data are evaluated for continuous process improvement.

Following diagram, gives a pictorial representation of what happens at


different CMM level
Key Process Areas (KPA) of a software
organization
Except for SEI CMM level 1, each maturity level is featured by several Key Process Areas
(KPAs) that contains the areas an organization should focus on improving its software
process to the next level. The focus of each level and the corresponding key process
areas are shown in the fig.
SEI CMM provides a series of key areas on which to focus to take an organization from
one level of maturity to the next. Thus, it provides a method for gradual quality
improvement over various stages. Each step has been carefully designed such that one
step enhances the capability already built up.

Why Use CMM?


Today CMM act as a "seal of approval" in the software industry. It helps in
various ways to improve the software quality.

 It guides towards repeatable standard process and hence reduce the


learning time on how to get things done
 Practicing CMM means practicing standard protocol for development,
which means it not only helps the team to save time but also gives a
clear view of what to do and what to expect
 The quality activities gel well with the project rather than thought of as a
separate event
 It acts as a commuter between the project and the team
 CMM efforts are always towards the improvement of the process

You might also like