Whoops! Where did my architecture go?
summary
Argument: architecture survives only if dependencies are visible and constrained. Practical methods: run JDepend to find package cycles (example project shows one cycle flagged by multiple markers), model rules with Sonargraph to surface and enforce slice-to-slice constraints in the IDE, and prefer slice-first packages so implementations can be package‑private and reduce public API surface. Built a tiny Spring plugin library (≈10–15 classes) that composes jar plugins at build time, supports ordered selection and delegation, and proves the approach works in a banking integration case.
AI-written summary · about
chapters (23)
- 0:00Intro
- 0:12Whoops! Where did my architecture go?
- 1:26Background 5 years of consulting Lots of code reviews Eoin Woods' talk on InfoQ
- 4:18Roadmap Architecture 101 A plain Java based approach Spring Plugin
- 5:52The 2 C' of Architecture
- 7:45Know your dependencies
- 11:28Of layers and slices..
- 16:08Slices Hardly understood New to developers Key for business req
- 17:17How to implement an architecture inside a codebase?
- 20:57Code analysis JDepend Sonar
- 37:29core ... customer ... account
- 39:41Layers first Leaks slice internals Lower layers visible to everyone
- 39:53Start with package per slice Expose interfaces and domain types Keep implementations private
- 40:22Encapsulates business module Internals understood anyway
- 41:32Start with less packages and the least visibility possible...
- 50:10Background Risk management at German public bank Quite a few other Spring Source clients
- 52:38Systems grow big!
- 52:49Remember the 2 C's?
- 53:19How to localize change?
- 53:33Separate frequent from infrequent change!
- 54:47Granularity Class Package Java ARchive
- 58:39How to make the host aware of the plugins?
- 58:57How to dynamically collect Spring beans of a given type?
related talks
46mEnforcing Architecture in Legacy Systems
49mBottom-up Architecture: Bridging the Architecture-Code Gap
50mVisualise, Document & Explore Your Software Architecture
01h 15mHow to measure your architecture
42mSoftware Architecture vs Code
50mArchitecturally evident Spring applications with jMolecules
46mSoftware Architecture vs Code
50mBuilding Evolutionary Architectures
