A Importância das Especificações Funcionais no Desenvolvimento de Software
Por
Redação
O movimento Ágil focou na codificação de software, deixando de lado as especificações funcionais detalhadas. Mesmo após mais de 20 anos, muitas organizações ainda lutam para definir claramente os papéis de gerentes de produto, product owners, analistas de negócios, analistas de sistemas e especialistas em UX.
Há um debate constante sobre as responsabilidades dos desenvolvedores. Muitas práticas adotadas mudaram significativamente o processo de teste de software, reduzindo a importância de artefatos como desenhos de teste, cenários gerenciados, bancos de dados controlados e ferramentas de automação black-box.
A abordagem atual é muitas vezes ‘teste isso’ e, na próxima vez, recomece tudo. Como resultado, várias empresas de software chegaram a eliminar completamente os testadores (ou QAs).
Atualmente, a inteligência artificial (IA) está mostrando as consequências dessas abordagens que, embora funcionem em alguns casos, podem ser limitadas para a maioria dos cenários de software comercial e de ciclos de vida prolongados.
As mudanças não ocorrem sem um motivo. Desenvolvedores de software adotaram práticas ágeis, enquanto gestores aceitaram várias delas sem compreender totalmente as implicações dessa mudança de paradigma.
Princípios fundamentais da gestão, como ‘não se pode gerenciar o que não se pode medir’ e ‘não há melhoria de processo sem documentação’, foram deixados de lado.
Embora muitos defensores das abordagens ágeis tenham percebido que as especificações funcionais são mais relevantes do que alguns agilistas afirmavam, a maioria das organizações de software não seguiu esse caminho.
Isso geralmente ocorre por falta de experiência ou pela pressa em obter resultados rápidos. A história se repete. Profissionais veteranos da indústria de software, como eu, vivenciamos diversas revoluções tecnológicas e reestruturações de sistemas. A maioria dos desenvolvedores não teve essa vivência.
Os mais experientes aprenderam que é possível criar código a partir de especificações funcionais, mas o inverso é complicado e, na maioria das vezes, inviável.
Sim, a IA comete erros
A IA tem facilitado o desenvolvimento e a manutenção de software, mas também comete erros. Alguns são irrelevantes, enquanto outros podem ser prejudiciais.
A IA não possui a capacidade de prever qual deve ser uma funcionalidade específica do software. Ela não questiona como um desenvolvedor experiente faria; simplesmente segue o que seu algoritmo determina.
Os princípios do Ágil, como ‘código pronto é mais importante que especificações’ ou ‘não perca tempo com especificações, pois você não as usará depois que o código estiver pronto’, têm se mostrado equivocados.
As especificações funcionais são essenciais para orientar a IA. Elas podem ser apresentadas de uma vez ou gradualmente em uma interação com a IA, mas precisam ser formuladas de alguma maneira.
Sem essa orientação, a funcionalidade necessária pode não existir. Embora muitos detalhes já tenham sido documentados anteriormente, a IA pode, por exemplo, criar um formulário para coletar dados pessoais, mas o que torna seu software único não é o que já está disponível na internet, que é a fonte da maioria dos recursos de IA.
A IA não gera conhecimento
No campo dos testes, a IA também tem economizado tempo das equipes. No entanto, ela não pode saber o que não está documentado.
A IA pode analisar seu código e gerar um caso de teste unitário ou examinar suas especificações e criar múltiplos casos de teste.
Entretanto, ela não consegue avaliar se o software, resultado do conhecimento humano transformado em design, especificações e código, atenderá às necessidades do negócio ou do usuário.
Não é capaz de afirmar se o usuário conseguirá realizar ações como faturar metade de um pedido, aplicar um desconto ou recuperar um e-mail já enviado.
Essa responsabilidade cabe a analistas e testadores humanos, que, munidos de cenários de negócios e artefatos de teste estruturados, devem chegar a essas conclusões, com ou sem a ajuda da IA.
Em última análise, o software é a manifestação do conhecimento transformado. A IA não cria conhecimento, apenas manipula, combina, calcula e reorganiza o conhecimento existente.
Se você está desenvolvendo algo novo, a documentação é o primeiro passo. Ensine sua organização a fazer isso e, em seguida, teste o que foi criado para garantir que tudo foi feito corretamente. Seus clientes e usuários agradecerão.
* Ernani Ferrari é fundador e chief consultant da Mondo Strategies, consultoria para empresas de software. Ferrari foi executivo de produtos, engenharia, serviços, clientes, universidades corporativas e operações internacionais na Datasul (pré-Totvs) e em algumas das maiores empresas de software empresarial nos EUA, tendo trabalhado em dezesseis países.
As notícias publicadas por esse autor são de fontes próprias e externas, e não representam o posicionamento do veículo.
Administrador