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!
texto muito bom, gostei bastante!
gostei muito do conteudos de suas materia Andre, mas gostaria da sua ajuda…como faço pra converter um programa feito em delhpi 5 para delphi 7?
Olá, getulio! A conversão de projetos entre versões do Delphi depende de algumas variáveis, como compatibilidade de componentes de terceiros e adaptações dos componentes da VCL. Pra ficar mais fácil, entrarei em contato com você por e-mail, ok?
Artigo muito bom. Direto ao ponto!!
Obrigado pelo feedback, Helio! Abraço!
Muito bom, contribuiu muito para meu entendimento sobre o assunto.
Compartilhar conhecimento é muito importante, obrigado por esta ajudando com seu conhecimento.
Olá, Alabam!
Fico contente que o artigo tenha lhe trazido conhecimento!
Agradeço pelo feedback e pela motivação.
Abraço!
André,
Cara, Parabéns! Você me auxiliou uma tarefa que foi designada pelo nosso diretor e estou a mais de duas horas quebrando a cabeça. Por coincidência, achei o seu post no google, e consequentemente o seu post vai nos dar excelentes resultados!
Uma abraço Amigo!
Att,
Allex
Fala, grande Allex!
Rapaz, fiquei bastante contente com o seu comentário! Espero que o artigo realmente seja útil para a tarefa que você precisa desempenhar!
Um abração pra você também, Allex!
Obrigado!
adorei o texto muito bom parabéns
Obrigado, Daianne! 🙂