Unified Modeling Language

 

 

(Pequeno Guia da Notação)

 

  

 

Instituto Superior de Engenharia do Porto

Instituto Politécnico do Porto

 

 

 

Paulo Sousa

¾¨¾

Fevereiro de 2002

 

(draft v0.4)

14 de Março de 2002

 


 

1         Introdução

A linguagem UML é uma linguagem gráfica para visualização, especificação, construção e documentação de sistemas.

         Visualização:

         Modelos explícitos facilitam a comunicação

         Algumas estruturas transcendem a representação fornecida pelas linguagens de programação

         Cada símbolo possui associada uma semântica bem definida

         Especificação:

         A linguagem UML permite a especificação de todas as decisões importantes na análise, projecto e implementação de sistemas

         Construção:

         Permite a geração de código a partir de um modelo (forward engineering)

         Permite a reconstrução de um modelo a partir de código (reverse engineering)

         Permite ambas as abordagens (round-trip engineering)

         Documentação

         A modelação usando UML cria documentação do sistema no que respeita requisitos, especificações funcionais e planos de teste

A linguagem UML fornece um método padrão para escrever/descrever um sistema tendo em conta aspectos conceptuais (ex., processos de negócios, funcionalidades) e aspectos concretos (ex., classes java/C++, esquemas de bases de dados).

1.1        Tipos de diagramas existentes na linguagem UML

A linguagem UML define os seguintes tipos de diagramas:

         diagramas estruturais – consideram os aspectos estáticos do sistema

         diagramas de classes – usados para modelar o vocabulário do sistema; ou seja, quais os conceitos que fazem parte do sistema, bem como o relacionamento entre esses conceitos;

         diagramas de objectos – visualizam um conjunto de objectos e as suas relações num determinado instante de tempo;

         diagramas de componentes – visualiza um conjunto de componentes e as suas relações;

         diagramas de instalação – visualizam a configuração de um conjunto de nós de processamento e dos componentes em execução em cada nó.;

         diagramas de comportamento – consideram aspectos dinâmicos do sistema

         diagrama de casos de utilização – visualiza os casos de utilização (funcionalidades) do sistema e suas relações;

         diagrama de sequência – é um diagrama que enfatiza a ordenação temporal de mensagens trocadas entre objectos;

         diagrama de colaboração – é um diagrama que enfatiza a organização dos objectos que participam numa interacção;

         diagrama de estados – especifica a sequência de estados pelos quais um objecto passa, em resposta a eventos, durante o seu tempo de vida;

         diagrama de actividades – semelhante a um fluxograma, é útil para modelar o fluxo e o detalhe das operações;

1.2        Pequena metodologia

Na análise de um problema e desenvolvimento da respectiva solução, é costume seguir-se os seguintes passos:

  1. requisitos/funcionalidades – dialogando com o cliente identificar as funcionalidades de alto nível (as “grandes” funções do sistema) pretendidas no sistema para cada perfil de utilizador, recorrendo a diagramas de casos de utilização.
  2. processos – continuando o diálogo com o cliente, analisar e efectuar uma descrição de alto nível dos processos existentes no sistema e das interacções entre os diferentes intervenientes nesses processos (“workflow”), recorrendo a diagramas de interacção (sequência e colaboração).
  3. estrutura lógica – partindo do diagramas de casos de utilização e dos diagramas de interacção de alto nível, identificar e descrever detalhadamente as diferentes entidades existentes no sistema (recorrendo a diagramas de classes), bem como detalhar os diagramas de interacção anteriores por forma a incluir as classes de implementação identificadas e respectivas operações (diagramas de sequência e de colaboração).
  4. estrutura física – identificar os diferentes elementos físicos do sistema (ex., bibliotecas de funções, executáveis) recorrendo-se de diagramas de componentes, bem como identificar os  recursos de “hardware” necessários à instalação do sistema usando para tal diagramas de instalação.

 


 

2         Notação

2.1        Legenda

A tabela seguinte apresenta uma legenda dos elementos gráficos utilizados nos diagramas UML.

Tabela 1 – Elementos gráficos da linguagem UML

Símbolo

Designação

Descrição

Utilização

Actor

Uma entidade (pessoas ou sistemas externos) que interage com o sistema a modelar.

Diagramas de casos de utilização, de classes, de sequência e de colaboração.

Use case

Uma sequência de acções executadas pelo sistema de forma a obter um resultado visível para um actor

Diagramas de casos de utilização.

<<texto>>

