Vous êtes sur la page 1sur 20

PROJETO DE SOFTWARE

COM UML 2.0


Rodrigo Yoshima




Aspercom Servios de nformtica Ltda.
CNPJ 02.942.579/00001-37
Autor: Rodrigo Yoshima





Projeto de Software com UML 2.0
Outubro de 2005



Copyright 2005, Aspercom. Todos os direitos reservados.
http://www.aspercom.com.br


O contedo deste texto de propriedade da Aspercom Servios de nformtica Ltda.
Qualquer reproduo total ou parcial deste contedo proibida.

9
1. ModeIando o escopo do sistema com Casos de Uso
1.1. Para qu Casos de Uso?
Quem est iniciando projetos usando objetos e UML pode questionar sobre a importncia
de Casos de Uso bem modelados e detalhados, talvez por no entender direito por que e para qu
definir bonequinhos e elipses com nomes de funcionalidades e o que isso adiciona ao projeto.
Olhando para um diagrama de Casos de Uso, pela sua simplicidade, um analista poder
observar rapidamente as funcionalidades envolvidas no sistema, os usurios envolvidos e
integraes com sistemas externos. O propsito maior do Caso de Uso fornecer uma descrio
do comportamento do sistema do ponto de vista do usurio.
O Caso de Uso uma adio muito importante para a abordagem da Anlise Orientada a
Objetos e para o Processo nterativo de Engenharia de Software. A modelagem do diagrama de
Casos de Uso simples e muitos autores ensinam sobre as mais variadas tcnicas para descrever
em texto um Caso de Uso (destacando o timo livro de Alistair Cockburn Writing Effective Use
Cases). Modelando ou escrevendo, o principal para entender a importncia do Caso de Uso so
os objetivos dele:
x Definir Escopo: Um conjunto de Casos de Uso define o escopo do sistema de uma maneira
simples. Se no diagrama aparece um Caso de uso chamado Plantar Batata, os usurios no
podero dizer que plantar couve est no escopo do sistema.
x Organizar e dividir o trabaIho: O Caso de Uso uma importante unidade de organizao do
trabalho dentro do projeto, geralmente nas equipes de projeto comum ouvir que o Z est
trabalhando no Caso de Uso X e o Joo est com o Caso de Uso Y. A unidade do Caso de Uso
divide o trabalho da equipe entre as pessoas, fora isso, comum dizer que o Caso de Uso est em
Anlise, em Programao ou em Teste. Casos de Uso tambm so entregues separadamente aos
usurios em conjuntos divididos em fases ou iteraes no projeto. Ento, dizemos que a primeira
iterao (ou entrega) ter os Casos de Uso X, Y, Z e W e na segunda iterao ter os Casos de
Uso T, H, e J.
x Estimar o tamanho do projeto: O Caso de Uso fornece mtricas para definir o tempo de
desenvolvimento. Uma das mtricas que pode ser aplicada sobre Casos de Uso a UCP (Use
Case Point) que consiste em classificar os Casos de Uso em nvel de complexidade e somando
todos os Casos de Uso do projeto (e mais alguns fatores) voc consegue estimar o esforo do
projeto em horas. Alm do UCP, podem ser aplicadas as tcnicas de Pontos de Funo (Function
Points) que so mais padronizadas e completas.
x Direcionar os testes: Os testes do sistema (essencialmente os funcionais que so os mais
importantes) so derivados do Caso de Uso. Essa caracterstica uma das mais importantes e
geralmente desprezada, pois com Casos de Uso, os testes so planejados no incio do projeto e
no no fim, diminuindo os riscos. A partir dos Casos de Uso, Casos de Teste so criados para
validar o funcionamento do software.
Uma das questes em aberto sobre os Casos de Uso a confuso que fazem com o
diagrama e a narrativa (texto) do Caso de Uso. sso porque a UML define somente como deve
ser o Diagrama de Casos de Uso, e no a narrativa. Desse modo, no h um consenso geral
sobre como descrever a narrativa, existem muitas tcnicas e difcil julgar que uma tcnica certa
e a outra errada, depende muito do projeto, dos seus processos e ferramentas que voc tem
disposio.

10
1.2. Diagrama de Casos de Uso (ud)
Bom, antes de comear a discutir sobre como definir uma narrativa onde no h consenso,
vamos nos focar no diagrama que a UML especifica direitinho as regras de como ele deve ser:

ud caso de uso
Ator
Caso de Uso

