This document discusses system design and decomposing systems into subsystems. It covers:
- Analyzing requirements, functional models, object models, and dynamic models to inform system design goals and subsystem decomposition.
- Identifying design goals and typical trade-offs between goals like functionality vs usability.
- Decomposing the system into subsystems using concepts like layers, partitions, and subsystem interfaces. Properties of good subsystem decomposition like low coupling are discussed.
- The relationship between subsystems, layers, and virtual machines is explained as a way to structure complex systems hierarchically.