Estereótipo

Os estereótipos permitem a classificação de elementos. Por exemplo, as classes que representam janelas da aplicação podem ser classificadas com o estereótipo <<form>>*.

Todos os diagramas.

Associação

Representa uma associação ou relação entre dois elementos num diagrama.

Todos os diagramas.

Relação “uses”

Tipo especial de relação que indica que um caso de utilização usa obrigatoriamente as funcionalidades de um outro caso de utilização

Diagramas de casos de utilização.

Relação “extends”

Tipo especial de relação que indica que um caso de utilização pode opcionalmente estender as funcionalidades de um outro caso de utilização

Diagramas de casos de utilização.

Package

Unidade lógica de agrupamento de elementos para simplificar a leitura de um diagrama.

Cada elemento num modelo pertence apenas a um “package”. Adicionalmente, os nomes dos elementos devem ser únicops em cada “package”.

Todos os diagramas.

Comentário ou nota

Comentários textuais e/ou gráficos que se podem adicionar aos elementos de um diagrama para explicar/detalhar certos aspectos que possam ser dúbios.

Todos os diagramas.

Classe

 

Uma classe é uma descrição de um conjunto de objectos que partilham os mesmos atributos, operações, relações e semântica. São uma forma de representar os diferentes conceitos existentes num sistema/problema.

Diagramas de classes.

Classe abstracta

Um tipo especial de classe que não possui objectos, servindo normalmente como base para especialização de outras classes.

Denotada pelo nome em itálico.

Diagramas de classes.

Objecto

Uma instância específica de uma classe. Corresponde à atribuição de valores concretos aos atributos da classe.

Denotada pelo nome sublinhado.

Diagramas de classes.

Associação unidireccional

Uma relação navegável entre dois elementos mas apenas num sentido (ex., composição de classes).

Todos os diagramas.

Generalização

Uma relação que indica a especialização (herança) de um elemento a partir de outro. Isto é, o elemento apontado pela seta é um caso mais geral do outro elemento. Denota uma relação “é um” ou “do tipo”.

Diagramas de classes e de casos de utilização.

Dependência

Uma relação que indica a existência de uma dependência entre dois elementos de tal forma que uma alteração num dos elementos pode afectar o outro .

Diagramas de classes, casos de utilização e de instalação.

Associação n-ária

Uma associação entre n elementos.

Diagramas de classes.

Agregação

Uma relação de agregação entre elementos. É uma relação “todo/parte” onde um elemento é composto por vários outros elementos.

Diagramas de classes.

Classe de associação

Uma associação com as características de (e representada por) uma classe.

Diagramas de classes.

Restrição

Uma restrição é um mecanismo que permite a criação de condições e restrições booleanas a aplicar a um ou mais elementos (ex., associações).

Todos os diagramas.

“Interface”

Este estereotipo não deve ser confundido com interface com utilizador. Interface representa uma “vista” sobre as operações de uma classe.

Diagramas de classes.

Interface

Uma interface é uma colecção de especificações de operações para definir um serviço sem ditar a sua implementação.

Diagramas de instalação.

“Utility”

Este estereotipo representa um agrupamento de operações e atributos que não pertencem a nenhuma classe do problema (ex., funções de biblioteca)

Diagrama de classes.

Estado

Representa o estado de um objecto durante o seu tempo de vida, enquanto espera por um evento ou efectua alguma acção.

Diagramas de estado.

Estado inicial

O estado inicial de um diagrama de estados, onde se inicia a execução da máquina de estados.

Diagramas de estado.

Estado final

O estado final de um diagrama de estados, onde a execução da máquina de estados finaliza.

Diagramas de estado.

Actividade

Representa uma actividade que o objecto efectua.

Diagrama de actividades.

Transição

Indica uma transição entre dois estados devido à ocorrência de determindas condições ou eventos.

Diagramas de estado e de actividade.

Decisão

Elemento que permite tomar uma decisão entre dois ou mais fluxos alternativos.

Diagramas de estado e de actividade

Bifurcação ou confluência

Permite a divisão ou reagrupamento de fluxos de controlo

Diagramas de estados e de actividades

Nodo

Representa um elemento físico na instalação do sistema. Normalmente com capacidade de processamento.

Diagramas de instalação.

Instância de um nodo

Representa um dispositivo concreto da rede (ex., o computador do gabinete 23).

Denotado pelo nome sublinhado.

Diagramas de instalação.

Componente

Um componente é uma parte física do sistema que corresponde à realização de um conjunto de interfaces e/ou classes.

