[Zope-dev] UML information

Jim Fulton jim@digicool.com
Wed, 20 Oct 1999 09:17:07 -0400


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.