5 ms·
In school, UML seemed like a great idea. It wasn't very fun, but it was useful, and if you had a simple class project, UMLs certainly made things simpler if you
by aggronn 13y ago
In school, UML seemed like a great idea. It wasn't very fun, but it was useful, and if you had a simple class project, UMLs certainly made things simpler if you were even okay at them.
When I got my first job, however, there were no UML diagrams. I was saddened to see this. I don't remember if I was surprised, but I was so sure that I would been useful to have a detailed UMI diagram available for studying the codebase.
So, as I got acclimated to the codebase, I took it upon myself to start putting together a UML for our existing product, so that training new people would be easier. After spending several days doing this, my opinion or UML changed dramatically for a couple of reasons:
1) Pretty much all of the UML tools out there are not a pleasure to use. Drawing UML diagrams was still infinitely better than using the various programs I tried. But drawing them on anything but a whiteboard wasn't scalable to the size of the project.
2) Once I had the basic classes drawn out, and realized how diverse the kinds of classes we had were, it became apparent that this just wasn't going to happen. A basic flowchart of the application would be equally valuable. The specificity of UML wasn't worthwhile, having a class with 10+ subclasses was a mess.
3) What I did have was hard to see. This goes back to the first point--the tools are not good. When you labored over all the clicking and dragging, you pulled together this monster of a graph that you can only see a small portion of at a time in a given screen. It was easy to get lost. Printing wasn't useful.
Ultimately, I only ended up using UMLs when we were thinking about how we were going to build out new features, or redesign stuff. It was a .NET shop building a Silverlight app, so serialization and strict static typing was critical. A decent JSON api would have made life easy, but since the back end and the front end were essentially all the same thing, class diagrams were very useful. So for the 2 or 3 times that we had to develop or redo class serialization while I was there, it came in handy only for working on small 2-5 class models.
That brings us to the next point: do class diagrams have a place in an increasingly dynamically typed world? Functional programming in javascript. Frameworks that have their own detailed class system, or which aren't even class oriented.
UML has essentially become analogous to cursive. You learn about it early on, and its important to have a notion of how to read it. But ultimately, since we don't use it every day, we basically never use it.
- styluss 13y agoHave you tried Umlet http://www.umlet.com/ http://www.umlet.com/ ?
- QEDturtles 13y agoLooks promising, Thanks!
- bane 13y agowow this looks remarkably good...at last somebody "gets" why incessant mousing around and piling through menus is a bad way to do things.
- aggronn 13y agoThats actually what I had settled on using, and I think its a fine tool. But even umlet doesn't make writing and viewing large UML diagrams...pleasurable? In the sense that we have tools like vim, word, excel, and chrome that are very polished and allow you to get to work quickly and accurately. Even with umlet, i find myself worrying about the interface too much. I suspect its more of a problem with the fundamental design of UML though. I think if there was like, a UML-lite spec or something. To me, i feel like UML is to what I want to use as XML is to JSON (or csv for that matter), if that makes any sense.
- bobm_kite9 13y ago(plug starts) Can I also suggest Kite9? www.kite9.com/kite9/gui.html Which does automatic diagram layout. It's not quite doing UML yet, but a reasonable approximation thereof. It's more visual/drag-and-drop than UMLet. I intend to include a suite of actual UML symbols within the next week or so. Hopefully this will be useful to you! (end plug)
- camus 13y agoA uml design tool could easily be created in the browser , with export to different languages ... a few weeks ago i began building a class diagram designer ( uber limited ) http://umldesigner.herokuapp.com/ http://umldesigner.herokuapp.com/ , as a proof of concept . Lucidcharts provides a more complete one. UML is helpfull for comunicating ideas ,etc ... but i dont believe in RAD tools based on drawing class diagrams,these tools never work properly.