Requisitos não-funcionais e a sua importância

Como já sabemos, desenvolver um software não é uma tarefa trivial, já que, além da habilidade em programação, também é necessário compreender a regra de negócio do cliente. Durante o desenvolvimento, o nosso maior objetivo obviamente é satisfazer as necessidades pelas quais o sistema foi concebido. Mas será que só isso é importante?

Introdução

Antes de entrar no assunto, vale ressaltar o conceito de “requisitos funcionais” e a sua importância na qualidade do produto final.

Requisitos funcionais são as necessidades apontadas pelo cliente, ou seja, o que ele quer que o sistema faça. Gerenciar vendas, manter fornecedores e emitir relatórios mensais são exemplos de requisitos funcionais, que geralmente são obtidos durante a etapa de levantamento de requisitos junto ao cliente e demais usuários. Portanto, boa parte da qualidade do software está centrada em atender tais requisitos, uma vez que esse é o comportamento esperado pelo cliente.

Imagine um sistema onde somente 8 das 10 funções solicitadas foram implementadas. Em uma analogia, é a mesma coisa que comprar um carro que não possui freios e faróis: ele anda, mas uma hora irá bater. É importante implementar cada requisito do cliente, e é por isso que existem as fases de análise e modelagem em um projeto.

O problema é que, na preocupação de satisfazer as necessidades do cliente, os desenvolvedores esquecem que existem os requisitos não-funcionais, que também influenciam bastante na qualidade do software.

Requisitos não-funcionais são as características e aspectos internos do sistema, envolvendo especificamente a parte técnica. Ao contrário dos requisitos funcionais, estes requisitos não são explicitamente expostos pelo cliente, mas devem ser implicitamente compreendidos pelo desenvolvedor.  Os requisitos não-funcionais basicamente se resumem em seis itens, descritos logo abaixo.

Os requisitos não-funcionais

Segurança

O software deve garantir a segurança dos dados, bem como as permissões de acesso às suas funcionalidades, como, por exemplo, usar criptografia em senhas e liberar acesso aos menus do sistema de acordo com a hierarquia do usuário. Quando se trata de um software com informações confidenciais (como dados de vendas, faturamentos ou citações de pessoas), este item se torna indispensável.

Usabilidade

Procure desenvolver um sistema fácil de operar e que dispense muitos recursos gráficos. Se possível, adicione descrições das funções (hints) aos botões e configure teclas de atalho para as funções mais utilizadas. Quanto mais simples for a usabilidade, maior será a aceitação dos usuários.

Confiabilidade

Determina a capacidade do sistema em lidar com eventos inesperados. Suponha que o usuário esteja cadastrando um novo registro, e após inserir todas as informações, ocorre um erro no sistema e o usuário acaba perdendo as informações digitadas. Revoltante, não? A primeira coisa que ele irá fazer é pedir pra trocar o software, e dependendo das circunstâncias o pedido é atendido, rsrs. A confiabilidade significa que o sistema deve ser capaz de tratar exceções e se recuperar de falhas, sem que haja perda de dados. Backup e restauração do banco de dados também se encaixam neste item.

Padrão

Define a padronização de interface e código utilizada no desenvolvimento do software. Embora seja mais voltado para a equipe de desenvolvimento, é essencial para facilitar a manutenção e atualização do sistema. Este item também envolve conceitos de arquitetura, como utilizar MVC, padrões de projeto ou frameworks.

Desempenho

De nada adianta ter um sistema seguro, interativo e confiável se ele consome muitos recursos do computador e demora pra executar os processamentos. Um sistema lento é alvo de crítica dos usuários, mesmo que seja funcional. A performance do software pode ser melhorada utilizando técnicas de programação orientada a objetos, gerenciamento de memória, threads e otimização de código. Outros fatores como consultas SQL no banco de dados e liberação de recursos da memória também devem ser estudados para aprimorar o desempenho.

Hardware e Software

define os requisitos mínimos para o funcionamento adequado do software. Por exemplo, se o sistema faz integração com o Microsoft Outlook, este deve estar instalado no computador como pré-requisito. Da mesma forma, se o sistema trabalha em rede, é necessário que o computador tenha uma interface física de rede instalada. Esse item também abrange a portabilidade do software para outros sistemas, tal como a sua facilidade de configuração.

 

Além dos itens acima, outras características também podem ser citadas, respeitando os fundamentos da Engenharia de Software.

Antes de finalizar o artigo, vejam que no enunciando mencionei sobre o domínio da regra de negócio e habilidade de programação. A grosso modo, o primeiro se refere aos requisitos funcionais, enquanto o segundo trata de ambos.
É isso aí, ser programador realmente não é fácil, rsrs…

Até a próxima, pessoal!
Câmbio!


 

André Celestino