O termo Qualidade possui diferentes definições na literatura. O glossário do IEEE define qualidade como “Grau de conformidade de um sistema, componente ou processo com os respectivos requisitos”, ou, alternativamente, como “Grau de conformidade de um sistema, componente ou processo com as necessidades e expectativas de clientes ou usuários”.
Ambas as definições refletem aspectos importantes da qualidade; diversos autores apresentam outras definições, que geralmente giram em torno dos temas de conformidade com os requisitos e atendimento das expectativas. Naturalmente, pode haver diferenças entre as aplicações dessas definições se os requisitos explícitos não refletirem corretamente as necessidades reais. Como salienta, a qualidade é definida por uma coleção de atributos; funcionalidade, confiabilidade, satisfação do usuário e desempenho são aspectos importantes, mas parciais.
A norma NBR ISO 9000:2005 define qualidade como sendo o grau no qual um conjunto de características inerentes satisfaz aos requisitos. Ou seja, pode-se afirmar que se algum produto ou serviço atende aos requisitos especificados, este mesmo produto ou serviço possui a qualidade desejada.
Outra visão diferente é no contexto de desenvolvimento de software: qualidade pode ser entendida como um conjunto de características a serem satisfeitas em um determinado grau, de modo que o produto de software atenda às necessidades explícitas e implícitas de seus usuários .
O rumo que a Qualidade de Software tomou na história se iniciou a partir da reunião da OTAN em 1968 onde o termo “Engenharia de Software” foi utilizado pela primeira vez por F. L. Bauer.
Naquela reunião foi a primeira vez que o termo “Crise do Software” foi utilizado para dizer sobre os maus tempos que a indústria de software
E a crise foi atribuída à complexidade de desenvolver sistemas cada vez maiores, bem como à falta de gerenciamento no processo de desenvolvimento de software.
A partir daí “engenheiros de software” passaram a imitar a engenharia convencional para resolver problemas de qualidade e falhas em sistemas de informação. O modelo inicial adotado pela engenharia de software foi orientado fortemente à melhoria do produto final de software.
No início da década de 1990, o próprio mercado substituía o Controle pela Garantia da Qualidade com um foco centrado no processo e que utilizava auditorias durante todo o ciclo de vida de desenvolvimento.
A partir daí, foram surgindo normas aplicadas para a área tais como a ISO 9000-3, ISO 15504, ISO 12207, padrões IEEE 1074, IEEE 1298 e Modelos SW-CMM, CMMI e MPS.BR para Qualidade de Software.
Para um melhor entendimento e estudo, o SWEBOK 3.0 divide a qualidade de software em quatro tópicos, sendo os três primeiros tópicos subdivididos em atividades, da seguinte forma:
Ainda segundo o SWEBOK, a qualidade de software é um tema tão importante que é encontrado, de forma ubíqua, em todas as outras áreas de conhecimento envolvidas em um projeto.
É importante notar que o SWEBOK deixa claro que essa área, como nele definida, trata dos aspectos estáticos, ou seja, daqueles que não exigem a execução do software para avaliá-lo, em contraposição à área de conhecimento teste de software, que trata de aspectos dinâmicos.
Muitos autores, porém, consideram testes de software como parte da qualidade de software.
Ao longo do tempo a teoria de qualidade de software foi evoluindo, resultando inclusive na criação dos padrões ISO/IEC 9126 e ISO/IEC 25000. Uma importante contribuição foi a divisão do conceito de qualidade em subconceitos, no caso de software, inicialmente proposto por McCall, Richards e Walters.
Uma questão importante é que qualidade é uma relação entre um objeto e um observador. Isso pode ser percebido na primeira definição de Juran que cita o atendimento as necessidades do cliente. Como um software pode ter muitos clientes (ou partes interessadas), fica claro que o que é qualidade para um não necessariamente é qualidade para outro.
Já Garvin apresenta cinco formas de entender qualidade:
A principal característica dos estudos de qualidade é a definição de qualidade de forma hierárquica, sendo que o conceito mais geral de qualidade é subdividido, sucessivamente, em características e subcaracterísticas (ou ainda fatores, atributos ou critérios de qualidade). Assim, características mais gerais, como reusabilidade, correção, eficiência e outras podem ser sucessivamente detalhadas até que se alcance uma característica que pode ser medida no software propriamente dito. Por exemplo, a Eficiência de Desempenho do software é uma característica muito genérica, que é subdividada no modelo ISO 25000 em Comportamento de Tempo, Utilização de Recursos e Capacidade. Mesmo essas características precisam ser subdividadas em critérios mensuráveis (como tempo para executar uma função).
A melhoria da qualidade de software é uma forte vertente da qualidade, sendo seu desenvolvimento basicamente realizados em ciclos inspirados no modelo PDCA, como, por exemplo, o CMMI-IDEAL.
Uma polêmica importante está relacionado ao tópico "Good Enough Software", ou Software Bom o Suficiente, que defende que há um momento em que o software pode ser lançado mesmo tendo problemas, porque os benefícios de lançar o produto são muito maiores que os riscos causados pelos problemas conhecidos.
Fundamentos de Qualidade de Software é o primeiro dos 4 tópicos de Qualidade de Software do SWEBOK. Nele são tratados a "discussão e a definição dos aspectos da Qualidade de Software, seus conceitos, características, valores e sua aplicação no software sendo desenvolvido ou em manutenção."
Uma forte motivação para o foco em qualidade é que o custo relativo de corrigir erros aumenta drasticamente com a evolução do Ciclo de Vida do Software. Segundo Boehm, citado por Pressman, há corrigir um erro ou defeito na fase de manutenção do software custa 100 vezes mais que corrigi-lo na fase de requisitos.
Pressman indica os seguintes custos relacionados a qualidade de software, podendo eles ocorrerem tanto na prevenção quanto no tratamento dos problemas:
Uma lista semelhante pode ser encontrada no SWEBOK.

