How to Design Software That Supports Extension
One of the toughest problems when designing and developing software is that of future proofing it. You can almost never accurately predict the shelf life of software. Some software continues to get used years after its developers thought it would and some unfortunately gathers dust much earlier.
The largest cost in a software products life cycle [...]
