Work

Home | Work | Play | Photos | Contact | About

Designing for Change

Home \ Work \ Designing for Change

Change is inevitable. Develop solutions with the explicit expectation that its requirements will change.

Start by identifying areas likely to change, and then design the application in a way that separates or isolates those areas of concern from the rest of the application, minimising the impact of those changes on the rest of the application.

This separation of concerns is a design principle in which distinct features within a computer system are separated so that they do not overlap. A concern is synonymous with a feature or behaviour. It is achieved through layered design, modularity, encapsulation, information hiding, and loose coupling.

Also consider what changes the system might face at the design level. Business rules are easier to maintain in configuration files than in code. Be aware however, that the rules may not be in the code, but you're still going to need a programmer to maintain them (the requirement for a programmer to maintain configuration files is referred to as duck programming).

A good approach to mitigating changing data structures is to use a meta-data driven approach. This lets you use form designers instead of coding out your own. Further down the stack, consider using a document database or key/value store, and fronting that with a relational database to maintain associations and hierarchies.

< Back to IT Consulting | ^ Back to top


All content copyright © Michael Wittenburg 1995 to 2024. All rights reserved.
Merch (t-shirts designed by my twin)