Appearance
Software Process Models
A software process is defined as a set of related activities that leads to the production of a software product. At an abstract level, a software process involves activities related to specification, design, development, validation (testing), and evolution (maintenance) of software.
All process models can be categorized as one of the following:
- Plan-driven
- Agile
A plan-driven process is one where all of the process activities are planned in advance, and progress is measured against this plan. An example of a plan-driven process is the Waterfall model.
An agile process is one where planning is incremental, and it is easier to change the process per changing requirements.
INFO
Agile software development, since its inception at the turn of the (21st) century, took the software industry by a storm and quickly became the most popular (and fashionable) development style.
There are many reasons for the success of agile methodology but perhaps the most important is that, in practice, development teams following plan-driven approaches were not able to rapidly and flexibly produce software systems. The plan-driven process could be cumbersome and limiting as requirements are often changing and imperfectly understood at the outset of a software project.
INFO
Software development is often considered a wicked problem; a problem that must be solved to be understood.[1]
The agile process, on the other hand, is rooted in the incremental development approach that entails interleaving the activities of specification, development, and validation. The software is developed as a series of versions or increments, with each version adding functionality to the previous version. The underlying idea in this approach is to develop an initial version of your software, open it to feedback, and then incrementally develop newer versions based on this feedback.
It is beyond the scope of this course to explore this subject in greater detail. If you are interested, the Wikipedia article on Agile Software Development is a great starting point.
What is (and isn't) incremental development?
The idea of iterative and incremental development is often misunderstood. I recommend viewing the following short video for a better understanding of the agile methodology.
YouTube: Making sense of MVP!
Refer to "Development is inherently wicked". ↩︎