Figura 1 EIementos de um diagrama de Casos de Uso
A notao bsica do diagrama so Atores representados pelos bonequinhos. Uma linha
conecta atores aos Casos de Uso informando que o sistema permitir ao Ator usar o Caso de
Uso diretamente. Os Casos de Uso so representados por elipses (existem notaes alternativas
para os elementos, mas essas so as mais usuais).
1.3. Atores
O Ator, em um diagrama de Casos de Uso (ud), tambm pode ser confuso para os novatos
na abordagem, mas para todo e qualquer efeito bom sempre ter em mente que um Ator um
PAPEL DESEMPENHADO POR ALGUMA COISA EXTERNA ao sistema (no necessariamente
uma pessoa). At mesmo o tempo pode ser um Ator para tarefas que ocorrem com freqncia
temporal.
Essa definio ainda aparenta no ser to simples, vou demonstrar os erros mais comuns a
respeito dos Atores:
x Componentes internos do sistema no so Atores: comum o analista imaginar que porque
sistemas externos podem ser atores, o banco de dados da aplicao que est sendo desenvolvida
deve ser um ator tambm, mas isso errado, lembre que Ator um papel de responsabilidade
externa ao sistema. O que deve funcionar dentro da responsabilidade do sistema no pode ser
extrado como um Ator.
x Hardwares internos do sistema no so Atores: Voc pode imaginar que um servidor
externo ao sistema, ou uma impressora em um Caso de Uso que precise imprimir alguma coisa
externa ao sistema tambm, porm, esses itens externos ao sistema so componentes que o
software pressupe que existem e cumpriro seu papel. Ento, so como os componentes do
funcionamento interno do software (como o banco de dados da aplicao) e assim sendo, no so
Atores. AIguns tipos de hardwares podem ser Atores, mas somente quando for importante para a
anlise do sistema destacar a presena desse hardware. Por exemplo, softwares para controles
industriais podem ter alguns sensores que indicam algum tipo de problema na linha de produo e
disparam algum comportamento (Caso de Uso) no sistema. Este sim pode ser um hardware que
um Ator no sistema, pois importante destacar isso para o funcionamento do Caso de Uso. Outro
hardware que pode ser um Ator seria a catraca do controle de ponto (entrada e sada de
funcionrios) para um sistema de Administrao de Pessoal. Ela desempenha um papel no
sistema, seria um Ator.

11
x A definio de Atores (e Casos de Uso) no o controIe de acessos da apIicao: Esse
erro tambm comum: confundir a definio de Atores com o que os usurios podem ou no fazer
dentro do sistema. No essa a idia! A representao do Ator somente destaca o papel que um
usurio assume ao usar o Caso de Uso.
ud pedido
Vendedor
Emitir Pedido
Gerente de Vendas
Aprovar Pedido

Figura 2 Papis x Usurios
Neste exemplo, o diagrama de Casos de Uso somente diz que para Emitir Pedido o
usurio dever assumir o papel de Vendedor, isso no implica que um usurio que possui o
cargo de vendedor na organizao no possa Aprovar Pedido.
O que consideramos mais importante na definio de Atores dar nome aos papis que
pessoas assumiro ao usar o sistema e informar integraes com sistemas externos. Enfim, em
90% dos casos um Ator ser uma pessoa (usurio do sistema) ou um sistema externo. sso serve
para dar clareza a quem l o diagrama deixando as coisas o mais simples possvel.
Tambm possvel definir uma herana entre Atores para estabelecer generalizaes de
Atores. Veja o conceito geral de generalizao no Captulo 4 - Diagrama de Classes.
ud generaIizao de ator
Vendedor
Vendedor LocaI Vendedor Remoto

Figura 3 GeneraIizao de Atores
A generalizao de Atores serve para passar a idia de algo em comum entre papis no
sistema. Assim, se um Caso de Uso requer um Vendedor, vendedores remotos e locais se
encaixam no papel pela herana. Essa notao tambm no muito comum, pois para pessoal
no tcnico, o conceito de generalizao no fcil de compreender.

12
1.4. Caso de Uso
A representao do Caso de Uso no Diagrama simples: a elipse representa uma forma
que o sistema se comporta do ponto de vista do Ator. O nome do Caso de Uso uma forma de
elucidar esse comportamento do sistema, assim sendo, o nome do caso de uso define o
OBJETIVO do Ator, isto , o que ele quer fazer no sistema.
ud pedido
Vendedor
Emitir Pedido

Figura 4 Caso de Uso = Objetivo do Ator
Todo o conjunto de Casos de Uso e Atores do sistema organiza o escopo do sistema a
respeito dos objetivos que os usurios atingiro quando o sistema estiver pronto.
ud Sistema de Pedidos
Vendedor
Emitir Pedido
Gerente de Vendas
Aprovar Pedido
Manter Produtos
Faturista
Despachar Pedido
Sistema ERP
ConsuItar Preos
ConsuItar Pedido

