Um Novo Modelo para Casos de Uso

Apresento neste artigo um novo modelo para a especificação de casos de uso. Foram dois os empurrões que me trouxeram para esta nova proposta. Vários participantes de meus treinamentos pediram por um modelo que não tivesse apenas fins didáticos. Algo que eles pudessem adotar em seu dia a dia. Além disso, ideias recentes apresentadas por James Coplien, Gertrud Bjørnvig e Ivar Jacobson me fizeram rever alguns pré-conceitos em relação à ferramenta. Mantive boa parte do desenho original – a preocupação com a estruturação dos requisitos – mas incorporei vários novos elementos. Como ainda não tive muitas oportunidades para testar o novo modelo, contarei com seu retorno.

?

Antes de mais nada, os créditos. A principal provocação para o novo modelo veio de “Lean Architecture” (Wiley, 2010), de James Coplien e Gertrud Bjørnvig. O casal, por sua vez, cita os trabalhos de Rebecca Wirfs-Brock (“Designing Scenarios” – Smalltalk Report, nov-dez/1993) e Constantine e Lockwood (“Software for Use: A Practical Guide to Models and Methods of Usage-centered Design” – Addison-Wesley, 1999). Me convenceram da utilidade e necessidade do uso de duas colunas nos fluxos. E provam, em seu livro, como as especificações podem ser ágeis e enxutas. Na semana passada o “pai” dos casos de uso, Ivar Jacobson, publicou um artigo sobre Casos de Uso 2.0. Dele ganhei a confirmação de que casos de uso: i) são tão ágeis quanto você; ii) escalam o quanto você precisar; iii) não tratam apenas de requisitos funcionais; iv) não se limitam a projetos de sistemas; e v) nem aos requisitos – valem em todo o ciclo de vida de um projeto. Usei todas as novas sugestões como complementos ao modelo que utilizava anteriormente e que era fortemente baseado no trabalho de Alistair Cockburn, “Escrevendo Casos de Uso Eficazes” (Bookman, 2008).

Aos iniciados, letrados e usuários super-avançados de casos de uso e afins, um aviso: o modelo aqui sugerido segue tendo como principal motivação o uso didático. Por isso, talvez o modelo não tenha nenhuma utilidade para vocês. Pensei nos iniciantes e em todos que precisam rever seus (pré)conceitos sobre a ferramenta. Me preocupei, principalmente, com todos que precisam de um tipo de guia (e de limites) enquanto aperfeiçoam sua técnica. Vamos ao que interessa.

O modelo anterior era muito pequeno (formato A5), o que impedia seu uso em casos ‘de verdade’. O novo modelo foi diagramado em formato A4 paisagem. Frente (acima) e verso (logo mais) podem ser impressos em uma única folha ou em separado, como explicarei mais tarde. A frente condensa todas as informações fundamentais sobre um caso de uso. Vou apresentá-la por partes.

Cabeçalho

Segue a preocupação com a identificação da fonte e respectivo ponto de vista (estratégico, tático, operacional ou técnico). Incorporei um sofisticado “controle de versões”. Ele me ajuda a reforçar um grito: “joga o caso no lixo! (tão logo dele tenha brotado algum derivado)”.

Finalmente me lembrei dos ícones que determinam o nível de detalhamento do caso. Não, prezadas fábricas de software (sic), não contemplei o tal nível “pré-sal” que vocês insistem em pedir. Mas a nova versão da ostra, quero crer, não gerará mais dúvidas nem piadinhas.

O campo “processo / atividade” serve para referência cruzada com algum diagrama do negócio, de preferência com o PUCS (Process-Use Case Support) ou um diagrama de atividades.

“Valor”, que talvez ainda seja rebatizado “Benefício”, indica como o cliente ou usuário valoriza o caso em questão. “Custo” é a estimativa de esforço do time de desenvolvimento (expressa em unidades relativas, pontos de casos de uso ou qualquer outra unidade de medida). A possível avaliação benefício/custo pode determinar a “Ordem”, a posição do caso no cronograma (ou, de preferência, no backlog do produto). Daí o espaço “Iteração”, onde deve ser registrado a iteração projetada para o trabalho neste caso. Quem não “itera” pode ignorá-lo, sem problemas.

Contexto, Pré e Pós-Condições

Não se trata de um filler, vulgo “encheção de linguiça”. O Contexto nos ajuda a posicionar o caso de uso no projeto, indicando suas relações com outros elementos. É aberto para possibilitar até mesmo o desenho de um pequeno diagrama de casos de uso. Mesmo que fujas dos temidos (e mal compreendidos) extends e includes da vida, você deve achar alguma utilidade para o espaço. Pré e pós-condições não pedem por maiores explicações. Ah, só preciso dizer que elas são um tipo muito especial de Regras de Negócio. Regra do negócio, e não aquele papo de “o usuário tem que estar logado no sistema (sic)”. Pronto, disse.

