“Everyone then who hears these words of mine and does them will be like a wise man who built his house on the rock. And the rain fell, and the floods came, and the winds blew and beat on that house, but it did not fall, because it had been founded on the rock. And everyone who hears these words of mine and does not do them will be like a foolish man who built his house on the sand. And the rain fell, and the floods came, and the winds blew and beat against that house, and it fell, and great was the fall of it.” - Matthew 7:24
Like the man who built his house on a rock, getting the architecture of software correct up-front is crucial.
Moving a house from sand to rock foundations will be a nightmare. The quicker it can be ascertained that the foundations are solid, the less risk there is of late breakage, major cost and time delays in the project.
In traditional waterfall-type projects, software is developed in lengthy sequential phases: analysis, design, code, test. Architectural flaws in the design phase are only discovered during the testing phase. Going back to fix these architectural flaws can waste a lot of money and cause huge delays to the project due to the major rework required. This is the so-called 1 - 100 - 1 000 rule. If it cost one to fix it in the initial stages of the project, It will cost 100 times more to fix it at the end of the project and up to 1 000 times more to fix it in production.
How about being able to test a system up-front to ensure that it has a sound architecture? Using mature agile methodologies, four set phases take place in the development cycle: inception, elaboration, construction and transition. In an agile project, during the inception phase all the risks would be discovered, and the ideal architecture would be defined, together with some alternatives.
Eliminate major risks
Moving a house from sand to rock foundations will be a nightmare. The quicker it can be ascertained that the foundations are solid, the less risk there is of late breakage, major cost and time delays in the project.
Ziaan Hattingh is MD of IndigoCube
In the elaboration phase, the major risks should be eliminated as early on in the development cycle as possible. The top team would typically consist of the software architect, business analyst/product owner; choose a small component of the application that is architecturally significant, which is then developed using the top people.
Does it meet its objective? Performance tests are run to ensure that, for example, it can process 50 000 transactions an hour. Once most of the major risks have been eliminated and the architecture is sound, then the really smart folk can be taken off-site and the development team can come in to start building the system in an iterative manner (the construction phase). This is when the iterations can be controlled using an agile practice/methodology such as Scrum. It's a bit like constructing a tall building: initially architects and engineers are involved and once their work is done, the contractor/developer can begin their part of the project.
In the waterfall approach, the design is completed, signed off early in the project and then the testing typically happens only at the end, when up to 90% of the work on a project must be completed before starting to do integration tests. If architectural faults or fundamental design issues pop up then, they are usually costly to fix. The problem may be something simple, something that the company can throw another server at. But if it's a fundamental fault, then it's back to the beginning - more time, more costs. This is when it is often decided to kill a project. This is why the architecture is so important.
By ensuring sound architecture during the elaboration phase (testing and refining until it functions optimally), and before entering the construction phase of the project, a sound base will be built. And the house will not fall, as did that of the man who built on sand.
* In the next Industry Insight, I'll look at how to prioritise the business requirements of a project.
* Ziaan Hattingh is MD of IndigoCube.
Share