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 links function are our introduction to the world of UML modeling. If someone didn't know what the subject was or had only the most rudimentary understanding of what was being discussed or asked for these would be 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 is Use-Class, Class, Sequence, State Chart, Activity, Component, and Deployment.
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. As only a brief overview, it 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. 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.
Practical UML: A Hands-On Introduction for Developers
The title is a good summary for the the guide. It is a brief description of why UML is important starts this introductions. This is particularly important as it gives us a good idea what we would use UML modeling for and what you gain 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 anything language specific, 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. Again this is dealing with object oriented design without any real specific language or interpretation so that it would function with Java and Ruby but is not modified for 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 not structured in a straight forward 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
Visual Case Tool - UML Tutorial
Each of these tutorials encompass the breadth of UML. Providing significantly more details for each sort of diagrams and how they are used. Complex examples and subcategories of diagrams are discussed more fully. These would serve as a good breadth of knowledge in order to start using UML. 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 link 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.
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.
While a less sophisticated group of examples than the link before it, it does take psuedo-code and other more esoteric examples are included. These are less instructive but can cover corner causes. 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.
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 primary site that is focused on using UML with Java specifically and should you only need to use UML in that manner it would suffice. It also focuses on Java terminology, which shares much with the more focused UML descriptors.
This is a discussion forum for dealing with UML issues and other concerns related to UML. While articles may cover what information you need, if you would prefer someone with whom to discuss what you are thinking or working through a difficult custom UML problem this would be the place for it. Once of the primary advantages of the internet of other sources like books is that fact that you can reach interactive and recorders of interactive discussion. Often a problem is far more simple to solve when two people approach it.
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 than some of the others, it does provide a number of valuable insights for object oriented programming languages using UML like Ruby or Java. Though the primary language used is C++ the code examples are certainly still valid.
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.