Anda di halaman 1dari 111

Danila Silva

Engenharia da Computação
Engenharia de Software
Email: danilasilva@gmail.com
UML
• Linguagem de Modelagem Unificada:
– Notação flexível
– Conceitos relacionados com OO
– Metodologia
– Proposta por Grady Booch, James
Rumbaugh, e Ivar Jacobson
UML

• Objetivos:
• A modelagem de sistemas (não apenas de
software) priorizando os conceitos da
orientação a objetos;
• Estabelecer uma união fazendo com que
métodos conceituais sejam também
executáveis;
• Criar uma linguagem de modelagem usável
tanto pelo homem quanto pela máquina.
Visões
• As Visões mostram diferentes aspectos do sistema
que está sendo modelado. A visão não é um
gráfico, mas uma abstração consistindo em uma
série de diagramas. Definindo um número de
visões, cada uma mostrará aspectos particulares
do sistema, dando enfoque a ângulos e níveis de
abstrações diferentes.
Diagramas

• Os diagramas são os gráficos que


descrevem o conteúdo em uma visão. UML
possui doze tipos de diagramas que são
usados em combinação para prover todas
as visões do sistema.
Modelos de
Elementos
Os conceitos usados nos diagramas são
modelos de elementos que representam
definições comuns da orientação a
objetos como as classes, objetos,
relacionamentos, associações,
componentes, entre outros.
Ressaltando:
• Um modelo é definido com a semântica
e a definição dos elementos;
• Um elemento pode existir em diversos
tipos de diagramas.
Modelos de Elementos
• Casos de Uso
• Classes
• Objetos
• Estados/Atividades
• Pacotes
• Componentes
• Relacionamentos
• ....
Classes

Cliente Nome da Classe


Nome : String
Idade : Num Atributos

Criar() Operações
Destruir()
Objeto

Pablo Barros:Cliente Nome do Objeto


Nome : "Pablo Barros"
Idade : 20 Atributos

Criar()
Operações
Destruir()

:Cliente Objeto Anônimo


Nome : "Pablo Barros"
Idade : 20 Atributos

Criar()
Operações
Destruir()
Pacotes

• “Um mecanismo de propósito geral


para organizar elementos
semanticamente relacionados em
grupos.”

<nome do
Pacote>
Componentes

• Um componente pode ser tanto


um código em linguagem de
programação como um código
executável já compilado.

Cliente.java Gráficos.dll
Relacionamentos
• Os relacionamentos ligam as
classes/objetos entre si criando relações
lógicas entre estas entidades
– Associação (conexão entre classes)
– Generalização (conexão entre elemento mais
geral e outro mais específico )
– Dependência e Refinamentos (conexão
entre um independente e outro dependente )
Associação
• Ex Associação Simples.:
– Associação das classes CLIENTE E
CONTA CORRENTE.

Cliente Possui  Conta Corrente


 É possuído
Associação

• Ex Associação Recursiva.:
– Associação da classe PESSOA.

Pessoa
Esposa

Marido

 é casado com
Associação
• Associação Ternária:
– Uma classe pode ser associada a uma
outra associação.
– Ex.:
– Associação das classes CONTRATO, CLIENTE
E REGRAS.

Contrato 0..* 1..* Cliente

1..*

Regras Contratuais
Associações de Agregação
– Agregação compartilhada
Time * * Pessoa

Membros

– Agregação de composição
Text
*

* ListBox
Janela

* Botão
*
Menu
Generalização
– Relacionamento entre um elemento
geral e um outro mais específico;
– O elemento mais específico possui todas
as características do elemento geral e
contém ainda mais particularidades.

Transação Poupança
Bancária
Ornamentos
– Customizações gráficas associadas aos
elementos.
– Ex.:
• Quando um elemento representa um tipo,
seu nome é mostrado em negrito.
• Quando o mesmo elemento representa a
instância de um tipo, seu nome é escrito
sublinhado.
Notas
– Informações adicionais.

Interface do
Usuário

Objetos do Utilidades
Sistema NOTAS

Banco de Dados
A classe
Cliente
Cliente manterá um
vetor com
todos os
clientes do
banco
Diagramas UML
Diagrama de Casos de

Uso
A modelagem de um diagrama caso
de uso é uma técnica usada para
descrever e definir os requisitos
funcionais de um sistema .
Caso de Uso – O que é?
• Um caso de uso é uma descrição narrativa de uma seqüência de eventos
que ocorre quando um ator (agente externo) usa um sistema para
realizar uma tarefa [Jacobson 92]
• Um caso de uso é a descrição de um conjunto de ações, incluindo
variantes, que o sistema realiza para chegar a um resultado de valor
observável para um ator [Booch, Rumbaugh, Jacobson 99]
• Casos de uso descrevem os requisitos externos do sistema. São usados
na fase de análise de requisitos. Possibilitam elaboração de casos de
teste e manuais de usuário [Schneider 98]
Definição do Sistema

