Here is the second of two posts on iterative and incremental software development. My previous post focused on explaining the business value of iterative development while the objective of this one is to explain the value of incremental development.
Starting with the decision of using an incremental development approach as opposed to a sequential approach for the development of a BI solution results in 3 immediate outcomes:
- Reduces overhead: Once the development team determines it will be using an incremental approach, this decision allows it to focus on small tasks and build on them. As such, it is no longer required to plan upfront for every component to be built which would be the recommended approach if the team only had one attempt at building the right software. By developing the application in increments, the team can focus its efforts on the tasks at hand within the known context and not worry so much about figuring out all possibilities at the beginning of the project.
- Allows continuous integration: Building incrementally is a good step in the right direction but if the incremental components are not continuously integrated to make a whole, the development team wouldn’t achieve all the expected benefits. As such, the team would be building many items that could fit into a bigger whole without making sure all the pieces actually fit together. By continuously integrating the components, the development team ensures that throughout the development cycle, an integrated “application” can be tested and possibly demonstrated to the business community.
- Allows test-driven development: Using TDD as a development practice forces the development team to prepare their test cases before starting their development. In addition, every time news conditions to be tested need to be integrated, the tests are documented before the code is written and then executed once the components become available.
In turn, these 3 elements lead to 3 clear outcomes:
- Improved software quality: Preparing test cases before starting the development, enhancing the test cases with new possibilities as they occur, and continuously executing the test cases on the incremental components as they continuously get integrated within the global build improve the overall quality of the software being developed.
- Reduced overall cost of the project: By spending less time on overhead activities and delivering better quality software, the overall cost of the development project is greatly decreased.
- Increased ROI of the project: Combining the impact of the various outcomes increases the overall ROI of the project.