multi-layer | to build a multi-layer system | replacement of a layer by an improved version, or by one with a different set of capabilities | reusability because the lower layers can often be designed generically so that they can be used to provide the same services for different systems | divide and conquer since the separate layers can be independently designed | An architectural pattern in which a system is divided into layers | coupling since well-designed lower layers do not know about the higher layers | | architectural pattern | obsolescence: databases and UI systems tend to change; by isolating these in separate layers, the system becomes more resistant to obsolescence |