Este documento discute a dificuldade em definir qualidade de software, já que percepções variam entre partes interessadas. Qualidade depende do contexto e não pode ser equiparada a testes, pois software está sujeito a problemas desconhecidos. A qualidade deve ser definida por atributos como robustez e modificabilidade, não apenas defeitos identificados em testes.
1. Definindo Qualidade de Software
Qualidade sempre foi um tema difícil de definir, e qualidade de software tem sido
excepcionalmente difícil. A razão para isso é que a percepção de qualidade varia
individualmente e de um objeto a outro.
Para a qualidade de software de uma aplicação específica, as percepções de qualidade diferem
entre clientes, desenvolvedores, usuários, gestores, pessoal de qualidade de software,
testadores, executivos, e outras partes interessadas. Muitas definições têm sido sugeridas ao
longo dos anos, mas nenhuma foi totalmente satisfatória ou totalmente adotada pela indústria
de software, incluindo as consagradas nas normas internacionais.
A razão que a qualidade em termos de qualidade geral e software, em especial, tem sido difícil
de definir é porque a palavra "qualidade" tem muitas nuances e tons. Por exemplo, entre os
atributos de qualidade podem ser encontrados estes dez:
1. Elegância e beleza nos olhos de quem vê.
2. Capacidade de uso para diversos fins.
3. Satisfação das necessidades dos usuários, explícitos e implícitos.
4. Livre de defeitos, talvez a níveis Seis Sigma.
5. Alta eficiência das atividades de remoção de defeitos.
6. Alta confiabilidade ao operar.
7. Facilidade de aprendizagem e de facilidade de utilização.
8. Clareza dos guias de uso e materiais de ajuda.
9. A facilidade de acesso ao apoio ao cliente.
10. Reparos rápidos de defeitos relatados.
Para complicar ainda mais a definição, a qualidade muitas vezes depende do contexto no qual
um componente de software ou característica opera. A qualidade de um componente de
software não é uma propriedade intrínseca – o mesmo componente pode ser de excelente
qualidade ou altamente perigoso, dependendo do ambiente em que se insere ou a intenção do
usuário.
Esta natureza contextual de qualidade de software é um desafio fundamental e aplica-se a
cada um dos dez atributos listados. O que é elegante em uma situação pode ser totalmente
inviável em outro, o que é altamente confiável sob certas condições pode rapidamente
quebrar em outros.
Isso nos leva à distinção entre testes e qualidade de software. A qualidade do software é
muitas vezes vagamente equiparada com as atividades de teste ou garantia de qualidade. No
entanto, contextualidade e noção de mutabilidade de software são as razões pelas quais a
qualidade do software não pode ser equiparada com o teste ou garantia de qualidade.
2. Testes só podem resolver incógnitas conhecidas. Se você não sabe o que você está testando,
você não está, por definição, testando. Mas o software está sujeito a incógnitas
desconhecidas. Nenhuma quantidade de testes funcionais ou não-funcionais pode ser
projetada para detectar e corrigir esses problemas. Por exemplo, o comportamento de
aplicação pode mudar quando houver alguma mudança de tecnologia, de ambiente ou
atualização de versão.
É impossível conceber testes para estas condições de antecedência. No entanto, com a
experiência, sabemos que algumas aplicações são mais robustas e confiáveis do que as outras
quando o ambiente ao seu redor muda. Algumas aplicações são muito mais fáceis de modificar
ou ampliar, em resposta a necessidades prementes de negócios. Estes atributos de uma
aplicação - robustez, confiabilidade, modificabilidade, e assim por diante - são indicadores
confiáveis de qualidade da aplicação que vão além dos defeitos identificados durante os testes
ou as ineficiências de processo ou lapsos de conformidade identificados na garantia da
qualidade. Portanto, a qualidade de uma aplicação pode e deve ser definida de forma a
adaptar estes indicadores de qualidade que aqueles identificados no teste e controle de
qualidade.
Como os computadores e software são agora as principais ferramentas que operam a indústria
e o governo, qualidade de software e segurança de software estão entre os temas mais
importantes do mundo moderno. De fato, a importância da qualidade e segurança irá
aumentar ao longo da próxima década.
Do ponto de vista econômico, os níveis mais elevados de qualidade de software podem
encurtar prazos de desenvolvimento, reduzir os custos de desenvolvimento e manutenção,
melhorar a satisfação do cliente, melhorar o moral da equipe e melhorar o status da profissão
de engenharia de software, tudo ao mesmo tempo.