There are many ways to portray the software development process and its life cycle.
I won’t use the conventional names for the steps and just proceed to explain them due to the differences in the names and number of steps/phases between the different existing methodologies. Basically, we tend to have 5:
Gather information and state what is needed.
Design the software and document it.
Code the desired functionalities.
Look for errors and resolve them.
Deploy the software and give technical support.
These are the 5 basic phases which sometimes are subdivided, which creates more phases.
In my experience in the IT development area, there has always been a weak point which many projects don’t put the enough attention. This weak point is the first phase.
Imagine a house, you have the planes and you start building it.
After the first 2 months you realize many things:
– The ground ins’t as stable as you thought it would be.
– You didn’t consider enough space for the drainage
– You will need one more column because the second floor seems a bit unstable.
– You will need much more construction material than expected.
– You will need 6 more months than expected due to all the changes that will take place.
– Your budget is limited and you can only extend the building project 3 months.
Why did this happen? It wasn’t planned thoughtfully enough. This is what happen on many software projects which don’t give the enough importance to the first phase, then they have to invest more resources and rush in order to get it done as soon as possible. The software ends up patched as the house example with many extra columns to support it. At the end the company invests more resources to have a less quality product because they wanted to start sooner the “real work”. This is a common mistake that can be easily avoided by giving extra time to the first phase. After it is completed, start it over again in order to find holes on it and fix the requirements because it is easier and faster to do it in the planning phase than doing it in the next phases.
An example random project budget in resources (time/money):
Planned Total: $23
When you are in the 4th phase, you realize there was a big mistake which with only $1 more on the first phase, but since you are alredy in the 4th phase, that cost will be multiplied:
Extra needed now:
Extra total: $11
New Total: $34
The cost of the project increased a 48% based on the initial cost.
This just an example to show what could happen if something important is forgotten or not taken into account in a software development project. The 48% might look like an exaggeration but I have seen it directly, and it was more than a 48% extra investment which was needed in order to finish the project due to the initial error of overestimating the initial phase.