Diagramas de instalação.

“boundary”

Tipo de classe de análise usada para modelar as interacções entre um sistema e os seus actores.

Representam normalmente, janelas de aplicação, APIs, etc.

Diagramas de classes de análise.

“control”

Tipo de classe de análise usada para encapsular modelar o fluxo de controlo para um dado caso de utilização.

Representam coordenação e sequenciamento de outros objectos.

Diagramas de classes de análise.

“entity”

Tipo de classe de análise usada para modelar informação com grande duração (possivelmente persistente)

Diagramas de classes de análise.

Linha temporal

Representa a linha temporal da existência de um objecto.

Ao longo da linha serão representadas as activações do objecto bem como as mensagens recebidas e enviadas.

Diagramas de sequência.

Mensagem síncrona

Mensagem trocada entre dois objectos que vai activar o objecto chamado. Pelo facto de ser uma mensagem síncrona, o objecto chamador fica à espera que o objecto chamado termine o processamento antes de continuar.

Corresponde normalmente à invocação de uma operação do objecto chamado.

Diagramas de sequência.

Mensagem assíncrona

O assincronismo permite que a mensagem seja enviada ao objecto chamado, e que o objecto chamador continue imediatamente a sua execução (i.e., sem esperar pela resposta)

Diagramas de sequência.

Chamada de procedimento

Indicação explícita da invocação de um método no objecto chamado.

Diagramas de sequência.

Mensagem de retorno

Indica o retorno de uma mensagem. É omitida nas mensagens síncronas.

 

Activação

Indica um tempo de processamento num objecto.

Diagramas de sequência.

 

2.2        Explicações adicionais

Uma classe divide-se em três partes: identificação, atributos e operações. Um atributo é uma propriedade da classe que descreve um conjunto de valores possíveis para essa propriedade (ex., o nome de uma pessoa). Uma operação por seu lado, é um serviço que pode ser requisitado a uma classe (ex., uma pessoa pode falar).

Figura 1 – Explicação de características do elemento classe

A Figura 1 representa uma possível classe Pessoa e identifica alguns atributos (ex., nome, telefone e bi) e uma operação (i.e., falar). Os símbolos +, - e # antes do nome dos atributos ou operações indicam o tipo de visibilidade do item em questão. Se um item é público é precedido pelo símbolo +, enquanto que se for privado é precedido pelo símbolo -. Um item protegido (ou seja, que apenas é visível pela própria classe e por classe derivadas) é precedido do símbolo #.

Os atributos de uma classe podem ter indicação do seu tipo de dados, indicado pelo identificador após o sinal de dois pontos (ex., o atributo nome é do tipo String). Adicionalmente pode-se indicar um valor inicial para um atributo (ex., o atributo telefone tem como valor inicial o valor zero).

Figura 2 – Explicação de características de operações de uma classe

As operações de uma classe podem aceitar argumentos e retornar valores conforme se pode ver na Figura 2. Além do nome e do tipo dos argumentos é possível indicar se se trata de um argumento de entrada (in), saída (out) ou ambos (inout).

Figura 3 – Explicação de características do elemento objecto

A Figura 3 representa o objecto Paulo do tipo Pessoa, onde se pode ver o valor real atribuído às suas propriedades (ex., nome).

Figura 4 – Representações alternativas para objectos

Representações adicionais de objectos podem ser vistas na Figura 4, onde se pode visualizar a representação de objectos sem tipo (1º caso) e sem nome (2º e 3º caso).

Figura 5 – Exemplo de adornos nas associações

As associações entre elementos podem ter adornos especificando a multiplicidade dos elementos bem como o nome da associação segundo o ponto de vista de cada elemento, conforme exemplificado na Figura 5.

2.3        Estereotipos padrão da notação UML

A notação UML define vários estereótipos padrão, cuja explicação pode ser encontrada na especificação da notação ou no dicionário UML. De seguida são apresentados alguns desses estereótipos:

         copy – indica uma cópia exacta de um objecto;

         document – indica um documento;

         executable – indica um componente executável num nó;

         extend – usado para indicar uma extensão do comportamento padrão de um caso de utilização (ex., situações de erro);

         file – indica um ficheiro com código fonte ou dados;

         include – indica que um determinado caso de utilização inclui explicitamente um outro case de utilização (ex., comportamentos comuns);

         invariant – representa uma restrição sobre um elemento que deve ser sempre satisfeita (i.e., deve ser sempre verdadeira);

         postcondition – representa uma restrição sobre uma operação que deve ser sempre verdadeira após a execução da operação;

         precondition – representa uma restrição sobre uma operação que deve ser sempre verdadeira antes da execução da operação;

         system – estereotipo associado a um “package” que representa o sistema que se está a modelar;

         table – representa uma tabela de base de dados;