Figura 5 Todos os Casos de Uso = Escopo
Dar nomes aos Casos de Uso com o objetivo do Ator a maneira de tornar o diagrama
claro para o pessoal menos tcnico saber exatamente o que ser possvel fazer no sistema. A
narrativa (texto) do Caso de Uso deve ser consistente com esse objetivo definido pelo seu nome.

13
1.5. Narrativa do Caso de Uso
importante citar que quando dizemos Caso de Uso, estamos mais preocupados com a
narrativa do Caso de Uso do que com o desenho da elipse no diagrama, ou o prprio diagrama.
sso porque nos projetos, associamos o termo Caso de Uso ao texto, narrativa, e no ao
desenho. a narrativa do Caso de Uso que importante, ela que permite os benefcios j
citados, e no o desenho. O desenho serve mais para organizar os Casos de Uso e representar
graficamente (que mais amigvel do que o texto) as funcionalidades do sistema.

CASO DE USO = DAGRAMA + NARRATVA

Como j disse, existem inmeros formatos ou templates de preenchimento de uma
narrativa de Caso de Uso. Meu objetivo aqui apresentar o conceito que se aplica a maioria dos
formatos com exemplos claros. Gostaria reforar mais uma vez que a UML no define o modo
como uma narrativa deve ser descrita. A UML se limita apenas forma de diagramar o modelo de
Casos de Uso (notao).
A narrativa do Caso de Uso um texto passo a passo sobre as aes que o Ator pode
tomar e como o Sistema responder a esta ao. A narrativa vai ento evoluindo, entre aes do
Ator e as respostas do Sistema, para o objetivo do Ator, at este ser alcanado.
Um dos erros mais comuns que vemos nas narrativas de Casos de Uso o analista
imaginar o Caso de Uso como um programa e tratar a sua narrativa como um passo a passo sobre
as tarefas internas do sistema. O analista tambm pode errar se quebrar o objetivo do Ator em
diversos Casos de Uso menores j imaginando como o sistema ser implementado (como a
decomposio funcional). Lembre-se: nesse momento o seu foco deve ser o objetivo do Ator, e
no como o sistema resolver esse objetivo.
Como exemplo: o Caso de Uso Emitir Pedido envolve vrias tarefas menores como
selecionar produtos, escolher forma de pagamento, calcular descontos, escolher forma de entrega,
porm, tudo isso so partes do objetivo maior que emitir o pedido.
O Caso de Uso um objetivo do Ator e no uma tarefa do sistema. Uma das formas de
evitar essa proliferao de Casos de Uso no sistema perguntar a si mesmo ao criar um Caso de
Uso:
x Se eu entregar esse Caso de Uso sozinho para os usurios do sistema, resolveria algum
problema deles? Agregaria algum valor para os usurios? Com esse Caso de Uso o usurio
conseguiria resolver algum problema que o sistema deve atender?
Acho que essas perguntas so suficientes. Como exemplo, no caso acima, se o analista
criar um Caso de Uso chamado Escolher Forma de Pagamento e entregar ele sozinho para os
usurios teria algum valor? Claro que no. Pode ter certeza que os usurios diriam que no serve
pra nada fora da funcionalidade Emitir Pedido.

IMPORTANTE: Na narrativa do Caso de Uso a resposta do sistema deve se limitar somente ao
que o Ator consegue ver. No necessrio se preocupar em como o sistema obteve ou calculou
os dados. Limite-se a escrever o que o sistema responde e no como ele obtm a resposta.

14
Para exemplificar uma narrativa, vamos descrever o Caso de Uso Emitir Pedido em texto:

Caso de Uso: Emitir Pedido
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Emitir Pedido;
2. O Sistema oferece a interface para emisso de pedidos;
3. O Ator seleciona um cliente para o pedido;
4. O Sistema exibe as informaes do cliente;
5. O Ator seleciona um grupo de produtos;
6. O Sistema lista os subgrupos do grupo selecionado;
7. O Ator seleciona um subgrupo de produtos;
8. O Sistema apresenta os produtos do subgrupo selecionado;
9. O Ator seleciona os produtos desejados pelo cliente;
10. O Sistema calcula os preos e impostos dos produtos;
11. O Ator informa que deseja finalizar o pedido;
12. O Sistema questiona sobre a forma de pagamento e entrega;
13. O Ator seleciona a forma de pagamento e entrega;
14. O Sistema informa o adicional de juros, o frete e solicita uma confirmao de todos
os dados do pedido;
15. O Ator confirma o pedido;
16. O Sistema informa que o pedido foi emitido com sucesso;


