Alexander Staubo wrote:
You guys at Digital Creations have done UML modeling in the process of building Zope. Can you recommend any good books or resources on the topic?
I've used a number of the books in the addison wesley UNL series. They seem OK. I actually liked the UML User's Guide as a quick overview of UML. I was already familiar with various other design notations. A number of people here like "UML Distilled" in this series. Although I haven't looked at it myself, a couple of people here really like "Learn UML in 24 Hours". I'm not kidding. It deals with alot of methodology/process issues, in addition to UML notation.
Currently we use Adobe Illustrator for simple component relation modeling -- really relations between clients and server and internal components. We have been by Visio, but we feel it's even more of a hassle, plus it makes truly godawful-looking diagrams (many of our diagrams ends up on a marketdroid's desk).
An important thing to remember about UML is that it is a *modeling* notation. A tool that just draws pictures and doesn't manage a model is not very useful.
The best tool I could ever imagine would be one that allowed both micro- and macroscopic views of a system. The macroscopic view would show the system laid out as components, servers and consumers, layers and relations. The microscopic world would go down to the programming level to show classes, methods, variables. This wish of mine may seem simplistic -- I'm not sure exactly how UML is targeted, and what it offes -- however I think anyone will agree that it would be useful.
UML certainly accomidates many views of a system. Not onlt can you look at a system from various levels of abstraction or from the point of view of various artifacts, but you can look at the system topically, as I have done in the ZODB model. It is the underlying *model* that makes this relatively easy.
Do you have anything enlightening to say about UML, such as:
- Has it helped you design more effectively?
Absolutely. We also find it very useful for capturing and managing requirements via use cases.
- Or do you use UML more as a documentation tool to _illustrate_ a design?
We do some of that too.
- Do you use a UML code generator to buy Python or C skeletons?
No. Very few tools support Python (or C, for that matter). Python skeletin generation is not that labor saving and would not be useful unless the tool could update existing code. We use a highly iterative development process, so code generation must be iterative to be useful. We really never go from design to C. We either convert an existing Python implementation to C, or build a Python interface to an existing C api in a direct and fairly mechanical way.
Do you think a two-way UML tool [one that let you take the source code seamlessly back into the UML editor for re-editing] would be useful, or even viable?
A tool that extracted inheritance hierarchies, operations with signatures and attributes from source code into a model would be useful, but not that critical. One of the tools we've used does this partially for Python. This does save some time when reverse engineering. What we find far more critical than reverse engineering and code generation is a solid repository with a well-implemented and thorough modeling interface. The model repository is critical to UML. It should: - Faithfully implement the UML meta-model, - Support multiple users and model composition and reuse, and - have a robust repository.
- Does your tool of choice automagically produce HTML?
We haven't settled on a tool yet. Both of the tools we've done alot of work with generate HTML. Jim -- Jim Fulton mailto:jim@digicool.com Python Powered! Technical Director (888) 344-4332 http://www.python.org Digital Creations http://www.digicool.com http://www.zope.org Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.