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:
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.