Você está na página 1de 44

PONTIFCIA UNIVERSIDADE CATLICA DE SO PAULO

CURSO DE ESPECIALIZAO EM ENGENHARIA DE SOFTWARE

Modelagem de Software
Orientado a Objetos
Parte 3 Anlise de Modelos de Software

Prof. Maurcio Nacib Pontuschka


tuska@pucsp.br

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Objetivos

Exercitar a elaborao de modelos de software


explorando caractersticas sintticas e semnticas
nos diagramas da UML.
Interpretar modelos diagramados com a UML.
Destacar erros de sintaxe e de semntica em
diagramas UML mais especificamente em
diagramas de casos de uso e diagramas de
seqncia de mensagens.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Onde estamos?

Exerccio 1 Jogo da Velha


Alguns Erros de Diagramao
Restries de Relacionamentos
Exerccio 2 Forum de Notcias
Exerccio 3 Jogo Sudoku

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

O objetivo deste exerccio realizar a modelagem


de um software por meio da UML de forma a
implementar o mundialmente conhecido Jogo da
Velha.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Diagrama de casos de uso

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Descrio de casos de uso


MN#: Iniciar novo jogo
Ator: Jogador
Pr-Condies: nenhuma
Ps-condies: jogo iniciado
FLUXO PRINCIPAL
1 O jogador solicita iniciar o jogo
2 O sistema apresenta um tablado sem
nenhuma marca para o incio do jogo

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Descrio de casos de uso


MN#: Realizar jogada
Ator: Jogador
Pr-Condies: jogo iniciado
Ps-condies: jogada realizada
FLUXO PRINCIPAL
1 O jogador seleciona uma posio do tablado
2 O sistema verifica se a posio est livre
3 Caso a posio esteja livre a marca do
jogador (O ou X) ser colocada na posio
solicitada.
4 O sistema verifica se o jogo terminou.
5 Se no terminou, o sistema alterna a vez do
jogador.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Descrio de casos de uso


FLUXO ALTERNATIVO 1
3 O sistema solicita outra posio ao jogador e
o processo volta ao passo 1 do fluxo
principal.
FLUXO ALTERNATIVO 2
4 Se algum jogador alinhou 3 marcas ou no
existirem mais posies livres o sistema
informa o final do jogo.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Modelo Conceitual

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Diagrama de Robustez

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Diagrama de Robustez

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Diagrama de Robustez

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo da Velha

Diagrama de Seqncia de Mensagens

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Onde estamos?

Exerccio 1 Jogo da Velha


Alguns erros de Diagramao
Restries de Relacionamentos
Exerccio 2 Forum de Notcias
Exerccio 3 Jogo Sudoku

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro de sincronismo de processos em diagramas de


seqncia de mensagens
T:Tela
joo:Desenhista

marcar()

Qual o erro presente no diagrama ao lado?

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro de sincronismo de processos em diagramas de


seqncia de mensagens
T:Tela

Qual o erro presente no diagrama ao lado?

joo:Desenhista

marcar()

O processo marcar() iniciado por outro


processo e deve estar aninhado em relao a
ele. Note que neste diagrama o processo
marcar() termina depois do processo que o
chamou.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro de sincronismo de processos em diagramas de


seqncia de mensagens
T:Tela
joo:Desenhista

marcar()

Como resolver o problema?

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro de sincronismo de processos em diagramas de


seqncia de mensagens
T:Tela

Como resolver o problema?

joo:Desenhista

marcar()

1) Se o processo marcar() necessariamente


deve finalizar aps a finalizao do
processo que o chamou, isto significa que
a chamada deveria ser assncrona!

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro de sincronismo de processos em diagramas de


seqncia de mensagens
T:Tela

Como resolver o problema?

joo:Desenhista

marcar()

2) Normalmente o problema est em


definir realmente que o processo marcar()
deve terminar antes do processo que o
chamou. Portanto devemos prolongar o
tempo de execuo do processo que
emitiu a mensagem at que todas as
mensagens que ele chamou tenham
finalizado.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro na especificao de loops ou blocos restritivos


T:Tela
joo:Desenhista

Loop

marcar()

Qual o erro presente no diagrama ao lado?

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro na especificao de loops ou blocos restritivos


T:Tela

Qual o erro presente no diagrama ao lado?

joo:Desenhista

Loop

marcar()

Note que o bloco restritivo inicia no meio


de um processo que encerrado dentro do
prprio bloco. Um processo no pode
finalizar vrias vezes!

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro na especificao de loops ou blocos restritivos


T:Tela
joo:Desenhista

Loop

marcar()

Como resolver o problema?

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro na especificao de loops ou blocos restritivos


T:Tela

Como resolver o problema?

joo:Desenhista

Loop

marcar()

Devemos garantir que o incio e o trmino


do bloco de restrio ou estejam
inteiramente dentro de um processo ou os
processos estejam inteiramente dentro do
bloco.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro na especificao de loops ou blocos restritivos


T:Tela

Como resolver o problema?

joo:Desenhista

Loop

marcar()

Devemos garantir que o incio e o trmino


