19

I want my scribbles of a program's design and behaviour to become more streamlined and have a common language with other developers.

I looked at UML and in principle it seems to be what I'm looking for, but it seems to be overkill. The information I found online also seems very bloated and academic.

How can I understand UML in plain-English way, enough to be able to explain it to my colleagues? What are the canonical resources for understanding UML at a ground level?

2
  • 1
    I liked the old title better, at least the beginning of it: "What's the most useful 10% of UML?" Otherwise, good edit!
    – Joey Adams
    Commented Nov 27, 2011 at 4:42
  • if you already have documentation written out its probably already in uml, you just aren't familiar with what they decided to call your type of documentation
    – Ryathal
    Commented Nov 30, 2011 at 16:05

7 Answers 7

5

Liked the questions - same ones as I've asked myself:

How can I understand UML in plain-English way, enough to be able to explain it to my colleagues? What are the canonical resources for understanding UML at a ground level?

Here is what I have found:

For a kick-start: my choice would be Fowler’s *UML Distilled*. It really is a distillation of the basics, as has been mentioned: definitions, examples, advice on when a certain type of diagram should or should not be used. It is also a good reference, if you want to focus on a certain part of UML without reading the book cover-to-cover.

For a more detailed, yet plain-English introduction: UML 2 for Dummies has done for my colleagues and me. It not only introduces UML, its syntax and uses at length, but has a lot of advice on good programming and design practices.

There are occasional differences between the two books on what syntax belongs to which version of the UML standard. These however are minute and definitely not essential for using UML diagrams to communicate design ideas. (For example: whether UML 2 allows discrete multiplicities, i.e. showing that a certain property may have exactly X, Y or Z objects, rather than just zero, one, many or more than X, say; when participants’ names should be underlined...)

For a totally non-academic and less wordy introduction: this blog has articles on various bits of UML: http://blog.diadraw.com/category/uml/ https://web.archive.org/web/20121104015548/http://blog.diadraw.com:80/category/uml

It's not a textbook, so is far from exhaustive, but also uses non-textbook stories and examples, which are relatable to. The few available posts are focused on introducing UML concepts visually, so you can skip the reading of the text altogether.

1
  • That blog link's nice. Commented Nov 30, 2011 at 15:40
8

I really liked Martin Fowler's UML Distilled. Short and sweet, and more than adequate for whiteboard discussions. Get a couple of copies and pass them around the team.

6
  • 1
    +1 for mentioning this book, I have completely forgotten about it while writing my answer! Commented Nov 26, 2011 at 18:09
  • 2
    Can you go into a little more about your experiences with the book?
    – user8
    Commented Nov 27, 2011 at 1:29
  • What was the reason for the downvote? Commented Nov 28, 2011 at 4:14
  • 1
    One of the first things I did when I became a team lead was to buy copies of this book for everyone on my team. It gave us all a common vocabulary for discussing our designs. Some of the younger guys also reported that it helped them better understand the diagrams in the various design pattern books they read.
    – TMN
    Commented Nov 28, 2011 at 13:27
  • 2
    @kevincline I typically link to Amazon because it will convert the link into a referrer URL for Stack Exchange. If someone clicks and buys from that URL, Stack Exchange can make money. It also becomes trivial, with the title, author, and ISBN information from Amazon, to find the book in your favorite book seller of choice.
    – Thomas Owens
    Commented Nov 28, 2011 at 18:54
5

Diagrams alone are not always helpful. For example, the use case diagram can't convey business rules in detail. The class diagram may be very useful since you may be able to generate class code and DLLs from it.

I find these diagrams the most useful:

  • Use Case Diagram
  • Class Diagrams
  • Activity Diagram
  • Sequence Diagram

There are so many useful resources, but check these:

Edit-1 in response to Mark's comment.

While I don't use these resources day-to-day, they serve as quick reference for UML syntax. The above resources are chosen since they provide quick and somewhat comprehensive representation of UML diagrams. It shows common diagrams and helps the new UML user quickly see the difference between them. The first resource, the video, gives details about the Use Case and how it relates to other diagrams. The above resources are not expected to be enough for anyone who wants to learn UML or OOD, I realize that learning such topics was not intended in the original question.