Fluxo Principal

A conversa devidamente explicitada. Eu evitava o modelo com duas colunas por morrer de medo daqueles que acham que, para cada intenção do ator o sistema deve, obrigatoriamente, dar uma resposta. Desperdício imperdoável de tempo que culminava em obviedades assim: Ator: Indentificar Cliente / Sistema: Exibir nome do cliente. Terrível! Mas Coplien e Bjørnvig me convenceram de que, apesar dos mestres do óbvio, este modelo é realmente mais eficaz.

Ainda assim, o espaço disponível para descrição dos passos do ‘caminho feliz’ segue exíguo para todos aqueles que não acreditam nos limites sugeridos por Coplien (máximo de 7 passos) ou Cockburn (máximo de 9 passos). Só evitei numerá-lo, como no modelo antigo, para deixar o formulário um pouco menos poluído.

Fluxos Alternativos / Instruções para Testes

Está aqui o trecho que mais me custou mais tempo. O número de fluxos alternativos pode ser muito grande, dependendo do caso de uso. Mas a questão não era só essa. Queria contemplar também um espaço para um tipo de Caso de Testes. Acho que consegui matar os dois coelhos. O trecho acima aparece na parte da frente do modelo e em metade do verso. Por isso eu disse que o verso pode ser impresso de forma independente. Ele também contempla outras regras de negócios e outros tipos de requisitos. Quando o espaço não for suficiente, basta imprimir ou utilizar mais páginas apenas com o verso do modelo. Aos campos.

Indicamos o número do passo afetado e o tipo de registro (fluxo Alternativo o Teste). Na sequência, o motivo para o desvio ou então alguma instrução para a execução de testes. Há ainda uma coluna para comentários e outra para a indicação da iteração que deve contemplar a realização deste fluxo alternativo. Esta ideia combina bem com os slices propostos por Ivar Jacobson no referido artigo. Combina ainda mais com as sugestões apresentadas em “Lean Architecture” (em resumo: em um projeto tocado por um método iterativo, os incrementos são fluxos dos casos de uso. Ex: em uma iteração você entrega o fluxo principal, na seguinte dois fluxos alternativos e assim por diante).

Se a ferramenta é escalável, como confirma Jacobson, o modelinho também deve ser. Daí a diagramação do verso, exibida abaixo.

?

Utilizarei este modelo nas próximas edições de meus treinamentos. Acho que só depois de duas ou três experiências terei noção das alterações necessárias. Ou seja, novidades sobre o tema só no final de novembro. Enquanto isso, se você quiser brincar um pouco com o modelo, faça o download aqui: bit.ly/UCfinito. Claro que estou contando com seu retorno, experiências, críticas e sugestões. Desde já agradeço. Abraços!

Obs.:

  1. Nunca antes na história deste blog o nome de uma imagem combinou tanto com o conteúdo. “Extracting Knowledge” é de autoria do HikingArtist e foi legalmente surrupiada no Flickr.
  2. Depois de meus canhotos rabiscos, todo o trampo artístico e de diagramação foi do mano Gus Vasconcellos, da Opção Artes Gráficas. Não sei o que seriam de meus rabiscos sem a colaboração dele.
