"Big Balls of Mud" and Shanty Towns 9
Last Thursday, the last day of OOPSLA 2007, Brian Foote gave a restrospective of Big Ball of Mud, which he and Joseph Yoder presented at the Fourth Conference on Patterns Languages of Programs (PLoP ‘97/EuroPLoP ‘97) and which was published as a paper in 1999.
Foote and Yoder argue that the dominant architecture of deployed application is a Big Ball of Mud, which they define thusly:
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.
I had to leave mid-way through the talk to catch a plane, but before I left, he said something that caught my attention. He compared such applications to shanty towns, those ad hoc communities that spring up with no planning, no infrastructure, and reflect the bare minimum of resources and expertise available to their builders and inhabitants.
However, as I looked at his picture of a typical shanty town, I noticed that there are paths through the maze of ad hoc homes. There is some structure there. Then it occurred to me that, for all their problems, there is one interesting difference between typical shanty towns and many software applications; shanty towns are subject to frequent “testing” and “refactoring”. Within the extreme limitations of their architectures and the available resources, the inhabitants do what they can to fix “bugs” and adapt to new “requirements”.
Of course, I’m not saying that shanty towns are good. I’m just pointing out that they have a feedback loop that leads to modest improvements. In contrast, although we application developers have more resources at our disposal, we don’t subject our applications to the same scrutiny.
Why is this? A big part of the problem is that we forget just how complex software really is. How many points of variation exist within a home and its community? How many points of variation exist within a software application? Perhaps more than one per line of (uncommented) code?
We interact with the points of variation in our homes on a regular basis, directly or indirectly, and we make adjustments as needed (unless we’re lazy ;). In contrast, most of the corresponding points in software applications are deeply hidden and not evident when we use the applications.
You know where this is going; automated testing is the only way to subject the points of variation in applications to the same level of scrutiny and to find what needs fixing.
I think it’s important to remember that most of today’s major metropolises started out as shanty towns.
You are right, of course, the inhabitants of a community are continually, and mercilessly refactoring that community to be more and more convenient for their purposes. This is something that people take pride in. What we need is for software developers to take the same kind of pride in their workmanship.
I think the Ralph Johnson quote sums the problem up pretty well “on average, average organizations will have average people”. So many programmers don’t have a clue that they are creating mud balls. Management doesn’t help by questioning anything that is not the most expedient solution.
There’s a good “Big Ball Of Mud” video presentation by Brian Foote on google.
has just told him that hand-washing is too expensive, and he should stop doing it.”
“Ow! What?”
My brother-in-law had reached across the aisle and punched me in the leg. He’d been trying to get my attention for a while.
“How do the headphones sound?”
“They sound good, jerk. I couldn’t hear a thing you were saying.” Apparently, the Beats’ noise-canceling feature was working as advertised.”>
line on the chairlift rolex replica oyster perpetual chairlift at the Sugarloaf ski area suddenly breitling windrider crosswind suddenly snapped. The resort said none of rolex replica oyster perpetual of the injuries
thanks a lot interesting…
internette görüntülü olarak okey oyunu oyna, gerçek kisilerle tanis, turnuva heyecanini yasa.
“Big Balls of Mud” and Shanty Towns 6 hoo,good article!!I like the post!52
“Big Balls of Mud” and Shanty Towns 7 good post132
Childbirth is a happy occasion for any family?