Agile vs. Waterfall Software Development

Popular News Tags (5289)

  • Having spent the majority of the past five years working with the waterfall approach to software development, I find myself being thrust into the world of agile software development.

     

    Now that I am settled into the agile approach I would like take some time to outline the advantages and disadvantages of both; firstly taking a look at the well renowned waterfall model.

     

    Waterfall Approach


    The waterfall model is very much a sequential approach to the whole design process and in my opinion it is the most well-known model in software development. It flows through conception, initiation, analysis, design, implementation, testing, and then finally maintenance. Once one stage has been completed the next one begins, some people say that the model originates from the construction industry; i.e. you can’t put a roof on a house until you build the walls and you can’t build the walls until you have a solid foundation.

    The advantage of this model is that everything is split up nicely into blocks of work, thus reducing the reliance on individuals within the project team. People can come and go into the project as and when they are needed, and the overall execution of the project remains unaffected. The disadvantage is the inability to move backwards through the stages without great cost to the project. In the waterfall model the onus is very much on spending the time at the beginning and getting the requirements watertight before moving on to the next stage. Just like a waterfall in real life, the flow should only go one way.

     

    Agile Approach


    The agile software development model again breaks the project work down into chunks, but this time the pieces of work are much smaller. The main difference between this model and its predecessor is the iterative and incremental approach to the work. Requirements often change throughout the whole process as testing occurs at the same time as implementation. With this approach project resources will often be involved in numerous pieces of work at any one time with the whole thing only clicking together at the very end.

    The advantage of agile methodology is that the developers can focus on smaller areas of work, which in turn means overheads are reduced. If the customer isn’t quite sure what they want at the beginning it can be an advantageous model that allows changes throughout the majority of the process. The disadvantage however is that agile projects can often get lost in an endless cycle of updates and ‘nice to haves’. The longer the project continues obviously the greater the costs are going to be. The agile methodology really only works if the project has a customer who knows exactly what they want and competent developers who can deliver on multiple, smaller pieces of work at the same time.


    Summary


    I think there is obviously room for both models in the software development world. In my eyes the waterfall approach is the most well-known way to develop. It was the approach I was primarily taught when going through education, and in all honesty the one I am most comfortable developing in. That doesn’t mean I cannot see the appeal in the agile approach, however the thought of allowing requirements changes throughout the development stage is something that keeps me awake at night. I guess in the end it comes down to what works best for the type of project you have, and more importantly the team you have around you.

     

    If you are interested in joining our team then why not head over to our opportunities page to see if anything catches your eye.

     

    Mark

     

     

    Visit our blogs

Share this story