Stop using agile model for every product development.

James Oladimeji
6 min readJul 25, 2021
source: https://medium.com/omarelgabrys-blog/software-engineering-software-process-and-software-process-models-part-2-4a9d06213fdc

The phases of software development are not only cleared but very concise and explanatory as well, however the act or the plan to combine the phases to make a good software is what is called Software Process Model(SPM). Sommerville (2016) defines software process model as the set of related activities involved during production of software from start to finish. The main idea behind the SPM is organizing the order of the activities to know which came first or last and establishing the transition between those activities. SPM would have been effective and orderly if all softwares were made from scratch using standard programing language such as C#, Java, C++ etc, but in reality, enterprise or business applications software were actually made either from existing software, or have third party dependencies or modified off-shelves software configuration or probably built on top of existing softwares etc (Sommerville, 2016).

The proposal behind SPM was to bring order to chaos in software development and this really works because research has shown that since the inception of SPM there has been orderliness and good structure in the software development team (Lior, 2013). There are numerous models but one thing that is common among them is that they all include four distinct phases(requirement gathering, construction, testing and maintenance) of software engineering, project/product development determines which software process model one should go for, it is advisable to fully understand the nitty gritty of the model and when to apply them to your next project. Some models are good for complex projects while some are for experimenting or small projects/products etc. below are the some of the popular SPMs we have:

Waterfall model

source: https://artoftesting.com/waterfall-model

This is the grandfather of all models and far most simplest developed by Winston W. Royce in the year 1970. Waterfall model is derived from the general software development lifecycle (SDLC) where each phase represents each activity in a linear manner and one activity must be completed before proceeding to the next (Bindrees et al., 2014). Waterfall model is at its best or most preferable if the product requirements are known and stable, the domain is well known and the technology involved is fully understood. The main advantages of the waterfall model is that it allows you to detect errors at an early stage of software development but is not flexible as it is known that no software requirements are stable and constant (Erickson-Gini, 2012).

Prototyping model

source: https://sites.google.com/site/bachelordegreeproject/theory-studies/software-prototyping

Prototyping model is the model applying for incomplete sample working software/projects where users are fully involved from the beginning. This is seen as product development repetitives where the product prototype will be redesigned to achieve the final product following the same phases that the prototype was developed. Research has shown that software prototyping models helps anticipate changes that will surface in the future (Sommerville, 2016). Also, it is an opportunity for the manufacturer to get an idea what the final product would like before commencing the additional resources such as time and money and is divided into four phases; identification of initial requirement, develop initial prototype, review and revise (What Is Software Prototyping?, n.d.). Software prototyping models allow early identification of changes, capture user requirements in concrete form and finally helps to know or feel what the final product would look like but the model could be costly, even initial design could be poor and there may be too many variations.

Iterative Model

source: https://www.smartsheet.com/iterative-process-guide

This is the process of developing software where all the software development phases are carried out on every iteration. Iterative models allow software to be developed in chunks with little functionality and additional features can be added on the next iteration, this model is good for less complex software and a stable working software is achieved at the every stage of development(any iteration) but could be costly for changes repetition and not good for large project(Barjtya et al., 2017).

Spiral Model

source: https://eternalsunshineoftheismind.wordpress.com/2013/02/26/spiral-model/

This is a risk-driven model and was formulated by Boehn(1988). It is the combination of an iterative model and SDLC in a spiral manner, others see it as a waterfall model in a spiral manner except with the addition of heavy risk features (Barjtya et al., 2017). For every round of the spiral there are four phases(identification, design, build, evaluation and of course risk analysis), a working software is achievable at every spiral, it is good for complex projects, very less failure but the risk is very high and there could be an infinity spiral(that is unfinished project(Barjtya et al., 2017; Sommerville, 2016).

V-Model

source: https://www.testbytes.net/blog/what-is-v-model-in-software-testing/

One of the main drawbacks of the waterfall model is inability to do testing on the phases until the last phase being a one way-ticket model, V-model came into existence to mitigate this problem. The ‘Das V Modell’ is the official project management method used by the German Government and provides guidance for planning and executing projects (Childs, 2019). V-model is an advanced waterfall model by providing the ability to test each phase of software development in reverse manner (Nonsiri et al., 2013). V-model provides early stage error removal, has a success rate compared to waterfall but is not flexible, rigid and high risk is associated with this model (Barjtya et al., 2017).

Agile Model

source: https://devcom.com/tech-blog/agile-advantages-for-business/

As they say, the last but not the least. Agile model is the last born of software process model and is technically leveraging the advantages of iterative and incremental models by breaking software development such that on each iteration, a working component software is delivered (Barjtya et al., 2017). Agile manifesto was established in the year 2001 by seventeen independent software minded practitioners which stated that (1) Individual and interactions over processes and tools, (2) working software over comprehensive documentation, (3) customer collaboration over contract negotiation and (4) responding to change over following pla(Manifesto for Agile Software Development, n.d.). The model is very adaptable to changing requirements, highly focused on client feedback, overhead cost is reduced and it works well with a small team, but is not feasible for complex projects.

Though Agile model is good but certainly not for every projects, when developing software the following are to be considered critically before choosing the any model:

1. Level of understanding requirement

2. Expected lifespan

3. Risk

4.` Schedule constraint

5. Interactions of customers

6. Level of expertise/resources

References

Barjtya, S., Sharma, A., & Rani, U. (2017). A detailed study of Software Development Life Cycle (SDLC) Models. 6(7), 4.

Bindrees, M., Pooley, R., Ibrahim, Dr. I., & Taylor, N. (2014). Re-Evaluating Media Richness Theory in Software Development Settings. Journal of Computer and Communications, 2, 37–51. https://doi.org/10.4236/jcc.2014.214004

Childs, P. R. N. (2019). 1 — Design. In P. R. N. Childs (Ed.), Mechanical Design Engineering Handbook (Second Edition) (pp. 1–47). Butterworth-Heinemann. https://doi.org/10.1016/B978-0-08-102367-9.00001-9

Erickson-Gini, T. (2012). Nabataean agriculture: Myth and reality. Journal of Arid Environments, 86, 50–54. https://doi.org/10.1016/j.jaridenv.2012.02.018

Lior, L. N. (Ed.). (2013). Crafting the Information Experience for Web and Software Apps. In Writing for Interaction (p. 269). Morgan Kaufmann. https://doi.org/10.1016/B978-0-12-394813-7.00024-9

Manifesto for Agile Software Development. (n.d.). Retrieved July 25, 2021, from http://agilemanifesto.org/

Nonsiri, S., Coatanea, E., Bakhouya, M., & Mokammel, F. (2013). Model-based approach for change propagation analysis in requirements. 2013 IEEE International Systems Conference (SysCon), 497–503. https://doi.org/10.1109/SysCon.2013.6549928

Sommerville, I. (2016). Software engineering. http://www.dawsonera.com/depp/reader/protected/external/AbstractView/S9781292096148

What is Software Prototyping? — Definition, Models & Tools — Video & Lesson Transcript. (n.d.). Study.Com. Retrieved July 25, 2021, from https://study.com/academy/lesson/what-is-software-prototyping-definition-models-tools.html

--

--

James Oladimeji

I have always wanted to know how things work. I hate magic. This curiosity has driven me to programming, Java is my first and is to death do us part.