I found the below graph while reading the “So how much architecture is enough” chapter of the Making Software book. This chapter is written by Barry Bohem.
The above diagram can help architects and technical project managers answer how much time they should schedule for architecture. In the last decade most software projects developed using Agile have either done no upfront architecture and design or done minimal design required to bootstrap the project. The software development community has realized that doing no upfront design is not helpful as it leads to a big ball of mud architecture and architecture coherence is not achieved. So, at least in the work I do I am seeing more focus given to architecture and upfront design is becoming critical.
From the above diagram we can learn that:
- The bigger the software project, the greater the need for investing resources on upfront architecture and design. A project with 10,000 KSLOC(~ 10 million) lines of code should invest 40% of the development time in architecture.
- For smaller projects (10 KSLOC) you gain little from upfront design. The diagram suggest 5% of the effort on upfront design
- Upfront design can reduce the rework
Now, there is one problem how will you know the size of the project beforehand? You will have to map project duration and complexity to the size of the project. Then, you can add architecture and rework estimates to the overall development estimates.