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?
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?
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:
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:
Funcionarionome (String), cargo (String), salarioBase (double)calcularDecimoTerceiro(), promover()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;
}
}
String endereco em uma classe Endereco separada).Espero que possa ter lhe ajudado!
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!