Use Case 2.0: Você precisa dele?

Ivar Jacobson liberou, agora em dezembro, um pequeno livro eletrônico chamado Use Case 2.0: The Definitive Guide. Como ele mesmo alerta, não se trata de uma atualização da ferramenta. Afinal, “casos de uso ainda são casos de uso”. Mas o texto propõe alguns novos elementos – novos artefatos de trabalho. Este artigo pretende avaliar as principais alterações sugeridas comparando-as com alternativas já conhecidas.

?

Apesar de toda a má fama que a acompanha, a ferramenta Caso de Uso continua sendo apresentada por muitos, inclusive este que vos escreve, como a mais eficaz no apoio às atividades de “descoberta e descrição dos requisitos funcionais de um sistema”. Os mal ditos sobre os casos de uso têm origem bem identificada. Em dado momento, entre o final dos anos 1990 e início do novo século, tentaram sofisticar demais a ferramenta. Modelos rebuscados e divisões artificiais e redundantes (fluxo disso, fluxo daquilo…) deram enorme contribuição. A gota d’água veio daquela parte da população que tem preguiça de pensar e adora templates repletos de badulaques. Pronto, estava criada a fama – justíssima, dados os casos criados – de que casos de uso eram muito complicados, de difícil elaboração pelos analistas, incompreensíveis para os usuários, detestados e consequentemente ignorados pelos desenvolvedores e distantes demais dos testers (provavelmente os únicos que, se tivessem a chance, talvez gostassem daquilo. Porque era melhor que nada!)

O advento do Manifesto Ágil quase nos fez crer que Caso de Uso era coisa do século passado. Mas o que seria do mundo se não fossem os teimosos? Alistair Cockburn nunca abandonou os casos. Nem Ivar Jacobson, o pai da criança que agora nos apresenta essa releitura (escrita a seis mãos com Ian Spence e Kurt Bittner, autores de “Use Case Modeling” – Addison-Wesley, 2002).
O que ela traz de novo a ponto de merecer o “2.0”? Antes disso, qual a motivação para uma nova versão?

Os autores defendem que o Caso de Uso 2.0 é: Leve, Escalável, Versátil e Fácil de usar. Fica implícita a intenção de oferecer a versão remoçada da ferramenta como alternativa para as User Stories. Apesar de ilustrarem sua utilização até em um processo baseado no modelo waterfall. A falta de um comparativo entre User Stories e Casos de Uso, a exemplo do que fizeram James Coplien e Gertrud Bjørnvig em Lean Architecture (Wiley, 2010), reduz o impacto da proposta. Mas, afinal, qual é a proposta?

Jacobson reforça uma mensagem que já apresentava em seus tempos de Rational¹: “casos de uso são a cola de todo o ciclo de vida do processo “. Ou seja, eles “suportam a análise, projeto, planejamento, estimativas, acompanhamento e testes de sistemas”, além da captura de requisitos, é claro.

Um mapa conceitual nos ajuda a entender todos os elementos da proposta e as relações entre eles. Peço desculpas pela redundância mas vou reescrever as partes que representam as maiores alterações (e, tentarei mostrar, os problemas da proposta).

Os interessados (stakeholders): i) são as fontes dos Requisitos; ii) estão envolvidos e priorizam Casos de Uso; e iii) se comunicam contando Histórias.

Até aqui tudo bem, até porque o mapa informa que: iv) Requisitos são capturados na forma de Casos de Uso.  Agora, como falamos aqui no interior, a porca torce o rabo (e a proposta se enrola). Porque é colocado que: v) Casos de Uso são explorados através da narração de Histórias; e vi) seu escopo é gerenciado e endereçado como um conjunto de Fatias de Caso de Uso (Use-Case Slice); que, por sua vez, vii) são identificadas (ou têm sua identificação facilitada) pelas Histórias.

Essas histórias, a princípio, não têm nada a ver com as conhecidas User Stories (não citadas no e-book). Mas é impossível não perceber a intenção de fazer com que elas sejam elaboradas e tratadas da mesmíssima maneira proposta por Kent Beck (em “Extreme Programming Explained” – Addison-Wesley, 1999) e amadurecida por Mike Cohn (“User Stories Applied” – Addison-Wesley, 2004). Uma História, segundo os autores, pode ser qualquer coisa: requisito funcional ou não funcional, um trecho ou fluxo(s) do Caso de Uso, um requisito especial (?) ou ainda um caso de teste. E elas, genéricas (e versáteis assim), ajudariam na identificação de Fatias de Casos de Uso.

Essas Fatias, apresentadas como “o elemento mais importante do Caso de Uso 2.0”, justificariam-se porque, segundo os autores, “precisamos de uma maneira de dividir casos de uso em conjuntos menores”. Li e reli o documento e continuo não acreditando que o próprio cara que inventou a ferramenta e seus naturais mecanismos de quebra (extensão) e organização esteja propondo tamanha confusão. Talvez meus neurônios não tenham percebido o fim das férias, sei lá. O fato é que a proposta, particularmente suas Histórias e Fatias, não parece fazer muito sentido.

