CSC/ECE 517 Summer 2008/wiki2 3 uml
Introduction
UML. There are literally hundreds of pages describing UML on the Web. If someone wants to learn about it, what should (s)he do? Look at the first few hits in Google? I expect we can do better than that. Write a review of the MVC sites on the Web. Which are best for learning about the concept? Which have the most instructive examples? Which are best for explaining how to apply UML in Ruby and Java? If you choose this topic, you should be sure to peruse at least several dozen sites.
What is UML
Introductions and Overviews
These websites function as an introduction to the world of UML modeling. For someone who doesn't know what the subject is, or has only the most rudimentary understanding of what is being discussed or asked for, these are a good source of starting information. Several of them serve as basic tutorials into the use and structure of an UML document, going into common components and simple designs. The seven main types of diagrams it is typically used for are Use-Class, Class, Sequence, State Chart, Activity, Component, and Deployment.
Wikipedia UML Article
A Wikipedia article is typically an informative article which gives a brief definition of a subject and the history that is currently associated with it. While generally a fair source of information, though the veracity on debatable or obscure topics can be questioned, it is not recommended as a learning tool. As only a brief overview, this article lacks more than a few basic examples and does not provide any information that is language specific. Further links are provided but each provide only more clarification and less instruction. It is a good starting point for those with no knowledge of UML, but not much more than that.
Practical UML: A Hands-On Introduction for Developers
The title is a good summary for the the guide. It starts with a brief description of why UML is important. This is particularly important, as it gives a good idea what UML modeling is used for and what is gained by using it. It has a brief discussions of use cases, classes, sequences, and other objects that can be modeled using UML. Each includes an illustration and a basic example. It covers a number of the most important uses of UML and how they are implemented. While it may not deal with interpretation or any specific language, it does deal with most types of objects that are used in Java and Ruby.
Allen Holub's UML Quick Reference
This is less of an introduction for those who are unfamiliar and more a reminder for those who are experienced and need to recall specifics. It covers a large number of specific type of objects and connections you would be using to define the UML. It has a significant coverage of the design symbols that are associated with object oriented and basic modeling. If you were familiar with the proper methods of design, this would certainly be a solid reminder for working with UML. Like the previous site, this covers object oriented design without any real specific language or interpretation. The information it gives could be used with Java or Ruby, but is not tailored to them.
UML basics: An introduction to the Unified Modeling Language
The article by IBM is a basic overview of UML. It starts with a basic description of UML and then moves into the seven types of diagrams. It covers each in a simple and straight forward manner. Each type includes a description, example, and the necessary elements to construct the diagram and the corresponding UML. The examples are easy to understand, though they lack depth. More complicated examples would prove more useful. There are no object oriented aspects beyond the basic discussion of objects to be diagrammed so this doesn't deal with Ruby or Java specifically.
Advanced Topics and Examples
Once one has a basic understanding of UML has been gained with an introduction, there are more advanced topics and examples that can cover the topics previously introduced.
Unified Modeling Language Resource Page
This is the homepage of the organization that defines the UML standard, the Object Management Group. This site contains all the basic information that you would need to implement UML as well as a number of links to other tutorials that are slightly less dense. This is the most comprehensive source of information about UML, though it is presented as a technical specification, not a teaching aid, so it is not structured in a easy to digest manner. There are white papers that detail any aspect of UML that you would wish to know about. The examples are less straight forward than some of the sources when they are presence or absent entirely. A number of more straight forward tutorials are linked from this page which helps partially. No real distinction is drawn between languages for UML, rather focusing on Object Oriented Implementations in general. This could be said to apply to Ruby and Java as they are primarily object oriented languages.
Unified Modeling Language (UML) Tutorial
This site gives a brief overview of the types of UML diagrams, using extremely generic examples. Each example is broken into two parts, and "When to Use" and a "How to Draw" section. The examples are very basic, providing a description of the diagrams, and the elementary components, but without giving any motivation as to why they are helpful, or how to effectively use them. The site's navigation is also very limited, making it hard to move quickly or easily to a specific topic. It gives some links to resources, but most are links to books available for purchase, or companies that specialize in UML services. Overall, this site is not very helpful, as it's information is covered on other sites, with a better presentation.
UML Tutorial
This article focuses on large enterprise projects, with a heavy emphasis on modeling business processes. As a software designer, this isn't as helpful from a technical aspect, but for someone working in the business world, it is a helpful primer for the concerns companies often have when developing large software systems. It goes beyond the technical software design aspect of software modeling, providing a shallow overview of both the business and software engineering side of software design.
Visual Case Tool - UML Tutorial
Each of these tutorials encompasses the breadth of UML, and provides significantly more details for each sort of diagram and how they are used. Complex examples and subcategories of diagrams are discussed more fully. Once you have a basic understanding of UML, these would serve as a good source of in depth information that would allow you to start using UML proficiently. These would work well for Ruby or Java, though there is little in the way of specializations.
Architecture and Design: Unified Modeling Language (UML)
This site is not recommended for use. It is a collection of articles and resources for UML, though it was primarily concerning an earlier revision of the spec. It contains a wide range of articles covering the breadth of UML. While this does provide a significant amount of resources, the site has fallen into disuse and a number of the links are broken. It would have been the optimal site for discussion of Java and Ruby, but unfortunately it was left to "rot" before Ruby came to the fore and Java seemed only to be mentioned as a metaphor for object-oriented design.
IBM Rational - Unified Modeling Language
This link is the IBM repository for information, articles, and resources regarding UML. It encompasses a number of white papers and examples, as well as the IBM products that use or interprets UML. The Rational Developer utilities uses UML for designing software and projects, and transfer that information between instances. While the Rational suite will work for both Ruby and Java, they are slanted towards Java. The articles cover Java UML more throughly as well. Although many of the articles are oriented towards using UML with specific IBM products, they are still useful as sources of generic UML information.
UML 2 Class Diagrams
This is deals primarily with examples and drawing of UML diagrams. It breaks it down to each of the major components that would go into the diagram. These provide descriptions for each of the components and how they are used for each of the types of diagrams. These are some of the most instructive examples that are not language specific. They focus on the theory of why UML is structured the way it is, and what the benefit of using it are. They also lean heavily toward the practical application of creating UML diagrams, starting with crude hand-drawn pictures, and building on them until they are fully functional. This helps the reader understand the process of using UML from beginning to end.
UML By Examples
The examples on this site are less sophisticated group than the previous site, it does cover many of the different diagrams for the example it provides, as well as psuedo-code that follows from the design. These are less instructive, as they don't cover as much of UML as sites, but provide ample coverage for it's example that there is still information to be learned. This does not have examples that are Java or Ruby specific.
Discussion and Related Subjects
While the discussion and coverage of UML can encompass most of its necessary uses, there can be times when more sophisticated techniques must be used or problems discussed. These links are handy in those sorts of situations.
Java and UML
This site deals primarily with UML when used with Java. It doesn't provide some of the breadth that a more complex tutorial would have, but it does have a number of Java specific issues and examples. This is the foremost of our reviewed sites that is focused on using UML with Java specifically. If you are programming in Java, this is an excellent resource for Java specific UML. It also focuses on Java terminology, which goes hand in hand with the Java-centric UML descriptions.
UML Forum
This is a discussion forum for dealing with UML issues and other concerns related to UML. The articles cover a wide variety of topics, but the main feature of the site is the people with whom to discuss difficult or highly custom UML problems and questions. Once of the primary advantages of the internet over other sources is the ability to use other people as resources. They can often be much more useful for specific concerns than a published article that covers a wide topic.
Object Oriented Training and UML
This site deals with the use of UML and object oriented training, ie. how it focuses one's thinking into objects. While it is lighter in examples and doesn't focus as much on UML as some of the others, it does provide a number of valuable insights into combining one's knowledge of object oriented programming with UML. Though the primary language used is C++ the code examples are certainly still valid, and easy enough to apply to another object oriented language. It is an excellent resource for someone who wants to learn more about object oriented programming concepts, as well as software design.
Conclusions
The links provided give a significant breadth and depth when it comes to learning about UML, providing degrees of mastery as needed as well as additional resources once the concepts are understood. The forums and other interactive resources show how a medium like the Internet can supply additional information and interaction that we could not get from simply obtaining a book on UML and allows us to seek examples or discussion that are meaningful to the task being performed. Some sites focus in depth on a particular facet of the technology, while some provide a shallow overview of the entire range of subjects. This variety is extremely useful as one's knowledge and experience with UML grows, and information more suited to one's skill level is needed.