Discovering Domain Concepts and Behaviors
Turn use cases and domain language into a small, behavior-rich model. Learn how to find candidates, protect invariants, and avoid making every noun a class.
Turn use cases and domain language into a small, behavior-rich model. Learn how to find candidates, protect invariants, and avoid making every noun a class.
Learn all nine GRASP patterns through a Java order workflow, with code, trade-offs, failure cases, and design review questions for intermediate developers.
Learn hexagonal architecture through ports, adapters, and inward dependencies, with practical code, trade-offs, failure modes, and security guidance.
Learn layered architecture's responsibility tiers, dependency rules, code examples, and trade-offs for separating presentation, domain, and infrastructure.
Design a modular monolith with module ownership, public contracts, and enforced dependency rules while keeping one shared deployment and runtime.
Turn goals like reliability, security, and performance into measurable scenarios, then compare architectural choices with explicit costs and constraints.
Refactor toward design patterns safely: follow evidence of change, preserve behavior with tests, and make small transformations before adding an abstraction.
Understand serverless responsibility boundaries, event-driven design, cold starts, state, and observability before moving workloads to managed functions.
Learn how service-oriented architecture organizes capabilities behind contracts, when it fits, and how to avoid coupling and fragile integrations.
Apply all five SOLID principles to a small checkout design, see where they help, and learn when extra interfaces or indirection make code harder to change.