Software architecture is the high-level structure of a software system that defines how components interact, how responsibilities are divided, and how the system evolves over time. It sits at the intersection of business requirements and technical implementation, serving as the blueprint that determines scalability, maintainability, and long-term success. The right architecture isn't about following trends β it's about matching your system's actual constraints: team size, growth trajectory, complexity tolerance, and operational capabilities. Think of architecture as decision boundaries: each pattern constrains what you can change easily later, so understanding trade-offs upfront prevents costly rewrites down the line.
What This Cheat Sheet Covers
This topic spans 8 focused tables and 48 indexed concepts. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
Table 1: Foundational UI Architectures
| Architecture | Example | Description |
|---|---|---|
Model β Controller β ViewUser input β Controller updates Model β View re-renders | β’ Separates application into three components: Model holds data and business logic, View displays UI, Controller handles user input and updates Model β’ widely used in web frameworks (Rails, Spring MVC, Laravel) but can lead to tight coupling between Controller and View. | |
View β binds to β ViewModelViewModel.property = dataView auto-updates | β’ Introduces ViewModel as intermediary between View and Model using data binding β’ View observes ViewModel properties and updates automatically β’ dominant pattern in WPF, MAUI, and modern mobile (SwiftUI, Jetpack Compose) where declarative UIs benefit from reactive bindings. | |
View.updateUI(data)Presenter handles logicView is passive | β’ Presenter acts as middle layer between View and Model; View is completely passive (dumb UI) and Presenter contains all presentation logic β’ improves testability over MVC since Presenter has no framework dependencies β’ common in Android development pre-MVVM era. | |
Action β Dispatcher β Store β ViewView dispatches new Action | β’ Facebook's pattern enforcing unidirectional data flow in React apps β’ Actions represent events, Dispatcher broadcasts to Stores, Stores hold state and notify Views β’ prevents complex bidirectional dependencies; foundation for Redux and similar state management libraries. |