Qual a melhor forma para especificar um requisito funcional de software?
Como citado no post anterior existem várias ferramentas e linguagens que proporcionam que os requisitos funcionais de um software sejam especificados (caso de uso, diagrama de sequência, diagrama de fluxo de dados e mapa mental – são alguns exemplos).
Dentro desta gama de ferramentas qual é a melhor?
Para responder esta questão é importante salientar que a especificação de requisitos deve atender a todos os stakeholders do projeto: clientes, desenvolvedores, engenheiros, testadores, gerentes, etc.
A escolha de uma delas depende da complexidade daquilo que se quer especificar.
Para defender a minha afirmação desenvolvi uma dinâmica e aplico-a sistematicamente em minhas aulas.
A Dinâmica
Divida a os alunos em grupos de 5 pessoas.
Peça para cada grupo escolher um aluno.
Solicite que os alunos escolhidos de cada grupo se retire de sala por um período de 1 hora.
Ensine ao restante dos alunos a produzir um aviãozinho de papel (vide foto no início do post).
Solicite que os grupos especifiquem como desenvolveram o avião.
Após 1 hora, peça para os alunos que estavam foram da sala analisarem as especificações e desenvolverem (em 10 minutos) outro avião. Importante: os demais alunos do grupo não podem ajudar no desenvolvimento, ou seja, o aviãozinho de papel deve ser desenvolvido somente com base na especificação.
Veja o resultado que colhi após a realização da dinâmica.
Grupo 1 – especificou o desenvolvimento por meio de uma sequência de fotos.
Resultado (vide foto abaixo).
Grupo 2 – especificou o desenvolvimento por meio de um filme.
Resultado (vide foto abaixo)
Grupo 3 – desenvolveu o avião utilizando um diagrama de sequência, conjunto de fotos e instruções (vide foto abaixo).
Resultado (foto acima – vide avião no canto inferior esquerdo)
Concluindo:
Perceba que a especificação do problema foi feita de 3 formas diferente, 2 delas proporcionaram a construção do aviãozinho correntemente. Conhecer as potencialidades e fragilidades de cada ferramenta/linguagem de especificação pode contribuir muito para o sucesso do projeto. Lembre-se disso no momento de sua escolha. Estreite o relacionamento entre ESPECIFICAÇÃO e COMUNICAÇÃO.

