A real conversation I had recently. (OK, so it's slightly paraphrased...)
x - Our system has nearly 300 business classes. We design using RationalRose, and use it also to generate IDL for distribution
y - So you have three hundred individual IDL source files? Aren't these difficult to manage?
x - well yes...
y - And you're distributing your system at the level of the smallest objects in your business model? Doesn't that kill the network?
x - We did notice that.
A good example of Case Delusion no.1 - the belief that by using a tool you're guaranteed to be doing the right thing. Luckily for this project they had the time to take a more considered approach to their distribution models - but they're still driving everything from a mammoth model in Rose...
Case Delusion no.2 - If we design using a method and a case tool, the quality of the code will automatically be improved. I've seen people on projects spend three or four weeks getting the pictures right for a design which half a day of coding could have convinced them would not work.
Too often these tools are used to avoid having to think about the hard problems in an architecture or design. Give a case tool to an inexperienced designer and what you have ... is an inexperienced designer with a case tool and a delusion of quality.
(I spent four years of my working life writing case tools - poacher turned gamekeeper here.)
-- DavidHarvey
See Also: BigModelsAreUseless, IllusionOfControl, UmlCaseVultures
Case tools don't seem to offer substantial support for reasoning about concurrent/distributed systems. Surely this is one area where a tool founded on sound computer science principles could provide substantial value beyond just diagramming and code gen. How could we modify/extend case tools to detect a large set of common architectural faults? (e.g. Does this deadlock?, Is there higher coupling across distributed interfaces than local ones?.)
A fool with a tool is still a fool -- anon.
(Re: 'reasoning' about concurrent/distributed systems...Actually the STATEMATE tool from iLogix http://www.ilogix.com/ claims to do exactly that, FWIW. -- Jim Abbott (jabbott@easy2.com))
See http://www-dse.doc.ic.ac.uk/projects/tracta/index.html for a project investigating this. In particular, check out the LTSA tool.
An Aside: The original encounter sounds like a perfect set up for FacadesAsDistributedComponents. Could you slide over there and add some wisdom gained?
Sorry Kyle, I left this job soon afterwards...