A context-aware style of software design