CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Raymond Lewallen

Framework Design, Agile Coach, President Oklahoma City Developers Group, Microsoft MVP C#, TDD, Continuous Integration, Patterns and Practices, Domain Driven Design, Speaker, VB.Net, C# and Sql Server

Software Development Life Cycle Models

I was asked to put together this high-level and traditional software life cycle information as a favor for a friend of a friend, so I thought I might as well share it with everybody.

The General Model

Software life cycle models describe phases of the software cycle and the order in which those phases are executed.  There are tons of models, and many companies adopt their own, but all have very similar patterns.  The general, basic model is shown below:

General Life Cycle ModelGeneralModel

Each phase produces deliverables required by the next phase in the life cycle.  Requirements are translated into design.  Code is produced during implementation that is driven by the design.  Testing verifies the deliverable of the implementation phase against requirements.

Requirements

Business requirements are gathered in this phase.  This phase is the main focus of the project managers and stake holders.  Meetings with managers, stake holders and users are held in order to determine the requirements.  Who is going to use the system?  How will they use the system?  What data should be input into the system?  What data should be output by the system?  These are general questions that get answered during a requirements gathering phase.  This produces a nice big list of functionality that the system should provide, which describes functions the system should perform, business logic that processes data, what data is stored and used by the system, and how the user interface should work.  The overall result is the system as a whole and how it performs, not how it is actually going to do it.

Design

The software system design is produced from the results of the requirements phase.  Architects have the ball in their court during this phase and this is the phase in which their focus lies.  This is where the details on how the system will work is produced.  Architecture, including hardware and software, communication, software design (UML is produced here) are all part of the deliverables of a design phase.

Implementation

Code is produced from the deliverables of the design phase during implementation, and this is the longest phase of the software development life cycle.  For a developer, this is the main focus of the life cycle because this is where the code is produced.  Implementation my overlap with both the design and testing phases.  Many tools exists (CASE tools) to actually automate the production of code using information gathered and produced during the design phase.

Testing

During testing, the implementation is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase.  Unit tests and system/acceptance tests are done during this phase.  Unit tests act on a specific component of the system, while system tests act on the system as a whole.

So in a nutshell, that is a very basic overview of the general software development life cycle model.  Now lets delve into some of the traditional and widely used variations.

 

Waterfall Model

This is the most common and classic of life cycle models, also referred to as a linear-sequential life cycle model.  It is very simple to understand and use.  In a waterfall model, each phase must be completed in its entirety before the next phase can begin.  At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project.  Unlike what I mentioned in the general model, phases do not overlap in a waterfall model.

Waterfall Life Cycle ModelWaterFallModel

Advantages

  • Simple and easy to use.
  • Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.

Disadvantages

  • Adjusting scope during the life cycle can kill a project
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Poor model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Poor model where requirements are at a moderate to high risk of changing.

 

V-Shaped Model

Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes.  Each phase must be completed before the next phase begins.  Testing is emphasized in this model more so than the waterfall model though.  The testing procedures are developed early in the life cycle before any coding is done, during each of the phases preceding implementation.

Requirements begin the life cycle model just like the waterfall model.  Before development is started, a system test plan is created.  The test plan focuses on meeting the functionality specified in the requirements gathering.

The high-level design phase focuses on system architecture and design.  An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.

The low-level design phase is where the actual software components are designed, and unit tests are created in this phase as well.

The implementation phase is, again, where all coding takes place.  Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.

V-Shaped Life Cycle ModelVShapedModel

Advantages

  • Simple and easy to use.
  • Each phase has specific deliverables.
  • Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.
  • Works well for small projects where requirements are easily understood.

Disadvantages

  • Very rigid, like the waterfall model.
  • Little flexibility and adjusting scope is difficult and expensive.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • Model doesn’t provide a clear path for problems found during testing phases.

 

Incremental Model

