Exemplo: Evolução do Modelo de Caso de Uso
Este exemplo ilustra como o modelo de caso de uso evolui no tempo quando você usa uma abordagem "abranger antes de aprofundar" para maximizar o valor e minimizar o risco o mais cedo no ciclo de vida e para minimizar o re-trabalho mais tarde.
Relacionamentos
Descrição
Descrição Principal

Introdução

Este exemplo ilustra como o modelo de caso de uso e a especificação de caso de uso associada, evoluirão durante o ciclo de vida. Mostra o estado do modelo de caso de uso em dois pontos no ciclo de vida: concepção inicial e no fim da elaboração. A finalidade é ilustrar como alguém pode Encontrar e Descrever os Requisitos e Detalhar os Requisitos para maximizar o valor aos Stakeholders e minimizar o risco o mais cedo no projeto, bem como minimizar o re-trabalho mais tarde.

O exemplo usa um Caixa Automático como sistema de exemplo porque é familiar para a maioria das pessoas. Esta familiaridade simplifica a compreensão dos princípios sem se perder na terminologia específica do domínio.

Concepção Inicial

Assuma que você acabou de começar no projeto como Analista. Você identificou os principais Stakeholders e se reuniu com eles para discutir as suas necessidades. Durante as reuniões, você identificou uma série de atores chave, casos de uso e requisitos suplementares para o sistema ATM. Você capturou os casos de uso e os atores, apenas com os nomes e descrições resumidas, no modelo de caso de uso. Um exemplo deste trabalho é fornecido no documento Concepção do Modelo de Caso de Uso do ATM.

Antes de investir tempo significativo para detalhar estes casos de uso, você reconhece que a abordagem "abranger antes de aprofundar" pode economizar tempo valioso e permitir a identificação dos itens de maior valor e maior risco de forma que você possa se concentrar neles primeiro.

Você faz uma sessão de brainstorming com os Stakeholders e descreve o fluxo básico de cada um dos principais casos de uso. Enquanto você está trabalhando, você pode identificar alguns fluxos alternativos adicionais. Lute contra o impulso de "mergulhar" nos detalhes destes fluxos alternativos neste momento, simplesmente relacione-os e volte mais tarde quando você tiver um melhor entendimento da "grande imagem".

Exemplos das notas que você toma durante este exercício estão nos anexos. (Descrição de Retirar Dinheiro, Descrição de Depositar Fundos e Descrição de Transferir Fundos).
Nota: a escolha da fonte é intencional para ilustrar que são notas, e não documentos formais.

Revisando suas notas, você reconhece que existe algum comportamento que é comum à maioria dos casos de uso, que são os passos necessários para validar o Cliente do Banco. Fatorar este comportamento em um caso de uso <<include>> simplificará a comunicação, o planejamento da iteração e a manutenção.

Você atualiza o modelo de caso de uso para ficar de acordo: Elaboração do Modelo de Caso de Uso do ATM

Elaboração

Com uma melhor compreensão do sistema, você pode agora dar prioridade a seu esforço para maximizar o valor e minimizar o risco. Você começa detalhando o comportamento comum capturado no caso de uso: Validar Usuário. Este caso de uso captura os principais requisitos arquiteturais que exercitarão uma parcela significativa do sistema (comunicação com o banco, interface do leitor de cartão, etc.). Implementar este principal cenário irá reduzir bastante o risco.

Um exemplo da especificação do caso de uso Validar Usuário está em anexo: Especificação de Caso de Uso - Validar Usuário.

Note que pode ainda haver algumas perguntas não respondidas, mas isto é normal. Capture-as diretamente na especificação de caso de uso e responda-as (veja a Seção 5.6 da Especificação de Caso de Uso Validar Usuário).

Continuando com uma outra linha arquiteturalmente significativa, você detalha o fluxo básico e alguns fluxos alternativos principais do caso de uso: Retirar Dinheiro. Você sabe que se a equipe puder implementá-lo, muito das outras funcionalidades será de baixo risco.

Um exemplo da especificação do caso de uso Retirar Dinheiro está em anexo: Especificação de Caso de Uso - Retirar Dinheiro.

Resumo

Seguindo a abordagem "abranger antes de aprofundar" para descrever e detalhar os casos de uso, você pode tomar melhores decisões na priorização. Comece identificando os atores. Então para cada ator, pergunte "Qual é a principal necessidade deste ator usar o sistema?". Isto conduzirá à identificação dos casos de uso. Capture os atores e os casos de uso no modelo de caso de uso junto com uma descrição resumida.

Priorize os casos de uso, e então esboce o cenário principal ou o fluxo básico. À medida que estiver trabalhando o caso de uso você pode identificar os fluxos alternativos (o que pode dar errado, que opções estão disponíveis, etc.). Capture-os, junto com uma descrição resumida.

Revise o modelo de caso de uso, re-priorize e avalie o risco. Para os casos de uso de maior prioridade (baseado no valor aos Stakeholders) ou de maior risco, detalhe o cenário principal e os fluxos alternativos críticos.

Se você seguir esta abordagem, aumentará a probabilidade de entregar cedo algo de valor, minimizar o risco e minimizar o re-trabalho.

Arquivos Anexados