Is there any plugin or some extension to draw/edit the scheme of the State Machine? It could be in UML notation or other (this doesn't matter for a moment as I'm just looking for a solution to combine code editor and drawing solution for graph-like charts). Thank you in advance!
You could use YAKINDU Statechart Tools: statecharts.org. It is based on Eclipse and available as a plugin to be integrated into all other IDEs based on Eclipse. It allows you to draw state diagrams and generate code directly from it.
Other similar tools would be MathWorks Stateflow or Enterprise Architect, however they are both not based on Eclipse.
Using a tool not only to draw the diagram but to generate code from it is important, because otherwise your code and the diagram will diverge from each other over time and the code will not do anymore what the diagram says it should.
Disclaimer: I'm one of the developers of the YAKINDU Statechart Tools.
Related
Many UML tools claim to do forward / reverse engineering of Java code. However, it turns out from prior experience, that few tools really work in this area.
I haven't been doing Java projects for 3 years, and want to get up to date with the current status in this area.
In Particular I am interested in Creating State Machine Skeletons from Diagram, be able to create hooks to my own code, and be able to reverse engineer the State Diagram back (Do not want to change the State Machine itself outside the Tool).
Which UML tools works in this area? Enterprise Architecht? Visual Paradigm? Others?
Geir Ove
Norway
The reverse engineering from code to UML is done at class diagram for static and sequence diagram for behavioral visualizations.
There is no state machine reverse engineering standard up to today therefore no tool has implemented this feature.
Enterprise Architect comes with a Visual Execution Analysis tool set that has a number of outputs including Sequence Diagram generation of live code execution, State Transition Diagrams (sequence Diagram with states) as well as Profiler reports showing operation and call frequency.
I would suggest reading more on Enterprise Architect Visual Execution Analysis here.
I'm looking for a diagramming software that would produce good looking output. It doesn't need to support everything (or even much) from UML, is doesn't need to have code engineering functions or anything, it just needs to produce visually interesting output.
Here is a couple of samples of products that I consider ugly / not good enough: Visio with default UML stencils (didn't find better looking ones), Enterprise Architect, Dia, ArgoUML and many other "professional" UML tools.
A couple of visually compelling tools that I considered (but found issues with):
Visual Studio class diagrams - just for .NET classes but the output is miles better than what UML tools typically produce
NClass - similar to VS's class diagrams but I could not find the "pretty", blue skin anywhere
yuml.me - very nice but lacking some advanced layout options. I have to say that I find their style almost ideal for high-level diagrams - they look sketchy which is good.
Balsamiq - I think Joel used this for hginit.com and I liked it. However, it's not suited for creating software diagrams so I can imagine it would be quite a lot of work
MS Word has actually quite a good graphics engine but I'd rather leave this as a choice of the last resort
I'd be grateful for any good tips.
yEd is a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams
Take a look at this, a web app for creating UML diagrams!
Architexa allows you to create easily manageable UML style class, sequence, and layered diagrams from within the Eclipse IDE. It also helps speed up the process by allowing you to add items straight from your codebase.
Visio 2013 has quite some nice designs, even sketch-like layouts that are my favorites. Here's an example:
Visio seems to be the closest match for what I'm looking, something between vector editor and a software diagramming tool with decent formatting and layout options. Not optimal on many levels but the most flexible tool I tried so far.
I make (and teach people to make - I have a training module for that) very pretty Diagrams with Sparx Enterprise Architect. However I always teach people to make effective, succinct Diagrams fist, and then improve their presentation - trying to modify a diagram that has been "beautified" is unproductive.
This is definitely a hard question:) There are many tools, however the most beautiful UML diagrams are saw were made using vector graphics editor...
It also depends on what do you expect from a tool producing nice diagrams... Pretty stencils? Good layouting algorithm?
Tools which I find more or less usable are MagicDraw for the grid, BOUML for simplicity and either Papyrus or Moskitt, whichever had some layouting heuristing trying not to put classes which were made to be close too much aside.
Visual Studio 2010 Ultimate includes the following UML diagrams: class, sequence, component, use case, and activity. You can also generate sequence diagrams and dependency graphs from code.
For examples of how these diagrams look, see their descriptions under Developing Models for Software Design. If you can get the Visualization and Modeling Feature Pack, you can create UML class diagrams from code.
You can download the trial version of Visual Studio 2010 Ultimate here. If you have an MSDN subscription, you can get the feature pack here.
Visual Studio 2010 (Ultimate) is good for UML in .NET, but it is only available to MSDN subscribers. If you are looking for another better one, I would recommend you to try Visual Paradigm.
draw.io is good, they also have a desktop application (Electron)
I was wondering how you draw diagrams in Unified Modeling Language for your project design? By hand on paper or some editors on computer? It will be great if there are some convenient editors or other gadgets for help. I am programming under Windows and Ubuntu.
Thanks and regards!
I used Sparx Enterprise Architect.
I reverse the java project and then just drag and drop from the Package Explorer to the diagram. When I have finished to present the existing classes I then add UML classes in the diagram. No code generation or model driven, just UML graphical representation mixing existing classes and abstract classes. I give my diagrams to the team and let them integrate it.
I am very lazy when modeling :-)
(source: forum-omondo.com)
I can see my classes and navigate from one package to another showing associations, inheritances and dependencies dynamically. No need to create a diagram per view, I prefer to use the show hide links and directly navigate in the java code and model from the same diagram it is easier and a lot more powerful because interactive.
(source: forum-omondo.com)
(source: forum-omondo.com)
Just using the class contextual menu I can navigate. Really cool
(source: forum-omondo.com)
I used Poseidon for UML for quite a while.. not that bad, it's just a little bit slow since it's written in Java.
If I remember correctly it also has a community license that can be obtained for free..
I would vote for StarUML
maybe its not brand new, but it does the job!
It works under Windows.
read more about StarUML
I use Dia for my diagramming needs. It's open source and cross platform so you can switch between OS's without worrying about which format your diagrams were in. It exports to several different image types and has a Portable version (for Windows) as well.
Visio 2003 uses UML 1.4, which means that some stereotypes from UML 2.0 simply don't exist, and they need to be modeled by freehand drawing (I may as well be using Photoshop). Does anyone know of an update from Microsoft or an addon to include UML 2.0 (complete - not just class diagrams) in Visio 2003?
I found this package: http://www.sdl.sandrila.co.uk/ but judging by their "example" screenshots, I'm going to stay away. If they don't know how to use UML, I'd be surprised if they could implement it correctly ;)
This set of Visio stencils and templates for UML 2.0 is excellent:
http://softwarestencils.com/uml/index.html
In case it wasn't clear, Microsoft will never update Visio support of UML. For some time, they have not considered Visio to be a Software Engineering tool.
I don't blame them. It didn't even do a good job with the parts of UML it "supported".
I'm using the UML 2.0 symbols from Pavel Hruby. Maybe you'll find them useful as well.
The nice thing about Visio is that it is just a drawing program and not a modeling environment. So just make up your own lines. Visio can draw just about any line time you can think of. But the real answer is the one already checked. Now that Microsoft "supports" UML maybe they will provide better tooling.
Those screenshots are only example diagrams, Sandrila SDL doesn't enforce that level of rigour to the diagrams.
I found this package: http://www.sdl.sandrila.co.uk/ but judging by their "example" screenshots, I'm going to stay away. If they don't know how to use UML, I'd be surprised if they could implement it correctly ;)
That seems a bit harsh - of the handful of screen-shots which are UML2 (as opposed to being examples of the other notations the tool supports, such as SDL, MCL and TTCN), which do you think are incorrect? It's quite ugly as diagrams go, and uses aliased fonts and lines, but that's a Visio feature rather than anything to do with the template.
In terms of what you can do with the UML, you are much better off using a real UML2 tool than Visio. Enterprise Architect is a cheap one which does have a real UML model behind it. (It would be nice to be able to say that the more expensive ones have fewer UI bugs and gotchas, but that isn't really the case, and most lag far behind the simpler graphical tools like OmniGraffle or Visio in polish and usability)
Does anyone know of any kind of UML variation which can map events in a GUI system?
I have a quite complex event driven GUI system and I would like to create a diagram so new developers can easily get an overview of events fired by various views and what models/controllers or view are instantiated/effected by these events.
I was looking for something that would look more like a mind map which branches all over the place rather than linear scenarios.
Does anyone have any ideas?
Regards,
Chris
State diagrams.
Old and pricey, but here is a great text on modeling user interfaces with state charts. I've worn the pages out on mine....
For quick and dirty message sequence charts, you can't beat the price of mscgen. It uses a source text inspired by the syntax used by AT&T's Graphviz package, which is, incidentally, a good way to rendering arbitrary directed and undirected graphs.
I often use graphviz to document my state machines, as I find it easier to keep in sync with the implementation than a Visio drawing.
the book that finally helped me really understand UML statecharts is Samek's Practical Statecharts in C/C++ which has a few chapters on them as well as an impressive implementation framework for building state-based systems. I think it's worth getting just for the explanations of how to think with statecharts.
For actually creating quick statecharts or similar rough diagrams, I do a lot of work with the textual DOT language in GraphViz and often then include those diagrams directly into documentation generated with doxygen.
UML activity diagrams and state charts can branch all over the place.
See http://www.agilemodeling.com/style/stateChartDiagram.htm
(source: agilemodeling.com)
The communication diagram can lack sequence and it behaves more like a mind map than an activity or sequence diagram. If communicating events is your goal a state chart does show interaction, but rather, well, state. A communication diagram has less on it than an activitystate diagram, though that is not bad either, similar in nature.
You could just leverage UseCases and add keywords or label the uses edge/line. Not recommended if this will be maintained and be more than a pretty picture.
(Image is slightly overloaded, you don't need the numbering and they don't have to be method calls)
(source: agilemodeling.com)
http://www.agilemodeling.com/artifacts/communicationDiagram.htm
Another format which I was reminded of recently is the Dynamic Diagram in the Bon Method. I wrote a posting about it on Artima. The book Seamless Object-Oriented
Software Architecture was made freely available in 2003.
The difference between these and communication diagrams is separation of the steps into a separate legend. That can read like a Use Case by itself, being easy to localise and sometimes to show alternative explanations.
I had great results using this D3 based auto minimum spanning tree implementation. Just pass it a list of graph edges and it'll cluster and draw a UML-like diagram:
https://github.com/cpettitt/dagre-d3
Also great for state diagrams.