How to generate UML diagrams (especially sequence diagrams) from Java code?
How can I generate UML diagrams (especially sequence diagrams) from existing Java code?
ObjectAid UML Explorer
Is what I used. It is easily installed from the repository:
Name: ObjectAid UML Explorer
Location: http://www.objectaid.com/update/current
And produces quite nice UML diagrams:
Description from the website:
The ObjectAid UML Explorer is different from other UML tools. It uses the UML notation to show a graphical representation of existing code that is as accurate and up-to-date as your text editor, while being very easy to use. Several unique features make this possible:
- Your source code and libraries are the model that is displayed, they are not reverse engineered into a different format.
- If you update your code in Eclipse, your diagram is updated as well; there is no need to reverse engineer source code.
- Refactoring updates your diagram as well as your source code. When you rename a field or move a class, your diagram simply reflects the changes without going out of sync.
- All diagrams in your Eclipse workspace are updated with refactoring changes as appropriate. If necessary, they are checked out of your version control system.
- Diagrams are fully integrated into the Eclipse IDE. You can drag Java classes from any other view onto the diagram, and diagram-related information is shown in other views wherever applicable.
EDIT: If you're a designer then Papyrus is your best choice it's very advanced and full of features, but if you just want to sketch out some UML diagrams and easy installation then ObjectAid is pretty cool and it doesn't require any plugins I just installed it over Eclipse-Java EE and works great !.
UPDATE Oct 11th, 2013
My original post was in June 2012 a lot of things have changed many tools has grown and others didn't. Since I'm going back to do some modeling and also getting some replies to the post I decided to install papyrus again and will investigate other possible UML modeling solutions again. UML generation (with synchronization feature) is really important not to software designer but to the average developer.
I wish papyrus had straightforward way to Reverse Engineer classes into UML class diagram and It would be super cool if that reverse engineering had a synchronization feature, but unfortunately papyrus project is full of features and I think developers there have already much at hand since also many actions you do over papyrus might not give you any response and just nothing happens but that's out of this question scope anyway.
The Answer (Oct 11th, 2013)
Tools
- Download Papyrus
- Go to Help -> Install New Software...
- In the Work with: drop-down, select --All Available Sites--
- In the filter, type in Papyrus
- After installation finishes restart Eclipse
- Repeat steps 1-3 and this time, install Modisco
Steps
- In your java project (assume it's called MyProject) create a folder e.g UML
- Right click over the project name -> Discovery -> Discoverer -> Discover Java and inventory model from java project, a file called MyProject_kdm.xmi will be generated.
- Right click project name file --> new --> papyrus model -> and call it MyProject.
- Move the three generated files MyProject.di , MyProject.notation, MyProject.uml to the UML folder
Right click on MyProject_kdm.xmi -> Discovery -> Discoverer -> Discover UML model from KDM code again you'll get a property dialog set the serialization prop to TRUE to generate a file named MyProject.uml
Move generated MyProject.uml which was generated at root, to UML folder, Eclipse will ask you If you wanted to replace it click yes. What we did in here was that we replaced an empty model with a generated one.
ALT+W -> show view -> papyrus -> model explorer
In that view, you'll find your classes like in the picture
In the view Right click root model -> New diagram
Then start grabbing classes to the diagram from the view
Some features
To show the class elements (variables, functions etc) Right click on any class -> Filters -> show/hide contents Voila !!
You can have default friendly color settings from Window -> pereferences -> papyrus -> class diagram
one very important setting is Arrange when you drop the classes they get a cramped right click on any empty space at a class diagram and click Arrange All
Arrows in the model explorer view can be grabbed to the diagram to show generalization, realization etc
After all of that your settings will show diagrams like
Synchronization isn't available as far as I know you'll need to manually import any new classes.
That's all, And don't buy commercial products unless you really need it, papyrus is actually great and sophisticated instead donate or something.
Disclaimer: I've no relation to the papyrus people, in fact, I didn't like papyrus at first until I did lots of research and experienced it with some patience. And will get back to this post again when I try other free tools.
What is your codebase? Java or C++?
eUML2 for Java is a powerful UML modeler designed for Java developper in Eclipse. The free edition can be used for commercial use. It supports the following features:
- CVS and Team Support
- Designed for large project with multiple and customizable model views
- Helios Compliant
- Real-time code/model synchronization
- UML2.1 compliant and support of OMG XMI
- JDK 1.4 and 1.5 support
The commercial edition provides:
Advanced reversed engineering
- Powerful true dependency analyze tools
- UML Profile and MDD
- Database tools
- Customizable template support