Note que o Caso de Uso no revela sobre como o sistema dever resolver algumas
questes difceis como calcular preos e impostos. Pode ter certeza esses pontos envolvem regras
complexas e clculos com vrias informaes de diversas tabelas do sistema, porm, os detalhes
de como sero resolvidos internamente o Ator no consegue ver. Nesse ponto do projeto nosso
trabalho se limita ao que o sistema deve fazer (escopo), e no como ele ir fazer (implementao).
Essa regra de escrever somente o que o usurio v importante para agilizar a fase de
anlise do sistema e principalmente esta regra que permite derivar os Casos de Teste a partir da
narrativa, pois sabendo o que o sistema deve fazer possvel pIanejar como testar a
funcionalidade independente de como ficar a implementao.

15
1.6. Relacionamento include entre Casos de Uso
Vamos descrever tambm o Caso de Uso Consultar Preo:
ud Sistema de Pedidos
Vendedor
ConsuItar Preos


Caso de Uso: ConsuItar Preo
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Preo;
2. O Sistema oferece a interface para consulta de preos;
3. O Ator seleciona um grupo de produtos;
4. O Sistema lista os subgrupos do grupo selecionado;
5. O Ator seleciona um subgrupo de produtos;
6. O Sistema apresenta os produtos do subgrupo selecionado;
7. O Ator seleciona os produtos;
8. O Sistema calcula os preos;

Observando o Caso de Uso Emitir Pedido descrito anteriormente, os passos para a
seleo de produtos possuem um comportamento exatamente igual. Nesse caso, possvel extrair
os passos iguais e criar um novo Caso de Uso separado com um relacionamento include entre
eles:
ud incIude
Vendedor
Emitir Pedido
ConsuItar Preos
SeIecionar Produtos
i nclude
i nclude

Figura 6 Notao do ReIacionamento incIude entre Casos de Uso

16
Este novo Caso de Uso Selecionar Produtos seria assim:

Caso de Uso: SeIecionar Produtos
1. O Ator seleciona um grupo de produtos;
2. O Sistema lista os subgrupos do grupo selecionado;
3. O Ator seleciona um subgrupo de produtos;
4. O Sistema apresenta os produtos do subgrupo selecionado;
5. O Ator seleciona os produtos;

provvel que voc esteja questionando: sso no quebrar o objetivo em Casos de Uso
menores ou decomposio funcional? Eu respondo que no. A tcnica de extrair um Caso de Uso
de dentro de outro s deve ser aplicada quando visar reutiIizao do comportamento que est
sendo extrado. Como foi descrito no exemplo, o Caso de Uso Consultar Preo possua um
trecho de comportamento que j existia em Emitir Pedido, por esse motivo o Caso de Uso
Selecionar Produtos foi extrado. Se no existisse Consultar Preo, o comportamento de
selecionar produtos ainda ficaria dentro de Emitir Pedido.
Ou ento voc poderia perguntar: Agregaria algum valor para o usurio entregar o Caso
de Uso Selecionar Produtos isoladamente? Observe melhor o diagrama da figura 6, o Caso de
Uso Selecionar Produtos no est relacionado com nenhum Ator diretamente, assim sendo, ele
no pode ser utilizado fora de Emitir Pedido ou Consultar Preos. Deste modo, ele no pode ser
entregue sozinho para o usurio, o escopo no define que um Ator pode utiliz-lo diretamente.
Do mesmo modo, outro conceito que deve ser levado em considerao so as
dependncias no modeIo UML. Exploraremos melhor este conceito no Captulo 4 - Diagrama de
Classes, adiantando, a linha tracejada que liga os Casos de Uso com o relacionamento include
significa que o elemento que est lanando a seta depende do elemento que est sendo atingido
pela seta. Assim, o Caso de Uso Emitir Pedido depende de Selecionar Produtos. Emitir
Pedido s pode ser testado e entregue aos usurios aps ou juntamente com Selecionar
Produtos. No possvel atingir o objetivo do Ator em Emitir Pedido sem Selecionar Produtos,
o mesmo acontece com Consultar Preos.
Aps a criao do relacionamento, o Caso de Uso Consultar Preos ficaria assim:

Caso de Uso: ConsuItar Preo Verso: 1.1
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Preo;
2. O Sistema oferece a interface para consulta de preos;
3. O Ator seleciona produtos; Usa "SeIecionar Produtos";
4. O Sistema calcula os preos;