The incremental model is an intuitive approach to the waterfall model.  Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle.  Cycles are divided up into smaller, more easily managed iterations.  Each iteration passes through the requirements, design, implementation and testing phases.

A working version of software is produced during the first iteration, so you have working software early on during the software life cycle.  Subsequent iterations build on the initial software produced during the first iteration.

Incremental Life Cycle ModelSpiralModel

Advantages

  • Generates working software quickly and early during the software life cycle.
  • More flexible – less costly to change scope and requirements.
  • Easier to test and debug during a smaller iteration.
  • Easier to manage risk because risky pieces are identified and handled during its iteration.
  • Each iteration is an easily managed milestone.

Disadvantages

  • Each phase of an iteration is rigid and do not overlap each other.
  • Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle.

 

Spiral Model

The spiral model is similar to the incremental model, with more emphases placed on risk analysis.  The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation.  A software project repeatedly passes through these phases in iterations (called Spirals in this model).  The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed.  Each subsequent spirals builds on the baseline spiral.

Requirements are gathered during the planning phase.  In the risk analysis phase, a process is undertaken to identify risk and alternate solutions.  A prototype is produced at the end of the risk analysis phase.

Software is produced in the engineering phase, along with testing at the end of the phase.  The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

In the spiral model, the angular component represents progress, and the radius of the spiral represents cost.

Spiral Life Cycle ModelSpiralModel

Advantages

  • High amount of risk analysis
  • Good for large and mission-critical projects.
  • Software is produced early in the software life cycle.

Disadvantages

  • Can be a costly model to use.
  • Risk analysis requires highly specific expertise.
  • Project’s success is highly dependent on the risk analysis phase.
  • Doesn’t work well for smaller projects.

 

And that’s it.  If you have any input, especially your views on advantages and disadvantages of any particular model, feel free to leave them in the comments and I can add them to my copy.



Comments

Sahil Malik said:

Hey Ray,

This is a good post, but for some reason it isn't appearing in aggregators.

Secondly, isn't extreme programming very similar to the spiral model? Just a few new bells whistles and buzz words !!!

- SM
# July 13, 2005 7:28 AM

Jeremy said:

XP is iterative *and* incremental (like RUP and essentially all modern processes). Barry Boehm's old spiral model is only iterative. It's actually a significant difference.
# July 13, 2005 8:32 AM

shebert said:

I guess I've never seen the V-shaped testing model as an SDLC - but your picture changes the testing model blocks and is interesting. I wonder if High-Level Design should be mapped to Acceptance Testing, Low-Level (Use Case?) to Integration Testing and then break out the Implementation into 3 blocks (Unit Test Design) -> (Implementation) -> (Unit Test Execution). That's a fairly decent picture to how TDD fits in the picture. :)

You might want to look at the models called out in Rapid Development: these include Code/Fix, waterfall, staged delivery, design to schedule, evolutionary prototyping, evolutionary delivery, modified waterfall (sashimi), spiral, RUP and Agile. Agile wasn't listed in the book, but I blogged about Construx' discussion of it (Construx is owned by McConnell): http://codebetter.com/blogs/steve.hebert/archive/2005/07/13/129119.aspx

-Steve
# July 13, 2005 9:15 AM

darrell said:

For the incremental picture, you might want to indicate there are multiple incremental flows.

Great overview!
# July 13, 2005 11:31 AM

David Boschmans' Weblog said:

Raymond Lewallen provides a great overview of 4 software development lifecycle models:

the Waterfall...
# July 14, 2005 5:56 AM

Rob Caron's Blog said:

Visual Studio Team System

There’s a new Team System community site – TeamSystemRocks.com! ⊕
Well,...
# July 14, 2005 6:36 PM

Tech Guru said:

# July 14, 2005 7:44 PM

Ganesh said:

Hi Ray,
This is really a cool and an informative piece of information on sdlc models.
# August 23, 2005 12:43 PM

Mithun said:

This is a very Good Article That would help to understand Different SDLC Models.
# September 5, 2005 3:01 AM

Santosh Kale said:

Hi,

This is a kind of article i was looking for, thanks for sharing it with all. This would help in understanding the different SDLC models.

Thanks & Regards,
Santosh Kale
# September 9, 2005 5:41 AM

Irwin said:

I loved this article, it was a great source for my Computer Science cource. Thanks so much!

PS.
Ofcource I sited my resources. :)
# September 11, 2005 9:34 AM

Kunal Aggarwal said:

Hello firends,
I am facing major problem in deciding SDLC for my project.
It is already in ASp I want to Convert it in ASP.NET and C#.
Please send me your choice and supported reasons for that.

With regards
Kunal Aggarwal
kunala@vmoksha.com
# September 15, 2005 4:32 AM

Louise said:

whats the difference between a spiral model and a waterfall model
# September 16, 2005 4:42 AM

Adam said:

Thanks for sharing this with everyone, it really helped me explain system life cycles on my Computing course at uni.
Thanks

p.s. would it be possible for me to use those diagrams?

thanks

Adam

adamh00@hotmail.com
# September 19, 2005 8:07 AM

Akshatha said:

This was very informative. In simple words, you explained a lot
# September 21, 2005 4:34 AM

Eddy said:

Who wrote this artical? if possible to use the pictures, i would like to give credit to the author within my biblography.
# December 9, 2005 12:13 PM

Raymond Lewallen said:

Eddy, I wrote the article and made the nifty little pics. Credit Raymond Lewallen in your bibliography.
# December 9, 2005 12:18 PM

King said:

thanks very much for ur post
# December 13, 2005 9:13 AM

Nigel said:

Many thanks for this excellent overview! Very helpful for an Assignment i have to write. Thanks a lot for the post.
# December 20, 2005 8:12 AM

Gurpratap said:

this article helps me to crack my interview and i am very thankful to the person who has written such a easy to understand article.
# December 29, 2005 12:38 PM

Raymond Lewallen said:

Gurp,

Glad it turned out to be so useful for you! Congrats on your interview and good luck with your job.
# December 29, 2005 1:24 PM

Gonzalo Espert, Argentina said:

I would like to note that according to McConnell's "Rapid development" book and also "Quality Software Project Manajement" from Software Quality Institute Series, the incremental development life cycle model does not imply that each iteration passes through the requirements, design, implementation and testing phases. They both state that each iteration passes through detailed design, implementation and testing phases. Thus requirements and high level design is done once at the begining.

thanks.
# February 2, 2006 11:31 AM

Raymond Lewallen said:

Gonzalo,

All SDLC's have variations to them, and you have stated a variation that McConnell's opinion is that is a better incremental model. I disagree with his assertion, as you cannot design completely upfront in and in one single phase because its a losing battle. Those requirements and design are going to change, so attempting to do it all at once is a futile process.
# February 2, 2006 10:16 PM

Gonzalo Espert, Argentina said:

Thanks Ray for your clarification.

In that case, which would be the diference between the requirement phase of the first iteration and the following ones? If you are only refining the requirements wouldn't you be re-working iteration after iteration? On the other hand, how do you carry the planing phase if you don't know what would come up in the requirement phase of each iteration?

Note that I'm not saying that your approach is incorrect. I'm trying to understand your incremental model more thoroughly.

Kind regards.
# February 3, 2006 9:01 AM

Raymond Lewallen said:

Gonzalo,

The XP methodology of software design explains it very well because its an agile model that adapts to change easily. I would start here:

http://www.extremeprogramming.org/rules/iterationplanning.html

to answer your specific questions, and then read through more of the information that you find on the site. That will give you a better view of the approach I support concerning the iterative + incremental SDLC.
# February 3, 2006 11:29 PM

Prakash said:

Good one. This is what looking for. Explained in simple text with good pictorial representation. Thanks.
# March 19, 2006 9:48 AM

swetha said:

Good one. This is what looking for. Explained in simple text with good pictorial representation. Thanks.
# March 29, 2006 4:09 AM

aish said:

i get all knowledge abt software development life cycle that iwant thanks for your knowledge
# April 8, 2006 3:33 AM

muhdiin said:

compaire between prototype model and linear sequential model
# April 9, 2006 4:46 AM

Cuckoo said:

Raymond, very well explained in a concised manner !! Looking forward to some more comparisons.
# April 12, 2006 3:58 AM

Madhavi.s said:

good information regarding the models.can u explain which would be more useful for small projects and big projects.
# April 21, 2006 11:44 AM

Geo said:

Good explanation on models. all people have contributed well to this topic.

Could you tell which model suits a product development project in which the resource skill set is low on ; a new tecnology area ; and technical aspects of development is unaware.
# April 28, 2006 1:47 AM

kiruba said:

good one
# April 30, 2006 2:09 PM

amrita said:

hey this is good one but what abt new type model scrum used by microsoft mention nothing abt it
# May 4, 2006 8:43 AM

Raymond Lewallen said:

SCRUM is not a super common model, although its certainly going to be in the near future, like many agile models.  SCRUM is an incremental/iterative model combination.  These types of models are making serious headway into mainstream development and are used by more and more teams everyday.
# May 4, 2006 9:02 AM

kiran said:

very good stuff. wants v-model in details. thaks for stuff
# May 5, 2006 5:50 AM

Adi said:

Nice Summary!... Add something about RUP!

adi
# May 5, 2006 12:11 PM

ioajgfw said:

umechemsha v shped model haipo vile kabisaaa!
# May 6, 2006 7:26 AM

navaneeth said:

it good
# May 9, 2006 3:11 AM

Beverly said:

This article help me a great deal in my project on sdlc models and am just saying thankyou.
# May 11, 2006 6:32 AM

Sunil said:

Good one!
# May 11, 2006 11:59 PM

surekha said:

Good one,I'am preparing for my interview and this is what i was looking for. Very simple but explains every thing. Thank you.
# May 16, 2006 1:37 AM

o said:

kkkkkkkkk
# May 21, 2006 6:54 AM

Abdi somali said:

thanks for doing my coursework for me maan this is what i needed
# May 21, 2006 7:00 AM

Gopi said:

Nice and very good Jurney about SDLC
# May 22, 2006 9:35 AM

Learner said:

I would like more in detail about the differences between high-level design and low-level design. Where can I find them?

Thanks in advance
# May 23, 2006 1:11 AM

Kunal said:

Brilliant description
# May 23, 2006 9:56 AM

Kishore said:

Hi,
 thanks for ur brief introduction abt SDLC Models.
But i love to see more about V and waterfall models and it's differences and most commonly used model now a days in industries?.
It will be better and very usefull for begineers.

thanking u

kishore kumar
# May 24, 2006 9:20 AM

Gerard White said:

I'm working on a project where we're delivering iterations of the product in phases over four years (one per year).
For our Software Development Plan (SDP), I'm trying to explain how to ensure overlapping test and design phases (test from previous - and design of next phase) don't lose any changes.
Anyone know of a good document I can check out and/or reference?

Thanks!

- Gerry
# May 24, 2006 5:45 PM

Kiran said:

hi Ray
Really its helping alot for who want to know SDLC life cycles.
But wats the difference b/w Extreme programming and other models????
Thanks in advance
# May 25, 2006 3:55 AM

zorina - trinidad said:

hi just wanted to say that I had an assignment that required this information, and your explanation was so simple to understand, this was research we had to do, and I was able to write my assingment better because of you, thanks!!!
ps.  yes I didn't plagerise, I sourced the info
# May 25, 2006 11:56 AM

soul said:

great work man, keep it up.
# May 30, 2006 3:01 AM

Laszlo said:

Hello all,
I can say Scrum is definitely making headway with a number of Fortune 500 / Global 1,000 companies embracing the values of the www.AgileAlliance.org and the www.scrumalliance.org  

I dug up Kane Mar’s article on staggered iterative waterfall, part1 and part 2 here; I think it is relevant to the discussion:
http://danube.com/blog/kanemar/the_staggered_iterative_waterfall_anti_pattern_part_1.html
and
http://danube.com/blog/kanemar/the_staggered_iterative_waterfall_anti_pattern_part_2.html

Best of luck on your projects.
# June 6, 2006 9:02 PM

sathish said:

gud one for beginners !!!!!
# June 7, 2006 7:54 AM

Rizwana said:

hey...this comparision really helped me to understand wot i shud choose for my project...also include rapid prototype model,exteme prgrammig,code n fix and synchronize-stabalize models....thank ya
# June 25, 2006 5:07 AM

Rizwana said:

hey...this comparision really helped me to understand wot i shud choose for my project...also include rapid prototype model,exteme prgrammig,code n fix and synchronize-stabalize models....thank ya
# June 25, 2006 5:08 AM

rizwana said:

hey...this comparision really helped me to understand wot i shud choose for my project...also include rapid prototype model,exteme prgrammig,code n fix and synchronize-stabalize models....thank ya
# June 25, 2006 5:09 AM

rizwana said:

hey...this comparision really helped me to understand wot i shud choose for my project...also include rapid prototype model,exteme prgrammig,code n fix and synchronize-stabalize models....thank ya
# June 25, 2006 5:10 AM

Diya Trivedi said:

Hi, In lot of interviews iam asked if iam aware of X model or Y model along with V model. Is there something like X model and Y model for SCDL?
# June 27, 2006 3:05 AM

Poonam said:

good article. But i hav never seen a v-shaped life cyle model. where can i get details of this model?
# June 30, 2006 6:23 AM

angela said:

what does MVP stands fo in ur name. is it Master of Various Platforms :)
# June 30, 2006 6:34 AM

Pratichi said:

this is eally very nice and helped me in doing the analysis of my project.
# July 3, 2006 1:18 PM

Raymond Lewallen said:

Angela, that would be Microsoft "Most Valuable Profressional".
# July 7, 2006 5:51 PM

Raymond Lewallen said:

Poonam,

Try googling for "v-shaped life cycle", or some variation thereof.
# July 7, 2006 5:52 PM

pavithra H A said:

GOOD ONE!!
its really helpfull
# July 11, 2006 2:23 AM

Nguyen Thi Linh said:

How many life cycle models are applied now a day? The models waterfall and spiral are nolonger used, are they?

I'm a new project manager so I need alot of project management information. I would like you reply my answer to my email box thnhatlinh@yahoo.com
# July 17, 2006 3:59 AM

Daffodil said:

Thanks so much for such a comprehensive explanation of the SDLC models - Nice overview.  
# July 20, 2006 3:53 PM

Venkat Raja said:

Very nice article, you have the gift of putting it in simple terms. Thank you for sharing it.
A few questions .........
Could you please add examples of risks in the softwre context ?
Also can you give examples of requirements changing midstream?
How come they are so?
# July 22, 2006 10:06 AM

Jaya said:

Very Nice!
# July 26, 2006 2:30 AM

Jaya said:

It's very helpful to me.Thanks a lot
# July 26, 2006 2:32 AM

scywaulcher said:

the way you explain concepts is good , you should consider writing more books and articles :) .
# July 27, 2006 3:19 AM

Vijaya Sreenivas said:

Exactly this entire page gives us clear knowledge on SDLC model. If u need basic knowledge go through it.....
# July 28, 2006 2:35 AM

Vijaya Sreenivas said:

Freshers go through it & enjoy the concepts....
# July 28, 2006 2:36 AM

Simply , it is wonderful said:

Thanks a lot author.
# July 31, 2006 6:11 AM

Lokanath Reddy .D said:

Simply , it is wonderful
# July 31, 2006 6:11 AM

Minal said:

Hi

This is a great article.

I just have one doubt. I was thinking that wouldn't Spiral model alos hav the same problem as the Incremental model i.e. "Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle"

In the spiral model, how would you make sure that you have rightly estimated the scope of the project in teh first phase of planning?

Minal
# August 1, 2006 4:54 AM

Minal said:

Hello

One more question, where does the rational unified process fall in these. Isnt that another type of Software development methodology?

Minal
# August 1, 2006 4:56 AM

Diyi Srinivas said:

Advantages&Disadvantages reg models are not clear i suppose.
I feel that General Life Cycle model should be updated.
Thanks for nice postings.Thank u once again.
                                                        Srinivas Diyi
# August 1, 2006 6:21 AM

Sanjeev said:

Information is good. But I think this is not enough information. Very less ponints are mentioned.
# August 2, 2006 3:05 AM

DCP said:

What hav been explained in wATERFALL Model is not seems to be correct, can u plz check b'coz the requirement shpul be mapped with UAT and rest of them in the same way, on seeing this many would be miss lead so change as soon as possible.

# August 2, 2006 7:49 AM

Dilip said:

Data Provided Is Good,Especially The Pictorial Representation Is Impressive.Thank You.
# August 3, 2006 11:41 PM

Srinivas said:

Hi. Had there been info about when to use what would have been  very much appriciatable . This info is great and useful for most of the S/W engg
# August 4, 2006 1:43 AM

Hoch Srinivas said:

The Information is Helpful Especially For Basic Learners.Thank You.
# August 4, 2006 7:35 AM

Richmond Enriquez said:

Hi, This is what I'm looking for. You're article is very much informative and it helped me in my software engineering course. Thanks a lot.
# August 4, 2006 10:29 PM

Priya said:

Thank you for sharing this information. I could not get such an information anywhere else.
# August 9, 2006 9:44 AM

Prudent said:

Documents seems to be good , our suggestion is to go little bit depth
# August 10, 2006 5:39 AM

Prudent said:

Documents seems to be good , our suggestion is to go little bit depth
# August 10, 2006 5:41 AM

sridhar said:

Excellent material...
# August 10, 2006 12:58 PM

suryakiranmurthy said:

can u pls discuss about the vv model ?
# August 16, 2006 4:10 AM

Prem said:

Great article and worth having Five stars. Lot of valuable info presented in succint paras.  great.
# August 16, 2006 6:15 AM

sai said:

Very Good
# August 17, 2006 1:57 AM

Markov said:

Very good article about SDLC.
# August 17, 2006 3:21 AM

Francis said:

This is a good material. But, I am not familiar with the V-shaped Life Cycle Model.
# August 17, 2006 3:53 AM

Ashok said:

This site is too good
# August 21, 2006 8:05 PM

kumar sundaram said:

it is very simply and easy to understand .
# August 22, 2006 5:32 AM

Ramesh Reddy said:

Nice work. Very much helpful for me. Thank you
# August 22, 2006 7:45 AM

Jeff said:

Can anyone help me.. BTW, great article... uhmm what model should i use for this kind of project.. actually its for my thesis... an online expert system that uses schema matching for data warehousing... please help me.. thanks in advance...

# August 25, 2006 1:39 PM

Abhijeet said:

That was really a nice topic, very helpful..

# August 28, 2006 2:35 AM

Sandesh said:

Nice Work and very helpful for me in getting differences in all the different models ..

# August 28, 2006 2:42 AM

Lloyd said:

to Mr. Lewallen, thank you very much for posting the SDLC, ill be using it for my software methodolgy

# August 31, 2006 5:36 AM

M.Dayananthan said:

Nice article to refresh abt SDLC....Thanks...

# September 1, 2006 12:20 AM

Zaki said:

I don't see the UAT in the V-model.Can someone throw some light on this?