A qualidade contempla uma série de objetivos da construção de software, a saber:
- Extensibilidade: Facilidade de se alterar o sistema para contemplar novas funcionalidades
- Manutenabilidade: Facilidade de manutenir o sistema
- Reutilização de código: Facilidade de se reutilizar código já desenvolvido, eficazmente
- Performance: Processamentos com tempo de resposta adequado às necessidades do usuário
- Escalabilidade: Capacidade do sistema poder ser utilizado por número crescente de usuários simultaneamente
- Eficiência no desenvolvimento: Desenvolvimento elegante e eficaz
- Confiança nos dados apresentados: Tranquilidade dos usuários de que as informações apresentadas pelo sistema são fidedignos
- Usabilidade: Facilidade de se utilizar o sistema
Na verdade, os quesitos acima são conhecidos como Requisitos Não Funcionais.
Na minha vida profissional, tenho presenciado uma série de problemas muito conhecidos nas empresas que investem no desenvolvimento de sistemas, listados abaixo, sejam por desenvolvimento interno ou através da contratação de empresas que constroem sistemas.
Apresento a seguir, consequências práticas de desenvolver software de modo AD HOC, sem utilização de processos definidos, orientação a objetos e melhores práticas, sendo elas:
- Softwares difíceis de se dar manutenção, tanto corretiva quanto evolutiva. Estatística de mercado mostram que os profissionais envolvidos no desenvolvimento, gastam, em média, cerca de 50% do esforço somente tentando entender o código pronto
- Softwares difíceis de se implementar alterações, tanto corretivas quanto evolutivas
- Reutilização de código mal elaborada, sujeita a geração de erros em outras partes do sistema em desenvolvimento
- Sistemas com baixa performance e escalabilidade inadequada
- Baixa eficiência no desenvolvimento, com analistas desenvolvendo as mesmas funcionalidades diversas vezes
- Falta de confiança nos dados apresentados pelo sistema, fazendo com que usuários deixem de utilizar o sistema por não confiar nas informações apresentadas
- Baixa qualidade de código
Além da série de pontos apresentados acima relacionados à qualidade e às armadilhas do desenvolvimento de software de maneira AD HOC, temos associado o maior desejo de todas as empresas que desenvolvem software de terem menores custos e tempo de desenvolvimento nos processos de implementação e manutenção de sistemas.
No próximo artigo começarei a descrever maneiras propostas pela área de TI para se atingir os objetivos de qualidade de software e de se mitigar as armadilhas criadas pelo desenvolvimento AD HOC de software.
Você pode estudar mais sobre o assunto também em meus livros: Engenharia de Software na prática e Análise e Design Orientados a Objetos.