Ir para o conteúdo

UML: Diagramas Comportamentais

De Wikiversidade

UML (Unified Modeling Language)

[editar | editar código]

A UML (em português, Linguagem de Modelagem Unificada) é uma linguagem de modelagem que permite retratar um sistema de através de diagramas padronizados, facilitando a compreensão pré-implementação. Essa linguagem busca representar visualmente a estrutura do sistema e suas funcionalidades, com o objetivo que auxiliar desenvolvedores a encontrar soluções em sistemas mais complexos e não-desenvolvedores a compreender as funcionalidades do sistema.

Classificação dos Diagramas na UML

[editar | editar código]

A UML oferece diferentes tipos de diagramas para representar um sistema sob diversas perspectivas. Esses diagramas são, geralmente, organizados em duas categorias principais:

  • Diagramas Estruturais – Focam nos aspectos estáticos do sistema, ou seja, na estrutura e organização dos seus componentes. São úteis para entender como os elementos se relacionam e como estão organizados.
  • Diagramas Comportamentais – Representam o comportamento dinâmico do sistema. Mostram como os elementos interagem, os fluxos de atividades e os estados que podem ser assumidos.

Diagramas Estruturais

[editar | editar código]

Diagramas estruturais descrevem os "blocos de construção" do sistema. Eles mostram os elementos que compõem a aplicação e seus relacionamentos. Esses diagramas são importantes para a modelagem da arquitetura do sistema e servem de base para implementação e manutenção.

Alguns exemplos comuns são:

  • Diagrama de Classes
  • Diagrama de Objetos
  • Diagrama de Componentes

Diagramas Comportamentais

[editar | editar código]

Diagramas comportamentais são utilizados para representar o que acontece no sistema em tempo de execução. Eles ajudam a entender o funcionamento interno, os fluxos de informação, os processos e as interações entre os elementos.

Alguns exemplos comuns são:

  • Diagrama de Casos de Uso
  • Diagrama de Sequência
  • Diagrama de Atividades
  • Diagrama de Estado

Esses diagramas permitem visualizar, especificar e documentar a lógica de funcionamento do sistema, além de facilitar a comunicação entre os envolvidos no projeto.

Exemplos de Diagramas Comportamentais

[editar | editar código]

Diagrama de Caso de Uso

[editar | editar código]

O diagrama de caso de uso, conforme definido pela UML, é uma ferramenta útil para representar o comportamento do sistema e ilustrar seus requisitos. Seu objetivo principal é apresentar as diferentes formas pelas quais os usuários podem interagir com o sistema, permitindo uma visualização clara do contexto e dos requisitos envolvidos.

Apesar de não detalhar aspectos como a ordem de execução das funcionalidades, o diagrama de caso de uso oferece uma visão geral que resume as interações entre os usuários e o sistema. Por esse motivo, costuma ser desenvolvido nas etapas iniciais do projeto, servindo como base para a identificação de agentes — sejam eles funcionários, clientes ou outros tipos de usuários e até mesmo outros sistemas.

Além disso, esse tipo de diagrama pode ser utilizado para comunicar a terceiros, como programadores ou clientes, o que se espera do sistema em termos de funcionalidades, ou seja, as ações que são possíveis realizar dentro do programa. Dessa forma, contribui também para a identificação de classes que deverão ser implementadas no desenvolvimento posterior.

Elementos de um diagrama de caso de uso:

[editar | editar código]
  • Casos de Uso: Um caso de uso é uma unidade de um trabalho significante. Por exemplo: o "login para o sistema", "registrar no sistema" e "criar pedidos" são todos casos de uso. Cada caso de uso descreve a funcionalidade que será construída no sistema proposto.
  • Atores: Objetos externos que interagem com o sistema, como pessoas, organizações, um outro sistema ou dispositivo. Podemos ter atores primários, que inicializam a interação e utilização do sistema, e atores secundários, que reagem. Para estabelecer essa diferença, os atores primários são colocados do lado esquerdo do sistema, e os secundários, à direita. São representados por "bonecos de palito". Cada ator deve interagir com, pelo menos, um caso de uso.
  • Sistema: Representado por um retângulo, ele delimita o espaço entre o que faz parte do sistema e o que não faz. Por exemplo, os casos de uso ficam dentro do sistema, pois são ações que ocorrem dentro do sistema, enquanto os atores, ficam fora.
  • Relacionamentos: Define e estabelece as relações entre atores e casos de usos. Temos os seguintes tipos de relacionamento:
    • Associação: comunicação ou interação simples, representada por uma linha normal.
    • Inclusão: mostra a dependência de um caso de uso base e um caso de uso incluído, na qual o caso de uso base precisa do caso de uso incluído para funcionar. Representado por uma linha tracejada apontada para o caso de uso incluído. Exemplo: Para "fazer login", precisamos "verificar a senha".
    • Extensão: mostra uma relação entre caso de uso base e caso de uso estendido, onde o caso de uso estendido estende a ação do caso de uso base, podendo ocorrer às vezes, mas não necessariamente sempre. Representado por uma linha tracejada apontando para o caso de uso base
    • Generalização: Estabelece uma relação de herança, apontando para o elemento geral e partindo dos específicos. Podemos utilizar esse tipo de relação entre casos de uso e entre atores. Por exemplo, para casos de uso, se temos um caso de uso "fazer pagamento", podemos indicar as especificações: pagar da conta corrente ou da poupança. Para atores, usaríamos a generalização quando, por exemplo, temos mais de um tipo de cliente.