• Identificando a fronteira do sistema


– Identificando atores
– Identificando casos de uso
– Descrevendo casos de uso
– Relacionando casos de uso
• Escopo do projeto
– Partes do sistema que serão desenvolvidas no
projeto
Diagrama de Casos de
Uso
• Casos de uso
– Serviço utilizado por um ou mais atores

• Atores
– Agentes externos ao sistema
– Papéis de usuário ou sistema

• Relacionamentos
– Relaciona atores com casos de uso
– Relaciona casos de uso
Atores
• Atores
– Cliente – pessoa que compra produtos
– Funcionário – pessoa que realiza operações específicas na loja e
atendimento ao cliente
– Transportador – empresa que entrega o produto
– Sistema de pagamento – sistema que debita o valor da conta de
cartão de crédito do usuário
– Sistema de estoque – sistema que controla o estoque de
produtos na loja
Casos de Uso
• Quais serviços os atores querem do sistema?
• O sistema armazena informações?
• Quais atores criam, lêem, atualizam ou eliminam
estas informações?
• O sistema necessita notificar algum ator sobre
mudanças no seu estado interno?
• Existe algum evento externo que o sistema deva
saber?
• Qual ator informa ao sistema sobre estes eventos.
Exemplo
Abrir Cadastrar Cliente Remover ou
Conta corrente Atualizar Cliente
Cadastra
Dependente
Fechar
Conta corrente

Cadastrar Operação
(Histórico)
Administração do
Banco
Abrir Poupança

Remover ou Atualizar
Operação (Histórico)
Fechar
Poupança Cadastrar Agência Remover ou Atualizar
Agência
Exemplo
Exemplo

Relacionamentos especiais: <<include>> e <<extends>>


Uso interessante

• Analisando um caso de uso: não estou


interessado em alocar ações aos objetos -
apenas quero compreender que ações
precisam acontecer e quais as
dependências comportamentais
• Compreendendo o workflow:
compreensão do processo de negócio do
sistema
• Descrever um algoritmo sequencial
complicado: flowchart em notação UML
Diagrama de Máquina de
Estados
Máquina de Estados

• Demonstra o comportamento de um
elemento através de um conjunto de
transições de estado.
• Pode ser utilizado para modelar o
comportamento de um componente,
um objeto ou até mesmo do sistema
como um todo.
Máquina de Estados

• Um estado representa a situação em


que o “objeto” se encontra em um
determinado momento durante o
período em que este participa de um
processo.

Esperando
solicitação
Máquina de Estados

• Um transição representa um evento


que causa uma mudança no estado
do objeto, gerando um novo estado.

Pessoa solicita
elevador
Esperando Elevador
solicitação processando
Máquina de Estados

• Estados Padrão: inicial e final


– Inicial representa inicio do processo
– Final indica terminação do processo

Energia
Elevador
interrompida
ligado
Pessoa solicita
elevador
Esperando Elevador
solicitação processando
Máquina de Estados

• Barra de Sincronização

Elevador
ligado

Iniciando
Operação

Otimizando Checando
energia Itens segurança
Máquina de Estados
• Atividade Prática
• Modele a seguinte situação problema
com máquina de estados:
– Operação do elevador da POS.
• chamar elevador
• verificar capacidade
• entrar no elevador
• sair do elevador
Diagrama de
Atividades
Diagramas de Classes de
UML
Orientações de Uso
• Classes
- Nome das classes são substantivos
- Primeiro caractere maiúsculo (Cliente, Cad_Clientes)
• Atributo:
- substantivo, aparece como maiúsculo o primeiro caractere
de cada palavra existente no nome do atributo, exceto
a primeira letra: nomeProfessor
• Operação (Método)
- verbo ou locução verbal, aparece como maiúsculo o
primeiro caractere de cada palavra existente no nome
da operação, exceto a primeira letra: isEmpty
Classe
• Nome da classe podem ser simples ou pode ser precedido pelo nome do
pacote em que a classe está contida (Exceções::ClienteCadastrado)
• Representação

Curso
Identificador - Nome (obrigatório)
nome
Atributos (opcional)
créditos

abrir()
Operações (opcional)
incluir()
Atributos

Parede

altura : real
largura : real
espessura : real
viga : boolean = false
Operações/Métodos
– Operação é algo que é executado em um objeto
(procedimento de chamada)
– Método é o corpo do procedimento
• Descreve o comportamento da classe
• Visibilidade
– público
– protegido
– privado
Relacionamentos