4
  • +1 for Class, Sequence, and Activity diagrams. I'm not convinced at all by Use Case Diagrams, other than that they are excellent covers for reports as users seem to love the pictures.
    – Sjoerd
    Commented Nov 26, 2011 at 19:55
  • @Sjoerd, thanks for your comment. As you have correctly specified, Use Cases are loved by users. Also, Use Case Diagrams have many values. They allow you to identify the actors (primary and secondary) and allow you to discover "C-Level Cse Cases". Its relationship to your activity diagram and class diagram what build a cohesion in your specification. Remember they are not a replacement for detailed business rules and complete requirements documentation.
    – NoChance
    Commented Nov 26, 2011 at 20:27
  • Can you go into more about your experiences with these resources? What about them, and not others, helped you understand UML?
    – user8
    Commented Nov 27, 2011 at 1:30
  • @MarkTrapp, thanks for your comment and for the edits.
    – NoChance
    Commented Nov 27, 2011 at 7:12
2

If you are satisfied with mere 10% of it then you shouldn't try to learn it from UML book. Rather, you better read a good book on object-oriented analysis or design patterns -- these books provide you with the 10% you are looking for.

If you are nonetheless looking for a tutorial for UML I would recommend this webpage, and especially this essay on UML diagrams (It's not an ad, I personally have no relation to this site whatsoever). Just browse through the diagrams and look at them: they are mostly self-explaining and you can easily understand what they are depicting as long as you are aware of OOP and generally program design and architecture.

Why would I recommend exactly this page? (asked in the comment)

There are several reasons why I liked it more than the others:

  1. It presents you an overview table of UML diagrams on the very first page.
  2. This table, apart from giving the short description of every UML2.0 digramm, also has a very useful column "Learning Priority" that can help a UML-beginner to identify the most often used UML diagrams.
  3. Even though it contains machine-rendered diagrams as well, most diagrams look like being hand-drawn (probably they are hand-drawn). I take it as a sign that modelling can still be done using only your pencil and paper, no need to delve into UML visualisation software in the very beginning.
1
  • Can you go into more about your experiences with these recommendations? What about them, and not others, helped you understand UML?
    – user8
    Commented Nov 27, 2011 at 1:31
1

The UML 2.0 Pocket Reference from O'Reilly is a bit more detailed than that but probably the best choice as it is small enough to quickly find what you need but still has explanations when you need them. And it's up-to-date, which is not the case for the "UML cheat sheets" or reference cards I've found on the web - those mostly describe UML 1.x

2
  • Can you go into more about your experiences with this book? What about it, and not other books, helped you understand UML?
    – user8
    Commented Nov 27, 2011 at 1:31
  • @Mark Trapp: mainly the fact that it's small, so you can quickly pick up all the essentials without getting lost in details and special cases. Commented Nov 27, 2011 at 11:43
0

There are three parts to this:

  1. Get a formal UML reference

    Anytime you're learning a new "language", get a reference that you can pull out and use anytime, whether it's a book or an online resource. UML Distilled is small, has great explanations, and plenty of clear diagrams. Even if you don't use all of the features, you can always go back and look at the "right" way to express something.

  2. Use UML to model things

    Now that you have a reference, start using it to model some small existing systems or systems you're starting to use. You'll probably want to stick with with Class Diagrams, Sequence Diagrams, and State Diagrams for most situations. If there's something you're not sure about, go to your reference and look up the "correct" usage - if that doesn't help, try some Googling or ask on Stack Overflow. Just like programming, practice is key.

  3. Use some UML in real projects

    When you start using UML with your team, remember that it's just a tool for understanding the system you built or will build. You should still check your reference while diagramming, but focus on conveying the information, not strictly following the rules.

Think back to your high school writing classes. Your teacher probably considered it a cardinal sin to start sentences with "and," "but," or "or." As you did more writing and gained more control over the English language, you learned how to bend the rules for greater effect - you made the transition from following the proper approach to the one that conveyed what you wanted to say the best. UML should be used in the industry the exact same way.

0

I would say that if you know UML then all diagrams give you different views of your application. Many books are available.

If you don't know UML the easiest is to only create class/sequence diagrams which have been reversed from existing code. You just need to reverse the existing code into UML and add your own notes inside the class/sequence diagrams. Class diagrams will give a static view of your application, sequence diagram will describe methods flows and therefore application behavior. UML Job done and no mistake :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.