Software Development Methods

Lately I’ve been noticing that it’s not that common to understand the different software development methodologies that are being used in the field. So this post is to provide you with a quick overview.

“A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.” Source : Wikipedia

Waterfall (Traditional)
The waterfall development model originates in the manufacturing and construction industries; highly structured physical environments in which after-the-fact changes are prohibitively costly, if not impossible. Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development. The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through all the phases.
More info :

RUP (Iterative)
The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs.
More info :

RAD (Spiral)
Rapid application development (R.A.D) is a software development methodology that uses minimal planning in favor of rapid prototyping. The “planning” of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements.
More info :

XP (Agile)
Extreme Programming (XP) is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent “releases” in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
More info :

Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Scrum focuses on project management institutions where it is difficult to plan ahead. Mechanisms of empirical process control, where feedback loops that constitute the core management technique are used as opposed to traditional command-and-control management. Its approach to planning and managing projects is by bringing decision-making authority to the level of operation properties and certainties.
More info :
(Another method named “Kanban” is oftenly associated with SCRUM, yet there are subtle differences!)

Closing Thoughts
Be aware that there is NO silver bullet… Each method has its own advantages and disadvantages. Be sure to study each one before choosing the right on for YOUR team. It’s not because SCRUM worked with a given team for project Z, that it will for another team that’ll code project Y. (Be aware of cargo cult!)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.