UML (Unified Modeling Language) is a modeling language and specification based on the object-oriented paradigm. The core language is defined in 1996 by Grady Booch, Jim Rumbaugh and Ivar Jacobson under the guidance of the Object Management Group, a consortium that still manages the standard UML. The main purpose of UML, semiformal and graphic language because it uses a series of diagrams, is to specify, visualize, create, modify and document the artifacts of a new system or an existing software and not. For artifact shall understand any tangible product of the project: sources, binaries, documentation, configuration files, database tables, benchmark … Basically it is a modeling language used independently from the scope of the project, from the development process and the language programming since it is designed to be coupled to most object-oriented languages.
At the base of programming UML there are diagrams that show a particular projection system analyzed from a specific perspective. They can be classified at the logical level:
- Use Case Diagram: Shows how to use the system through use cases, users and those who interact with the system and the relationships between actors and use cases;
- Class Diagram: represents the classes of system objects with their attributes and operations; shows the relationships between the classes (associations, aggregations and hierarchies of specialization / generalization) and can be used at different levels of detail (in the analysis and design);
- Sequence Diagram: is used to define the logic of a scenario (since that specifies a sequence of events) of a use case, shows the objects involved showing the time sequence of messages exchanged by the objects;
- Collaboration Diagram: is a set of objects that collaborate to achieve the behavior of a scenario of a use case;
- Statechart Diagram:is normally used to model the life cycle of the objects of a single class, shows the events that cause the transition from one state to another, the actions performed against a certain event ; when an object is in a certain state can be affected by certain events (and not by others) is appropriate to use it only for the classes that have a complex life cycle and marked by a well-defined sequence of events;
- Activity Diagram: icon corresponds workflow systems, or the internal logic of a use case or a specific operation of a class; can model parallel processes and their synchronization recording each specific status of a task;
and a physical level:
- Component Diagram: shows the organization and dependencies between software components that can be grouped into packages;
- Deployment Diagram: is used to show how it allocates the hardware and software components for an application.
Then there is the ability to specify three important relationships between use cases:
- Report of inclusion << includes >>: Indicates that the main use case explicitly incorporates the behavior of another use case subordinate; the main use case shows the exact point at which the subordinate use case is included; after the execution of the use case subject, the main use case resumes from the point where it was discontinued;
- Report of generalization: indicates that the use case subject extends the behavior of the use case Main, adding logic to handle exceptions, alternate workflows, etc. The main use case shows the exact point at which the use case subject is included (called “point extension”); after the execution of the use case subject, the main use case resumes from the point where it was discontinued;
- Report Extension << extend >>: specific hierarchies of actors and / or use cases (mean conceptually classification of inheritance).