A qualidade de software é uma área dentro da engenharia de software que agrega assuntos de normatização e processos de desenvolvimento, visando a entrega de softwares de qualidade. Entretanto, o valor dessa qualidade pode ser entendido de diferentes formas.
Para um time de desenvolvimento, qualidade de software se refere ao resultado de um processo que é executado com técnicas adequadas e com boas práticas e padrões de desenvolvimento, atendendo os requisitos previamente definidos. Já do ponto de vista do cliente, qualidade se refere ao valor que o software agrega a sua necessidade, a ponto de solucionar seu problema e suas expectativas.
O objetivo principal, buscado ao atingir qualidade em software, é reduzir problemas de desenvolvimento e atritos entre os diferentes atores desse processo, que envolve profissionais de produto, design e desenvolvimento, que buscam o desenvolvimento de um software como produto.
As características de um software como produto agregam, além das suas funcionalidades, suas necessidades, as quais podem ser divididas em: necessidades explícitas e necessidades implícitas.
Necessidades explícitas
Estas necessidades são definidas na proposta de requisitos, que agrega as condições em que o produto deve ser utilizado, além de exemplificar suas funcionalidades e seus objetivos. As necessidades explícitas estão relacionadas à qualidade do processo de desenvolvimento do software, entretanto, são percebidas apenas pelos envolvidos nesse processo.
Necessidades implícitas
As necessidades implícitas envolvem o usuário mas não complementam a documentação do produto. Podem ter relevância para o funcionamento do software e devem ser consideradas na sua construção. Além disso, as necessidades implícitas complementam a qualidade de uso do software, permitindo que o cliente atinja suas metas e expectativas.
Conclusão
A padronização de processos serve para trazer benefício, tanto para o desenvolvimento e para a documentação, quanto para os resultados de um projeto de software. Através disso o cliente tem suas demandas atendidas com maior assertividade.
Contudo, nada impede a construção de software através de processos mais simplificados, pois levando em consideração os custos de cada projeto (que varia conforme os requisitos e objetivos), e percebendo as necessidades, é possível construir um sistema de forma mais simplificada, e que mesmo assim, atinja todos os objetivos propostos.