UML tools for python

A

Andy Bulka

Whilst almost responding to the 'dream project' thread I decided that
this post warranted its own thread. What about a solid UML tool with
round trip functionality for the Python Community?

Some attempts at reverse engineering python are
PyReverse http://www.logilab.org/projects/pyreverse/
PyUt http://pyut.sourceforge.net/
PyNSource http://www.atug.com/andypatterns/pynsource.htm
Boa Constructor http://sourceforge.net/projects/boa-constructor/
IDLE's class browser
PythonWin 's class browser
all of which have their problems and limitations.

E.g. PyUt will hang if it cannot __import__ successfully and its GUI
has no zoom nor scroll etc. PyReverse is hard to use, misses a lot of
basic information and then what do you do with the XML files? - who
will read these? I have to edit them manually to import them into
Enterprise Architect
http://www.sparxsystems.com.au
and the last time I tried, you couldn't import into
Poseidon http://www.gentleware.com/products/index.php4
community edition, which is the better descendant of the free Argo.

Some Java-centric UML tools I believe do export python, though this is
usually very simple and usually broken. For example
Object Domain http://www.objectdomain.com/products/od/overview.do
claims to import python code, but the last I looked, this particular
functionality was fragile.

Potential powerful technology that could be used is
Bicycle Repair Man http://bicyclerepair.sourceforge.net/
a refactoring tool for Python which could be combined with some sort
of Java GUI (with zoom and all those niceties) - since the hard bit of
the problem is parsing python reliably and knowing how to change it /
regenerate it nicely. Bicycle Repair Man already treads deeply in
this territory. Also
PyChecker http://pychecker.sf.net/
walks similar territory.

Ideal tools would look and behave something like
ModelMaker (for Delphi) http://www.modelmakertools.com/
TogetherJ http://www.togethersoft.com/products/index.jsp
where you can work in code or in diagrams and the two are seamlessly
kept in synch. Its truly cool, and I wish I could do these sorts of
things in Python.

Does anybody know of any other work being done in this area?

Do we think that having a solid UML tool with full round trip
facilities plus gorgeous GUI - build specifically for Python is a
worthy goal? Is anybody going to bother to build such a tool for
free?

Andy Bulka
http://www.atug.com/andypatterns
 
M

Mathias Waack

Andy said:
Do we think that having a solid UML tool with full round trip
facilities plus gorgeous GUI - build specifically for Python is a
worthy goal? Is anybody going to bother to build such a tool for
free?

I'm also looking for such a tool - without much success. But before
someone starts a new project he should better look for ongoing
projects and join one of them. Its better to have only a few living
projects then some dozens of dead projects (the latter seems to be
the common case for most of the open source projects).

Mathias
 
R

Rimidalv

Andy said:
Whilst almost responding to the 'dream project' thread I decided that
this post warranted its own thread. What about a solid UML tool with
round trip functionality for the Python Community?

Some attempts at reverse engineering python are
PyReverse http://www.logilab.org/projects/pyreverse/
PyUt http://pyut.sourceforge.net/
PyNSource http://www.atug.com/andypatterns/pynsource.htm
Boa Constructor http://sourceforge.net/projects/boa-constructor/
IDLE's class browser
PythonWin 's class browser
all of which have their problems and limitations.

E.g. PyUt will hang if it cannot __import__ successfully and its GUI
has no zoom nor scroll etc. PyReverse is hard to use, misses a lot of
basic information and then what do you do with the XML files? - who
will read these? I have to edit them manually to import them into
Enterprise Architect
http://www.sparxsystems.com.au
and the last time I tried, you couldn't import into
Poseidon http://www.gentleware.com/products/index.php4
community edition, which is the better descendant of the free Argo.

Some Java-centric UML tools I believe do export python, though this is
usually very simple and usually broken. For example
Object Domain http://www.objectdomain.com/products/od/overview.do
claims to import python code, but the last I looked, this particular
functionality was fragile.

