CSC/ECE 517 Fall 2012/ch2a 2w3 jm: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
 
(59 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Spiral Model=
=Spiral Model=
A [http://en.wikipedia.org/wiki/Spiral_model spiral] life-cycle model provides incremental development, using the waterfall model for each step, with aims of managing risk by ensuring client's approval on the deliverable at the end of each iteration.
[[File:Spiral.png|200px|thumb|right]]
This model was defined by Barry Boehm in his article ''A Spiral Model of Software Development and Enhancement''<ref></ref> from 1986. This model was not the first model to discuss iteration, but it was the first model to explain why the iteration matters.The spiral model (Boehm, 1988) aims at risk reduction by any means in any phase. The spiral model is often referred to as a risk-driven model.   
A [http://searchsoftwarequality.techtarget.com/definition/spiral-model Spiral] life-cycle model provides incremental development, using the waterfall model for each step, with aims of managing risk by ensuring client's approval on deliverables at the end of each iteration.
This model was defined by Barry Boehm in his article ''A Spiral Model of Software Development and Enhancement''<ref name = 'mul'>Boehm, B. W.; , "A spiral model of software development and enhancement," Computer , vol.21, no.5, pp.61-72, May 1988 doi: 10.1109/2.59</ref> from 1986. This model was not the first model to discuss iteration, but it was the first model to explain why the iteration matters.The spiral model (Boehm, 1988) aims at risk reduction by any means in any phase. The spiral model is often referred to as a risk-driven model.
 
The basic Spiral model contained four steps viz Planning, Design, Implementation and Risk Analysis. As originally envisioned, the iterations were typically 6 months to 2 years long. Each phase starts with a design goal and ends with the client reviewing the progress. Analysis and engineering efforts are applied at each phase of the project, with an eye toward the end goal of the project.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>    
 
__TOC__
__TOC__


== Why Spiral Model ==
== Why Spiral Model ==
Extreme Programming (XP) is a software development methodology created by Kent Beck during his work on the Chrysler Comprehensive Compensation System (C3) payroll project. Extreme Programming is intended to improve software quality and responsiveness to changing customer requirements. It is a one of the several types of agile software development processes. Extreme Programming is successful because it stresses customer satisfaction. Instead of delivering everything you could possibly want on some date far in the future this process delivers the software you need as you need it. Extreme Programming empowers developers to confidently respond to changing customer requirements, even late in the life cycle.
In early 1970's the traditional [http://en.wikipedia.org/wiki/Waterfall_model Waterfall] model had gained much influence and was very widely adopted. Infact to this day it serves as a backbone to many software projects.
However, the waterfall model lacked in certain areas which realized the need for a newer model with more flexibility.
The waterfall model had its emphasis on fully elaborated documents<ref name = 'mul'>Boehm, B. W.; , "A spiral model of software development and enhancement," Computer , vol.21, no.5, pp.61-72, May 1988 doi: 10.1109/2.59</ref> as completion criteria for early requirements and design phases. For some classes of software, such as compilers or secure operating systems,this is the most effective way to proceed. However, it does not work well for many classes of software, particularly interactive end-user applications. Document-driven standards have pushed many projects to write elaborate specifications of poorly understood user interfaces and decision support functions, followed by a bad design and development of large quantities of unusable code.
 
There was a need of a model which can incorporate the changing requirements of the client and involve the client in development phases so there can never arise a scenario when a client says, "I asked for an Apple and you gave me an Orange". Prototyping Model was the answer however it lacked the structured and systematic approach of waterfall model. Thus taking into considering the best features of the waterfall model and prototyping model, a new model called the Spiral model was developed. This model adopted the controlled and systematic approach of waterfall model by splitting each spiral in 4 definite phases viz Determining objective, Risk Assessment, Development and testing and planning of next phase. The spirals are iterative consisting of the same 4 task in the same order. At the end of each spiral, a deliverable is provided to the client for review thus, incorporating the features of the Prototyping model.
 
Thus the Spiral model started gaining recognition for the projects that had unstable and ever changing requirements and the costs associated with failure of the project were very high.
 
[[#top|Back to top]]
[[#top|Back to top]]


== The Model ==
== The Model ==
Goals
[[File:Spiral.jpg]]
 
The spiral model amalgamates the idea of iterative development with the traditional, controlled aspects of the waterfall model. Therefore it reaps the benefits of both top down and bottom up approaches of software development. The major distinguishing feature of Spiral model is that it creates a risk driven approach to software development process, preempting the prevailing document-driven approach or code-driven approach.  The lifecycle of the model revolves in a spiral, consequently justifying the name of the model. Each spiral carries out all the tasks that usually one finds in the waterfall model starting with [http://en.wikipedia.org/wiki/Requirements_analysis Requirement] analysis, Design followed by Prototype Development and Testing. In addition to these, it also includes a refinement phase, wherein all the engineering excellence activities are carried out, and risk analysis at the end of each spiral that asserts the risks, both technical and managerial, associated with the product and helps customer take a standpoint. 
Spiral model is touted to be the first model that could successfully emphasize the importance of iterations, because at the end of each cycle we have a working prototype of the product probably with scaled down features. Each cycle is an extension of the product of its earlier iteration.  The essential concept of the Spiral Model is "to minimize risks by the repeated use of prototypes" and other means.
Starting at the center, each turn around the spiral goes through several task regions,
#Requirements plan and lifecycle of the cycle along with the alternatives are laid out incorporating as much details as possible.
#A thorough Risk Analysis is carried out on the last prototype, involving customers and other stakeholders and a preliminary design for the next prototype is created followed by its construction.
#This process is repeated till the point of customer satisfaction and the final system is constructed only with the consent of the customer.
The final phase of the Spiral Model is analogous to the Waterfall Model. At this point in the project, the software requirements are well-understood by means of development of several prototypes. The project should also have resolved the major risks involved with building the final version of the software. With these issues resolved, the detailed design of the software enters the last three processes of the Waterfall Model, and the software is created.
 
 


[[#top|Back to top]]
[[#top|Back to top]]


== Advantages of Spiral Model ==
== Advantages of Spiral Model ==
*Built-In Quality
#Spiral Life Cycle Model is a highly flexible SDLC model as it allows changes to be implemented at several stages of the project and coping with these changes isn’t a very big headache for the project manager.
*Overall Simplicity
#Project monitoring is very easy and effective. Each phase, as well as each loop, requires a review from concerned people. This makes the model more transparent. The list of concerned people not only include upper management but also the clients for which the software is being developed. As the client will be involved in the development of each segment, he would retain control over the direction and implementation of the project.  
*Programmer Power
#Risk management<ref>http://istqbexamcertification.com/what-is-spiral-model-advantages-disadvantages-and-when-to-use-it/ </ref> is one of the in-built features of the model, which makes it extra attractive compared to other models.
*Customer Power
#Project estimates<ref>http://www.sqa.org.uk/e-learning/SDM01CD/page_10.htm </ref> in terms of schedule, cost etc become more and more realistic as the project moves forward and loops in spiral get completed as the process of building up large systems in small segments makes it easier to derive correct metrics for these calculations.
*Synergy Between Practices
#Project [http://en.wiktionary.org/wiki/deliverable deliverables] are generated at a very early stage of the project. Suitable for projects which need a quick deliverable (at least a beta version) to reach markets.
Coding Standards – Advantages:
#It is suitable for high risk projects, where business needs may be unstable.
Reduces the amount of time developers spend reformatting other peoples’ code.
 
Reduces the need  for internal commenting. Call for clear, unambiguous code
On-Site Customer - Advantages:
Can give quick and knowledgeable answers to real development questions.  
Makes sure that what is developed is what is needed. Functionality is prioritized correctly
40-Hour Week – Advantage:
Most developers lose effectiveness past 40-Hours
Value is placed on the developer’s well-being. Management is forced to find real solutions
Continuous Integration - Advantages
Reduces to lengthy process. Enables the Small Releases practice
Collective Ownership – Advantages
Helps mitigate the loss of a team member leaving.
Promotes developers to take responsibility for the system as whole rather than parts of the system
Pair Programming – Advantages
Two heads are better than one.  
Focus Two people are more likely to answer the following questions: Is this whole approach going to work? What are some test cases that may 
not work yet? Is there a way to simplify this?
Refactoring – Advantages
Prompts developers to proactively improve the product as a whole. Increases developer knowledge of the system
Testing – Advantages
Unit testing promote testing completeness. Test-first gives developers a goal. Automation gives a suite of regression test
Simple Design – Advantages
Time is not wasted adding superfluous functionality. Easier to understand what is going on.   
Refactoring and collective ownership is made possible. Helps keeps programmers on track
Metaphor – Advantages
Encourages a common set of terms for the system. Reduction of buzz words and jargon. A quick and easy way to explain the system
Small Releases – Advantages
Frequent feedback. Tracking. Reduce chance of overall project slippage
The Planning Game – Advantages
Reduction in time wasted on useless features. Greater customer appreciation of the cost of a feature. Less guesswork in planning


[[#top|Back to top]]
[[#top|Back to top]]


== Disadvantages of Spiral Model==
== Disadvantages of Spiral Model==
 
# Cost<ref>http://newton.cs.concordia.ca/~paquet/wiki/index.php/Spiral_model </ref> involved in this model is usually high as no of [http://en.wikipedia.org/wiki/Deliverable deliverables] to be provided increases with an added cost of risk assessment.
#It is a complicated approach especially for projects with a clear [http://searchsoftwarequality.techtarget.com/definition/software-requirements-specification SRS]. If the project has clear [http://searchsoftwarequality.techtarget.com/definition/software-requirements-specification SRS] then effort is being wasted in repetitive specification gathering and client conferences.
#Skills required, to perform risk assessment from time to time, need expertise. Also, Rules and protocols should be followed properly to effectively implement this model. Doing so, through-out the span of project is tough.
#It demands considerable risk assessment expertise and relies on this expertise for success. If a major risk is not uncovered and managed, problems will undoubtedly occur.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>
#It may be difficult to convince customers (particularly in contract situations) that the evolutionary approach is controllable.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>
#It is not suitable for low risk projects. Spiral model lays more stress on Risk Assessment, however in a low risk project, this very feature of spiral model becomes a liability.
#Suitable for only large scale software development. Does not make sense if the cost of risk analysis is a major part of the overall project cost.
[[#top|Back to top]]
[[#top|Back to top]]


== Comparison with traditional waterfall model ==
== When to use Spiral Model ==
 
#When costs associated with the risks are important as risk evaluation would help to keep project from failing
[[#top|Back to top]]
#For medium to high-risk projects
#Users are unsure of their needs as spiral model incorporates all changes without much of a problem
#Requirements<ref>http://www.scribd.com/doc/39716466/20/When-to-use-Spiral-Model-When-to-use-Spiral-Model</ref> are unclear or complex. The iterative requirement gathering stage in each spiral in time simplifies the requirements
#New product line as time to market of a prototype is less in a spiral model
#Significant changes are expected (research and exploration)


== Research Conclusion ==
[[#top|Back to top]]
[[#top|Back to top]]


== References ==
== References ==
<references/>


==External Links==
==External Links==
http://ieeexplore.ieee.org.prox.lib.ncsu.edu/stamp/stamp.jsp?tp=&arnumber=59&isnumber=6
:http://ieeexplore.ieee.org.prox.lib.ncsu.edu/stamp/stamp.jsp?tp=&arnumber=59&isnumber=6
:http://en.wikipedia.org/wiki/Spiral_model
:http://searchsoftwarequality.techtarget.com/definition/spiral-model
:http://www.selectbs.com/analysis-and-design/what-is-the-spiral-model

Latest revision as of 09:56, 27 October 2012

Spiral Model

A Spiral life-cycle model provides incremental development, using the waterfall model for each step, with aims of managing risk by ensuring client's approval on deliverables at the end of each iteration. This model was defined by Barry Boehm in his article A Spiral Model of Software Development and Enhancement<ref name = 'mul'>Boehm, B. W.; , "A spiral model of software development and enhancement," Computer , vol.21, no.5, pp.61-72, May 1988 doi: 10.1109/2.59</ref> from 1986. This model was not the first model to discuss iteration, but it was the first model to explain why the iteration matters.The spiral model (Boehm, 1988) aims at risk reduction by any means in any phase. The spiral model is often referred to as a risk-driven model.

The basic Spiral model contained four steps viz Planning, Design, Implementation and Risk Analysis. As originally envisioned, the iterations were typically 6 months to 2 years long. Each phase starts with a design goal and ends with the client reviewing the progress. Analysis and engineering efforts are applied at each phase of the project, with an eye toward the end goal of the project.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>

Why Spiral Model

In early 1970's the traditional Waterfall model had gained much influence and was very widely adopted. Infact to this day it serves as a backbone to many software projects. However, the waterfall model lacked in certain areas which realized the need for a newer model with more flexibility. The waterfall model had its emphasis on fully elaborated documents<ref name = 'mul'>Boehm, B. W.; , "A spiral model of software development and enhancement," Computer , vol.21, no.5, pp.61-72, May 1988 doi: 10.1109/2.59</ref> as completion criteria for early requirements and design phases. For some classes of software, such as compilers or secure operating systems,this is the most effective way to proceed. However, it does not work well for many classes of software, particularly interactive end-user applications. Document-driven standards have pushed many projects to write elaborate specifications of poorly understood user interfaces and decision support functions, followed by a bad design and development of large quantities of unusable code.

There was a need of a model which can incorporate the changing requirements of the client and involve the client in development phases so there can never arise a scenario when a client says, "I asked for an Apple and you gave me an Orange". Prototyping Model was the answer however it lacked the structured and systematic approach of waterfall model. Thus taking into considering the best features of the waterfall model and prototyping model, a new model called the Spiral model was developed. This model adopted the controlled and systematic approach of waterfall model by splitting each spiral in 4 definite phases viz Determining objective, Risk Assessment, Development and testing and planning of next phase. The spirals are iterative consisting of the same 4 task in the same order. At the end of each spiral, a deliverable is provided to the client for review thus, incorporating the features of the Prototyping model.

Thus the Spiral model started gaining recognition for the projects that had unstable and ever changing requirements and the costs associated with failure of the project were very high.

Back to top

The Model

The spiral model amalgamates the idea of iterative development with the traditional, controlled aspects of the waterfall model. Therefore it reaps the benefits of both top down and bottom up approaches of software development. The major distinguishing feature of Spiral model is that it creates a risk driven approach to software development process, preempting the prevailing document-driven approach or code-driven approach. The lifecycle of the model revolves in a spiral, consequently justifying the name of the model. Each spiral carries out all the tasks that usually one finds in the waterfall model starting with Requirement analysis, Design followed by Prototype Development and Testing. In addition to these, it also includes a refinement phase, wherein all the engineering excellence activities are carried out, and risk analysis at the end of each spiral that asserts the risks, both technical and managerial, associated with the product and helps customer take a standpoint. Spiral model is touted to be the first model that could successfully emphasize the importance of iterations, because at the end of each cycle we have a working prototype of the product probably with scaled down features. Each cycle is an extension of the product of its earlier iteration. The essential concept of the Spiral Model is "to minimize risks by the repeated use of prototypes" and other means. Starting at the center, each turn around the spiral goes through several task regions,

  1. Requirements plan and lifecycle of the cycle along with the alternatives are laid out incorporating as much details as possible.
  2. A thorough Risk Analysis is carried out on the last prototype, involving customers and other stakeholders and a preliminary design for the next prototype is created followed by its construction.
  3. This process is repeated till the point of customer satisfaction and the final system is constructed only with the consent of the customer.

The final phase of the Spiral Model is analogous to the Waterfall Model. At this point in the project, the software requirements are well-understood by means of development of several prototypes. The project should also have resolved the major risks involved with building the final version of the software. With these issues resolved, the detailed design of the software enters the last three processes of the Waterfall Model, and the software is created.


Back to top

Advantages of Spiral Model

  1. Spiral Life Cycle Model is a highly flexible SDLC model as it allows changes to be implemented at several stages of the project and coping with these changes isn’t a very big headache for the project manager.
  2. Project monitoring is very easy and effective. Each phase, as well as each loop, requires a review from concerned people. This makes the model more transparent. The list of concerned people not only include upper management but also the clients for which the software is being developed. As the client will be involved in the development of each segment, he would retain control over the direction and implementation of the project.
  3. Risk management<ref>http://istqbexamcertification.com/what-is-spiral-model-advantages-disadvantages-and-when-to-use-it/ </ref> is one of the in-built features of the model, which makes it extra attractive compared to other models.
  4. Project estimates<ref>http://www.sqa.org.uk/e-learning/SDM01CD/page_10.htm </ref> in terms of schedule, cost etc become more and more realistic as the project moves forward and loops in spiral get completed as the process of building up large systems in small segments makes it easier to derive correct metrics for these calculations.
  5. Project deliverables are generated at a very early stage of the project. Suitable for projects which need a quick deliverable (at least a beta version) to reach markets.
  6. It is suitable for high risk projects, where business needs may be unstable.


Back to top

Disadvantages of Spiral Model

  1. Cost<ref>http://newton.cs.concordia.ca/~paquet/wiki/index.php/Spiral_model </ref> involved in this model is usually high as no of deliverables to be provided increases with an added cost of risk assessment.
  2. It is a complicated approach especially for projects with a clear SRS. If the project has clear SRS then effort is being wasted in repetitive specification gathering and client conferences.
  3. Skills required, to perform risk assessment from time to time, need expertise. Also, Rules and protocols should be followed properly to effectively implement this model. Doing so, through-out the span of project is tough.
  4. It demands considerable risk assessment expertise and relies on this expertise for success. If a major risk is not uncovered and managed, problems will undoubtedly occur.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>
  5. It may be difficult to convince customers (particularly in contract situations) that the evolutionary approach is controllable.<ref name = 'multiple'>Pressman, Roger (2010). Software Engineering: A Practitioner's Approach. Boston: McGraw Hill. pp. 45-47. ISBN 9780073375977</ref>
  6. It is not suitable for low risk projects. Spiral model lays more stress on Risk Assessment, however in a low risk project, this very feature of spiral model becomes a liability.
  7. Suitable for only large scale software development. Does not make sense if the cost of risk analysis is a major part of the overall project cost.

Back to top

When to use Spiral Model

  1. When costs associated with the risks are important as risk evaluation would help to keep project from failing
  2. For medium to high-risk projects
  3. Users are unsure of their needs as spiral model incorporates all changes without much of a problem
  4. Requirements<ref>http://www.scribd.com/doc/39716466/20/When-to-use-Spiral-Model-When-to-use-Spiral-Model</ref> are unclear or complex. The iterative requirement gathering stage in each spiral in time simplifies the requirements
  5. New product line as time to market of a prototype is less in a spiral model
  6. Significant changes are expected (research and exploration)

Back to top

References

<references/>

External Links

http://ieeexplore.ieee.org.prox.lib.ncsu.edu/stamp/stamp.jsp?tp=&arnumber=59&isnumber=6
http://en.wikipedia.org/wiki/Spiral_model
http://searchsoftwarequality.techtarget.com/definition/spiral-model
http://www.selectbs.com/analysis-and-design/what-is-the-spiral-model