Big ball of mud

In computer programming, a big ball of mud is a system or computer program that appears to have no distinguishable architecture. It usually features other anti-patterns.

In computer programs

The term was popularized in Brian Foote and Joseph Yoder's 1999 paper of the same name, which defines the term thus:

A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. These systems show unmistakable signs of unregulated growth, and repeated, expedient repair. Information is shared promiscuously among distant elements of the system, often to the point where nearly all the important information becomes global or duplicated. The overall structure of the system may never have been well defined. If it was, it may have eroded beyond recognition. Programmers with a shred of architectural sensibility shun these quagmires. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems.

"Big ball of mud" systems have usually been developed over a long period of time, with different individuals working on various pieces and parts. Systems developed by people with no formal architecture or programming training 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 at the moment it is developed. However, programs of this pattern become maintenance nightmares.

Programmers in control of a big ball of mud project are strongly encouraged to study it and to understand what it accomplishes, and to use this as a loose basis for a formal set of requirements for a well-designed system that could replace it. Technology shifts – such as client-server to web-based or file-based to database-based – may provide good reasons to start over from scratch.

In programming languages

In discussion of the Lisp programming language the term "big ball of mud" is used differently, in this case to describe the malleability of a Lisp system. In Lisp, it is generally possible to:
* Easily write macros that give you control over the language syntax, so that the notation looks closer to the problem's domain
* Use a data-directed programming style
* Execute parts of a program at compile time rather than runtime
* Save a system image of a modified Lisp implementation for future useThe programming language Forth has also been described as a ball of mud because it too has many of these properties.

Joel Moses may have coined the phrase in the 1970s: [cite web|title=Quotes about programming languages — ADA to BASIC|url=http://www.sysprog.net/quotada.html|accessdate=2006-11-17] :"APL is like a diamond. It has a beautiful crystal structure; all of its parts are related in a uniform and elegant way. But if you try to extend this structure in any way — even by adding another diamond — you get an ugly kludge. LISP, on the other hand, is like a ball of mud. You can add any amount of mud to it and it still looks like a ball of mud."

There is controversy [cite journal| title=The Evolution of Lisp | author=Richard P. Gabriel and Guy L. Steele | journal=ACM History of programming languages—II | pages=233–330 | year=1996] over whether Moses in fact said this, and if he did whether he intended it to be derogatory, explanatory, or laudatory.

ee also

*Design pattern

Notes

References

* Guy L. Steele, Jr. & Richard P. Gabriel "The Evolution of Lisp" [http://citeseer.ist.psu.edu/steele93evolution.html] , note on reference 128
* Brian Foote and Joseph Yoder, [http://www.laputan.org/mud/ "Big Ball of Mud"] Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, September 1997


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Big Brother 2 (U.S.) — Big Brother  ◄ ►  Season 2 (2001) …   Wikipedia

  • The Care Bears' Big Wish Movie — Infobox Film name = The Care Bears: Big Wish Movie caption = Promotional poster director = Larry Jacobs Ron Pitts producer = Cynthia Taylor Ross Maudsley (technical) writer = Jeff Schechter music = Score: Ian Thomas Songs: Don Breithaupt Amos… …   Wikipedia

  • Grande boule de boue — En programmation informatique, une grande boule de boue est un terme utilisé pour décrire un système ou logiciel informatique n ayant pas d architecture évidente. En génie informatique Le terme a été popularisé par Brian Foote et Joseph Yoder… …   Wikipédia en Français

  • Проблемно-ориентированное проектирование — (DDD) (англ. Domain driven design)  это набор принципов и схем, помогающих разработчикам создавать изящные системы объектов. При правильном применении оно приводит к созданию программных абстракций, которые называются моделями… …   Википедия

  • Shearing layers — is a concept coined by architect Frank Duffy which was later elaborated by Stewart Brand in his book (Brand, 1994), and refers to buildings as composed of several layers of change.DescriptionThe Shearing layers concept views buildings as a set of …   Wikipedia

  • Anti-pattern — For the book, see AntiPatterns. In software engineering, an anti pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice.[1][2] The term was coined in 1995 by Andrew Koenig,[3]… …   Wikipedia

  • Service-oriented architecture — (SOA) is a method for systems development and integration where functionality is grouped around business processes and packaged as interoperable services . SOA also describes IT infrastructure which allows different applications to exchange data… …   Wikipedia

  • Technical debt — (also known as design debt or code debt) are synonymous, neologistic metaphors referring to the eventual consequences of poor software architecture and software development within a codebase. Common causes of technical debt include (a combination …   Wikipedia

  • Joseph Yoder (computer scientist) — Joseph W. Yoder is a founder and principle of The Refactory, Inc., a company focused on software architecture, design, implementation, consulting and mentoring on all facets of software development. Joseph is an international speaker and pattern… …   Wikipedia

  • Antipatrón de diseño — Saltar a navegación, búsqueda Un antipatrón de diseño es un patrón de diseño que invariablemente conduce a una mala solución para un problema. Al documentarse los antipatrones, además de los patrones de diseño, se dan argumentos a los diseñadores …   Wikipedia Español


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.