Increasingly, I keep hearing references like the
challenges and benefits to waterfall approach versus agile approach to software
development. Whether these are software developers, testers, technical operations,
project management, or sales & marketing professionals, the underlying
theme is that software development life cycle (SDLC) has become synonymous with
waterfall development but agile is not. Focusing on the core principles of
agile, primarily ‘working software versus comprehensive documentation’, isn’t
agile approach also developing a software? Aren’t the concepts of planning at
various layers, such as daily, iteration or sprint, and release, to iteratively
develop incremental software enhancements part of a life cycle for software development?
So, where is the huge disconnect?
The challenge is not in the approaches but in people’s
incorrect assumptions in thinking what the original SDLC proposition was and
equating it to waterfall. In fact, in a recent meeting that I attended in PMI
Mass chapter, many participants didn’t relate to the original author of SDLC,
Winston Royce’s seminal proposition in 1970 who himself related to the
challenges promoting incremental and iterative approach and the increasing
involvement from project management in software development. Practitioners
therefore created a non-existent and non-functional theory of waterfall
embedded with the assumptions below that are challenged by my scholarly publication (Rajagopalan, 2014).
2. Big upfront requirements gathering
3. Gathering requirements upfront saves cost
4. Analysis follows requirements followed by design
5. Project Management is not part of software development
6. High degree of documentation needed before starting work
7. Customer sees work after all the work is developed and tested
8. Testers need not be involved early
Therefore, I will deviate from using the word, “waterfall”
or “traditional” approach and recommend using the “plan driven development” using
the rapid application development and fundamental project management
principles. Basically, the requirements for the choice of agile or plan driven
approach to software development lies in the problem being solved.
If the
challenge is to build a mission critical application controlling the amount of x-ray
radiation that will be discharged by a software application, then, a plan
driven approach may be a better fit because of the certainty in requirements
that can be reasonably predicted, and the amount risk involved in doing it
incorrectly without impacting the profit margin. On the other hand, if the requirements
are not certain and the complexity is not high where the functionality is
possible to release in an iterative fashion such as a new mobile application or
responsive website for student enrollment in a college, then, agile may be a
better candidate.
So, instead of choosing the methodology and solving the problem
using the methodology, the methodology must be chosen based on the problem
solved!
Thoughts?
References
Rajagopalan, S. (2014). Review of the myths on original software development model. International Journal of Software Engineering & Applications, 5(16), 103-111. Retrieved from http://airccse.org/journal/ijsea/papers/5614ijsea07.pdf