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, 48 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: Foundational UI Architectures
The patterns that organize the presentation layer all wrestle with the same question: how do you keep your UI logic, your data, and the glue between them from collapsing into one tangled mess. The classic MVC/MVP/MVVM family separates those concerns differently, while the unidirectional-flow approaches (Flux, MVI) trade flexibility for predictability, and the newer entries β microfrontends and Islands β rethink the boundary entirely for teams and performance.
| 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. | ||
Intent β Model update β View(state)Single immutable stateUnidirectional flow | β’ Enforces unidirectional data flow with a single immutable state (Model); user actions are Intents that trigger state transformations, View renders solely on current state β’ guarantees predictability, simplifies debugging β’ gaining traction in Jetpack Compose and SwiftUI. | ||
Presentation (UI)Business Logic (API/services)Data Access (Database) | β’ Classic enterprise pattern dividing system into three physical tiers: presentation layer for UI, logic layer for business rules, data layer for storage β’ each tier can scale independently β’ standard for traditional client-server applications. | ||
shell-app β checkout-mfe (Team A) β products-mfe (Team B)Module Federation / single-spa | β’ Extends microservices philosophy to the frontend: each team owns an independently deployable UI fragment (feature area) β’ teams use different frameworks, release cadences, and pipelines β’ Module Federation (webpack 5) is the dominant 2026 integration mechanism; used by IKEA, Spotify, Zalando. | ||
<html> (static HTML)</html><Carousel client:visible /><Header client:load /> | β’ Renders pages as static HTML with opt-in interactive "islands" of JavaScript that hydrate independently in the browser β’ coined by Katie Sylor-Miller (2019), popularized by Astro; each island loads and hydrates in parallel without blocking others β’ dramatically reduces JavaScript sent to client; excellent SEO and performance. |