I received a lot of emails and comments regarding the best software development life cycle model. So, I had to write my opinion about that.
Actually, I think there is nothing called the best in absolute general, the best for me maybe not the best for you at this moment. Similarly, there is nothing called the best SDLC model in absolute general, you need to decide which one you need to use according to the software project context and what product or software you are developing, what about your competitors? And what are the team capabilities you have?
I wrote a guide in another article on how to choose the right SDLC for your project, please refer back to this article to have the simple steps and guide for taking the decision of what will be the best model fits your business case. Also, you can refer back to the consolidated reference about SDLC models.
Now, let us give some examples for some of the scenarios I received from the visitors here, and I would like to thank them for their engagement and to give us this opportunity to discuss some of the cases they shared.
I have a software project “Election management system ” and I want to choose a process model what do you think is the suitable one? The software requirements are clear. I think V-model is suitable but I’m not sure.
In this case, with this limited input about the case, I think we had enough information to build up the decision. First, it is election management system which is a sensitive kind of systems which needs an accuracy of data collection and privacy of data collected and how to manage fraud cases and detect them, which need deep business understanding and risk management as well as excellent testing cases. When we review the most known SDLC model, we will see some models can fit as result of that the requirements analysis activity has been finished with clear understanding about the requirements, let us first exclude some models
- Agile Model: the kind of software does not require to be agile as it cannot be operational in phases, while the agile model can increase the interaction with the customer to validate the requirements and the final expectation. while we have also clear requirements and there are a lot of reference design for elections systems and basic features which can be used to realize the solution.
- Iterative and Incremental Model: The system will not be operationalized in iterations as well, for example, you cannot do the election process if you do not have identity management module or fraud detection for example, while also, may be according to the business needs, they can ask to do some modules regarding the software itself in one iteration and the analytics and reports in another iteration. I do not think this will happen in real life example with a similar type of system 🙂
I can see two models fits here and also you can combine between both:
- Spiral Model: The main advantage of spiral model, the risk assessment, and analysis which is required in this system as well, the prototype which will be a good way to communicate the expectation of the system as well.
- V-Shaped Model: This model includes test planning at each phase which is extremely important for this type of the project.
I used the models’ techniques here based on the project context while the models are for our guidance for a proven way of good practices to implement the software successfully while we can combine them and use some of the good practices in one of them to complement another model which fits the project context
ABC is an international software house. ABC is currently working on a project that is totally new for the development team and even the client is confused about the requirements of this project. Hence this company is facing difficulties because they fail to apprehend user requirements properly. For this project, it is decided to build a sample application and show it to the client for feedback.
In the context of this above scenario as a project manager what will be the choice of the software lifecycle model?
I think the best model for this scenario will be the agile model this is mainly because the vague and unclear requirements, In this model we can have some sprints, each sprint duration from 2 to 3 weeks, and the team will start to take part of the requirements which it is okay to be not clear. The team has to understand what are the initial requirements and prioritize them based on which one can give an early business value to the customer and they can actually search for some information about similar systems to better understand the requirements and the future vision of this software as well. Moreover, they can build a prototype of what they understand and show it to the customer and discuss the customer feedback. This will stimulate the new requirements from the feedback as changes or new additional business requirements need to be developed. Throughout the development life cycle, the team will build the backlog and repeat the same process with each sprint and the requirements will be clearer as well. I’m considering here that we have a skilled team has an existing experience of the agile model as well as the project manager.
Here, we combined between Agile and prototyping techniques.
Suppose you are a project manager for a software product in a new and growing market with your competitors who are also developing a product will be the same product. Which model to select and why?
The Agile Model will be the most suitable model to select here. Agile derived from agility and flexibility to adapt to the new changes easily and quickly. This skill is required in most of growing companies and in the competitive environment. If you will not adapt quickly, you will not be a leader, you will be a follower. We can see that most successful companies now, they are adding features daily without affecting their operations and with zero downtime to add new innovative features which will satisfy their users’ needs and sustain their existence in the market. There are many cases of technology companies who disappeared because they were not able to change quickly and they did not understand the change happening around them. And they were not flexible enough to change. Do you remember ICQ, hi5, mySpace, Netscape, and others?
We are creating an online hospital management system and it is needed immediately, what kind of SDLC model should be used in our documentation?
A case like this can be handled by different models actually. Moreover, you do not have to reinvent the wheel for developing HMIS from scratch as there is a lot of available products for that which requires some standards for integrations and communications like HL7 and also some compliance standards like HIPAA for example. It will be more successful if you use on of the commercial off-shelf products and start customizing it.
So, if we will create the HMIS from scratch, the most suitable models here is the Incremental Model so, you can focus on some of the modules and application components which are critical for the system and deliver value early to the hospital, for example, registration, appointment module, and outpatient module.
Also, the Agile model would be good in this case while it will cost you more and the communications overhead will be high considering that the HMIS has a mature description and reference design can help easier to build a similar system, which will need some time to deliver a complete value which may not fit in sprint duration.
You should avoid waterfall totally even if you have clear requirements because you will need to deliver value faster and also communicate the finished part to get early feedback. Moreover, it will be a disaster for the customer if he waited a long time to see the final results with many differences from the customer expectation.
In conclusion, the best model is something related to the project context and not absolute best, it will be the most suitable model you selected with consulting your team and analyzing the ecosystem and environment.
“The price of success is hard work, dedication to the job at hand, and the determination that whether we win or lose, we have applied the best of ourselves to the task at hand.” – Vince Lombardi
“I think that’s the single best piece of advice: constantly think about how you could be doing things better and questioning yourself.” – Elon Musk