143 240 Paulo Vasconcellos
11 Comentários
  • Um Novo Modelo para Casos de Uso http://t.co/AwUF8V7V

  • Opa Paulo,
    Acho muito legal essa sua iniciativa, mal posso esperar para o proximo treinamento…
    Abraços

  • Valeu Diego,

    Obrigado pela força.

    Abraços. Até lá!

    Paulo Vasconcellos

  • Wylker Barros (@wylkerbarros)

    novo modelo de caso de uso: http://t.co/xSEXuPlx

  • Oi Paulo,

    Gostei do modelo, mas tomei a liberdade de fazer algumas adaptações para ficar melhor (rsss) ou do jeito que eu preciso.
    Minhas Alterações:
    – Aumentei o espaço para fluxo principal, pois achei o espaço muito pequeno.
    – Reduzi o espaço para fluxo alternativo
    – Aumentei o espaço para regra de negócio
    – Crie um espaço para instrução de teste independente do fluxo alternativo.
    – Aumentei o espaço para requisitos complementares

    Veja como ficou o modelo: http://dl.dropbox.com/u/18890235/caso_de_uso_pv_rfs.pdf

    Abs,

  • Valeu Rildo, agradeço muito suas sugestões e o trampo de desenhar o novo modelo. Algumas observações:

    1. Como cito no texto principal, Coplien e Cockburn sugerem um limite máximo de 7 ou 9 passos, respectivamente, no fluxo principal. Respeitando tal limite, acho o espaço original suficiente.
    2. Por outro lado, o número de fluxos alternativos pode facilmente ultrapassar o espaço que dediquei. Usando o chute de outros, inclusive dos dois citados acima, em pelo menos 20% dos casos de um projeto tradicional um espaço adicional seria necessário. Por isso tentei um desenho que permitisse apenas a impressão do verso, que contempla aquelas partes do caso que realmente precisam ‘escalar’.
    3. você está certo, o espaço para regras é relativamente pequeno. Também por isso a aloquei no verso.
    4. A colocação de instruções para testes no mesmo espaço dedicado para fluxos alternativos realmente pode causar confusão. Minha versão do modelo exige um pouco mais de cuidado do analista. Usei tal artifício para evitar um modelo com mais de duas páginas, só isso.
    5. Também o coloquei no verso para ganhar escala.

    Mas a intenção original era essa mesmo, que cada um adapte a sugestão de acordo com suas necessidades. E na adaptação, meu caro, não é pedido nem mesmo que sejam preservados minha logomarca e endereço. Apenas que você compartilhe o trampo através da mesma licença que utilizei.

    Valeu! Abraços,

    Paulo Vasconcellos

  • Francilvio Alff

    Ótima iniciativa!

  • Renato A. Arruda

    Boa Tarde!

    Achei muito interessante os modelos. Eu sofro com a documentação de requisitos. Temos um documento padrão que segue esta linha e as sugestões acima irão melhorar este modelo.
    Porém, eu sofro aqui com a documentação de requisitos para Produto. Um projeto, tem começo, meio e fim.. Mas um produto sofre manutenção e evolução, quanto mais informação eu tiver documentada pior (ou melhor) é para eu manter e evoluir.
    Gostaria muito de uma opinião sua quanto ao controle e documentação de requisitos para Produto. Se possível é claro. Toda a parte de levantamento e elucidação até não é tanto o problema. Ja consegui resolvi isto em seus cursos FAN. Mas a documentação dos requisitos, bem como sua manutenção e evolução esta um carma. E parece que ninguém sofre com isto, pois não vejo ninguém falar sobre esta parte dos requisitos. Parece que o problema todo é só no levantamento e elucidação.
    Desculpe o desabafo..rsssss
    Valeu Paulo.. Excelente artigo…
    Renato.

    • Puxa Renato,

      só agora, puxado por outro comentário, que vi sua participação. Imperdoável de minha parte… Sei lá pq não estou recebendo por email todas as notificações de novos comentários. Mas vamos lá…

      Sigo não acreditando que especificações de casos de uso sejam adequadas para documentação de produtos. A informação contida neles é transiente – já foi evoluída em outros modelos. Modelos mais próximos do código, quando não são o próprio código. Talvez esteja aí­ o “carma” descrito por ti. Quando a evolução depende de uma informação já transformada, o caminho é longo (e muito acidentado). Pense nisso.

      Abraços e, mais uma vez, me desculpe pela demora.

      Paulo Vasconcellos

  • Leandro Mendonça

    Paulo,

    Muito engenhoso da sua parte. Definitivamente trata-se de um bom modelo.

    Meu ponto de atenção é para seu posicionamento no tempo e espaço da analise. Acho ótimo se preenchido em conjunto com a equipe técnica, numa sessão de planejamento. Acho péssimo se preenchido na entrevista com o usuário ou mesmo a partir dela, só com base nas percepções do analista. A simples preocupação de um analista (mais junior) com o preenchimento desse modelo tende a comprometer a dinamica da entrevista, o que é péssimo.

    Sei que uma das suas preocupações ao incluir tantos campos de simples marcação no cabeçalho é fornecer pequenos lembretes para o analista no momento da entrevista. Acho isso importante, especialmente para quem está aprendendo, mas na pratica, nada que um pouquinho de experiencia não resolva. E se o analista esquecer de perguntar ou for incapaz de estabelecer o benefício de um caso na hora de descreve-lo, por que não perguntar ao cliente na próxima iteração?

    Abs!

    • Oi Leandro,

      O modelo, acima de tudo, tem fins didáticos. Se me preocupei em torná-lo utilizável na “vida real”, foi para atender diversos pedidos de participantes de meus treinamentos.

      Mas seu comentário parece sugerir que o analista trabalha sozinho. Eu sei, infelizmente é esta a realidade de 99% deles. Mas seguirei insistindo para que trabalhem em duplas. Sendo assim, é factível supor que uma boa especificação possa ser realizada no momento da entrevista. E este, claro, não é o único benefício (ou única motivação) para o trabalho em pares.

      Muito obrigado pela participação. Abraços!

      Paulo Vasconcellos

Leave a Reply

Start Typing