Extreme Programming Practice

Incremental design

Due to changing customer requirements, an experimental approach is needed to suit the ever-changing design and development of the software. As the design is continually evolving, this is crucial towards finetuning it, as it cannot be absolutely preconceived before the project begins allowing for a more experimental approach, proving why incremental design is necessary. Incremental design tends to work better because the up-front design doesn’t take into account the flaws that can only be discovered later.

If a software project is done up-front, then it can be extremely challenging to modify later. Therefore the reason is that so many developers are moving over to incremental design because it makes the entire process more relaxed in the long -run. Even though you are initially creating all of the necessary elements of the design such as method and class, also namespace, the process will evolve, but the architecture can project over a long timescale. Incremental design is the best method of test-driven development because it allows for a multi-faceted approach that ensures the success of the large-scale project.

How To Practice Incremental Design?

While continues delivery is necessary there is a lot of debate over whether continuous integration or continuous isolation is best, some experts argue that for incremental design, separation is the best while another state that combination through merging the develop team copies to a shared mainline at least once a day, allows for a continuous overview.

Business alignment and team structure will ensure success through quality collaboration, through whiteboard discussions and more, to have collective decision making. By creating an essential foundation to start with, the team can then incrementally add to change and evolve the design by reflecting on the strengths and weaknesses of the development.

The overall design of the application is continually evolving. Even though abstraction is a given, it will allow the visuals created to be more refined. Now because the design will improve in peaks, this means that with each peak you may have an entirely new perspective or approach to the design thus requiring refactorings.

As refactorings can happen several times a week if not more, your team can use iteration slack to break through the refactorings. What helps, is to keep delivering stories when you are in the process of refactoring.

Throughout the process of coding pairing, the navigator needs to check through and evaluate the overall view. For the incremental design to be a success, some would say that strict TDD is absolutely necessary. While retrospective will give insight into the evolution of the design, it’s important to consider the future requirements. Having a bounded context can also assist with implementing the incremental design.