Do you use UML or other diagrams when working without a team?

Started by
21 comments, last by Norman Barrows 9 years, 6 months ago

I guess the biggest problem with UML is that people often feel the need to go completely over board or think that it's only "proper" UML if every last detail is described and every last option is used. It's not. "Just some boxes and lines" is a perfectly valid approach and still UML (if the proper arrow tips are used.. or none at all). You can safely ignore 99% of what would be possible and stick to the very basic stuff that's actually useful.

Trying to create code from UML tools? Aaarg. It takes 5-10 times longer just to add a function signature in a tool like EA compared to just writing the code. I'd rather write the code, let the tool create the diagram and then clean it up (ie. delete all the clutter and unnecessary detail), but even that tends to be more work than it's worth.

Just make sure your project isn't run by an UML freak that insists every last detail must be modeled prior to implementation. If you feel that something needs a few explaining pictures, great. Just don't use it for the sake of using it. That would be the equivalent of saying "the requirements document must be at least 150 pages, no matter how trivial the project is".

f@dzhttp://festini.device-zero.de
Advertisement

I'd still say that learning UML is still a good use of time.

Everyone will use back-of-a-napkin diagrams for stuff, but their informal diagrams will often will incorporate UML-ish ideas. We all learn UML in beginner OO courses now days, which gives us all a shared experience that we can leverage for communication.

And yes, when writing code by myself, I'll often scribble simple relationship diagrams for the different components in the system so that the ideas can solidify in my mind before/as I write the code... But these will be informal diagrams, not strict UML.

For solo projects, no. I use pen and paper to work out algorithms, but I don't use diagrams. I feel like they are slowing me down.

For team projects - that kind of depend on the kind of people you've hired/are leading. If you have inexperienced developers that can't design good API, it is a good idea to design the overall API by yourself and let the juniors implement it. In order to communicate better, class/sequence diagrams plus some free-form drawings that describe this or that design pattern. With time and experience, however, the need for these diagrams disappears. Plus, there are tools to automatically generate some of the diagrams, so I see no sense in doing them yourself when introducing someone new in the team.

One use of UML-like diagrams that almost always comes up is during the design process in my team is when designing a database schema. However, they are never maintained, as once you do the database, you can automatically generate a graphical representation.

If people that show strong dislike for UML... I'd say there are even more weird stuff happening in academia (e.g. ADLs, architecture description languages). Their problem is that they never work in big teams, never work on big projects, never support anything they write and very rarely get the chance to test their ideas in the real world.

I love so many of the responses in the thread:

I don't use it. It is awful ... except I'll use it to make "back of the napkin" notes, and when talking to others about designs.
I don't use it. ... except to document the flow between processes, then I might use a communications diagram.
I never use it... but I have tools that generate it that I use to talk about systems.
We don't use it ... except we build diagrams by hand before the system is built, then use auto-generated diagrams.


You may not use UML (or your own interpretation of boxes and arrows and flows) on a daily basis, but when it comes to communication and planning, it is a valuable tool. Noted above, even most of those people who said they don't use it went on to describe cases where they did.

Virtually everyone I've ever worked with has used an informal "pseudo" UML when explaining relatively complicated systems. Nobody uses it completely, but frankenstein UML diagrams are still a good communication tool. The main problem with UML is just that it's way too complicated in its complete form.

I love so many of the responses in the thread:

I don't use it. It is awful ... except I'll use it to make "back of the napkin" notes, and when talking to others about designs.
I don't use it. ... except to document the flow between processes, then I might use a communications diagram.
I never use it... but I have tools that generate it that I use to talk about systems.
We don't use it ... except we build diagrams by hand before the system is built, then use auto-generated diagrams.


You may not use UML (or your own interpretation of boxes and arrows and flows) on a daily basis, but when it comes to communication and planning, it is a valuable tool. Noted above, even most of those people who said they don't use it went on to describe cases where they did.


I use diagrams with boxes and arrows to communicate about system architecture, but I don't follow the UML convention at all. I often use a rounded box to represent a process and a cartoonish cylinder to represent a file or a database. Arrows are messages or read/write actions. I often use squiggly lines to separate different machines, so I know what processes run where. If I am explaining how one of those processes works, maybe rounded boxes will be functions, rectangular boxes will be data structures and arrows will be function calls or read/write actions.

I never make anything so complicated that I need formal definitions for my symbols.

The original question was about using UML or other diagrams when working alone. And yes, I sometimes do use diagrams like the ones I just described when I haven't settled on an architecture yet. But I find myself writing pseudo-code (again, without any formal conventions) more often than making diagrams.

I don't use UML.

When i have to draw diagrams of systems I draw it however it makes sense to in context. Domains can be different. Domains can have their own visual vocabulary that you can leverage.

The only place I ever worked that tried to use UML seriously for code generation and so forth was a clusterfuck of a place and UML didn't do anything but serve as an unfunny joke.

You may not use UML (or your own interpretation of boxes and arrows and flows) on a daily basis, but when it comes to communication and planning, it is a valuable tool. Noted above, even most of those people who said they don't use it went on to describe cases where they did.



"UML" is not a synonym for "anything that vaguely resembles a diagram." UML is a very strict specification for making diagrams. I do NOT use UML as I do not follow the spec in any sense of the word. I do however use diagrams to communicate.

Please don't conflate diagrams for communication with UML.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

You may not use UML (or your own interpretation of boxes and arrows and flows) on a daily basis, but when it comes to communication and planning, it is a valuable tool. Noted above, even most of those people who said they don't use it went on to describe cases where they did.



"UML" is not a synonym for "anything that vaguely resembles a diagram." UML is a very strict specification for making diagrams. I do NOT use UML as I do not follow the spec in any sense of the word. I do however use diagrams to communicate.

Please don't conflate diagrams for communication with UML.

I really hate to argue about it, but you might want to re-read the thread title and the original post.

Specifically, "use UML or other diagrams".

Most of the posts are mentioning the "other diagrams" aspect.

It is a bit frustrating to see people who ought to know better (or who ought to read more carefully) derail the question on UML as code generation being evil, or the stricter formal UML definitions, when this is primarily about "or other diagrams" being useful to an individual. While there is a formal UML specification, the concepts and markups used in UML have spread to most modeling tools. You may not be using the formal versions, but instead use the concepts from it. But those are not what the original question was about, reread it.

You may not use the stricter formal UML requirements, but you repeatedly state that you use other diagrams. Which seems to make your answer a resounding "YES!"

I've seen UML and other similar diagrams used at every office I've ever worked. I've seen it in the vast majority of modern technical books covering systems-level designs and architectural patterns (as opposed to finer-grained book on specific languages and those details). They are an excellent way to communicate, even if you are communicating from your past self to your future self.

I'm not sure I agree with your interpretation of the thread.

Instead of continuing to lump together UML with "all things diagram" let's split the thread into two distinct questions:

"Do you use UML?" - To this I personally answer no, and I hate UML, for reasons I'd be happy to dive into should anyone care (I doubt anyone does.)

"Do you use structural/flow diagrams of some kind?" - This I of course answer Yes, as does virtually everyone in the thread.


I think my contention is that UML is something that should be considered distinctly from the set of all things diagramming, because they are not a one to one equivalence. My point is that I don't agree that the two things should be talked about as a singular entity, that's all.


Also, please do not confuse interpreting the question differently with not reading the question. I personally prefer to assume people are just reading a different meaning rather than not reading at all.

Wielder of the Sacred Wands
[Work - ArenaNet] [Epoch Language] [Scribblings]

This topic is closed to new replies.

Advertisement