| |||||||||
In computer programming, Big Ball of Mud is a term for a system or computer program that has no real distinguishable architecture. It usually includes more than one of the other anti-patterns.
The term was popularised in Brian Foote and Joseph Yoder's 1999 paper of the same name, which defines the term thus:
Big Ball of Mud systems were usually developed over a period of time with different individuals working on various pieces and parts. Expediency plays a major role. Systems developed by people with no formal computer architecture or programming training also often fall into this pattern.
Foote and Yoder do not universally condemn Big Ball of Mud programming, pointing out that this pattern is most prevalent because it works — at least for the moment. However, programs of this pattern become maintenance nightmares.
If you encounter a Big Ball of Mud system and have any control over its destiny, strongly consider studying it to understand what it accomplishes and use this as a loose basis for a formal set of requirements for the new well architected system you will develop to replace it. Technology shifts (client-server to web-based, file-based to database-based, etc.) can provide good reasons to start over from scratch.
A Big Ball of Mud is the software equivalent to a Rube Goldberg Machine.