Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Identificando classes, atributos e métodos em um documento de requisitos

Boa noite!
Em um documento de requisitos, existe alguma maneira de identificar classes, atributos ou métodos? Como por exemplo por substantivos, adjetivos ou verbos(ações)? Existe alguma técnica específica para fazer essa identificação?

2 respostas

Olá, Elenilson. Como vai?

Essa é uma excelente dúvida de arquitetura de software! Quando recebemos um documento de requisitos do cliente ou do time de produto, a transição do texto puro para a estrutura de código em Java pode parecer um desafio.

A boa notícia é que existe sim uma técnica clássica e muito utilizada no mercado para fazer essa extração inicial. Ela foi formalizada por um cientista da computação chamado Russell Abbott e refinada por Grady Booch (um dos criadores da UML), sendo conhecida como a Técnica de Análise Textual de Abbott.

A regra fundamental dessa técnica consiste em mapear as classes gramaticais do texto diretamente para os elementos da Orientação a Objetos. Veja o passo a passo de como aplicar:

1. O Mapeamento Gramatical

  • Substantivos Próprios ou Comuns (O Quê?): Geralmente representam as Classes ou as instâncias (Objetos). Se o texto diz que o sistema deve gerenciar um "Cliente", uma "Conta Bancária" ou um "Produto", você acabou de encontrar suas classes.
  • Adjetivos ou Características (Como é?): Geralmente representam os Atributos (campos/variáveis da classe). Se o requisito diz que o cliente tem um "nome", o produto é "perecível" (um atributo booleano) ou a conta possui um "saldo", essas são as propriedades que a classe vai guardar.
  • Verbos ou Ações (O que faz?): Geralmente representam os Métodos (as funções/comportamentos da classe). Se o texto descreve que o sistema deve "autenticar" o usuário, "transferir" um valor ou "aplicarDesconto" em um item, esses verbos serão os métodos dentro das suas respectivas classes.

2. Exemplo Prático de Extração

Imagine que o documento de requisitos do seu projeto tenha o seguinte parágrafo:

"O sistema deve permitir o cadastro de um Funcionário. Cada funcionário possui um nome, um cargo e um salário base. O sistema deve ser capaz de calcular o décimo terceiro salário deste funcionário e promover o colaborador para um novo cargo."

Aplicando a técnica de análise textual, nós isolamos os elementos:

  • Substantivo (Classe): Funcionario
  • Adjetivos/Características (Atributos): nome (String), cargo (String), salarioBase (double)
  • Verbos/Ações (Métodos): calcularDecimoTerceiro(), promover()

Como esse requisito se transforma em código Java?

public class Funcionario {
    // Atributos (Substantivos de especificação / Características)
    private String nome;
    private String cargo;
    private double salarioBase;

    // Métodos (Verbos / Ações que o objeto pode realizar)
    public double calcularDecimoTerceiro() {
        return this.salarioBase; // Exemplo de lógica simplificada
    }

    public void promover(String novoCargo) {
        this.cargo = novoCargo;
    }
}

3. Dicas e Boas Práticas Importantes

  • Cuidado com sinônimos: Às vezes, o documento usa "usuário", "cliente" e "colaborador" para falar da mesma coisa. Tente unificar em uma única classe para manter o código limpo.
  • Verbos do sistema: Verbos como "exibir", "salvar" ou "clicar" geralmente pertencem à interface gráfica ou às classes de persistência de dados (Banco de Dados / DAO), e não às regras de negócio da classe principal. Foque nos verbos que alteram o estado do objeto.
  • Refinamento: Essa técnica serve para o pontapé inicial. À medida que o sistema cresce, você perceberá que alguns substantivos podem deixar de ser apenas atributos e virar novas classes (por exemplo, transformar o atributo String endereco em uma classe Endereco separada).

Espero que possa ter lhe ajudado!

solução!

Obrigado pela resposta, foi uma boa dica para norteamento, o restante vai com a prática através das abstrações como exemplificado acima.
Muito obrigado!