Big Ball of Mud
Local additions can gradually dissolve effective module boundaries.
- CouplingCoupling: Changes cross module boundaries unpredictably.
- AccretionAccretion: New requirements accumulate without a coherent design.
- ReconstructionReconstruction: Incremental boundaries make evolution manageable again.
Context
Why this is important
Recognize structural entropy through actual change impact.
Recognize structural entropy through actual change impact.
Big Ball of Mud: inspect the decision
The shop example uses the existing shared database and seven modules. Any added service or deployment model is a hypothetical extension. In the shop, pricing rules are copied in several places, and a change to order status requires edits across catalogue, cart, invoice, and shipping code. Software analytics shows files that change together often; an architecture review confirms that business boundaries barely hold in code. The team first stabilizes critical flows, assigns pricing to a clear module, and adds a contract test. Subsequent changes cut coupling incrementally while the shop continues to ship.
This is how you read the picture
- Coupling Coupling
- Accretion Accretion
- Reconstruction Reconstruction
| Concept | Meaning | Review question |
|---|---|---|
| Coupling | Changes cross module boundaries unpredictably. | Which files often change together in the shop? |
| Accretion | New requirements accumulate without a coherent design. | Which evidence supports a module boundary? |
| Reconstruction | Incremental boundaries make evolution manageable again. | Why is co-change alone not a refactoring prescription? |
Benefits & limitations
Helps if:
- Recognize structural entropy through actual change impact.
- Evidence change coupling through concrete code and release paths.
Boundaries
- The label summarizes symptoms but does not determine a modernization strategy by itself.
- Co-changes can also reflect legitimate business collaboration and need code and team context.
In practice
- Choose a concrete pricing-rule change and trace through code, releases, and tests which of the seven shop modules independently alter the same rule.
- Validate observed change coupling in an architecture review and distinguish domain dependency from shared code or mere repository proximity.
- Move one pricing rule into a clearly responsible module, add a contract test, and compare affected locations and released defects at the next change.
Read the detailed explanation
Big Ball of Mud describes a system with loose or conflicting structure whose organization has grown mainly through short-term additions and local constraints. It names an architectural condition, not a particular language or team decision.
Foote and Yoder also describe forces that produce the pattern: rapid delivery, limited experience, and prototypes that remain in use. Recognition therefore begins by exposing real dependencies and change impact; it does not prescribe a wholesale rewrite.
The shop example uses the existing shared database and seven modules. Any added service or deployment model is a hypothetical extension. In the shop, pricing rules are copied in several places, and a change to order status requires edits across catalogue, cart, invoice, and shipping code. Software analytics shows files that change together often; an architecture review confirms that business boundaries barely hold in code. The team first stabilizes critical flows, assigns pricing to a clear module, and adds a contract test. Subsequent changes cut coupling incrementally while the shop continues to ship. software analytics and einfachheit help compare this decision with adjacent concerns.
Check your understanding
Test yourself in three stages
ReadingCheck in the picture
Which files often change together in the shop?
View the solution with justification
Pricing rules and order-status code across several modules.
ApplyingTransferred to a new situation
Which evidence supports a module boundary?
View the solution with justification
Examine ownership, dependencies, and release paths for pricing rules together.
EvaluateWeighing an alternative
Why is co-change alone not a refactoring prescription?
View the solution with justification
Co-changes can be business-valid and need domain context.
Explore further
These building blocks continue the thoughts of this page.
References
- Big Ball of Mud (opens in new tab)Foote and Yoder describe forces, symptoms, and reconstruction patterns.
- Big Ball of Mud paper (opens in new tab)Foote and Yoder's conference paper on the condition and forces that produce it.
- Visualizing Design Erosion (opens in new tab)Research on the causes and visualization of structural erosion.