• 3 Tipos:
– Associações
• Agregação
• Composição
– Generalização (herança)
– Dependências
Associação

Herança Agregação

Dependência Composição
Relacionamentos

• Nome
– descrever a natureza do relacionamento
• Papel
– função específica a executar nesse relacionamento
• Multiplicidade
– quantidade de objetos que podem ser conectados
no relacionamento
– 1, zero ou um (0..1), muitos (0..*), um ou mais
(1..*)
– 0..1, 3..4, 6..* = o que significa?
Associação

Empresa Pessoa
Trabalha em
1..*
Dependência

• Indica que mudanças em um elemento (o


servidor) podem afetar outro elemento (o
cliente)
• Dependência entre classes indica que
os objetos de uma classe usam serviços
dos objetos de outra classe

Cliente Servidor
Generalização

• Generalização:
Gerente

Funcionário

Caixa

do tipo “É UM TIPO DE”


Agregação

• Agregação

1..*
Time Jogadores

do tipo “TEM”
diamante na posição de maior força
Agregação

1 1..*
Pedido itemPedido

É composto por
Composição

1 0..1
Endereço Complemento
Tem


Computador

Monitor Teclado Mouse

Janela

Menu Botão Título


Diagramas de Objetos
• Uma variação do diagrama de classe.
• A diferença é que o diagrama de objetos
mostra os objetos como se fosse o perfil do
sistema em um certo momento de sua
execução.
• Usados como parte dos diagramas de
colaboração, onde a colaboração dinâmica
entre os objetos do sistema são mostrados.
Diagramas de Objetos
Diagramas de Componentes
• Modelar os componentes do código fonte, do
código executável do software.
• Destacar a função de cada módulo para
facilitar o reuso.
• Auxiliar no processo de engenharia reversa,
por meio da organização dos módulos do
sistema e seus relacionamentos.
Diagramas de Componentes
Diagramas de Componentes
Diagramas de Componentes
Diagrama de Implantação
Diagrama de Implantação

• Diagrama com a visão mais física da


UML
• Objetivo: mostrar a organização física
(hardware) onde o software será
implantado.
– Nós
– Associação entre nós
Diagrama de Implantação
• Nós
– Componentes básicos do diagrama
– Podem representar:
• Item de hardware
• Máquinas Servidoras
• Ambiente em execução
• Associação entre nós
– Estabelecem as ligações
• Protocolos de comunicação
Diagrama de Implantação

• Representação Gráfica

<< JDBC Connection >>


<< TCP/IP >> Servidor
De BD

Servidor
Da aplicação

Repositório
das Mídias
Diagramas de Instalação ou
implantação
Diagramas de Instalação ou
implantação
Diagramas de Pacote

• descreve os pacotes ou pedaços do


sistema divididos e mostrando as
dependências entre estes
• ilustrar a arquitetura de um sistema
mostrando o agrupamento de suas
classes.
Diagramas de Pacote
Diagrama de Seqüências

“Ex- diagrama de interação”


Diagrama de Sequência

• Captura comportamento dinâmico


(orientado ao tempo)
• Objetivo
– Modelar fluxos de controle
– Ilustrar cenários típicos
Diagrama de Seqüência
• Elementos:
– Atores
– Objetos
– Linhas de vida (existência do objeto)
– Foco de Controle (ativação)
– Mensagem (estímulos)
– Auto Chamada
– Condição
Diagrama de Seqüência

• Atores
– Idênticos aos do diagrama de casos de
uso.
– Adição de uma linha de vida

:Usuario Web
Diagrama de Seqüência

• Objetos
– Representam as instâncias das classes
envolvidas no processo.

Inicio:
paginaHTML
Diagrama de Seqüência

• Linha de Vida
– Representa o tempo em que um objeto
existe durante um processo.
Representada por uma linha tracejada e
pode ser interrompida com um “X”
quando o objeto é destruído.
Inicio:
paginaHTML
Diagrama de Seqüência

• Foco de controle (ativação)


– Representa o período em que o objeto
está participando ativamente do
processo.
Inicio:
paginaHTML
Diagrama de Seqüência

• Mensagens (estímulos)
– Representam a ocorrência de eventos
que normalmente forçam a chamada de
um método em um dos objetos
envolvidos. Podem ser numeradas.

Inicio: anuncio:
paginaHTML popup

1: Chamar anuncio ()
Diagrama de Seqüência

• Auto chamadas (auto delegações)


– Representam chamadas que partem e
atingem a linha de vida do próprio
objeto.

anuncio:
popup

1: Chamar anuncio ()
2: Executar banner ()
Diagrama de Seqüência

