DEV Community

Alberto Luiz Souza
Alberto Luiz Souza

Posted on

2

Um Método Eficaz para Engenharia de Requisitos na Perspectiva de quem é Dev

Disclaimer

Este texto foi inicialmente concebido pela IA Generativa em função da transcrição de dois episódios do nosso canal, Dev Eficiente. Se preferir acompanhar por vídeo, é só dar o play.

Introdução

Entregar software de qualidade requer mais do que ser excelente apenas em código. Uma das etapas mais críticas é entender corretamente o que precisa ser construído antes mesmo de começar a escrever código. Neste post, vamos abordar um método prático e eficiente para a engenharia de requisitos, focado especificamente na perspectiva de pessoas desenvolvedoras, com o objetivo de maximizar a entrega de valor e minimizar retrabalho.

O Problema com Requisitos Mal Definidos

Quando um requisito chega até você de forma incompleta ou ambígua, diversos problemas podem surgir:

  • Retrabalho constante após feedbacks
  • Entregas parciais que não cobrem todos os aspectos necessários
  • Em casos extremos, implementação de recursos que nem foram solicitados

Esses problemas não apenas geram frustração, mas também aumentam significativamente o custo operacional do desenvolvimento. Quanto mais tarde um problema for identificado no ciclo de desenvolvimento, mais caro será resolvê-lo.

Um Método Influenciado por Múltiplas Abordagens

O método apresentado aqui busca unir o melhor de diferentes abordagens:

  • Métodos formais tradicionais de engenharia de requisitos
  • Abordagens ágeis de coleta de requisitos
  • A metodologia Shape Up, desenvolvida pelo Basecamp

O Shape Up, em particular, traz uma etapa chamada de "Shaping" que encontra um equilíbrio entre as preocupações formais de requisitos e o ritmo de entrega necessário no mundo atual.

Passo a Passo para Refinar Requisitos como Desenvolvedor

1. Entrevista com o Solicitante

Quando um requisito chega até você, o primeiro passo é conversar com a pessoa responsável pelo pedido. Utilize a técnica dos "cinco porquês" para entender a real motivação por trás da solicitação:

  • Por que você quer este recurso?
  • Por que isso é importante?
  • Por que isso traz valor para o negócio?

Se a pessoa conseguir responder pelo menos até o terceiro "porquê", provavelmente ela tem uma compreensão clara da necessidade.

Aqui fica a sugestão de tentar buscar quem realmente idealizou a funcionalidade. Óbvio que nem sempre é possível chegar em tal pessoa, mas sabemos que quanto mais longe da fonte, maiores são as chances de ter interpretações equivocadas sobre o real desejo.

2. Descrição Detalhada do Seu Entendimento

Após a entrevista, documente seu entendimento de forma detalhada. Expanda a descrição inicial com todos os pormenores que conseguir extrair:

  • Quais tipos específicos de informações serão necessárias
  • Como o sistema deve se comportar
  • Quais integrações serão necessárias
  • Requisitos técnicos específicos

Este documento deve ser muito mais detalhado que a descrição inicial.

Após este detalhamento, valide mais uma vez seu entendimento :).

3. Criação de Rascunhos Visuais

Nesta etapa, você deve criar rascunhos que materializam seu entendimento do que precisa ser implementado. Estes rascunhos podem ser feitos em qualquer ferramenta que você preferir (Figma, draw.io, etc). De verdade, a ferramenta pouco importa aqui.

O importante é que o nível de detalhamento seja suficiente para que outras pessoas consigam visualizar a implementação. A granularidade deve ser de média para fina, evitando rascunhos muito abstratos que dificultam feedback preciso.

4. Elaboração de Cenários de Teste

Descreva os cenários de teste fim a fim para a funcionalidade. Você pode utilizar a sintaxe do Cucumber (Gherkin) ou qualquer outra abordagem que preferir.

O objetivo não é necessariamente implementar estes testes agora, mas sim utilizar este exercício como uma forma adicional de refinamento e validação do seu entendimento.

5. Quebra em Tarefas de Implementação

Uma vez que você tenha validado seu entendimento com quem solicitou o recurso, é hora de quebrar a implementação em tarefas específicas. Pelo amor de deus, não deixe ninguém quebrar as tarefas por você.

Defina:

  • Quais tarefas precisam ser realizadas
  • Em qual sequência elas devem ser executadas
  • Como elas se conectam à funcionalidade completa

Aqui você tem mais uma chance de falar com quem pediu e tentar descobrir mais algum entendimento possivelmente errado.

6. Planejamento de Implementação por Tarefa

Antes de começar a codificar cada tarefa, descreva o passo a passo de como pretende implementá-la:

  • Quais componentes serão necessários
  • Como eles se interconectam
  • Quais parâmetros precisam ser passados
  • Quais estruturas de dados serão utilizadas
  • Qual vai ser o fluxo da implementação

Este exercício final de reflexão aumenta significativamente suas chances de implementar corretamente na primeira tentativa. O nível de detalhamento da sua imaginação, fala diretamente com sua capacidade de execução.

Os Benefícios deste Método

Este processo pode parecer burocrático à primeira vista, mas na realidade é apenas cuidadoso. Ele proporciona:

  1. Múltiplos momentos de reflexão tanto para quem solicitou quanto para quem vai implementar
  2. Amadurecimento progressivo do conhecimento sobre o que será construído
  3. Identificação precoce de problemas, quando ainda é barato resolvê-los
  4. Maior probabilidade de entregar código que de fato gera valor

O investimento de tempo neste processo é compensado pela redução significativa de retrabalho e correções posteriores.

Conclusão

A qualidade do código final é influenciada por múltiplos fatores, e um dos mais importantes é a qualidade do requisito que originou esse código. Um bom código, que gera valor, geralmente começa com um requisito bem refinado.

Este método proposto não é excessivamente formal nem negligente – ele encontra um equilíbrio que possibilita o entendimento profundo do que precisa ser feito, aumentando as chances de sucesso na implementação e na geração de valor para o produto.

Curso de Engenharia de Requisitos para Devs

Se você gostou deste conteúdo e deseja aprofundar seus conhecimentos em engenharia de requisitos na perspectiva de desenvolvimento, confira nosso curso especializado em https://deveficiente.com/curso-engenharia-requisitos-para-devs. No curso, abordamos com muito mais detalhes cada uma dessas etapas e fornecemos exemplos práticos para diferentes contextos de desenvolvimento.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)