It is the link between requirements and detailed design and drives quality attributes. Three advantages: stakeholder communication, system analysis (can critical requirements be met?), large-scale reuse.
Logical (objects/classes), Process (runtime processes; performance/availability), Development (decomposition for programmers/managers), Physical (hardware/distribution), +1 Scenarios (use cases linking the four views).
Separates presentation/interaction from data. Model = data/operations; View = presentation; Controller = user interaction. Appropriate when the same data has multiple views/interactions (web apps, GUIs).
Functionality in layers, each using only the layer below. Advantages: incremental development, portability, multi-level security. Disadvantages: performance overhead, hard to separate concerns cleanly.
Performance (localise critical ops, few large components); Security (layered, assets innermost); Safety (few safety components); Availability (redundancy, update without stopping); Maintainability (fine-grain, self-contained components).
A well-tried solution to a common problem in reusable form. Elements: Name, Problem (when to use), Solution (parts, relationships, responsibilities), Consequences (results/trade-offs). Supports concept reuse, a common vocabulary and accumulated wisdom.
Managing a changing system so the right component versions are used and changes are controlled. Activities: version management, system integration, problem tracking.
Develop/compile on a host machine, then download and run on the target embedded device. Common in embedded systems because the target has limited resources, no keyboard/screen, or a different architecture - so the dev environment cannot run on it.
Issues: licensing, quality/support, evolution, security, integration effort. Licences range from permissive (MIT, Apache) to copyleft (GPL - derivatives must stay open).