automatic layout of diagrams - layout

I need an algorithm for the automatic layout of BPMN2 diagrams.
Something like the auto layout (re-layout) of MS Visio.
Is there no similar OpenSource or comprehensive guidance?
Sample Link

That's a very specific (and non-trivial) layout you are looking for. There aren't many good implementation out there at all. A good -but commercial- implementation certainly is yFiles - BPMN Demo - IMHO easily beats the layout of Visio from your sample link.
With regards to open source, you should be looking at a more generic layout style, probably, since BPMN really is a sophisticated corner-case of orthogonal flow layouts. Maybe Kieler, GraphViz - dot or WebCola can be tweaked to work well enough for you for BPMN diagrams - but there is definitely a lot work left to do if you want to support all the sophisticated layout rules and options.

Related

How to design a UML diagram with a scripting language?

I'm designing a software component which will get instructions from other components on how the UML diagram should look like, and then will produce this UML diagram in different presentation ways (in SVG, GIF, etc.), for example (in Java):
DiagramDesigner designer = new DiagramDesigner();
designer.setStyle('Use Cases')
designer.addActor('User');
designer.addUseCase('Print Document');
// etc.
String svg = designer.getSvg();
I don't want to re-invent the wheel and want to use some industry-standard language/interface for interconnection between my DiagramDesigner and other components. I'm looking for an interface similar to DOM, but for UML, not for XML.
Can anyone help? Thanks in advance.
ps. Besides the example above I would like to make my diagrams inter-operable and transferrable between servers, e.g.:
// first server
String script = designer.getScript();
// second server
DiagramDesigner desiger2 = DiagramDesigner.import(script);
So if I understand you right, you are looking for a way to work with UML on the metamodel level. You should look at the MOF standard and its implementation the EMF (Eclipse Modeling Framework), which is used by almost all Eclipse based UML tools and this framework is used by many other modeling projects, it even somewhat influenced the standardization of MOF (resulting in SMOF and EMOF split) and therefore I would declare it industry standard.
Probably only loosely related but anyhow: PlantUML. It is open source, built in Java and likely contains already parts of what you want to do.
You can inspire from these scripts to generate any output you want:
http://askuml.com/
Currently examples are given in yUML because they're nice but could be anything.
At least for the syntax part, you could get some inspiration from the large set of textual UML tools (theses tools allow designers to textually specify the model and then they automatically show the model graphically using the standard UML notation).
At least of such tools here: http://modeling-languages.com/content/uml-tools#textual

UML diagrams that are actually pretty?

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)

Diagramming tool to depict objects

I wanted to know what tools (preferably free) can be used to layout a collection of objects and their relationship - simple relationship like members referring each other, inheritance, attributes et.al. I would prefer a tool with which I can create and update the diagram as quickly as possible.
I'm not familiar with UML, but it's probably what I'm asking about.
Mock4U
alt text http://typo3.webetiser.com/fileadmin/sites/RainerEschen/downloads/mock4u/class-diagram.png
Take a look at this page on AlternativeTo, there's a lot of different options listed. Among them:
Microsoft Visio
Inkscape
Dia
OmniGraffle
OpenOffice Draw
Creately
etc.
Umlet
http://www.umlet.com/
You also have StarUML, wich is open source and similar to Rational Rose, only a bit simpler.
ArgoUML is a good free tool.
I really like Dia. It even has a Portable edition!
It's small, fast, cross OS, simple to use, and has a lot of built in elements (specially for UML modelling).
The only problem I can foresee for you is that it follows The GIMP's GUI design (separated window for the toolbox). I happen to like it, but many people hate it.
Keep in mind that this screenshots are quite old:
(source: gnome.org) !
It also can be scripted with Python.

What is the best way to use UML 2.0 in Visio 2003?

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)

Is there a visual diagram format for gui event mapping?

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.

Resources