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?
Â
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.
• 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! 🙂