17
A mesma alterao se aplica ao Emitir Pedido:

Caso de Uso: Emitir Pedido Verso: 1.1
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Emitir Pedido;
2. O Sistema oferece a interface para emisso de pedidos;
3. O Ator seleciona um cliente para o pedido;
4. O Sistema exibe as informaes do cliente;
5. O Ator seleciona produtos; Usa "SeIecionar Produtos";
6. O Sistema calcula os preos e impostos dos produtos;
7. O Ator informa que deseja finalizar o pedido;
8. O Sistema questiona sobre a forma de pagamento e entrega;
9. O Ator seleciona a forma de pagamento e entrega;
10. O Sistema informa o adicional de juros, o frete e solicita uma confirmao de todos
os dados do pedido;
11. O Ator confirma o pedido;
12. O Sistema informa que o pedido foi emitido com sucesso;


As alteraes acima nos demonstram uma regra importante sobre o relacionamento
include: o Caso de Uso que atira a seta passa o controle para o outro Caso de Uso
mencionando isso da narrativa (destacado em negrito). Por outro lado, o Caso de Uso includo
Selecionar Produto no precisa se preocupar sobre quem o iniciou. O Caso de Uso includo
independente de quem o est usando.
Como j foi citado, o Caso de Uso um importante meio de dividir o sistema em fases
entregveis (iteraes) visando disponibilizar o sistema em pedaos incrementais para os
usurios, e no tudo no final do projeto. Este um modo importante de reduzir o risco. Observar
as dependncias de Casos de Uso um instrumento importante para definir o que entra em uma
iterao.
1.7. Fluxos Alternativos
At agora descrevemos narrativas somente com o que chamamos fluxo bsico. O fluxo
bsico do Caso de Uso a maneira mais comum que o Ator usar para atingir o seu objetivo, mas
como a vida no um mar de rosas na produo de software, pode ser que existam outros
caminhos para atingir o mesmo objetivo, ou por alguma razo o objetivo no pode ser alcanado.
O sistema necessitar atender a outros fluxos que o Ator deseja para chegar l. Tendo
isso em vista, a tcnica de Casos de Uso nos fornece a ferramenta do fluxo alternativo.

18
Vamos continuar nossa anlise com o prximo Caso de Uso Consultar Pedido:

Caso de Uso: ConsuItar Pedido
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Pedido;
2. O Sistema oferece a interface de consulta para pedidos;
3. O Ator informa o nmero do pedido desejado;
4. O Sistema exibe os dados do pedido;

Julgando que o Caso de Uso estaria finalizado, o analista foi checar se a sua narrativa
estaria atendendo a todos os requisitos que o Caso de Uso deveria atender. Ele deixou escapar o
seguinte pargrafo dos requisitos:
"O sistema dever permitir consulta do pedido por nmero ou atravs de uma lista de
pedidos por cliente, nesse ltimo caso, a lista dever ter todos os pedidos no faturados do cliente
em ordem cronolgica decrescente para seleo".
A narrativa que ele descreveu no atende a este requisito. O usurio pode escolher entre o
Caso de Uso do jeito que est e atravs de uma lista de pedidos do cliente. Usaremos um Fluxo
Alternativo para atender essa necessidade:

Caso de Uso: ConsuItar Pedido Verso: 1.1
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Pedido;
2. O Sistema oferece a interface de consulta para pedidos;
3. O Ator informa o nmero do pedido desejado [A1];
4. O Sistema exibe os dados do pedido;

Fluxo Alternativo A1 - Consultar por Cliente
3. O Ator informa um cliente;
3.1. O Sistema exibe uma lista de pedidos do cliente selecionado em ordem cronolgica
decrescente;
3.2. O Ator seleciona um pedido do cliente; volta ao fluxo bsico;


Nesse exemplo, o fluxo alternativo foi provocado por uma escolha do Ator no passo 3. O
fluxo do Caso de Uso foi desviado para A1 e aps esse desvio, voltou para o Fluxo Bsico ( veja o
passo A1 - 3.2). Assim, vemos que um Fluxo Bsico pode ser desviado para um Fluxo Alternativo
devido a uma escolha ou ao do Ator.

19
Fora o desvio causado pela escolha do Ator, existe somente mais um modo do fluxo do
Caso de Uso ser desviado: uma ocorrncia de sistema ou o estado do sistema. magine que o
nosso analista novamente achou mais um requisito do sistema que o Caso de Uso dele deveria
atender:
"Pedidos cancelados no podem ser consultados."
Vamos criar mais um fluxo alternativo:

Caso de Uso: ConsuItar Pedido Verso: 1.2
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Pedido;
2. O Sistema oferece a interface de consulta para pedidos;
3. O Ator informa o nmero do pedido desejado [A1];
4. O Sistema exibe os dados do pedido [A2];

Fluxo Alternativo A1 - Consultar por Cliente
3. O Ator informa um cliente;
3.1. O Sistema exibe uma lista de pedidos do cliente selecionado em ordem cronolgica
decrescente;
3.2. O Ator seleciona um pedido do cliente; volta ao fluxo bsico;

Fluxo Alternativo A2 - Pedidos Cancelados no podem ser consultados
4. O Sistema informa que o pedido est cancelado e volta ao passo 2 do fluxo bsico;


Nesse caso, no foi opo do Ator o desvio no passo 4 para A2, e sim o estado do pedido
dentro do sistema que provocou esse desvio.
Outra diferena que deve ser notada que A2 solicitou que fosse retornado para o passo 2
no fluxo bsico. J o fluxo alternativo A1 solicitou que o fluxo bsico continuasse. Uma outra
situao que pode ocorrer um fluxo alternativo solicitar que o Caso de Uso seja encerrado.
Vamos demonstrar:

Caso de Uso: ConsuItar Pedido Verso: 1.3
Ator: Vendedor
1. O Ator inicia o caso de uso selecionando Consultar Pedido;
2. O Sistema oferece a interface de consulta para pedidos [A3];
3. O Ator informa o nmero do pedido desejado [A1];
4. O Sistema exibe os dados do pedido [A2];

20

Fluxo Alternativo A1 - Consultar por Cliente
3. O Ator informa um cliente;
3.1. O Sistema exibe uma lista de pedidos do cliente selecionado em ordem cronolgica
decrescente;
3.2. O Ator seleciona um pedido do cliente; volta ao fluxo bsico;

Fluxo Alternativo A2 - Pedidos Cancelados no podem ser consultados
4. O Sistema informa que o pedido est cancelado e volta ao passo 2 do fluxo bsico;

Fluxo Alternativo A3 - No existem pedidos para consulta
2. O Sistema informa que no existem pedidos a serem consultados; o caso de uso
encerrado;


O Fluxo A3, assim como o A2, ocorreu pelo estado do sistema (o sistema no possui
pedidos para consulta), e no por opo do Ator. O Fluxo A3 encerra o Caso de Uso.

IMPORTANTE: Note que em toda narrativa do Caso de Uso esto descritas vrias regras de
condies para que fluxos alternativos ocorram, mas voc no consegue encontrar em todo o texto
uma s ocorrncia da palavra se como: se o Ator fizer isso, ento ocorrer aquilo. Todas as
alternativas esto em forma de afirmao.
Casos de Uso bem descritos no possuem a palavra se para definir o rumo dentro dos fluxos
possveis. Toda ocorrncia da palavra se pode ser substituda por um Fluxo Alternativo para
permitir a decomposio de todos os caminhos possveis do Caso de Uso (cenrios). Cenrios so
importantes para a criao dos Casos de Teste que validaro a funcionalidade implementada. Os
cenrios extrados da narrativa para teste so TODAS as combinaes vlidas de caminhos
possveis. Todas as maneiras possveis de se navegar em um Caso de Uso so testadas.

SOBRE O DIAGRAMA: Fluxos Alternativos da narrativa de um Caso de Uso no alteram em nada
a notao do diagrama UML.

Assim, em linhas gerais, resumimos as causas e efeitos dos Fluxos Alternativos:

O que causa um Fluxo Alternativo: O que um Fluxo Alternativo pode fazer:
x uma escolha do Ator;
x o estado do Sistema.

x retroceder para um passo anterior;
x avanar para um passo posterior;
x finalizar o Caso de Uso;


21

Uma ferramenta importante para o entendimento dos Cenrios do Caso de Uso o
Diagrama de Atividades que ser explicado no Captulo 2. Somente para que o quadro acima seja
mais bem entendido, verifique o diagrama a seguir:
ad ConsuItar Pedido
i nici o
Passo 1
Passo 2
Passo 3
Passo 4
fi m
A1 A2
A3
fi m

Figura 7 FIuxos de um Caso de Uso
O Diagrama de Atividades muito utilizado para demonstrar Casos de Uso complexos
(com muitos fluxos alternativos). Muitas vezes, um Diagrama de Atividades que mais visual
simplifica a maneira do leitor visualizar as situaes possveis do fluxo do Caso de Uso. Sempre
use um Diagrama de Atividades quando a leitura da sua narrativa ficar confusa ou complexa.
Vamos detalhar os cenrios no tpico seguinte.

