# UML Basics ## About UML This chapter will give you a quick overview of the basics of UML. Keep in mind that this is not a comprehensive tutorial on UML but rather a brief introduction to UML which can be read as a UML tutorial. If you would like to learn more about the Unified Modelling Language, or in general about software analysis and design, refer to one of the many books available on the topic. There are also a lot of tutorials on the Internet which you can take as a starting point. The Unified Modelling Language (UML) is a diagramming language or notation to specify, visualize and document models of Object Oriented software systems. UML is not a development method, that means it does not tell you what to do first and what to do next or how to design your system, but it helps you to visualize your design and communicate with others. UML is controlled by the Object Management Group (OMG) and is the industry standard for graphically describing software. UML is designed for Object Oriented software design and has limited use for other programming paradigms. UML is composed of many model elements that represent the different parts of a software system. The UML elements are used to create diagrams, which represent a certain part, or a point of view of the system. The following types of diagrams are supported by Umbrello UML Modeller: - *Use Case Diagrams* show actors (people or other users of the system), use cases (the scenarios when they use the system), and their relationships - *Class Diagrams* show classes and the relationships between them - *Sequence Diagrams* show objects and a sequence of method calls they make to other objects. - *Collaboration Diagrams* show objects and their relationship, putting emphasis on the objects that participate in the message exchange - *State Diagrams* show states, state changes and events in an object or a part of the system - *Activity Diagrams* show activities and the changes from one activity to another with the events occurring in some part of the system - *Component Diagrams* show the high level programming components (such as KParts or Java Beans). - *Deployment Diagrams* show the instances of the components and their relationships. - *Entity Relationship Diagrams* show data and the relationships and constraints between the data.