Big Ball of Mud


By: B. Foote, J. Yoder

Summary: The problems that arise in a haphazardly structured system.

Pattern: Big Ball of Mud Pattern Language


Published in: PLoPD4
Pages: 653-692

The problems that arise in a haphazardly structured system.

Category: Architectural

Url: http://www.laputan.org/mud/mud.html

Pattern: Big Ball of Mud

Pages: 658-665

You need to deliver quality software on time and under budget, but resources are often constrained. Focus first on functionality, then on architecture, then on performance.

Pattern: Throwaway Code

Pages: 665-668

You need a quick fix for a small problem, a prototype, or a proof of concept. You think you will have time to rewrite or replace the initial solution, but that never happens. Therefore, write simple, expedient, disposable code that solves the problem.

Pattern: Piecemeal Growth

Pages: 668-675

Master plans are often rigid, misguided, and out of date. Users' needs change with time. Incrementally address forces that encourage change and growth. Allow opportunities for growth to be exploited locally, as they occur. Refactor relentlessly.

Pattern: Keep It Working

Pages: 675-678

Maintenance needs of a system have accumulated, but an overhaul is unwise, since you might break the system. Do what it takes to keep the system going.

Category: Organization and Process

Pattern: Shearing Layers

Pages: 678-681

Software systems cannot stand still, but different components change at different rates. Factor the system so that components that change at similar rates are together.

Category: Design Process, Refactoring

Pattern: Sweeping It Under the Rug

Pages: 681-683

Haphazard code is hard to understand and tends to become worse if it is not controlled. If you can't make a mess go away, at least you can hide it. This restricts the chaos to a fixed area and can set the stage for future refactoring.

Category: Design Process, Organization and Process

Pattern: Reconstruction

Pages: 684-687

Your code has deteriorated to the point where it is beyond comprehension or repair. Throw it away and start over.

Category: Organization and Process