Diagrama de Sequência

[editar | editar código]

O diagrama de sequência é um dos diagramas comportamentais mais utilizados na UML. Ele representa como os objetos do sistema interagem entre si ao longo do tempo para realizar determinado comportamento ou funcionalidade.

Esse tipo de diagrama enfatiza a ordem temporal em que as mensagens são trocadas entre os objetos, ou seja, mostra quem chama quem, quando e como em uma determinada situação.

É ideal para detalhar um caso de uso específico: primeiro define-se o papel do sistema (por meio do Diagrama de Casos de Uso), e em seguida usa-se o Diagrama de Sequência para mostrar como o sistema realiza esse papel, passo a passo, através de interações entre os componentes.

Objetivo e Utilização

[editar | editar código]

O Diagrama de Sequência é especialmente útil em:

  • Modelagem de fluxos de interação complexos
  • Especificação de lógica de negócios ou funcionalidades
  • Comunicação entre partes do sistema ou entre usuário e sistema
  • Etapas de análise, design e documentação

Pode ser aplicado em diferentes estágios do processo de desenvolvimento:

  • Na análise, para entender o comportamento esperado
  • No design, para definir como os objetos colaboram
  • Na documentação, para explicar o funcionamento de uma funcionalidade

Elementos principais

[editar | editar código]

Um diagrama de sequência é composto por:

  • Atores: representam entidades externas que interagem com o sistema (ex: usuário, sistema externo).
  • Objetos (ou instâncias de classes): participantes da interação. São representados com seus nomes sublinhados.
  • Linhas de vida: verticais, representam o tempo de existência de cada ator/objeto durante a interação.
  • Mensagens: setas horizontais indicando chamadas de métodos ou comunicações entre objetos. A ordem das mensagens segue de cima para baixo.
  • Respostas: podem ser representadas como setas tracejadas ou implícitas, indicando o retorno de uma chamada.
  • Gate: ponto de entrada ou saída de mensagens fora do escopo do diagrama.
  • Fragmentos (opcional): representam blocos de controle como loops, condições, paralelismo etc. Usados para modelar decisões e repetições.

Aplicação em Diferentes Etapas do Processo

[editar | editar código]

Os Diagramas de Sequência podem ser utilizados em vários momentos ao longo do desenvolvimento:

  • Durante a análise: para compreender as interações entre elementos com base nos requisitos.
  • Durante o design: para definir como os objetos colaboram para cumprir um caso de uso.
  • Durante a implementação: servem de guia para a criação de métodos e classes.
  • Na documentação final: para explicar como determinada funcionalidade está implementada.

Exemplo prático: Catálogo de Livros com Reviews

[editar | editar código]

A seguir, apresentamos um exemplo de diagrama de sequência baseado em um sistema de catálogo de livros com avaliações. A funcionalidade modelada é: Usuário adiciona uma review a um livro.

Participantes:

  • Ator: Usuário
  • Objetos: InterfaceWeb, SistemaCatálogo, BancoDeDados
Diagrama de sequência do processo de envio de review de livro

Diagrama de Atividades

[editar | editar código]

Um Diagrama de Atividades é um tipo de diagrama comportamental da UML (Unified Modeling Language — Linguagem de Modelagem Unificada) utilizado para representar o fluxo de controle e de dados entre atividades dentro de um sistema. Seu objetivo é descrever o comportamento dinâmico de sistemas de forma clara, detalhada e padronizada.

Objetivo e Utilização

[editar | editar código]

