Software Principles for Architecture

 Below are some of the software development principles that can be applied to architecture for creating future-proof live/work spaces:

MVC (model-view-controller) - separating functionality from presentation and user input
 (e.g. changing the wall color should not require repainting/changing wallpaper)

Extendability – anything should be designed to easily accept add-ons, extensions, modifications
 (e.g. adding new rooms/spaces, etc)

Multifunctionality - ability for one device/component to perform many functions
 (e.g. multipurpose furniture/devices)

Developing light/small - preferring ingenious designs to brute force,  using minimum materials to get maximum functionality and avoiding heavy designs
 (e.g. light/composite materials, etc)

Flexibility – easily changing the functionality and adopting to new needs/environments
 (e.g. LED wall screen can display images and double as lighting)

Modularity - created from easily interchangeable modules that can be used in various places
 (e.g. smart panels, etc)

Standards-based design - using standard off-the-shelf components to ensure compliance and affordability
 (e.g. generic sensors, etc)

Layered architecture - separating functionality into tiers for easy upgrades and maintenance 
(e.g. drivers, OS, applications)

Integration & interoperability - easy integration with other systems
 (e.g. TCP/IP)

Security and access control - user groups and rights/quota for every functionality
 (e.g. physical access, surveillance, alarms, logging, etc)