22
1.8. O que so cenrios?
Uma demonstrao importante para o entendimento dos Fluxos Alternativos do Caso de
Uso so os Cenrios. Veja a figura a seguir:


Essa ilustrao nos mostra o Fluxo Bsico como a seta preta. a maneira mais usual do
ator atingir o seu objetivo no Caso de Uso. As outras setas so os Fluxos Alternativos. Essas setas
avanam ou retornam no Fluxo Bsico ou encerram o Caso de Uso (ver o indicador X). Os
cenrios so todos os caminhos possveis que o Caso de Uso pode ter desde o Fluxo Bsico at
todos os Fluxos Alternativos combinados entre si.
Vamos verificar quais seriam alguns cenrios do Consultar Pedido.Analisando todas as
possibilidades dos caminhos que o Caso de Uso pode tomar, nesse exemplo simples, os cenrios
existentes so:

Cenrio 1 : Passo 1, Passo 2, Passo 3, Passo 4 (Fluxo Bsico);
Cenrio 2 : Passo 1, Passo 2, A1 , Passo 4;
Cenrio 3 : Passo 1, Passo 2, Passo 3, A2 , Passo 2;
Cenrio 4 : Passo 1, Passo 2, A1 , A2 , Passo 2;
Cenrio 5 : Passo 1, A3.


23
O cenrio 1 o mais simples, pois o prprio Fluxo Bsico. O cenrio 2 seria o seguinte:

Caso de Uso: ConsuItar Pedido Verso: 1.3
Cenrio 2
1. O Ator inicia o caso de uso selecionando "Consultar Pedido";
2. O Sistema oferece a interface de consulta para pedidos;
3. O Ator informa um cliente;
3.1. O Sistema exibe uma lista de pedidos do cliente selecionado em ordem cronolgica
decrescente;
3.2. O Ator seleciona um pedido do cliente;
4. O Sistema exibe os dados do pedido;


1.9. Precondio e Ps-condies
Explicado o conceito de cenrio, podemos introduzir mais um elemento presente nas
narrativas de Casos de Uso: a precondio e as ps-condies. Esses dois elementos so
importantes, pois demonstram restries para um Caso de Uso iniciar e garantias mnimas
alcanadas quando este terminar.
Verifique a figura das setas da pgina anterior para podemos entender melhor este
mecanismo. A precondio seria a condio do Sistema que permitiria a seta preta iniciar. J todos
os smbolos (X), seriam as ps-condies: os resultados observveis do Caso de Uso (sejam de
sucesso ou de fracasso com relao ao objetivo do Ator).
Com este desenho chegamos a uma importante definio: O Caso de Uso possui uma
precondio e geraImente vrias ps-condies.
A precondio uma restrio sobre quando um Caso de Uso pode ser iniciado. PRESTE
ATENO! a CONDO que o Sistema deve se encontrar para permitir que o Caso de Uso
inicie. No confunda com o evento que inicia o Caso de Uso. A precondio mais comum nos
sistemas "O usurio deve estar logado". Vamos imaginar que a arquitetura da nossa aplicao
de pedidos seja integrada com a autenticao do domnio da rede, nosso Caso de Uso "Consultar
Pedido" ficaria assim:

Caso de Uso: ConsuItar Pedido Verso: 1.3
Ator: Vendedor
Precondio: O usurio deve estar Iogado.
1. O Ator inicia o caso de uso selecionando Consultar Pedido;
2. O Sistema oferece a interface de consulta para pedidos [A3];
3. O Ator informa o nmero do pedido desejado [A1];
4. O Sistema exibe os dados do pedido [A2];
[os fluxos alternativos foram suprimidos]

24
importante ressaltar que a precondio um elemento opcional da narrativa do Caso de
Uso. O que descrevemos na precondio deve ser importante e agregar um valor observvel
anlise. Fazemos essa observao, pois muito comum achar alguns escritos "bvios" nas
precondies, veja alguns exemplos:

x O usurio deve ter acesso a um terminal
x O usurio deve saber escrever
x O sistema deve estar funcionando
x A base de dados deve estar configurada

Geralmente a precondio de um Caso de Uso uma ps-condio de um Caso de Uso
anterior. Se a nossa aplicao de pedidos no fosse integrada com o login da rede possivelmente
teramos um Caso de Uso "Login" que teria como ps-condio "O usurio deve estar logado".
Vamos ver quais seriam as ps-condies de Consultar Pedidos:

