Fundamentos
- Pressman: a qualidade é um conceito multifacetado e sua definição depende fundamentalmente de quem a está avaliando.
- Categoriza a qualidade em cinco visões amplas:
| Ponto de vista | Foco da qualidade | Definição na prática | Síntese | |
|---|---|---|---|---|
| Transcendental | Excelência Inata | Qualidade é o que se sente; é reconhecível | Percepção de excelência que o software evoca | |
| Focado no Usuário | Adequação ao Propósito | Qualidade é a satisfação das necessidades do usuário | Software é de qualidade atende os requisitos explícitos e implícitos do cliente | |
| Focado na Fabricação (Processo) | Conformidade com as Especificações | Qualidade é a aderência aos padrões de desenvolvimento e aos requisitos especificados | Resultado de um processo bem executado e repetível | |
| Baseado no Valor | Custo-Benefício | Qualidade é o que o cliente está disposto a pagar | Produto de alta qualidade proporciona valor (benefícios) que justifica o custo |
Histórico sobre Qualidade
- Histórico da qualidade de software a partir da necessidade de mitigar a "Crise do Software"
- Período em que projetos frequentemente excediam prazos, orçamentos e não entregavam a funcionalidade correta
- A evolução da qualidade passou de uma fase de Correção de Defeitos (foco no produto final) para a Garantia da Qualidade (SQA) com foco na prevenção e melhoria contínua do processo)
- SQA – Software Quality Assurance: Ao contrário do Teste de Software (que é uma atividade focada na detecção de defeitos no produto final), o SQA é uma atividade de prevenção e avaliação de processo que é aplicada desde o início do projeto.
- A ênfase mudou de "Qualidade do Produto" para "Qualidade do Processo", reconhecendo que a qualidade do software é diretamente determinada pela qualidade do processo utilizado para criá-lo.
Custo da Qualidade
- SQA enfatiza que a qualidade é um investimento, não apenas um custo
- Custo da Qualidade (CoQ) é uma métrica usada para quantificar o esforço gasto para garantir a qualidade ou para corrigir a falta dela
- CoQ é dividido em três categorias principais:
- Custos de Prevenção: Custos associados a atividades que buscam evitar a ocorrência de defeitos
- Exemplos: Planejamento da Qualidade, Treinamento de Engenharia de Software, Revisões Técnicas Formais
- Custos de Prevenção: Custos associados a atividades que buscam evitar a ocorrência de defeitos
- Custos de Avaliação (ou Detecção): Custos associados à verificação da qualidade do produto durante o desenvolvimento
- Exemplos: Inspeções, Testes de Unidade/Integração/Sistema, Auditorias de Qualidade
- Custos de Falha: Custos resultantes da não conformidade do produto, divididos em:
- Falha Interna: Defeitos encontrados antes da entrega ao cliente
- Exemplos: Custos de retrabalho, reparação de bugs após testes internos
- Falha Externa: Defeitos encontrados após a entrega ao cliente
- Exemplos: Suporte ao cliente, custos de garantia, perda de reputação, perda de negócios e responsabilidade legal (o custo mais alto)
- Falha Interna: Defeitos encontrados antes da entrega ao cliente
- Princípio: O custo para corrigir um defeito aumenta exponencialmente quanto mais tarde no ciclo de vida ele é descoberto
- Se torna mais caro quando encontrado pelo cliente
- SAída: Investimento em Prevenção é o mais eficiente.
Modelos e Padrões de Qualidade
- Modelos e normas internacionais fornecem uma estrutura para a melhoria do processo de software, visando garantir a qualidade
- Modelos de Maturidade de Processo:
- CMMI (Capability Maturity Model Integration):
- Um modelo de melhoria de processo que fornece uma estrutura para medir e melhorar a maturidade do processo de uma organização
- CMMI organiza as práticas de processo em níveis de maturidade (do Inicial ao Otimizado) e em áreas de processo, focando em "o que" deve ser feito para alcançar a qualidade do processo
- MPS.Br (Melhoria de Processo do Software Brasileiro):
- MPS.Br é um modelo de maturidade e capacidade brasileiro, compatível com CMMI e ISO/IEC 15504, adaptado para a realidade e o custo das pequenas e médias empresas de software no Brasil
- CMMI (Capability Maturity Model Integration):
- Normas e Padrões ISO (International Organization for Standardization):
- ISO 12207:
- Define os processos fundamentais do ciclo de vida do software
- aquisição, fornecimento, desenvolvimento, operação, manutenção
- Essencial para a perspectiva de fabricação
- Define os processos fundamentais do ciclo de vida do software
- ISO/IEC 15504 (SPICE):
- Foca na avaliação da capacidade do processo (Process Assessment). Usado para avaliar se uma organização está realizando seus processos de forma eficaz, ajudando a estabelecer níveis de capacidade
- ISO 9126 (e a evolução SQuaRE):
- ISO 9126 (Histórica):
- Definiu a qualidade do produto de software com um modelo hierárquico de seis características principais:
- Funcionalidade, Confiabilidade, Usabilidade, Eficiência, Manutenibilidade e Portabilidade
- Definiu a qualidade do produto de software com um modelo hierárquico de seis características principais:
- ISO/IEC 25000 (SQuaRE – Systems and Software Quality Requirements and Evaluation):
- É o padrão sucessor da ISO 9126
- Amplia e refina o modelo, focando nos Requisitos e Avaliação da Qualidade de Sistemas e Software
- Principal padrão para definir as características de qualidade do produto (visão de produto).
- ISO 9126 (Histórica):
- ISO 12207: