Big Ball of MudBy: B. Foote, J. Yoder
Summary: The problems that arise in a haphazardly structured system.
The problems that arise in a haphazardly structured system.
Category: Architectural
Url: http://www.laputan.org/mud/mud.html
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.
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.
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.
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
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
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
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