Caso de Uso: ConsuItar Pedido Verso: 1.3
Ator: Vendedor
Precondio: O usurio deve estar Iogado.
5. O Ator inicia o caso de uso selecionando Consultar Pedido;
6. O Sistema oferece a interface de consulta para pedidos [A3];
7. O Ator informa o nmero do pedido desejado [A1];
8. O Sistema exibe os dados do pedido [A2];
[os fluxos alternativos foram suprimidos]
Ps-condies: Um pedido seIecionado; No existem pedidos para consuIta.

As ps-condies descrevem os resultados observveis de sucesso ou de falha do Caso
de Uso. As ps-condies so importantes, pois mostram as garantias mnimas que um Caso de
Uso deve oferecer.

1.10. Relacionamento extend entre Casos de Uso
A melhor maneira de explicar um conceito entender quais foram os problemas e
necessidades que foram enfrentadas para definir a soluo. Quando a tcnica de Caso de Uso se
desenvolveu os analistas tinham um problema para acrescentar comportamentos em Casos de
Uso que j estavam definidos ou at implantados. Os analistas imaginavam que seria muito bom
se o Caso de Uso definido abrisse uma porta para que os novos comportamentos da evoluo do
software fossem incorporados. Essa foi a motivao do relacionamento extend.
Um Caso de Uso disponibiliza um ponto de extenso (extension point) que outros Casos de
Uso podem observar e de acordo com uma condio, este Caso de Uso que est observando
pode assumir o controle e embutir os seus comportamentos.

25
Essa tcnica permitiu a soluo do problema que eles tinham e abriu tambm outras
possibilidades importantes para os Casos de Uso. Mesmo para Casos de Uso ainda em
construo, possvel acrescentar vrios comportamentos simplesmente abrindo uma extension
point. Como um exemplo vale mais que palavras, vamos diagramar:
ud extension point
Aprovar Pedido
Extension points:
heIp
Gerente de Vendas
ConsuItar HeIp
{usuri o sel eci onou "Hel p"}
extend

Figura 8 ReIacionamento <<extend>> entre Casos de Uso
Os usurios do sistema solicitaram que fosse criado um Help para o Caso de Uso
Aprovar Pedido. A qualquer momento em Aprovar Pedido o usurio poder selecionar o Help.
Assim, Consultar Help observa Aprovar Pedido, se a condio destacada {usurio selecionou
Help} for satisfeita o Caso de Uso Aprovar Pedido ir parar (simplesmente parar, e no
encerrar) e o Consultar Help iniciar. Quando Consultar Help for encerrado Aprovar Pedido
continuar de onde parou.
Para direcionar melhor o uso do relacionamento extend, podemos afirmar que voc
usar esta tcnica quando necessitar que a quaIquer momento dada uma condio, o Caso de
Uso base dever ser interrompido e outro Caso de Uso dever assumir o controle.
GeraImente um extend utilizado quando o Caso de Uso que est estendendo (que
atira a seta) um servio assncrono que pode ser utilizado se a condio descrita ocorrer no
Caso de Uso base (que foi atingido pela seta).
Para exemplificar a narrativa, vamos descrever o Caso de Uso base:

Caso de Uso: Aprovar Pedido
Ator: Vendedor
Extension Points: heIp
1. O Ator inicia o caso de uso selecionando Aprovar Pedido;
2. O Sistema oferece a interface exibindo uma lista de pedidos para aprovao;
3. O Ator seleciona o pedido;
4. O Sistema aprova o pedido;


26

Note como no existe qualquer meno ao Caso de Uso que est estendendo Consultar
Help, vamos descrev-lo:

Caso de Uso: ConsuItar HeIp
1. O Ator inicia o caso de uso selecionando a opo Help em Aprovar Pedido;
2. O Sistema oferece a interface exibindo a ajuda do sistema;


O ponto de extenso (extension point) no precisa necessariamente ser definido, e
tambm, ele pode ser definido em um ponto especfico da narrativa, e no como em qualquer
momento como o exemplo ditou. Uma narrativa deste modo poderia ser assim:

Caso de Uso: Aprovar Pedido (exempIo 2)
Ator: Vendedor
Extension Points: heIp
1. O Ator inicia o caso de uso selecionando Aprovar Pedido;
2. O Sistema oferece a interface exibindo uma lista de pedidos para aprovao;
3. [extension point: help]
4. O Ator seleciona o pedido;
5. O Sistema aprova o pedido;


Neste exemplo 2 do Caso de Uso, a condio {usurio selecionou Help} s seria avaliada
no passo 3.

Vous aimerez peut-être aussi