terça-feira, maio 22, 2007

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.

O 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 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 pá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 com em polegadas.
  • Interface: Deve haver um botão responsável por habilitar e desabilitar o grid.


O processo de análise é uma das fases mais complexas do projeto de software. Vamos ainda continuar falando sobre o processo de elicitação de requisitos e de análise em geral em próximas ocasiões.

Até a próxima!

25 comentários:

Lidimon Cristiano disse...

Muito bom, eu estava procurando algo sobre requisitos não funcionais e esta coluna esclareceu bastante minhas dúvidas. Obrigado!

Anônimo disse...

Está muito bom a sua pesquisa. Só não ficou bem claro quando se classificou os requisitos de interface como não sendo requisitos não-funcionais. Muitas bibliografias atuais e algumas menos atuais englobam os requisitos de interface no conjunto dos requisitos não-funcionais. Seria bom se você postasse a bibliografia que você utilizou para escrever esse comentário.

Unknown disse...

Texto legal, sempre tenho que dar uma pesquisada sobre o assunto quando vou capturar requisitos. Dessa vez me deparei com seu post bastante informativo.
Estou na fase de análise do meu projeto de conclusão de curso nesse momento, anotando os requisitos para separa-los em funcionais e não-funcionais.

Anônimo disse...

Goste do tema, estava mesmo a procura de requisitos funcionais e nao funcionais. E esclareceu as minhas duvidas.

Eduardo disse...

Requisitos funcionais e não funcionais. Há algum motivo especial para separá-los, visto que ambos são requisitos e deverão ser implementados? Por ser não funcional, diminui sua importancia?

Anônimo disse...

Muito bom, está me ajundado muito. publique mais assuntos

Anônimo disse...

Gostava de saber como se faz uma tabela de impacto.

muito obrigada

Anônimo disse...

ficou um guia muito bom, falou o necessário sem enrrolar e atingindo o ponto chave desse assunto, Parabens.


Eduardo disse...
Requisitos funcionais e não funcionais. Há algum motivo especial para separá-los, visto que ambos são requisitos e deverão ser implementados? Por ser não funcional, diminui sua importancia?

26/08/2008 11:36:00

R> eles teem que ser separados pois os requisitos funcionais é o que o sistema vai fazer, suas funcionalidades... enfim, o que vc quer que ele faça??? uma boa maneira de definir requisitos funcionais é utilizando o préfixo: o sistema deve... depois vc coloca um verbo e complemento como por exemplo: o sistema deve permitir o cadastro de alunos.

os requisitos não funcionais são complementos ou restrições do sistema de como eles devem realizar seus requisitos funcionais.
citarei um exemplo se baseando no exemplo acima: apenas coordenadores podem cadastrar clientes.

bem, isso foi apenas um conceito básico hehe.

abraços e continuem assim.

@alcirjunior disse...

aaa... cara vc salvou-me algumas horas de pesquisa... vc foi direto ao ponto ... valew

Franco disse...

Ótimo e bem objetivo!

Parabéns!

Anônimo disse...

oi, achei boa a tua pesquisa porque estou fazendo um trabalho sobre requisitos e eel me ajudou bastanteforça e continue fazendo esse trabalho.gracias

Blog do Davi disse...

Beleza! Nada contra! Mas achei um tanto superficial.
Requisitos funcionais descrevem o comportamento, o que o sistema tem que atender, o que o usuário deseja obter de resultado, o que o usuário pode entrar de dados, que tipos de interação vai ocorrer entre o usuário e o sistema e o resultado esperado desta.
Requisitos não funcionais estão relacionados a itens como: confiabilidade - aí entrariam restrições de banco de dados que, por exemplo, suportassem transação; restrições de codificação, que fosse escrito em linguagem orientada a objetos e que a aplicação fosse dividida em camadas aumentando a escalabilidade, extensibilidade e facilitando a manutenção, entre outros... - não vou aqui fazer um artigo completo -.
Resumindo: faltou exemplos do que foi dito e um aprofundamento maior em cada detalhe.

Thiago Marotta disse...

Exemplo simples e direto!
Muito bom.

Roberto Borges disse...

Gostei muito do trabalho, mas concordei com as ponderaÇões sobre requisitos de interface, que para mim estão no mesmo grupo não funcionais.

Anônimo disse...

Achei aqui, eu tenho que fazer a monografia. Valeu!

Anônimo disse...

Saberia me dizer qual dos dois requisitos deve ser focado em um primeiro momento. Se por exemplo na etapa do levantamento de requisitos eu sugerisse que os envolvidos se concentrassem exclusivamente nos requisitos funcionais, estaria errado ? Obrigado !

Francilvio Alff disse...

Boa, sempre bom ter mais informações relacionados à area de engenharia de requisitos.

Blog do Thiago disse...

Excelente post! Parabéns!

FATEC Sul ADS 2011 disse...

Obrigado pela aulinha. Achei o exemplo exposto bem eficiente.

Thiagobarso disse...

Muito bom, esclareceu demais.

Thiagobarso disse...

Valeu! Esclareceu demais!

mary disse...

Otimo.

mary disse...

Otimo.

Unknown disse...

E muito bom o conteúdo, ajudou bastante!

Unknown disse...

Muito bom, me ajudou muito !!

Obrigado.