Reverse engineer python source code into UML.

Latest Version 1.60
(c) Andy Bulka 2004-2012
andy@andypatterns.com
http://www.andypatterns.com/index.php/products/pynsource/
License: GPL 3
Proper "Python Friendly" source parsing for Python Software Developers: Unlike most off the shelf uml python code importers, pyNsource attempts to recognise tricky composition relationships that are typical in python software development. The expression
self.somevar
is correctly recognised as a UML attribute "somevar". pyNsource attempts to guess the cardinality of associations - if you use arrays or use
.append()
then "one to many" is assumed. More advocacy here.
Layout: Use the built in layout algorithm to help you get started in arranging your classes on the workspace. The layout algorithm uses "spring layout" and animates during layout. Overlap removal means your nodes won't overlap (unless you drag them with the SHIFT key held down). A multipass (slower) 'Optimal' Layout is also available which tries to find the best possible layout, within the constraints of not being able to 'bend' lines.
Ascii view: Hit "v" to toggle between normal UML and Ascii UML view. Ascii UML lets you copy and paste ascii uml text into your source code and text based documentation. Optionally use something like the Java Ascii Versatile Editor to wire up your ascii uml classes nicely before pasting into your source code or documentation. See an example of ascii UML at the bottom of this readme.
The main purpose of this tool is to provide a command line tool which can generate java and delphi skeleton code from python source code, for the purpose of importing (e.g. Java source code) into other UML tools - which might have better layout and other features.
Whilst it currently uses the older python parser, it does have the feature (which my current ast based one used in pyNsourceGui.py doesn't) of optionally treat modules as classes, creating a "pseudo class" for each module/file. In such a case, module variables and functions are treated as attributes and methods of a 'class'. I hope to add the "treat modules as 'classes'" feature to the new ast based parser as used by pyNsourceGui.py in the future, as I think it allows us to visualise modules, not just classes.
This was mainly a fun experiment but seems to work ok. The pynsource.py command
line tool can also generate Yuml text from python source code (use the -y option).
What does pynsource mean?
Since it was built in Australia, which is famous for its meat pies and sauce
at football matches, Pie-and-Sauce. Where Py = Python and Source = source code.
Download
Windows 7, Mac and Linux versions from here
SVN repository for pynsource is
http://code.google.com/p/pynsource/
Report bugs to
http://code.google.com/p/pynsource/issues/list
Mailing List
Join the mailing list and be notified when there are new releases of PyNSource. Send an email to pynsource-subscribe@yahoogroups.com or visit here.
Send all comments to Andy Bulka.
