Firstly, there are no absolute ways of defending against change; to do so would require a degree of clairvoyance seldom bestowed on the humble software engineer. But by looking at the provenance of your requirements, you can make a good start at predicting the ways in which the software might need to change in the future.
Really obvious clues might be that a requirement derives from a law or regulation. These change, so any behaviours dictated by this requirement, may require to be controlled by parameters rather than hard-coded. Or that area of the software might be best done in a more generic way, not tied so closely to the current business processes, so that when the processes have to change as a result of a change in the regulations, the risk of costly re-development is minimised.
Note that I say minimised, rather than avoided. Again, you cannot predict the ways in which the regulations might change, just that there is a risk that they might.
These risks need to be quantified in order to decide where to build in this flexibility though. How likely is it that a particular area will change should have a bearing on how you treat that need for future change.
For example, I have worked, as a maintenance developer, on a number of systems whose developer assumed (with a fair amount of justification) that VAT would never change, and had hardcoded the calculations with the fixed amount. So when VAT did change, this necessitated a huge find/replace operation. But what I replaced it with, was a call to find out what the current rate at a particular date was, as I reasoned that now the Government have found a new toy to tinker with, they are likely to tinker with it again, so let’s deal with that now.
But this is the kind of thing that may only become obvious in hindsight. It’s not an exact science. All you can do is evaluate your requirements and make an assessment of how likely they are to change and use this to focus in on areas that need to be flexible.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.