Um Caso de Uso é uma maneira mais (ou menos) ESTRUTURADA² de se contar e registrar uma história, um causo. Ele sempre possui um Fluxo Principal (ou Básico), uma sequência natural de interação entre um Ator e um Sistema onde todos os passos são bem sucedidos. Todas as variações ou desvios desta sequência principal são capturados e registrados na forma de Fluxos Alternativos (ou Secundários). Está aqui o primeiro mecanismo natural de ‘quebra’ de um caso de uso. Considero-o natural porque ele reflete a forma do usuário pensar. Uma vez registrado o comportamento mais esperado, como Fluxo Principal, a história se desenrola, por exemplo, em uma sequência de “e se”: “e se o cliente não tiver crédito”, “e se não houver estoque disponível” etc³. Casos de uso são tremendamente eficazes na “descoberta e descrição de requisitos funcionais de um sistema” exatamente porque permitem que uma história seja narrada e estruturada da forma mais natural (e próxima do usuário) possível.

Por que, então, precisaríamos de outros mecanismos de quebra e organização? Para termos elementos ainda menores, que caibam em uma iteração de duas semanas ou em um post-it? Coplien e Bjørnvig, no capítulo 7 do livro citado acima, já haviam dado a receitinha: “qual é a diferença entre a lista de desvios (Fluxos Alternativos) e uma lista de requisitos, features ou User Stories? Quase nenhuma quando olhamos de perto. Podemos formular cada item da lista na forma de User Stories se isso faz com que a gente se sinta mais Agile“. Bem antes deles, no já distante ano 2000, Alistair Cockburn (em “Writing Effective Use Cases” – Addison-Wesley, 2000) já havia sugerido a derivação de uma Lista de Trabalho a partir de um Caso de Uso e seus diversos fluxos (Work List, págs. 172 – 174). Com itens que cabem perfeitamente em um post-it ou, falando mais sério, “cabem” em iterações (sprints) e facilitam o acompanhamento e gerenciamento de um product backlog ou algo parecido. Enfim, Casos de Uso nunca foram monolitos nem nunca levaram a uma situação “tudo ou nada”. Repito: nunca!

Casos de Uso também podem ser vistos ou utilizados como uma “cola que une todas as etapas de um processo de desenvolvimento” desde a criação da UML (1995-1997) e dos derivados do Processo Unificado (1998~). Não creio que serão as sugeridas Fatias que farão, agora, a mágica de viabilizar tal visão. Porque a verdade é que nós nunca (ou, para pegar um pouco mais leve) raramente utilizamos Casos de Uso em toda a sua plenitude. O faremos agora que ele ficou um pouquinho mais complicado?

?

Observações:

  1. Lê-se a primeira frase destacada na apresentação “Common Chalenges in Use Case Modeling”, de autoria de Ivar Jacobson e com logo da Rational Software (sem data de publicação).
  2. E é esta propriedade fundamental, o fato do Caso de Uso ser uma história ESTRUTURADA, sua principal diferença em relação a outras propostas, particularmente as User Stories. Um Caso de Uso, por natureza, é um conjunto de requisitos que faz todo o sentido para um usuário ou cliente. Um conjunto estruturado. Um conjunto que “entende” sua relação com os demais componentes da solução. Naturalmente.
  3. Destaquei o primeiro (Fluxos Alternativos) mas não cito acima os demais “mecanismos naturais de quebras” dos Casos de Uso. Porque aqui a porca torce o rabo de vez e, preciso admitir, alguns mecanismos não são tão naturais assim (Extends e Includes devem ter passado pela sua cabeça). Para não deixar o tema no limbo preciso dizer que Cenários (combinações de passos dos fluxos principal e alternativos) e Casos de Testes são derivados ou componentes de um Caso de Uso e representam outras formas de “quebra”. Serão mais ou menos naturais dependendo da forma como são elaborados.
  4. Slice of a Pumpkin Pie, foto que ilustra este artigo, é de autoria de TheCulinaryGeek.

 

Comentários

