This section explains the major types of development lifecycles used to create a solution resulting from a project: predictive, iterative, incremental, and agile lifecycles or approaches.
The project life cycle refers to the set of phases or iterations into which a project is organized. Depending on the organization and the type of product to be developed various types of project life cycle can be defined:
Let us illustrate this with an example
Assume, a project is initiated to fill this pothole. If we know the exact dimensions of the pothole and the requirements can be established, then the work to be done is predictable. It starts with the dimensions or requirements, design and prepare the mold, put the concrete material, finishing of the bloc, and fill the pothole. This is called the waterfall approach or predictive approach. It only works if all the requirements are known and clearly understood at the beginning. If we don’t know the dimensions of the pothole then it becomes a complex problem.
In the same example, assume you don’t know the dimensions of the pothole, therefore you decide to chisel out the shape to fill the gap, you go on refining the shape by carving and cutting and cutting it over and over again until it fits into the pothole. You refine in iterations until the carved bloc perfectly fits into the pothole. Therefore, even if you don’t know the dimensions or requirements, you could fill the gap with multiple iterations. This is called the iterative approach.
Now let us solve this complex problem in yet another way. You could create a squared bloc and deliver it to the customer. The customer places this square bloc in the pothole and gives you feedback of remaining parts of the pothole unfilled. You create more incremental blocs based on the feedback and continue filling the pothole. This is called the incremental approach or life cycle. Here the customer does not have to wait until the end of the project to receive value. Instead, the customer can start using the increments and continue providing feedback until end of the project. Therefore, even if you did not know the dimensions to start with, you could fill the gap using an incremental approach.
And now, another smart way of handling the complex problem when the requirements are unknown at the beginning. In this scenario, you have absolutely no clue how big or small the pothole is. In this case, you decide to deliver smaller bricks. With continue customer’s feedback, you can deliver small bricks with an appropriate size and shape. Some of the bricks need to be chiseled out to better fit in the pothole and the customer tells you if that rework to an already delivered bricks should be done now or later, since sometimes the customer considers of higher priority to put some new bricks in place instead of perfecting one that didn’t fit well after the first delivery. The customer decides. Therefore, this approach is both, incremental as well as iterative. This is a smart approach when you have too many unknowns and/or unclear requirements. This is called the Agile approach which is iterative and incremental.
We have seen the predictive approach, the iterative approach, the incremental approach, and the Agile approach. We hope this graphical method will help you remember the different life cycle types you can use to develop your solution.
Online system example
Now, let us use these insights and apply them to the example of our online solution to increase transparency of transactions.
Predictive life cycle (also called “waterfall” or “cascade”)
When all the requirements are known and clearly understood at the beginning of the project, we can follow a predictive approach. We execute the project phases in sequence and deliver a complete online solution at the end.
Iterative life cycle
When the requirements are not known at the beginning, we can take the iterative approach. It starts with creating an entire online solution for all products, a basic design, and drafts of the desired functionalities. We go on refining, chiseling out the online solution in subsequent iterations until the final product is ready.
There might be advantages in working simultaneously on designing all involved processes seen as a whole and also redesign account receivables and invoicing functionalities of the accounting system while working on the logistics management system to assure from start to end that everything is integrated and fits together.
The iterative approach is all about gathering requirements progressively and refining the entire product iteratively until all customer requirements are fulfilled. You are working at the whole thing progressively at the same time.
Incremental life cycle
Now, let us use the incremental approach to deal with this same example. We would deliver a functional online system with limited, important but full working capabilities. For instance, we would implement a full visibility of all statuses of one product or one product line with similar characteristics and the customer could start using it earlier, without waiting that all products migrate to the new way of tracking transactions. This would be called the first increment. Then we go on adding the new functionalities to other products or product lines. Each increment could also be to have some functionalities for selected products and the next increment more functionalities to the same but not all products. For instance in one increment one status could be “on the way to you” while the next increment would show further details of status “on the way to you” in “dispatched from our stock”, “on the main distribution center of the forwarder”, “on the regional distribution center of your area”, “on the track to your place” and a final status “delivered”.
The team would continue this way adding functionalities or products to the scope in the form of increments until the final product is delivered. In this way, the final product is delivered through multiple increments.
If you would use both, an iterative and incremental approach you would be using an Agile life cycle.
Here we would deliver a functional online system with limited, important but full working capabilities that the customer can start using, as explained above for the incremental approach. This is called the first increment. Then we go on adding new functionalities or additional products in the form of increments. It continues until the final product is delivered. Here we deliver new functionalities or cover additional products in increments. This is the incremental aspect of agile.
The customer decides at each iteration whether to continue with new functionalities or products (incremental) or to refine some or many of the already delivered functionalities for covered products (iterative).
The customer delivers new requirements through multiple iterative and incremental deliveries.
Iterations and increments continue until the final product is ready.
Or it never gets ready as in the example of Windows 10 that receives a new release twice per year.
This way the project team can accommodate for upfront unknown or changing requirements.
However, not all products are deliverable in increments nor are all product sustainable if there are many changes, especially in the late phases of a development life cycle. Generally speaking, physical items are less eligible for incremental approaches. And the more manufacturing and large-scale production items are involved, the less incremental you can proceed.
Let us summarize watching again the graphics describing the predictive approach, the iterative approach, the incremental approach, and the Agile approach.