É possível criar novos estereótipos de acordo com as necessidades do sistema que se está a modelar. São em seguida apresentados algumas sugestões de estereótipos:

         form – indicando classes que implementam interfaces com o utilizador;

         COM – indicando objectos COM;

         CORBA – indicando objectos CORBA;

         DLL – indicando ficheiros do tipo DLL;

 


 

3         Exemplos

3.1        Diagrama de casos de utilização

Figura 6 – Exemplo de um diagrama de casos de utilização

3.2        Diagrama de classes de análise

Figura 7 – Exemplo de um diagrama de classes de análise

3.3        Diagrama de sequência

Figura 9 – Exemplo de um diagrama de sequência

3.4        Diagrama de colaboração

Figura 10 – Exemplo de um diagrama de colaboração

3.5        Diagrama de classes

Figura 8 – Exemplo de um diagrama de classes

3.6        Diagrama de estados

Figura 11 – Exemplo de um diagrama de estados

3.7        Diagrama de actividades

Figura 12 – Exemplo de um diagrama de actividades

3.8        Diagrama de componentes

Figura 13 – Exemplo de um diagrama de componentes

3.9        Diagrama de instalação

Figura 14 – Exemplo de um diagrama de instalação


 

4         Exemplo de uma Livraria na Internet **

4.1        Requisitos

         A livraria tem que aceitar encomendas via internet.

         A livraria deve manter uma lista de contas de clientes até o limite de um milhão de clientes.

         As contas dos clientes devem estar protegidas por password.

         Deve ser possível efectuar pesquisas no catalogo principal da livraria.

         Essas pesquisas devem poder ser efectuadas por diversos métodos (ex., titulo, autor, ISBN).

         A livraria deve fornecer um método seguro de pagamento via cartão de crédito.

         Devem existir ligações electrónicas entre a aplicação web a base de dados e o sistema de expedição (ex., DHL).

         Devem existir ligações electrónicas entre a aplicação web a base de dados e o sistema de gestão de inventário.

         A livraria deve manter um esquema de comentários aos livros existentes no catalogo, sendo possível a qualquer utilizador fazer um novo comentário.

         Os livros devem ser classificados segundo uma pontuação baseada nos inputs dos utilizadores.

 

4.2        Modelo de casos de utilização

Figura 16 – Diagrama de casos de utilização para exemplo "Livraria na Internet"

 

4.3        Diagrama de análise do caso de utilização “Login”

Figura 17 – Diagrama de análise do caso de utilização “Login” para exemplo "Livraria na Internet"

 

4.4        Diagrama de análise para o caso de utilização “Edit shopping cart”

Figura 18 – Diagrama de análise do caso de utilização “Edit shopping cart” para exemplo "Livraria na Internet"

 

4.5        Diagrama de sequência para o caso de utilização “edit shopping cart”

Figura 19 – Diagrama de sequência do caso de utilização “Login” para exemplo "Livraria na Internet"

 

4.6        Modelo do domínio

Figura 15 – Modelo do domínio para exemplo "Livraria na Internet"

4.7        Modelo de classes

Figura 20 – Diagrama de classes (1/3) para exemplo "Livraria na Internet"

Figura 21 – Diagrama de classes (2/3) para exemplo "Livraria na Internet"

Figura 22 – Diagrama de classes (3/3) para exemplo "Livraria na Internet"

 


 

5         Bibliografia

Boggs, Wendy & Boggs, Michael (1999). Mastering UML with Rational Rose. Sybex.

Rocha, António (2000). Engenharia da Informação – acetatos prática. Unidade de ensino. ISEP/IPP.

Rosenberg, Doug (2001). UML for e-Commerce. Seminário Iconix.

Scott, Kendall (2000). An Introduction to the Unified Modeling Language. Seminário Iconix.

Scott, Kendall (URL). Dicionário UML. http://www.usecasedriven.com/UML.htm

 

 



* A linguagem UML define alguns estereótipos padrão que podem ser consultados no Dicionário UML disponível em http://www.usecasedriven.com/UML.htm.

** Exemplo retirado do Seminário Iconix "UML for e-Commerce".