CSSLP Tutorial: Module 03,Part 04 – Development Methodologies

Development Methodologies

There are four main different types of methodologies which we use for our design process.  The first is waterfall which is a very traditional model where there are lots of phases and steps to it.  There is the second type which is the prototype and this is generally a working model and then the customer provides feedback, so it is a fairly costly process but is responsive to the customer’s feedback and needs that they may have. Then the third is the spiral model which is really a combination between the waterfall and prototype, The fourth is the most flexible and probably most popular at this time, known as the agile model.

When we look at the waterfall method, it’s pretty much a step by step model. You don’t move on to the next phase until the previous phase is finished.  For example, phase 1 then phase 2 then phase 3 and then so on.  It looks much like a waterfall that you’d find in nature, how the boulders make the step by step of a true waterfall out in nature. This particular model isn’t great for anything but short term projects. The requirements are all the way at the beginning of the process and then perhaps 6 months or even 5 years later, is when the code is eventually produced.  In the process, the code has changed many times over, and yet the coding is still consistent with what was originally given out as requirements at the beginning of the process. This is a big reason why this model isn’t great for anything but short term projects. On the other hand, there are tons of benefits to this particular model.  At each phase, there are particular, specific well-documented deliverables.  There is only focus on one step at a time, rather than trying to understand the whole overall process and working parts of the design process more randomly. So, it follows a logical pathway. For example, where the requirements are well understood and the project is quite small, the define/ design/ design again/ code  process is really quite good.

So it’s very much that phase based approach but it is also very static and doesn’t have a lot of flexibility to change with changing requirements. We know with working with customers, their requirements frequently change.So if we’re trying to adjust the scope during the lifetime of the project, that can cause great difficulty. We don’t actually produce the coding programming until very late in the process.  So, if the customer is wanting to change their requirements or is wanting to add feedback, this isn’t a great model for that particular expectation or customer need.  Instead, it is much better for short term projects which can be completed in under six months.  With prototyping, you design the model which is matched to meet the customer’s expectations.

So, prototyping is a much better model for meeting customer expectation.  The customer is able to evaluate the working model you’ve created, they are able to give feedback, as we design and develop a prototype of the code, if you will.  There’s a loop of communication that comes with prototyping.  However, a disadvantage to this model is that the customer can give direct feedback and they often don’t understand that even a small change can end up leading to thousands of lines of code.  Customers often don’t understand how much work is involved and the time investment. So, that is a downside to developing a software coding using this model.There’s a third model which is a combination of both the waterfall and prototype model. It is referred to as spiral.

Now a combination of the waterfall (the stepping, phase based) and the prototyping is revolving or circular in nature.  So if we take the steps of the waterfall and the circular nature of prototyping, we get the spiral model.  At the end of each phase of the spiral model, we’ll produce a prototype that we’ll get feedback on. This can be quite costly to use and it puts a lot of emphasis on early on cost-benefit analysis , making sure we know what the risks are, This takes a lot of expertise to pull off successfully. 

The one model that we hear about most often and is used most often is referred to as the agile model.  There are several steps to go through with this model. Five of the steps are brainstorming, designing, development, Q/A. deployment. This particular model is very flexible and allows the requirements to change throughout the design process, where we allow customer to add feedback.  This is a model for small projects for small sections of a larger whole.  This tends to produce fewer defects and fewer problems in flexibility. However, there is less documentation and therefore, less control on configuration managements as well as less focus on design up front. It’s not quite a winging it model, but does have some qualities similar to that.  Just like any of the other models, there are pros and cons with this model.

Each of the different models have their benefits and disadvantages.  While waterfall is more traditional and logical step by step, it lacks the flexibility that the agile model has. While the agile model has a great amount of flexibility, there’s not nearly as much planning, designing, and documentation at the start of the process.  Prototyping is very responsive to the changing needs of the customer, however, it can run quite costly via financial costs and/ or workload and time costs.The spiral mechanism  can give me a combo of waterfall and prototyping, so it has benefits there but it can also be very expensive. It can add to the workload by producing that prototype and then going back into the phase and then reproducing another prototype with the steps, it can be very costly.  Each model has its own unique sets of benefits and disadvantages, it just depends on what kind of project you are making.