4 ms·
Creating a bunch of UML diagrams up front is usually the sign of a broken software development process. However, there's a lot of great work that went into the
by bane 9y ago
Creating a bunch of UML diagrams up front is usually the sign of a broken software development process. However, there's a lot of great work that went into the various diagramming grammars that turn out to be really useful in different cases. I've found that spinning up UML-like diagrams for certain subsystems on a whiteboard, or quickly in yEd or similar tool helps immensely with:
a) creating a "thing" to facilitate communication and understanding
b) capturing a design after it's done as part of a deployment/hand-over package
c) a useful toolkit for reverse engineering a system that you had dumped on you
etc.
basically, any sort of ad-hoc communication need or information capture process.
Software Engineering coursework will warp your brain into thinking that you need to spend a few years in a spaceship in orbit around Saturn dreaming up millions of UML diagrams that when done, will magically barf out all of the code that makes up some enormous over-engineered enterprise fizzbuzz system.
It takes a long time to overcome that nonsense without throwing away the goodness that exists here -- there's some excellent diagramming techniques that really help with coming up with a common understanding of how a system should work for a team and product owners and used well can bridge huge communication gaps. Many of the diagrams more or less show the same information, but with a slightly different angle that can help communication.
The diagram grammars themselves can get really fussy and particular, but I think when they're used best only certain components of the grammars are used to fill very specific communication needs, the rest is more or less sketched in, and the remaining grammar can be pretty comfortably be left out.
Many times, you can just invent a diagramming grammar that you can the other parties agree to and just "be inspired" by ideas from UML and get most of what you need done. There's also grammars that are not part of UML that would make sense for people to get familiar with. ArchiMate comes to mind as a particularly great example. I don't use it explicitly (the software tooling support for it is garbage, but you can fake it with yED pretty well), but I've used systems inspired by it numerous times to succinctly capture incredibly complex enterprise systems and data flow and tie those things to business processes and needs.
https://en.wikipedia.org/wiki/ArchiMate https://en.wikipedia.org/wiki/ArchiMate
- diminoten 9y ago> Creating a bunch of UML diagrams up front is usually the sign of a broken software development process. Wait, what? Why? Assuming I'm doing them because they help me flesh out an idea, it should be fine, right? You're talking more about being forced to express a concept in UML when it's already adequately described in a non-UML format, right?
- bane 9y agoBecause you're creating a waterfall that you can only slide down and the development process becomes an exercise in alignment to "the plan".
- grzm 9y agoOne doesn’t need to be wedded to diagrams one works out up front. Doing a bit of design upfront can be useful in fleshing out ideas. Whether that’s in UML, sequence diagrams, stories, or just some sketches on a whiteboard, or some notes on paper, what one does with them is up to the team. It need not determine everything that follows. You point out all of this yourself upthread.
- bane 9y agoYes exactly. Pointing a development effort towards a goal or in some direction is a very different thing from an Enterprise Architect dropping a bible of UML on a team.
- diminoten 9y agoIt sounds like the problem is the rigid adherence to the original design, not UML itself. Good, okay. I was worried that, because I liked drawing UML diagrams, I was somehow a bad engineer! Just keep being flexible, and I'll be in good shape. Just last week I deleted a whole bunch of boxes on a UML diagram I had drawn because someone suggested a simpler approach.