A Série ISO/IEC 25000, denominada Software product Quality Requirements and Evaluation (SQuaRE), é a mais moderna norma de qualidade de software, sendo organizada da seguinte forma:

Ela define 3 perspectivas de qualidade (ou modelos):
As figuras ao lado listam os atributos de qualidade de sistemas e software segunda as normas ISO/IEC 25000.
"Um Sistema de Gestão da Qualidade compreende atividades pelas quais uma organização identifica seus objetivos e determina os processos e recursos necessários para alcançar os resultados desejados." Seus princípios são: foco no cliente, liderança, engajamento das pessoas, abordagem de processo, melhoria contínua, tomada de decisão baseada em evidência e gestão dos relacionamentos com as partes interessadas.
Existem quatro subcategorias de Gerência de Qualidade de Software:
Um processo de gestão de qualidade "Assegura que produtos, serviços e implementações do ciclo de vida de processo atinja os objetivos de qualidade organizacionais e a satisfação do usuário", tendo as seguintes atividades:
As técnicas utilizadas para a gestão de qualidade podem ser estáticas, como a análise estática do software, inspeções, revisões e o uso de métodos formais, ou dinâmicas, como o uso de testes ou simulações.
A validação e verificação são atividades de apoio de um processo de garantia de qualidade de software. A motivação principal dessas atividades é prevenir e detectar os defeitos e minimizar os riscos do projeto. As atividades de validação e verificação são baseadas em técnicas de análise estática ou dinâmica dos artefatos (documentos, código fonte, código executável, etc) com o intuito de detectar os defeitos ou revelar falhas na própria fase onde eles foram inseridos ou em fases posteriores.
Dentro do contexto de qualidade de software esses termos, conhecidos como V&V, referem-se a métodos para avaliar produtos e processos. Em especial, verificação se refere a ver se o software foi desenvolvido de acordo com as suas especificações, ou seja, que construímos o software de maneira correta, enquanto validação se refere a garantir que o software atende a seus propósitos, isto é, que construímos o software certo.

A norma ISO/EIC 25020:2009 propõe um modelo de referência para a medição de qualidade de produto de software, decompondo-o em características de qualidade e estas, em sub-características de qualidade, as quais podem ser avaliadas por medidas de qualidade de software; as medidas de qualidade são geradas por funções de medição, que derivam de elementos da medida de qualidade.
Para uma boa qualidade de software existe algumas boas práticas que todos que participam do desenvolvimento devem cumprir.
Existem ferramentas e padrões de boas práticas para auxiliar o desenvolvimento do software e permitir a melhoria da qualidade entre elas estão:
Para auxiliar a garantir a qualidade de software existem várias ferramentas, que podem atuar em análises estáticas ou dinâmicas do software.
Entre a grande variedade de ferramentas existentes, é possível caracterizar alguma categorias de análise estática:
No Brasil existe o Programa Brasileiro da Qualidade e Produtividade em Software, PBQP-Software, cuja principal contribuição é o programa de Melhoria do Processo de Software Brasileiro, MPS.Br. Além disso a ABNT nacionaliza as normas internacionais.