do bloco de restrio ou estejam
inteiramente dentro de um processo ou os
processos estejam inteiramente dentro do
bloco.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro no retorno de mensagens


T:Tela
joo:Desenhista

marcar()

tracar()
ok

T:TracaCirculo

Qual o erro presente no diagrama


ao lado?

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro no retorno de mensagens


T:Tela
joo:Desenhista

marcar()

tracar()
ok

T:TracaCirculo

Qual o erro presente no diagrama


ao lado?
O retorno do processo enviado a
outro objeto que no o que enviou
a mensagem.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro no retorno de mensagens


T:Tela

T:TracaCirculo

Como resolver o problema?

joo:Desenhista

marcar()
ok

tracar()
ok

O retorno remete a resposta para o


objeto que o chamou e este objeto
retransmite a mensagem.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Erro no retorno de mensagens


T:Tela

T:TracaCirculo

Como resolver o problema?

joo:Desenhista

marcar()

tracar()
ok

Outra forma ao invs de enviar a


resposta atravs do retorno, envie
uma nova mensagem.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Onde estamos?

Exerccio 1 Jogo da Velha


Alguns Erros de Diagramao
Restries de Relacionamentos
Exerccio 2 Forum de Notcias
Exerccio 3 Jogo Sudoku

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Semntica em relacionamento de classes

Classe1

Classe2

Associao

Classe1

Classe2

Agregao

Classe1

Classe2

Composio

Classe1

Classe2

Generalizao

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Semntica em relacionamento de classes

Estudante

Secretria

Associao

As classes vinculadas por uma associao podem trocar


mensagens.
Exemplo:
Estudante fala com a Secretria

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Semntica em relacionamento de classes

Meias

Gaveta

Agregao

Um relacionamento de agregao indica que objetos de


uma determinada classe possui objetos de outra classe.
Exemplo:
Gaveta possui Meias

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Semntica em relacionamento de classes

Assento

Cadeira

Composio

Um relacionamento de composio indica que o objetos de


uma determinada classe so partes de objetos de uma outra
classe.
Exemplo:
Assento parte de uma Cadeira

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Semntica em relacionamento de classes

Pssaro

Animal

Generalizao

Um relacionamento de generalizao indica uma relao de


herana entre classes e especifica que o objetos de uma
determinada classe so objetos de uma outra classe.
Exemplo:
Pssaro um Animal

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Restries em relacionamentos

Alm de especificar os relacionamentos, ns


podemos especificar restries em relacionamentos.
Repare as afirmaes:
Uma gaveta pode conter meias
Um menino pode ser mordido por cachorros
Como podemos modelar estas afirmaes?
Imaginaremos que o relacionamento entre gaveta e
meia seria guardar e de menino com cachorro
seria morder.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Restries em relacionamentos
guarda

Meias

0..*

mordida

Gaveta

Cachorro 0..*

Menino

Se as multiplicidades dos relacionamentos em ambos os casos


forem 5, quantas meias eu estaria referenciando? E quantos
cachorros?
Os modelos se diferenciam pois no caso das meias estamos
querendo modelar cardinalidadeque referencia diretamente ao
nmero de meias guardadas e no caso dos cachorros
multiplicidade o que referencia o nmero de mordidas e no de
cachorros.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Restries em relacionamentos
guarda

Meias

mordida

Gaveta

Cachorro 5

Menino

No caso das meias, o nmero de meias o prprio nmero de


relacionamentos, no caso do cachorro, o nmero de cachorros
pode ser menor ou igual ao nmero de relacionamentos
(mordidas).
As restries de relacionamento que podemos utilizar para
expressar estes tipos de relacionamento so: SET e BAG.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Restries em relacionamentos
Meias

guarda
{set}

Gaveta

Cachorro 5

mordida
{bag}

Menino

SET: Indica conjunto e portanto no admite mais de um


relacionamento com um mesmo objeto.
BAG: Indica irrestrio, isto , nada se diz a respeito do nmero
de objetos. possvel que todas as mordidas tenham sido
provenientes de um mesmo cachorro.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Onde estamos?

Exerccio 1 Jogo da Velha


Alguns Erros de Diagramao
Restries em Relacionamentos
Exerccio 2 Forum de Notcias
Exerccio 3 Jogo Sudoku

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Forum de Notcias

Elabore um frum de notcias de forma que seja


possvel um usurio cadastrar questes, consultar as
questes, responder questes e consultar respostas.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Onde estamos?
Exerccio 1 Jogo da Velha
Exerccio 2 Forum de Notcias
Exerccio 3 Jogo Sudoku

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo Sudoku
O jogo Sudoku trata-se de uma matriz 9X9 em que alguns
nmeros so dispostos como um enunciado.
O jogador deve posicionar nmeros de 1 a 9 nesta matriz
de forma que em nenhuma linha, coluna ou quadrantes
da matriz sejam alocados numeros repetidos.
Um quadrante uma parte da matriz geral e possui as
dimenses 3X3. Existem 9 quadrantes no sobrepostos
nesta matriz.

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Jogo Sudoku
Coluna

Quadrante

Casa
Linha

Modelagem de Software Orientado a Objetos


Anlise de Modelos de Software

Dvidas?