Potential powerful technology that could be used is
Bicycle Repair Man http://bicyclerepair.sourceforge.net/
a refactoring tool for Python which could be combined with some sort
of Java GUI (with zoom and all those niceties) - since the hard bit of
the problem is parsing python reliably and knowing how to change it /
regenerate it nicely. Bicycle Repair Man already treads deeply in
this territory. Also
PyChecker http://pychecker.sf.net/
walks similar territory.

Ideal tools would look and behave something like
ModelMaker (for Delphi) http://www.modelmakertools.com/
TogetherJ http://www.togethersoft.com/products/index.jsp
where you can work in code or in diagrams and the two are seamlessly
kept in synch. Its truly cool, and I wish I could do these sorts of
things in Python.

Does anybody know of any other work being done in this area?

Do we think that having a solid UML tool with full round trip
facilities plus gorgeous GUI - build specifically for Python is a
worthy goal? Is anybody going to bother to build such a tool for
free?

Andy Bulka
http://www.atug.com/andypatterns
Try Dia http://www.lysator.liu.se/~alla/dia/
also autodia http://droogs.org/autodia/
and if you Google a little i guess that you can find dia2code (sorry
couldn't find url)
 
Y

Yermat

Rimidalv said:
Andy said:
Try Dia http://www.lysator.liu.se/~alla/dia/
also autodia http://droogs.org/autodia/
and if you Google a little i guess that you can find dia2code (sorry
couldn't find url)

Right but there is nothing where you can edit both code and diagram...
The question is which good editor to extend ?
ArgoUml seems good but do you know another one that is quite complete ?
Which one is easiest to extend ?
A program in java should it be extend in Jython ?
Cheers,
Yermat
 
A

Alexandre Fayolle

Le 30-12-2003 said:
Whilst almost responding to the 'dream project' thread I decided that
this post warranted its own thread. What about a solid UML tool with
round trip functionality for the Python Community?

Some attempts at reverse engineering python are
PyReverse http://www.logilab.org/projects/pyreverse/
PyReverse is hard to use, misses a lot of
basic information and then what do you do with the XML files? - who
will read these? I have to edit them manually to import them into
Enterprise Architect

Well, I think the first thing you could do if you have specific problems
with any of the tools you mention is getting in touch with the
developers, and try to talk with them. Since we've never heard of your
problems with pyreverse, there's hardly any chance that we will do
anything for you. Logilab's python-project mailing list is waiting for
your posts (http://lists.logilab.org/mailman/listinfo/python-projects to
subscribe)


Do we think that having a solid UML tool with full round trip
facilities plus gorgeous GUI - build specifically for Python is a
worthy goal? Is anybody going to bother to build such a tool for
free?

Now, let's be reasonable. If this what you want (what you really really
want), since this is the OS world, your options are:
* code it yourself and share it with others
* code it with some other people, and share it with others
* commission (i.e. pay) someone else to code it for you, and share it
with others
* wait until someone codes it and shares it with you.

But just saying "all existing tools suck, we (i.e., I) need someone to
build some cool free tool with <big list of features>" won't get you
anywhere.

Happy new year
 
A

Andy Bulka

Alexandre Fayolle said:
Well, I think the first thing you could do if you have specific problems
with any of the tools you mention is getting in touch with the
developers, and try to talk with them. Since we've never heard of your
problems with pyreverse, there's hardly any chance that we will do
anything for you.

I *have* reported numerous problems with pyreverse to your mailing
list. Why do you say I haven't? Specifically:

Jun 2003 DOCTYPE XMI directive and MSXML3 parser
Feb 2003 Running the latest version locks up when no -d option
Feb 2003 Pyreverse 0.4.2 requires logilab.common and
optik.OptionParser ?
Dec 2002 Fwd: [Gentleware #12069] Poseidon - version 1.5 XMI import
prob.

and many more before that. And I appreciate you guys responding -
great!
But just saying "all existing tools suck, we (i.e., I) need someone to
build some cool free tool with <big list of features>" won't get you
anywhere.

The purpose of my post was not an idle 'newbie' post - I have been
watching this area for a number of years and have provided the urls in
this thread - partly as a service to the python community and also,
yes, as a bit of a complaint about the limitations of each of the
existing tools.

As for contributing something myself:

- A source forge project I set up quite a while ago but its just an
idea at this stage http://sourceforge.net/projects/pyidea/

- A robust python parser written by me which doesn't rely on the
fragility of __import__ see PyNSource
http://www.atug.com/andypatterns/pynsource.htm

- A Delphi (windows only) GUI front end to PyReverse currently
unreleased

- My post in this thread researching and listing all UML tools for
python that I know. Hopefully people will get ideas from this.

Anyway - ideally I was hoping for a robust discussion by senior Python
people on what they may be using with regards to UML and what their
feelings are about the situation. UML is very important yet there is
no GUI driven two-way tool for python programmers. Surely serious,
larger scale, software development in Python would want to be using
UML as part of the process?

Andy Bulka
http://www.atug.com/andypatterns
 
A

Alexandre Fayolle

Le 06-01-2004 said:
I *have* reported numerous problems with pyreverse to your mailing
list. Why do you say I haven't? Specifically:

Jun 2003 DOCTYPE XMI directive and MSXML3 parser
Feb 2003 Running the latest version locks up when no -d option
Feb 2003 Pyreverse 0.4.2 requires logilab.common and
optik.OptionParser ?
Dec 2002 Fwd: [Gentleware #12069] Poseidon - version 1.5 XMI import
prob.

and many more before that. And I appreciate you guys responding -
great.

Whoops. I realize I had not checked the mailing lists archives
correctly. I apologize.

Anyway - ideally I was hoping for a robust discussion by senior Python
people on what they may be using with regards to UML and what their
feelings are about the situation. UML is very important yet there is
no GUI driven two-way tool for python programmers. Surely serious,
larger scale, software development in Python would want to be using
UML as part of the process?

Well, not necessarily. Of course I can only speek for myself (and a bit
for my company), but my prefered UML modelling tool is a whiteboard,
used in conjunction with Agile Modelling practices
(http://www.agilemodeling.com). And even then I tend to model lightly,
because the projects on which I work are generally fast moving targets,
which means that heavy up front modelling often results in waisted effort.
We found that on demand modelling sessions on the whiteboard to answer
specific questions provided the best results. The code we produce ends
up being refactored very often as requirements change anyway, and
maintaining up to date models costs us too much time.
 
A

Andy Bulka

Alexandre Fayolle said:
Well, not necessarily. Of course I can only speek for myself (and a bit
for my company), but my prefered UML modelling tool is a whiteboard,
used in conjunction with Agile Modelling practices
(http://www.agilemodeling.com). And even then I tend to model lightly,
because the projects on which I work are generally fast moving targets,
which means that heavy up front modelling often results in waisted effort.

Thanks for sharing how you work with regards to UML.

I too use many Agile and XP practices - UML tends to get used in
initial designs and in especially when communicating between
programmers. Some long term documentation of important sub-systems
exists in UML too.
We found that on demand modelling sessions on the whiteboard to answer
specific questions provided the best results. The code we produce ends
up being refactored very often as requirements change anyway, and
maintaining up to date models costs us too much time.

If we had two-way tools for Python, then maintaining your models would
not take up any time! ;-)

For example, when I used to use Delphi (object pascal) a lot, I had a
two way tool called ModelMaker http://www.modelmakertools.com. I used
to do some modelling in UML, then switch to coding and compiling, then
back to UML, then back to coding and refactoring. Delphi + ModelMaker
cooperated seamlessly so that the UML was always up to date, as was
the code. It was a dream come true. I always had UML diagrams of
everything, and they never went out of date.

TogetherJ http://www.togethersoft.com/products/index.jsp also works
like this.

P.S. Ideally such a tool would be free, but I would happily pay for
such a tool too. E.g. If Borland built something like PyBuilder - a
rock and roll solid IDE with GUI layout tools, refactoring support and
UML - I would certainly lay down my cash.

Andy Bulka
http://www.atug.com/andypatterns
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,739
Latest member
Clint8040

Latest Threads

Top