• Condições
– Estabelecem regras que regem o disparo
das mensagens

anuncio:
popup

1: Chamar anuncio ()
2: Executar banner ()
[ pagina acionada ]
3: Chama pagina anunciante ()
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Seqüência
EXEMPLO
p : cliente s1 : tela_abertura s2 : cadastro

SelecionaEntdados ( )

MostrarForm01 ( )

DigitaDados ( )

SubmeteDados ( )

EnviaDados ( )

GravaDados ( )

EnviaMSGResult ( )

EnviaMSGCliente ( )
Diagrama de Comunicação

“Ex-diagrama de interação de
colaboração”
Diagrama de Comunicação

• Captura comportamento dinâmico


(orientado a mensagens)
• Objetivo
– Modelar fluxo de controle
– Ilustrar a coordenação entre estrutura de
objetos e controle
Diagrama de Comunicação

• Semelhante e equivalente ao
diagrama de sequência
• Não possui linha de vida
• Foco nas mensagens e sua
ordenação.
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e
an n er ()
b
a gi r com [ pagina acionada ]
er
4: int 5: Chama pagina anunciante ()
:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

Inicio:
paginaHTML anuncio:
popup

:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

Inicio:
paginaHTML anuncio:
t rar ()
n popup
1: e

:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

2: ch
amar
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e

:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e

:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e
an n er ()
b
a gi r com
er
4: int
:Usuario Web
anunciante:
paginaHTML
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e
an n er ()
b
a gi r com [ pagina acionada ]
er
4: int 5: Chama pagina anunciante ()
:Usuario Web
anunciante:
paginaHTML
Diagrama de Seqüência

• Ex:

Inicio: anuncio: anunciante:


paginaHTML popup paginaHTML

:Usuario Web

1: entrar ()
2: chamar anuncio ()
3: Executar banner ()
[ pagina acionada ]
4: interagir com banner () 5: Chama pagina anunciante ()
6: destroy ()
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e
an n er ()
b
a gi r com [ pagina acionada ] 6: destroy ()
er
4: int 5: Chama pagina anunciante ()
:Usuario Web
anunciante:
paginaHTML
Diagrama de Comunicação

• Ex:

2: ch
amar 3: Executar banner (
Inicio: anun
cio ()
paginaHTML anuncio:
t rar ()
n popup
1: e
an n er () [ pagina acionada ]
b
a gi r com
er 5: Chama pagina anunciante ()
4: int
:Usuario Web 6: destroy ()

anunciante:
paginaHTML
Diagramas de Interação
Geral
Interação Geral

• Surgiu na UML 2.0


• Variação do diagrama de atividades
• Objetivo: fornecer uma visão geral do
controle de fluxo
Interação Geral

• Elementos:
– Quadros (no lugar de nós de
ação/atividades)
– Nós de decisão (condicional)
– Nós de inicio e fim
Interação Geral

• Ex:
[usuario não
Realizar cadastrado] Exibir página
Login de
[usuario
login
cadastrado]

anuncio: anunciante:
popup paginaHTML

3: Executar banner ()
[ pagina acionada ]
5: Chama pagina anunciante ()
Diagrama de
Componentes
Diagrama de Componentes

• Objetivo: Identificar componentes


que fazem parte de um sistema,
um subsistema, ou mesmo os
componentes ou classes internas
de um componente individual.
• Forma de documentar arquitetura
de software, arquivos físicos e
estruturas executáveis.
Diagrama de Componentes

• O que é um componente?
– Um unidade autônoma dentro do
sistema.
– Pode representar:
• Componente lógico (componente de negócio)
• Componente físico (código-fonte, bibliotecas,
arquivos de ajuda)
Diagrama de Componentes

• Representação gráfica (1.x X 2.0)

1.x 2.0

Pagina
Pagina
HTML
HTML
Diagrama de Componentes

• Interfaces (conectores)
– Interfaces fornecidas: serviços
oferecidos aos “clientes”.

– Interfaces requeridas: serviços


necessários.
Diagrama de Componentes

• Ex.:

Pagina Servidor
HTML HTTP
Diagrama de Componentes

• Classes e Componentes Internos


– (visão interna “zoom”)

Página HTML

Info_princ
main

Info_portal
Atividade
Faça os diagramas necessários para o seu projeto de
software.
ESCOLHER UM PROJETO E FAZER UM Projeto de
software , NO SLIDE EXISTE UM PROJETO DE BANCO
QUE PODE SER USADO COMO BASE PARA O
DESENVOLVIMENTO. Escolhe um entre.
Projeto de software ( diagrama caso de uso, diagrama
de atividade, classe,componentes, implantação)
Alguma dúvida?