Escolar Documentos
Profissional Documentos
Cultura Documentos
Elementos
Estruturais Classes, interfaces, colaborações, casos de
uso, componentes, nós
Comportamentais Mensagens, estados de objetos
Elementos de agrupamento Pacotes
Elementos de anotaçãoNotas
Relacionamentos
Dependência (<<include>>, <<extend>>~,
<<import>> são alguns estereótipos de dependência)
Associação (composição, agregação e associações com
navegabilidade são casos especiais)
Generalização (o termo empregado para herança e
especializações na UML)
Realização (empregado especialmente na realização de
interfaces)
Diagramas
Diagrama de classes
Diagrama de Objetos
(Diagramas de Interação)
Diagramas de Seqüência
Diagramas de Colaboração
Diagramas de Estado
Diagramas de Atividades
Diagramas de Componentes
Diagramas de Distribuição
Geral
Casos de Uso Diagramas estruturais
Atores Agentes externos ao sistema
Caso de uso Representam um
funcionalidade autocontida
Relacionamentos Associações Atores-Casos de Uso;
dependência; generalização;
Dependência Estereótipos: <<include>>;
<<extend>>
Fluxo de Eventos
Para cada caso de uso do diagrama deve haver uma descrição textual
com os seguintes elementos:
Nome do caso de uso
Atores participantes
Condições de entrada (Condições que precisam ser
satisfeitas antes do caso de uso ser iniciado)
Fluxo de eventos principais
Fluxo de eventos secundários
Condições de saída (Condições que precisam ser
satisfeitas depois do caso de uso estar completado)
Requerimentos especiais
Cenários
Os cenários são instâncias de casos de uso e devem ser empregados
quantos cenários forem necessários para que se complemente a
descrição dos casos de uso. Alguns tipos de cenários úteis:
Cenários “As-is”
Cenários futuros
Cenários para avaliação
Cenários para treinamento
Boas práticas
Identificando Atores:
Identifique grupos de usuários: a) suportados pelo sistema em
seu trabalho; b) grupos que executam as principais funções do sistema
e funções secundárias; c) interações do sistema com agentes externos
de hardware ou software.
Identificando Cenários:
Identifique grupos de usuários que criam, modificam, acessam e
removem os dados.
Identifique as tarefas que cada grupo de usuários deseja
executar.
Identifique a frequencia e a validade das informações dadas e
fornecidas pelo sistema.
Identificando Casos de Uso:
Lembre-se os casos de uso são estruturais e, portanto,
descrevem grandes estruturas ou partes do sistema.
Na descrição, seja dos diagramas, fluxo de eventos ou cenários,
deve-se empregar sempre a linguagem do usuário.
Exercícios
1. Diferencie e dê exemplo das dependências do tipo <<include>> e
<<extend>> em casos de uso.
2. Casos de uso devem fazer uso da linguagem do usuário. Justifique.
3. Os cenários são sempre construídos antes da criação dos diagramas
de casos de uso. Justifique.
4. Não existe nenhum sentido de fluxo ou sequencia nos diagramas de
casos de uso. Justifique.
Atributos
Operações
Principais relacionamentos
Dependência
Generalização
Um exemplo completo
Diagrama de Objetos
:TreeMap topNode
:TreeMapNode
- itsKey = "Martin"
nodes[LESS] nodes[GREATER]
:TreeMapNode :TreeMapNode
Abbott`s Rules
As regras abaixo são heurísticas bastante simples que podem ser empregadas para modelagem de aplicações OO
à partir dos discursos que a descrevem.
Parte do discurso Componente do modelo Exemplos
Substantivos próprios Objeto Anna, Shell
Substantivos comuns Classe Aluno, Empresa, Funcionário
Verbos com sentido de
Fazer Operação Cria, submete, seleciona
Ser Generalização É um tipo de, é outro, é um
Ter Agregação Tem, consiste de, inclui
Obrigação “Constraints” Deve, precisa
Adjetivo, adjetivados Atributo Descrição do incidente, nota do aluno, custo da
ação
Boas práticas
Tenha foco na estrutura do sistema.
Foque em um aspecto estrutural do sistema, empregando mais de um diagrama se for necessário descrever mais
que um aspecto.
Empregue somente elementos que são essenciais para descrever um aspecto.
Isto é especifique somente os aspectos que você deseja que sejam garantidos na aplicação.
Empregue nomes que comuniquem seu propósito.
Tente não mostrar muitos relacionamentos. Em geral existem relacionamentos predominantes.
Exercícios
2 nodes
TreeMap TreeMapNode
topNode
+ add(key, value) + add(key, value)
+ get(key) + find(key)
itsKey «interface»
Comparable
itsValue
Object
1. Considere o diagrama de classes acima. Codifique as respectivas classes Java.
public class TreeMap {
TreeMapNode topNode = null;
public void add(Comparable key, Object value) {…}
public Object get(Comparable key) {…}
}
class TreeMapNode {
private Comparable itsKey;
private Object itsValue;
private TreeMapNode nodes[] = new TreeMapNode[2];
Diagramas de Seqüência
Diagramas de Colaboração
Exercícios
1. Converta o diagrama Sequência dado acima para um diagrama de Colaboração.
2. Converta o diagrama Colaboração dado acima para um diagrama de Sequência.
UML, Diagramas de Estado
São diagramas que descrevem o comportamento de um sistema do ponto de vista ” intra-classes”. Os diagramas
de estado também podem ser empregados para representar estados mais genéricos e mais abstratos do sistema
como “em produção” ou “em análise”.
Exercícios
1. Elabore um diagrama de estados que represente um controlador de temperatura. Acima (abaixo) de uma
determinada temperatura o sistema passa a esfriar (esquentar). O sistema também possui uma temperatura limite
(mais alto e mais baixo) à partir do qual o sistema alarma e deixa de operar.
2. Cite aspectos que diferenciam um DFD de um diagrama de estados.
Dependência de pacotes
package A;
import B.*;
public class SomeAClass {
private ClassInB b;
}
Booch, G., Rumbaugh, J., Jacobson, I. The Unified Modeling Language User Guide, Addison-Wesley, 1999.
Knoernschild, K. Java™ Design: Objects, UML, and Process, Addison-Wesley, 2001.
Bruegge, B., Dutoit, A.H. Object-Oriented Software Engineering: Conquering Complex and Changing Systems,
Prentice-Hall, 2000.