Diagramas de atividades ajudam a:

  • Compreender o comportamento de sistemas de software
  • Visualizar fluxos de trabalho entre usuários e sistemas
  • Demonstrar a lógica de algoritmos
  • Esclarecer protocolos entre componentes de software
  • Identificar gargalos e melhorar processos existentes
  • Representar comportamentos condicionais, atividades paralelas, eventos temporais e decisões complexas.

Aplicações

[editar | editar código]

Os diagramas de atividades são úteis em diversas fases do desenvolvimento:

  • Início do projeto: para mapear fluxos de trabalho fundamentais.
  • Fase de requisitos: para ilustrar eventos descritos nos casos de uso.
  • Análise e design: para definir comportamentos de operações.
  • Engenharia reversa: para entender e documentar sistemas existentes.

Componentes e Notações

[editar | editar código]

A seguir, os principais símbolos e seus significados:

  • Nó Inicial: Círculo preenchido. Representa o início da atividade.
  • Ação ou Estado de Ação: Retângulo com cantos arredondados. Representa uma tarefa executável e atômica.
  • Nó de Decisão: Losango com múltiplas saídas. Representa uma condição condicional ("if/else").
  • Fluxo de Controle: Seta sólida. Representa a sequência de execução entre atividades.
  • Fluxo de Objetos: Seta que representa o fluxo de dados ou objetos entre ações.
  • Guarda (Condição): Expressão colocada entre colchetes ao lado de uma seta que sai de um nó de decisão.
  • Sincronização (Fork/Join): Barra preta. Fork divide o fluxo para múltiplas execuções paralelas; Join reúne múltiplos fluxos.
  • Evento de Tempo: Representado por um símbolo de relógio. Indica que uma ação ocorre após um tempo específico.
  • Evento de Mesclagem: Losango sem condição. Converge múltiplos fluxos sem tomada de decisão.
  • Sinais Enviados/Recebidos: Ícone de envelope. Representa comunicação assíncrona.
  • Borda de Interrupção: Linha pontilhada em forma de raio. Indica eventos que interrompem o fluxo normal.
  • Rotas ou Swimlanes: Faixas verticais ou horizontais que separam responsabilidades entre departamentos, usuários ou sistemas.
  • Nó Final: Círculo com borda e ponto preto no centro. Indica o fim do processo.

Conclusão

[editar | editar código]

A UML é uma ferramenta poderosa para a modelagem e compreensão de sistemas, especialmente em projetos de software que exigem organização, clareza e comunicação entre equipes multidisciplinares. Por meio de seus diagramas estruturais e comportamentais, é possível representar desde a arquitetura estática até o comportamento dinâmico de um sistema, promovendo uma visão completa e acessível a todos os envolvidos no desenvolvimento.

Com a utilização de diagramas como os de casos de uso, sequência e atividades, desenvolvedores conseguem visualizar requisitos, projetar soluções e documentar processos de forma padronizada. Ao mesmo tempo, profissionais de outras áreas também conseguem entender o funcionamento do sistema, contribuindo com feedbacks mais eficazes.

Portanto, dominar a UML não apenas melhora a qualidade do software, mas também fortalece a comunicação e colaboração entre todos os participantes do projeto, tornando o desenvolvimento mais ágil, previsível e bem-sucedido.

Referências

[editar | editar código]

https://www.canva.com/pt_br/graficos/diagrama-uml/

https://www.lucidchart.com/pages/pt/o-que-e-uml

https://www.lucidchart.com/blog/pt/modelos-e-exemplos-de-diagramas-uml

https://pt.wikipedia.org/wiki/Diagrama_de_caso_de_uso

https://www.ibm.com/docs/pt-br/rsm/7.5.0?topic=diagrams-use-case

https://www.lucidchart.com/pages/pt/diagrama-de-caso-de-uso-uml

https://www.devmedia.com.br/o-que-e-uml-e-diagramas-de-caso-de-uso-introducao-pratica-a-uml/23408

https://www.youtube.com/watch?v=ab6eDdwS3rA

https://pt.wikipedia.org/wiki/Diagrama_de_atividade

https://www.ibm.com/docs/pt-br/rational-soft-arch/9.7.0?topic=diagrams-activity

https://www.servicenow.com/br/workflows/creator-workflows/what-is-activity-diagram.html

https://www.edrawsoft.com/pt/uml-diagram-symbols.html

https://creately.com/blog/pt/diagrama/guia-de-tipos-de-diagramas-uml-aprenda-sobre-todos-os-tipos-de-diagramas-uml-com-exemplos/