Waterfall software development

Published:

Waterfall programming is a paradigm of programming in which the software development is a sequential design process. The main steps and tasks to follow sequentially are:

  • Requirement analysis: phase where we have to analyze the requirements that the next complete product has to meet.The requirements should be documented, actionable, measurable, testable, traceable, related to identified business needs or opportunities, and defined to a level of detail sufficient for system design. There are different types of requirements to meet as customer requirements, architectural requirements, structural requirements, behavioral requirements, functional requirements, design requirements among others.
  • Software design: how the requirements has to be met. Build the description map of the software. There are utilities and methods to do it as UML.
  • Implementation: the actual programming the code.
  • Testing: ensuring that the code works as it is supposed to work.
  • Integration: Integrating the part of the code in the other parts of codes. Some times implies to design APIs and code the actual interaction code, between both parts of software.
  • Deployment: ensure that the software it is valid to use in the system it has to be used.
  • Maintenance: fix bugs after delivery and adaptation to new cases.

The main drawbacks of this development model is that requires to much knowledge of how the project has to be, even before starting. My experience tell me that the less time expended in requirements, much happier are the developers. The impossibility to catch with a same idea the whole combinations of possibilities we want to tackle with a project could be frustrating, if we try to make it just at the beginning with no previous coding experience of the problem we want to tackle. By other hand, in order to keep the control of the project we have to prepare some planning to start with. This could be the most difficult task in the and where the software engineers can make difference with the rest of the casual programmers.

See also

Agile software development

Material

  • http://www.oxagile.com/company/blog/the-waterfall-model/

Papers

  • Benington, Herbert D. (1 October 1983). [“Production of Large Computer Programs”] (http://sunset.usc.edu/TECHRPTS/1983/usccse83-501/usccse83-501.pdf). IEEE Annals of the History of Computing (IEEE Educational Activities Department) 5 (4): 350-361. doi:10.1109/MAHC.1983.10102. Retrieved 2011-03-21.
  • Royce, Winston (1970), “Managing the Development of Large Software Systems”, Proceedings of IEEE WESCON 26 (August): 1-9

Books