Unified Modeling Language Introduction
UML is not programming language — at least not in any traditional sense. Instead, it is a graphical modeling language, a way of designing computer programs and software systems.
The UML standard provides for several different types of diagrams, each one representing a different way of looking at the system. For example, a class diagram shows the properties and relationships of several classes. A use case diagram shows several different types of users and codifies their needs within the system.
Each diagram has a set of defined symbols which represent various concepts or entities within a computer system: classes, relationships, users, interfaces, components, and so forth.
UML Online Tutorials
- UML Basics: An Introduction to the Unified Modeling Language, a gentle introduction for people with development experience, from IBM DeveloperWorks;
- UML Diagrams, an overview of the various diagrams available in UML, with links to more in-depth information on each, from a company the develops UML diagramming software;
- Practical UML: A Hands-On Introduction for Developers is a self-guided course with mini-quizzes to test yourself along the way;
- This UML Tutorial from Sparx Systems is a little basic, but Part Two is interesting because it walks you through the way a development team might actually use UML while building a system;
- Tutorials Point lays out each major piece of the UML specification with easy-to-follow explanations and visual examples;
- Introduction To OMG's Unified Modeling Language, this is the official getting stared guide from the Object Management Group;
- Class Diagrams: An Agile Introduction, many people consider class diagrams the heart of UML, and this tutorial covers them from the perspective of the Agile development methodology;
- Because of an over-emphasis on class diagrams, other highly-useful diagrams don't get used often enough; this tutorial on sequence diagrams (PDF); covers one of the most useful, and underused, UML diagram types;
- "Use case" diagrams are also highly underused, because not everyone understands their importance; this Use Case Diagram Tutorial will help you see their value;
- UML from SourceMaking.com is a book-length guide to UML, covering high-level concepts and then diving into details — a very well-written resource from people worth listening to; also see their guide to Design Patterns;
- Learn UML2.* in Simple Terms is a fantastic, open source tutorial from Ali Tavakoli.
- UML 2.0 Tutorial, a nine-part video series on UML, covering each of the diagram types;
- UML Tutorial, a 95-part video series that goes into depth on class diagrams and how to represent important Object Oriented Programming concepts;
- UML Fundamentals, a 62-part Udemy course with videos and supplemental material (paid).
Along with several introductory books on the subject, we're also listing a number of books that approach UML form a specific vantage point or are useful to certain types of professionals using UML.
- UML Distilled: A Brief Guide to the Standard Object Modeling Language, by Martin Fowler — if you can only read one book on UML, this is the one to read; it is a modern classic;
- The Unified Modeling Language Reference Manual, by Rumbaugh, Jacobson, and Booch is a good second book on UML to own, and a perfect companion to UML Distilled; the same team also wrote The Unified Modeling Language User Guide which is a much more introductory text, covering basic concepts of Object Oriented Programming — good for non-tech team members who need to work with developers using UML;
- UML 2.0 in a Nutshell, by Pilone and Pitman, an introduction to UML, in case UML Distilled doesn't quite work for you;
- UML 2.0 in Action: A Project-Based Tutorial, by Graessle, Baumann, and Baumann, is a helpful book for bridging the gap between the UML theory found in most books and the real world of building real projects;
- The Elements of UML 2.0 Style, by Scott W Ambler, inspired by the Strunk and White classic, this book will help a UML modeler make diagrams that are more readable, clear, and consistent;
- Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, by Craig Larman, is a good book for beginning programmers, or those relatively new to Object Orientation; the book teaches the reader "how to think in objects," and is frequently used as a college course textbook;
- UML For The IT Business Analyst, by Howard Podeswa, is a great book for understanding how UML is used especially in the initial requirements gathering and system specification of a development project;
- Systems Analysis and Design: An Object-Oriented Approach with UML, by Dennis, Wixom, and Tegarden — this college text-book is not about UML, but rather uses UML while teaching System Analysis and Design; it is a great book for people interested in becoming systems engineers or business analysts (or those who find themselves already doing those jobs);
- Use Case Driven Object Modeling with UML: Theory and Practice, by Rosenberg and Stephens — a great book for project managers, analysts, and anyone else who has to help bridge the gap between gathering requirements and writing code.
UML, OOP, and Design Patterns
UML was developed specifically to model object oriented software systems, and has grown up closely tied with the design patterns movement. This is a trend in development toward finding standardized solutions to common problems. If you find UML interesting, you'll appreciate the more complete view you can get by diving into patterns. The classic book on the subject is Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma, et al.
UML provides a development methodology that gets coders away from their screens, talking out the system design with system architects and business analysts. It provides a tool to make white-board sketches meaningful and concrete. UML is a powerful skill for software developers, project managers, and anyone else on a development team.
Further Reading and Resources
We have more programming guides, tutorials, and infographics related to coding and development:
- Object-Oriented Programming: in this article we discuss a wide range of object-oriented programming languages.
- Linux Programming Introduction and Resources: this discussion of the many levels of Linux programming is bound to energize you.
- Verilog Programming Introduction and Resources: learn all about this important hardware description language.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn? It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"