7 respostas a “Use Case 2.0: Você precisa dele?”

  1. Avatar de Rildo Santos

    Oi Paulo,

    Gostei do Post, mas deixa dar minha opinião, antes de qq coisa li o Guia (USE-CASE 2.0).
    Acho que o “slice” é uma adaptação (“meia tosca”) ao conceito do “Epic” e “Temas” que existem a User Story.

  2. Avatar de pv
    pv

    Oi Rildo,

    Epic não, temas talvez. Os autores não fazem tal ligação nem citam esses termos. De qualquer maneira, é uma sugestão meio “varada n’água” (só serve para espantar os peixes) 🙂

    Obrigado pela participação. Abraços!

    Paulo Vasconcellos

  3. Avatar de Bruno Neri Torquato (@brunont)

    “…aquela parte da população que tem preguiça de pensar e adora templates repletos de badulaques…” http://t.co/Ng5j7VyA

  4. Avatar de Marcelo Neves

    Paulo,

    Sinceramente, começaram a complicar as coisas. Não vejo o caso de uso como ferramenta auto-suficiente e definitiva. Porém, gosto muito de usá-la e realmente consigo descobrir muitos requisitos funcionais. Não consigo resolver tudo só com user stories, como alguns pregam por aí.

    Agora, falar em Fatias de Casos de Uso é forçar a barra. Consigo resolver praticamente todas exceções com fluxos alternativos. Sei não. Está me parecendo aquela síndrome de continuidade de filme. O primeiro é bom, depois a continuação aparece e estraga tudo.

    Marcelo Neves

    1. Avatar de pv
      pv

      Oi Marcelo,

      Muitos, como eu, gostam tanto de “O Poderoso Chefão II” quanto do primeiro. Felizmente, existem exceções que comprovam a regra – a síndrome citada por ti. Mas é preciso ter cuidado.

      Coplien e Bjørnvig, por exemplo, escreveram que até poderiam ter inventado um novo nome para a sugestão que apresentam em “Lean Architecture”. Mas optaram, felizmente, pela manutenção do termo “Caso de Uso”. Mas, não tenho dúvida, trata-se de uma evolução em relação aos formatos conhecidos até então. Jacobson e seus colegas, na minha opinião, não tiveram a mesma felicidade.

      Sobre sua primeira colocação: a ferramenta Caso de Uso nunca teve a intenção de ser “auto-suficiente” e “definitiva”. Aliás, nenhuma ferramenta o é ou algum dia será. Martelo é martelo, chave de rosca é chave de rosca. Cada uma tem sua utilidade. Mas, como escrevi no artigo, estou para conhecer ferramenta mais eficaz que Casos de Uso para a descoberta e descrição de requisitos funcionais de um sistema.

      Abraços! Obrigado pela participação.

      Paulo Vasconcellos

  5. Avatar de Leandro Mendonça
    Leandro Mendonça

    Oi Paulo,

    Entendo a sua decepção como um dos maiores defensores ( se não o maior) da ferramenta Caso de Uso ao ver os proprios idealizadores cederem as pressões de maneira tão patética, sem sequer assumirem isso. Patéticos como Ozzy Osbourne cantando Adele num show (as musicas ou a propria..hehehe).

    Esses dias tive uma sacada que até cheguei a compartilhar contigo, sobre essa coisa de capturar requisitos. Pra virar proposta ainda precisa de muita teoria, mas tem seu pontencial. O lance é separar esse momento em dois, a history e a story. Na history temos a verdadeira descrição do processo e dos desejos mais intimos do stakeholder, temos o papo aberto e fluente, cheio de desvios naturais e sutilezas onde moram as pérolas que ajudarão na descrição dos requisitos de maior valor. Na story transformamos essas histórias em roteiros, desejos em requisitos.

    Não podemos ignorar a influencia do escritor, no caso o analista, na construção desse roteiro (story), tampouco o estado de espirito do usuário no momento que o descreve. Esses dois fatores são prejudiciais para a construção de bons requisitos pois trazem consigo uma carga exagerada de “solução” para um momento onde o foco deveria ser no problema. Por isso proponho valorizarmos a history em detrimento da story no momento dessa conversa com o usuário.

    Requisitos estruturados, extends, includes, casos de testes e afins, nada disso tem a ver com papo com usuário. Ouvir histórias, sim. Precisamos de uma forma de capturar essas histórias e preservá-las durante todo o ciclo de vida do sistema, mas certamente não será via casos de uso, como nos prova a sua própria história.

    Não pretendo ser conclusivo nesse papo, pois como disse, precisa de teoria pra virar proposta, mas para quem tiver a oportunidade de praticar uma abordagem mais humana e natural nas entrevistas, fica a dica.

    Abs!

    1. Avatar de pv
      pv

      Oi Leandro,

      É o que sempre digo: o valor desse negócio aqui está, em grande parte, nas boas conversas que ele gera. Suas contribuições sempre me desafiam – e isso não tem preço.

      Enquanto não experimentar (e pensar um tanto) em sua proposta, manterei minha sugestão principal: analistas trabalham em duplas; um deles se ocupará do registro do papo; a melhor maneira de descobrir e descrever requisitos funcionais é através de casos de uso. Estas são minhas sugestões que você conhece de longa data.

      Mas, repito, sua provocação me fará pensar. De cara pensei numa adaptação de uma ferramenta pouquíssimo conhecida chamada Histórias de Aprendizado (a documentei no trabalho sobre Aprendizado Inter-Projetos).

      Muito obrigado pelo “empurrão”. Coloca mais meia dúzia de chopps na conta. Abraços!

      Paulo Vasconcellos

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *