How to minimize the risks
and maximize the benefits
First Things First
Software development is a process of which programming or coding is only a small part. High quality cost effective software is created by a an established process. Whichever route or sequence you try to approach software development with, you will inevitably, in some way, at some point, take each of the steps shown below. (You might take them in the wrong order because you thought you could skip a few but if you are reading this then you probably already know better).
Just like a pyramid you cannot build any level without building the levels below it first. You can and should where appropriate use 'prefabricated' building blocks.
One step at a time
Each step in the software development process is based on information, principles and designs established in the step beneath it. If a flaw is discovered in any step after the project has moved past that step then the cost to rectify it includes changing the origin of the flaw itself and then changing every step that was based on it.
In fact the cost of correcting a flaw (including the use of your time) rises geometrically with the time elapsed between its introduction and its detection.
So we stick to the correct sequence, we make the process visible to all parties involved in using and adopting the system so that all parties concerned can thoroughly check each stage before moving on to the next. (This needs an agreed regular communication cycle throughout the project). Rework is the biggest unnecessary cost, time waster and contributor to project failures - so we minimise rework.
During Detailed Design we break the resulting system into the small functional modules that can be tested under the control of the project manager in days or hours and then pass each module through the unit test cycle separately.
In collaboration with the project manager we then perform integration testing after all dependent modules have passed unit testing but prior to going live.
We go live as soon as modules have passed integration testing i.e. have been correctly put together and have formed a substantial enough sub system to be of benefit to the business. This gives your users the motivation to use the new subsystems in earnest - we then actively gather feedback from end users and respond rapidly with fixes. (There are always fixes). This gives us quality feedback as soon as possible so that ultimately the systems are up and running in their final tweaked state as soon as possible. Moreover you get the benefit of each subsystem as soon as it is made without having to wait for project completion.
© Clear Computer Solutions Ltd. 2006. All rights reserved.