views:

824

answers:

9

[Objective-C]

Do you still use Styrofoam balls to model your systems, where each ball represents a class?

Tom Love: We do, actually. We've also done a 3D animation version of it, which we found to be nowhere near as useful as the Styrofoam balls. There's something about a physical, conspicuous structure hanging from the ceiling right in the middle of a development project that's regularly updated to provide not only the structure of the system that you're building, but also the current status of each one of the classes.

We've done it on 19 projects the last time I've counted. One of them was 1,856 classes, which is big - actually, probably bigger than it should be. It was a big commercial project, so it needed to be somewhat big.

Masterminds of Programming


It is the first time I've read or heard about using styrofoam balls to model classes.
Is that a commonly used technique? And, how does that sort of modeling help us to design better the system?

If you have any photos to share which can show us how the classes are represented it'd be great!


Update: So, it seems that the material most people use is the paper. Styrofoam balls are actually oddballs, not a commonly used technique.

Noticeable techniques:


Thank you all for the very good answers.

+11  A: 

No, we don't do this. And in my 30-odd year history in the IT industry, I've never heard of anyone doing this.

The only way this could help you design better systems is by:

  • keeping the class count down since it's hard to build the styrofoam model; and
  • minimising changes, since updating it would be a serious pain in the rear end.

Other than those two dubious features, I can't see this as being very useful. I'd almost conclude it was some sort of prank. Far better to do some real work, I think.

Seriously, if we tried to model our application with styro coffee cups and straws, our bosses would be calling the men in white coats.

paxdiablo
what if our bosses suggested us to try styro balls, should *we* call the men in white coats? Tom Love is a *boss*, isn't he? He must *know* something :-)
Nick D
Hah, that's priceless. Does _your_ boss know anything? Most of mine haven't :-)
paxdiablo
Appeal to authority is not a valid argument.
Dave Jarvis
+20  A: 

I found a couple of styrofoam models for:

Windows 95

and

Lotus Notes

(if that helps)

Actually, here's a Tom Love case study that shows a couple of his models.

This model may represent the least expensive CASE tool on the market -- materials cost $20.35. It was more useful than any CASE tools I have ever used.

We used it in three important ways.

  1. It fixed the number of classes that we would deliver in the finished application and we did not allow new ones to be added, unless existing ones could be removed.

  2. It was a very useful way to publicly document which classes had been code reviewed (blue ribbons) and tested (green ribbons).

  3. It helped everyone understand what was being built and how much time and effort it takes to do testing, documentation and code reviews.

Edit: photo of object model

alt text

GalacticJello
the pdf contains the kind of info I'm looking for! You should also add the photo of the object model in your answer, otherwise I'll do it :-) The other links you posted don't provide any hints and I don't understand why you *marked* them as Windows 95 and Lotus Notes. o_O
Nick D
Love the Windows95 ball! lol
Justin
[I think this](http://blog.makezine.com/288471660_786a61454c.jpg) is a good example of a Styrofoam model for Linux. :D
Corey
+15  A: 

The styrofoam ball model appears to date back to the mid 1990's - a time when CASE (Computer Aided Systems Analysis) systems were all the rage.

At that time CASE systems promised significant benefits but were dismally slow, buggy, unstable, overextended and downright awkward to use. Basically, long on potential but short on delivery.

I remember having a conversation with an analyst working on a different project from mine. Her team had become so frustrated with their CASE system that they trashed it and resorted to "paper plates and string" modeling. They reserved a meeting room, removed all the furniture, and laid out their process model using labeled paper plates with strings (representing data flows) connecting them. She claimed it was much more useful than the CASE system it replaced.

I suspect that the styrofoam ball model had similar roots.

Using styrofoam balls or paper plates fostered design "buy-in". If a team finds something to rally around it naturally creates a common design focus. It is simple, concrete and minimal - using it requires a lot of face to face interaction and discussion. And that is where the value comes from. I suspect if you brought a new person into the project and told them to bring themselves up-to-speed by reviewing the "model" they would be "dead in the water". However, walk them through the "model" and a real conversation would occur where all the required information need to perform on the project would be imparted very quickly and efficiently.

Do I think styrofoam balls could become a sustainable modeling tool? No, I don't. They would be a real pain to keep up to date in a changing environment. They convey little information. There are better tools available today. And most importantly, if the team you are working with don't "buy" it, and they probably won't, it will look really stupid - kind of like a sports team mascot, a rallying point only if the team "buys it".

NealB
nice and informative answer.
Nick D
+1  A: 

No. My team does not do this.

And I am badly tempted to mock with image macros. But I'm contemplating that the idea is silly enough that it is self-mocking.

Paul Nathan
+2  A: 

No, I've never heard of this before.

Rice Flour Cookies
+7  A: 

Post-it Notes on a whiteboard seem to be popular in the circles I travel in. Objects go on the Post-Its, and you rearrange them until you get your relationships the way you want em.

And then there are the Color Modeling people who use a 4-pack of colored Post-Its and assign an archetype to each color. It doesn't sound like this is much of an improvement, but standing across a room looking at it, you can tell where there are missing features or unidentified objects in the system.

Jason
+3  A: 

And I thought that UML was useless. The styrofoam ball model makes UML look positively elegant by comparison.

Ward Cunningham's CRC card idea is more useful, even cheaper, and still retains that tactile quality that Dr. Love was after.

I had never heard of the idea until I read this question. It deserves an up vote for originality. And the "Windows" and "Lotus Notes" pictures are priceless.

duffymo
+4  A: 

There is one application to this that I think we tend to forget-- using tools to articulate an architecture comes naturally to us after years in the industry, but there are valuable, albeit less technically-minded, stakeholders who may not grasp vital concepts as readily. It would sometimes be a lifesaver to point to a cluster of balls and say, "This is the Language Processing Model, and if I implement the feature you want, it will have consequences here, here, and here. You can see that there are a lot of balls connected there".

Architects, be they designing buildings or systems, might rely on those tangible models to indoctrinate the check writers into the process.

Laramie
+1 - A very, very good use for such a concept. I almost think it is worth implementing this just for this reason...
Stobor
The user is thinking, "all you have to do is pull this stick out and push it into this ball. How hard can it be."
AMissico
+3  A: 

Sheets of ruled paper taped to the wall, where each sheet is a component, class, entity, or whatever is needed. Everyone has a pencil.

Everyone can write on them "flushing" out the model during the design meetings. Such as, meeting notes, implemetation notes, new classes, removed classes, reasons why you do not have a particular class, and so on. After the design meeting, the principal designer takes them down and rewrite them, again "flushing" them out with pen in "rough-draft" versions. The designer can then make decisions based on the notes of each sheet, create new sheets for any additional components. Generate topics for next meeting, note any descrepancies, note any design / implementation details needed for coding, or whatever else they need to do.

Repeat the meetings until everyone is satisfied. Pencil is new stuff, pen is previous items. Once everyone is happy, the designer creates the working-draft, and posts where everyone can see and initial, in pen, their acceptance of the "working-draft".

Nothing is final. Pen versions are "latest" versions. Pencil versions are "work-in-progress" or "draft" versions.

Simple, fast, flexible, no wasting time on the computer, with high visiblity. Working man's Wiki.

AMissico