12
abr
2011

Análise de Requisitos: Funcionais x Não Funcionais

A especificação de requisitos é a tarefa mais importante na fase de análise de um sistema. Requisitos mal especificados produzem dor de cabeça, retrabalho e atrasos no projeto. Aqui vamos ver os principais conceitos relativos aos tipos de requisitos de um sistema.

Os requisitos, de modo geral, pordem ser classificados em dois grandes grupos: os requisitos funcionais e os não funcionais.

Os requisitos funcionais são aqueles que descrevem o comportamento do sistema, suas ações para cada entrada, ou seja, é aquilo que descreve o que tem que ser feito pelo sistema. São o cérebro do projeto, já que descrevem as funcionalidades que o sistema deve dispor.

Os requisitos não funcionais são aqueles que expressam como deve ser feito (não confundir requisitos não funcionais com o design). Em geral se relacionam com padrões de qualidade como confiabilidade, performance, robustez, etc. São muito importantes, pois definem se o sistema será eficiente para a tarefa que se propõe a fazer ou não. Um sistema ineficiente certamente não será usado. Neles também são apresentados restrições e especificações de uso para os requisitos funcionais.

Além desses dois, existem ainda os requisitos de interface, que como o nome já diz especifica as funcionalidades inerentes a interface do sistema com usuário.

Muitas vezes é difícil discernir entre quais requisitos são funcionais e quais não são. Essa prática vem com o tempo e com a experiência e, por isso, para quem não trabalha diretamente com análise, é sempre bom exercitar. Vejamos o exemplo:

Requisito:

O sistema deve prover um grid na tela, que permitirá a visualização de imagens. Esse grid poderá ser ativado ou desativado através do clique em um botão. O grid terá uma régua, cuja escala poderá estar tanto em centímetros como em polegadas, que ajudará no redimensionamento das imagens.

Os requisitos não foram especificados da maneira correta no exemplo acima. É o que chamamos de aglutinação de requisitos. Temos então que seprarar requisitos funcionais, não funcionais e de interface. No nosso caso, o maneira correta seria:

Funcional:

O sistema deve prover um grid para a visualização de imagens. Este grid poderia ser ativado ou desativado.

Não funcional:

A escala do grid poderá estar tanto em centímetros como em polegadas.

Interface:

Deve haver um botão responsável por habilitar e desabilitar o grid.

Fonte: Mãozinha da Web