Se a modelagem de sistemas é a arte de criar representações, a UML (Unified Modeling Language) é a sua principal ferramenta. Pense na UML como o "idioma" universal dos arquitetos e desenvolvedores de software. Assim como um arquiteto usa plantas e maquetes padronizadas para comunicar um projeto de construção, um modelador de sistemas usa a UML para descrever, visualizar, construir e documentar os artefatos de um sistema de software.
📜 Visão Geral da UML: Histórico e Propósito
A UML surgiu em meados da década de 1990 da fusão de três metodologias orientadas a objetos proeminentes da época:
- OMT (Object Modeling Technique) de James Rumbaugh
- Booch Method de Grady Booch
- OOSE (Object-Oriented Software Engineering) de Ivar Jacobson.
Os "Três Amigos" (Rumbaugh, Booch e Jacobson) trabalharam juntos para unificar essas notações, resultando na versão 1.0 da UML em 1997. Desde então, a UML se tornou um padrão da OMG (Object Management Group), uma organização internacional de padronização.
Propósito da UML:
- Visualizar: Representar graficamente o sistema.
- Especificar: Definir o sistema de forma precisa e sem ambiguidades.
- Construir: Servir como base para a codificação e implementação.
- Documentar: Criar uma documentação abrangente e compreensível do sistema.
🧱 Conceitos Básicos da UML (Elementos, Conectores, Diagramas)
A UML é composta por um conjunto de elementos gráficos e regras que permitem criar diversos tipos de diagramas.
Elementos:
São os "blocos de construção" dos diagramas UML.
- Classes: Representam conceitos ou coisas com atributos (dados) e operações (comportamento).
- Exemplo: Em um sistema de vendas, uma
Classe Cliente teria atributos como nome, email e operações como realizarCompra().
- Objetos: São instâncias concretas de classes.
- Exemplo:
clienteJoao é um objeto da classe Cliente.
- Atores: Entidades externas que interagem com o sistema (pessoas, outros sistemas, dispositivos).
- Exemplo: O
Cliente (pessoa) que usa o sistema de vendas.
- Casos de Uso: Representam uma funcionalidade do sistema vista da perspectiva do usuário.
- Exemplo:
Realizar Pedido.
- Componentes: Partes modulares e substituíveis de um sistema.
- Nodos: Recursos de hardware (servidores, impressoras) ou software (sistemas operacionais) onde os componentes são executados.
Conectores:
São as linhas e setas que ligam os elementos, indicando seus relacionamentos.
- Associação: Uma conexão semântica entre dois ou mais classificadores que especifica ligações entre suas instâncias.
- Generalização (Herança): Indica um relacionamento "é um tipo de" entre um elemento mais genérico (superclasse) e um mais específico (subclasse).
- Dependência: Um relacionamento onde uma alteração em um elemento pode afetar outro.
- Realização (Implementação): Indica que um elemento implementa ou fornece a funcionalidade definida por outro (comum entre interfaces e classes).
🖼️ Perspectivas da Modelagem com UML
Diagramas:
A UML organiza seus elementos e conectores em diferentes tipos de diagramas, cada um oferecendo uma "vista" particular do sistema.