Download - Revisao uml
Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior
UML (Unified Modelling Language)
Referências: Booch, G. et al. The Unified Modeling Language User Guide Medeiros, E. Desenvolvendo Software com UML 2.0: Definitivo, Makron Books, 2006.
Sommerville, I. Engenharia de Software, 8ª edição, 2007.
Introdução � É uma linguagem para especificação,
construção, visualização e documentação de artefatos de um sistema de software
� É mantida pelo Object Management Group (OMG), com contribuições e direitos de autoria das seguintes empresas: Hewlett-Packard, IBM, ICON Computing, i-Logix, IntelliCorp, Electronic Data Services, Microsoft, ObjecTime, Oracle, Platinum,Ptech, Rational, Reich, Softeam, Sterling, Taskon A/S e Unisys.
2
Introdução
UML BOOCH OMT
OOSE
q Diagrama de Estados q Diagrama de Objetos (Colaboração) q Diagrama de Processo (Desenvolvimento) q Diagrama de Módulos (Componentes)
q Use Case q Subsistemas (Package) q Diagrama de Interações q MiniEspecificação
q Diagrama de Estados q Diagrama de Classes
3
A UML não é
� um processo � uma metodologia � Análise e Projeto OO � regras de projeto � Linguagem de Programação
4
Razões para Modelar � Comunicar a estrutura e o comportamento
desejado de um sistema. � Visualizar e controlar a arquitetura de um
sistema. � Para melhorar o nosso entendimento de um
sistema e, assim, expor oportunidades para melhorias e reutilização.
� Para administrar os riscos � A UML permite modelar:
� Elementos; � Relacionamentos; � Mecanismos de extensibilidade; � Diagramas
5
Diagrama § Os diagramas UML são abordados como
Estáticos e Dinâmicos.
Estes diagramas também Podem ser classificados como: Comportamentais Estruturais
6
Caso de Uso � Seqüência de ações, executada pelo
sistema, que gera um resultado � De valor observável � E para ator particular
� É uma seqüência completa de cenários de interação mostrando como eventos externos iniciais são respondidos no caso de uso.
Função
8
Cenário � Um cenário é uma narrativa de uma parte do
comportamento global do sistema e uma coleção completa de cenários é usada para especificar completamente um sistema
� Um caso de uso está para um cenário assim como uma classe está para um objeto. Ou seja, um caso de uso representa uma declaração de um aspecto de comportamento que é caracterizado por um lote de cenários concretos
9
Ator � Um ator é uma entidade externa ao
sistema que de alguma forma participa de um caso de uso, isto é, interage com o sistema
� Um ator estimula o sistema com eventos externos e tipicamente recebe algo do sistema.
� Um ator pode ser um ser humano, máquinas, dispositivos, ou outros sistemas. Atores típicos incluem, por exemplo, clientes, usuários, gerentes, computadores e impressoras.
Emissor/Receptor
10
Casos de Uso e Ator
Função Emissor
Função Receptor
Ator
Par
ticul
ar
Resu
ltado
de
Valo
r O
bser
váve
l
11
Casos de Uso e Ator - Exemplo
Consultar saldo
Cliente
Transferir dinheiro
Sacar dinheiro
Valor de resultado
observável
Nome = Verbo + Substantivo (indicação de
ação)
14
Fluxo de Eventos � Parte mais importante de um caso de uso � Define a seqüência de ações entre o ator e o
sistema � É uma sequência de comandos declarativos
que descreve as etapas de execução de um Caso de Uso
� Contém informações relativas: � Às condições de início e término do caso de uso � Quais os atores interessados no sistema � Como o caso de uso interage com esses atores
15
Documentação de Caso de Uso
16
Nome do Caso de Uso Abertura de Conta
Tipo Primário, Expandido, Essencial
Atores Cliente
Resumo Este caso de uso descreve as etapas percorridas por um cliente para abrir uma conta corrente
Pré-Condições O pedido de abertura de conta corrente precisa ser aprovado
Pós-Condições É necessário realizar um depósito inicial
Fluxo Principal
Ações do Ator Ações do Sistema
1. Solicitar Abertura de Conta
2. Consultar cliente por seu CPF
3. ....
Fluxo Alternativo
Requisitos Especiais
Relacionamentos no Diagrama de Casos de Uso
� Relacionamento entre atores � Relacionamento entre atores e casos de uso
� Relacionamento entre casos de uso
17
Inclusão � Significa um caso de uso inclui (precisa de,
é composto de) outro. � Representado como uma dependência (seta
tracejada) que aponta para o caso de uso incluído
� “Se o caso de uso incluído muda, o caso de uso base precisa ser revisto”
� A dependência possui o estereótipo <<include >>
18
Inclusão � Como exemplo, tanto “Sacar dinheiro” quanto
“Consultar saldo” necessitam da senha � Cria-se novo caso de uso “Autenticar usuário” e incluí-
lo � Mas atenção
� Não se deve criar casos de uso MÍNIMOS � Deve haver ganho no reuso
Caso de uso incluído
Sacar dinheiro
Consultar saldo
Autenticar usuário << include >> << include >>
Caso de uso base 19
Extensão � Significa que o caso de uso base incorpora
implicitamente o comportamento de outro caso de uso
� Apenas em circunstâncias específicas, o caso de uso estendido tem seu comportamento incorporado pelo caso de uso base: pontos de extensão
� Utilizado para modelar o comportamento excepcional do sistema (exceções)
20
Extensão
Efetuar troca Devolver Produto
<< extend >> (opção de troca)
Relacionamento de Extensão Ponto de Extensão
Caso de uso base Caso de uso estendido
21
Generalização/Especialização � Similar à generalização entre classes � Caso de uso pode especializar outro
� Adição/refinamento do fluxo de eventos original
� Um caso de uso filho pode ser utilizado no lugar do seu pai
� Também pode ser utilizado entre atores � Representado por uma seta contínua que
aponta do filho para o pai � Especialização permite modelar
comportamento de estruturas de aplicação em comum 22
Generalização/Especialização
Efetuar Pagamento Efetuar Pagamento com Cartão de Crédito
Δ
Cliente Cliente comercial
Δ
Caso de uso base Caso de uso derivado
23
Definições � Capturam ações e seus resultados, focando o
trabalho executado na implementação de uma operação (método), e suas atividades numa instância de um objeto.
� Trata-se de uma variação do diagrama de estado com um propósito um pouco diferente do diagrama de estado: � Capturar ações (trabalho e atividades que serão
executados) e seus resultados em termos das mudanças de estados dos objetos.
25
Definições � Forma alternativa de se mostrar interações
� expressar como as ações são executadas � o que elas fazem (mudanças dos estados dos objetos) � quando elas são executadas (seqüência das ações) � onde elas acontecem (raias de natação).
� Consistem em estados de ação, contendo a especificação de uma atividade a ser desempenhada por uma operação do sistema.
� Decisões e condições, como: execução paralela, também podem ser mostradas na diagrama de atividade.
� O diagrama também pode conter especificações de mensagens enviadas e recebidas como partes de ações executadas.
26
Notação � Estado de Ação: usado quando o
usuário faz alguma coisa ou existe a resposta do sistema, pode ser usado este símbolo.
� Passagens entre atividades: (fluxo ou gatilho) Podem ser acrescentados efeitos e resultados.
� Decisão: Diversas saídas para o símbolo de decisão
27
Notação
� Fork: Significa que uma atividade chegou neste ponto e foi subdividida em mais de uma atividade.
� Join: Significa que uma atividade chegou num mesmo ponto e criou-se uma nova atividade.
� Entrada/Saída: Pode haver diversos pontos de saída para um processo.
28
Notação � Merge: Fluxos convergentes para um
único ponto e existe apenas um saída, o que é diferente do join, onde vários fluxos chegam concorrentemente.
� Condição: pode ser representada escrevendo um texto entre colchetes e em itálico. Esse texto está sob a forma de um fluxo, necessariamente.
� Raias de Natação. Reproduz as raias de uma piscina. Indica a passagem do fluxo de atividade de um ator para outro. Pode ser vertical ou horizontal.
29
Concorrência Dinâmica � Informa a ocorrência de um laço onde um
mesmo Estado de Ação pode se repetir várias vezes
� Indicado por um *
34
Raias � Permite que se documente o que acontece e
quem faz acontecer. � Permite que, em modelagem de domínio, o
diagrama de atividade represente pessoas ou departamentos responsáveis por cada atividade.
� Para usar raias, você deve organizar seus diagramas de atividades em zonas verticais separadas por linhas. Cada zona representa as responsabilidades de uma classe específica ou um depto específico.
36
Introdução
� Uma classe é a descrição de um tipo de objeto.
� Todos os objetos são instâncias de classes, onde a classe descreve as propriedades e comportamentos daquele objeto.
� Identificar as classes de um sistema pode ser complicado, e deve ser feito por especialistas no domínio do problema a que o software modelado se baseia.
39
Introdução
� Um diagrama de classes denota a estrutura estática de um sistema e as classes representam coisas que são manipuladas por esse sistema.
� O diagrama de classes é considerado estático já que a estrutura descrita é sempre válida durante o ciclo de vida do sistema.
� A notação utilizada para representar o diagrama de classes em UML é fortemente baseada na notação de Diagramas Entidade-Relacionamento [CHE90] e no Modelo de Objetos de OMT [RUM94].
40
Propósito do Diagrama de Classes � Fazer modelagem do vocabulário do sistema
� Indica quais abstrações fazem parte do sistema e quais estão fora do limite do mesmo
� Fazer a modelagem e colaboração simples � Mostra como as classes trabalham em conjunto permitindo a
compreensão de uma semântica maior do que se estas mesmas classes fossem analisadas individualmente.
� Fazer a modelagem do esquema lógico de um banco de dados � Descreve, de forma orientada a objetos, o esquema lógico de
um banco de dados que fisicamente pode ser orientado a objetos, relacional ou híbrido.
41
Um exemplo
42
SalesLineItem quantity : Integer
subtotal()
ProductCatalog
specification()
ProductSpecification description : Text price : Quantity upc : UPC
Store address : Address
name : Text addSale()
Payment amount : Quantity
Contains 1.. *
Contains 1.. *
POST
endSale() enterItem() makePayment()
Sale date : Date
isComplete : Boolean time : Time becomeComplete()
makeLineItem() makePayment()
total()
Captures
Houses
Uses
Looks-in
Paid-by
Describes
1 1
1
1 1
1
1 1
1
1
1
1
1
*
Logs-completed 4 *
1
Perspectivas de um Diagrama de Classes � Conceitual: forma abstrata de se observar
classes e objetos e independente da linguagem de programação (Modelo Conceitual)
� De Implementação: pensa-se em detalhes de implementação para definir as classes e objetos.
43
Identificação de Classes com Estereótipos
Estereótipo é um classificador. Tipos: • Entidade: representam conceitos do mundo real
e armazenam dados que os identificam • Controle: controlam a execução de processos e
o fluxo de execução de todo ou de parte de casos de uso e comandam outras classes
• Fronteira: realizam o interfaceamento com entidades externas (atores), contém o protocolo de comunicação com impressora, monitor, teclado, disco, porta serial, modem, etc.
44
Exemplo de Uma Classe
Aluno
<<entidade>> Aluno DePacoteCadastro
nome:TipoNome RA: TipoCódigo -nome[30]:char
+RA: int {valorconstante}
calculaMédia():TipoNota +calculaMédia():Double
Visão Conceitual Visão de Implementação
45
Exemplos no Sistema Posto Comercial
<<identidade>>
Intens <<controle>> <<fronteira>>
ControleComprarItens InterfaceCliente
46
Relacionamentos
� Os relacionamentos ligam as classes/objetos entre si criando relações lógicas entre estas entidades.
� Os relacionamentos podem ser dos seguintes tipos: � Associação � Generalização � Dependência e Refinamentos
47
Associação
� Uma associação representa que duas classes possuem uma ligação (link) entre elas, significando, por exemplo, que elas “conhecem uma a outra”, “estão conectadas com”, “para cada X existe um Y” e assim por diante.
� Podem ser: � Normal, Recursiva, Qualificada, Exclusiva,
Ordenada, Classe, Ternária e Agregação.
48
Associações Normal– Cardinalidade (Multiplicidade) � Especifica o número de objetos de cada
classe envolvidos com a associação � A leitura da cardinalidade é diferente para
os diferentes sentidos da associação
Caixa Venda
registra
0..* 1
49
Associação de Classe - Exemplo � A associação da classe Fila com a associação das
classes Cliente e Processo pode ser estendida com operações de adicionar processos na fila, para ler e remover da fila e de ler o seu tamanho.
� Se operações ou atributos são adicionados a associação, ela deve ser mostrada como uma classe.
50
Associação de Agregação � A agregação é um caso particular da associação. � A agregação indica que uma das classes do
relacionamento é uma parte, ou está contida em outra classe.
� As palavras chaves usadas para identificar uma agregação são: “consiste em”, “contém”, “é parte de”.
� Existem tipos especiais de agregação que são as agregações: compartilhadas e as compostas.
51
Agregação de Composição � É uma agregação onde uma classe que está contida
na outra "vive" e constitui a outra. Se o objeto da classe que contém for destruído, as classes da agregação de composição serão destruídas juntamente já que as mesmas fazem parte da outra.
52
Generalização Normal � Na generalização normal a classe mais
específica, chamada de subclasse, herda tudo da classe mais geral, chamada de superclasse. Os atributos, operações e todas as associações são herdados.
� Uma classe pode ser tanto uma subclasse quanto uma superclasse, se ela estiver numa hierarquia de classes que é um gráfico onde as classes estão ligadas através de generalizações.
53
Generalização Normal - Exemplo � A generalização normal é representada por uma linha
entre as duas classes que fazem o relacionamento, sendo que se coloca uma seta no lado da linha onde se encontra a superclasse indicando a generalização.
54
Dependência e Refinamento � Uma relação de dependência é simbolizada por uma
linha tracejada com uma seta no final de um dos lados do relacionamento. E sobre essa linha o tipo de dependência que existe entre as duas classes.
� As classes “Amigas” provenientes do C++ são um exemplo de um relacionamento de dependência.
55
Definições � A notação UML de um objeto é semelhante à de
uma classe: � São mostrados os valores dos atributos � Os métodos não são incluídos � Além do nome da classe, podemos dar um nome ao
objeto.
58
Interação � Diagrama de Interação: modelam os aspectos
dinâmicos do sistema � Contém:
� Objetos � Vínculos � Mensagens
� Tipicamente, um diagrama de interação captura comportamento em um caso de uso
� Descrevem como grupos de objetos colaboram num contexto de um cenário
� Existem 2 tipos de diagramas de interação: � Diagrama de Seqüência � Diagrama de Comunicação
61
Interação � Cenários:
� Instância de um caso de uso, descrevendo como este funciona
� É um caminho através do fluxo de eventos de um caso de uso
� Fluxo de eventos: documentado via texto � Cenário : documentado via diagramas de interação � Documenta como as responsabilidades são divididas
entre classes e objetos
62
Diagrama de Interação � Interação em caso de uso
� Inclui uma seqüência de trocas de mensagens entre um conjunto de objetos para realização de um caso de uso
� As mensagens podem incluir sinais e chamadas implícitas
� Em modelagem comportamental é comum descrever vários cenários para cada caso de uso
� Para especificar uma interação é necessário definir um contexto de caso de uso e estabelecer os objetos que interagem e seus relacionamentos
63
Diagrama de Interação � Diagrama de Seqüência
� Mostra a interação entre objetos tendo em vista a seqüência das mensagens no tempo
� Mostra no cenário: � Objetos e classes envolvidos
� A seqüência de mensagens trocadas pelos objetos � Elementos:
� Linha da vida, ativação, auto chamada, condição , retorno, iteração
65
Mensagens � Representam a execução de uma operação de uma
classe ou a ocorrência de um evento em uma máquina de estados, e são ordenadas no tempo (de cima para baixo);
67
Sintaxe para Mensagens � Mensagem
� rótulos: predecessor cond-guarda exp-sequencia valor retorno:= nome-da-mensagem lista-de-argumento � expressão de seqüência - 1.1.2: , 1.2.3: , 3.1a: , 3.1b: � predecessor - 1.1, 1.2 / 1.3 : continue ( ) � condições de guarda - [cláusula-de-condição]
� 3.1 [x < 0] : abc ( ) � 3.2 [x >= 0] : def ( )
� iterações - * [cláusula-de-interação] � 1.1 * [n := 1..10]: execute ( )
� valor de retorno := nome-da-msg lista-arg � 1.4.5: x := calcular (n)
� EX: 2 * [n : = 1 .. 8] : Acumulado := calcularNext (n)
68
Diagrama de Comunicação
n Relacionamento com outros Diagrama n Uma colaboração não precisa,
necessariamente, ser representada em um diagrama de comunicação. Você pode fazer isso num diagrama de classe.
n As classes colaboram enviando mensagem umas para as outras. Na verdade, são objetos, instanciados na memória, que enviam mensagem uns para os outros.
n Se a ênfase do diagrama for o decorrer do tempo: n diagrama de seqüência
n Se a ênfase for o contexto do sistema (classes): n diagrama de colaboração (comunicação).
73
Diagrama de Comunicação
n Modela objetos e ligações de uma interação: n Apresenta somente os objetos e ligações
significativas para a interação; n As mensagens são numeradas
sequencialmente; n Mostra implementação de operações,
descrevendo parâmetros e variáveis locais usadas.
74
Composição � É formado por: � Objetos (retângulos) � Interações entre objetos (linhas
ligando objetos) � Mensagens (texto e setas)
75
Diagrama de Comunicação � Em um diagrama de comunicação o tempo não é mais representado por linhas verticais, mas sim através de uma numeração, que pode ser de duas formas: � simples (1,2,3,...) � composta (1.1, 1.2, 1.2.1, ...)
76
Diagrama de Comunicação � Um vínculo é uma associação que identifica uma ligação entre dois ob j e t o s envo l v i do s em um processo. É caracterizado pelo envio ou recebimento de uma mensagem, ou ambos.
77
Definições � Trata-se de um complemento para a descrição
das classes, documentando os estados possíveis que objetos de uma certa classe podem assumir, além de mostrar ainda os eventos do sistema que geram tais mudanças.
� Os diagramas de estado não são escritos para todas as classes de um sistema, mas apenas para aquelas que possuem um número definido de estados conhecidos e onde o comportamento das classes é afetado e modificado pelos diferentes estados.
82
Visualização
� Eles mostram os estados que um objeto pode possuir e como os eventos (mensagens recebidas, timer, erros, e condições sendo satisfeitas) afetam estes estados ao passar do tempo.
� Todos os objetos possuem um estado que significa o resultado de atividades executadas pelo objeto, e é normalmente determinada pelos valores de seus atributos e ligações com outros objetos.
83
Quando usar
� Se o relacionamento de classes não está claro o suficiente em função do estado dos objetos, isso será uma pista de que deve usar este diagrama. Essa percepção é pessoal
� Diagrama de Estados enfatizam os estados dos objetos e as transições entre estes estados enquanto o Diagrama de Atividades enfatiza o fluxo de controle de uma atividade para outra.
84
Evento � Um objeto muda de estado quando acontece
algo, o fato de acontecer alguma coisa com o objeto é chamado de evento.
� Os objetos de uma classe habitualmente possuem um ciclo de vida: são gerados, assumem posições durante a sua vida, dão origem a outros objetos em classes relacionadas e deixam de existir no momento de sua destruição.
85
Transições � Uma transição representa um evento que
causa a mudança de estado de um objeto. � Evento de Ativação
86
Evento de Transição � A transição de estados é criada a partir de
um evento � Este pode ou não conter uma descrição � Pode conter uma ordem para realizar uma
tarefa � Pode também conter condições de guarda
87
Ações Internas � Entry: ações realizadas no momento em
que o objeto assume o estado em questão � Exit: ações realizadas antes do objeto
mudar de estado � Do: atividades executadas enquanto o
objeto se encontra em determinado estado
89
Escolha � Um losango simples é um estado de escolha. Ao se
chegar a um estado de escolha, o software deve tomar um decisão e ir para qualquer estado possível, dos que saem do estado de escolha.
90
Escolha � Um losango simples é um estado de escolha. Ao se
chegar a um estado de escolha, o software deve tomar um decisão e ir para qualquer estado possível, dos que saem do estado de escolha.
91
Definição conjunta � Diagrama de Componentes: mostra vários
componentes em um sistema e suas dependências
� Diagrama de Implantação (Utilização): mostras as relações físicas entre componentes de software e hardware no sistema implementado
� Podem ser criados separadamente ou combinados (quais os componentes funcionam em que nós)
96
Diagrama de Componentes � Apresenta uma visão estática de como o
sistema está implementado e quais os seus módulos de software: componentes
� Muito associado a linguagem de programação
� Procurar associar módulos, bibliotecas, formulários, arquivos, tabelas ...
97
� Componente:. O componente pode ser uma página HTML, um arquivo txt, dll, jar e etc.
� Um componente expõe suas interfaces (métodos públicos) para o mundo externo. Para representar isso é possível utilizar a notação de uma interface e estereotipá-la como um componente.
� É possível representar as interface públicas de um componente.
� Um componente normalmente é descrito por um <<estereótipo>>
Notação <<componente>>
PedirMaterial
PedirMaterial
PedirMaterial
98
Dependências � Um componente pode utilizar serviços ou
depender de alguma outra forma de outros componentes do sistema
99
� A forma de representar uma interface esperada
� Interfaces esperadas se encontrando com interfaces fornecidas
Notação
ControlarEstoque
PedirMaterial
ControlarEstoque
ReceberPedidos
102
<<interfaces fornecidas>> ReceberPedidos <<interfaces requeridas>> ControlarEstoque <<realiza>> Professor Pedido Funcionario <<artefato>> ControlePedido.JAR
PedirMaterial
Interface
104
Diagrama de Implantação
� O diagrama de implantação representa como é realizada a distribuição do sistema através de nós de hardware, componentes e dependências de software e as suas devidas relações de comunicação.
� Um diagrama de implantação modela o inter-relacionamento entre recursos de infra-estrutura, de rede ou artefatos de sistemas. Normalmente representamos servidores neste diagrama. Estes recursos são chamados de nodes ou nós.
106
Diagrama de Implantação
� Cada nó é um máquina física que encerra um ou vários componentes. Outros dispositivos podem ser representados com o estereótipo de <<dispositivos>> ou <<device>>
107
Associações � Os nós podem possuir ligações entre si de
forma que possam se comunicar e trocar informãções
108