Sete Princípios da Gestão da Qualidade (Quality Management Principles)
- ISO 9000:2015
- Gestão da Qualidade Total (TQM - Total Quality Management) e o arcabouço da série de normas ISO 9000 são considerados mecanismos essenciais para a melhoria e garantia da qualidade do processo de software
- É visto como uma filosofia fundamental que deve guiar a implementação da Engenharia de Software e da Garantia da Qualidade de Software (SQA)
- Descrição de cada princípio, baseada na sua aplicação no contexto da Engenharia de Software, conforme o foco de Pressman:
- Princípios Básicos da Gerência de Qualidade de Software
- 1. Foco no Cliente
- Descrição: O software e o processo de desenvolvimento devem ser centrados na satisfação das necessidades atuais e futuras do cliente.
- Aplicação em Software (Pressman):
- A qualidade é, primariamente, a satisfação do usuário (a visão de usuário da qualidade)
- O engenheiro de software deve se empenhar em entender claramente os requisitos do cliente, realizando atividades como a Engenharia de Requisitos e a Validação, garantindo que o produto final seja adequado ao uso (fitness for use)
- 1. Foco no Cliente
- 2. Liderança
- Descrição: A liderança estabelece a unidade de propósito e a direção da organização. Os líderes criam um ambiente no qual as pessoas podem se engajar totalmente no alcance dos objetivos de qualidade
- Aplicação em Software (Pressman):
- A gerência de software deve demonstrar comprometimento com a qualidade (o chamado "compromisso com a qualidade")
- Isso significa alocar recursos, definir políticas de qualidade e apoiar o grupo de SQA, tornando a qualidade uma prioridade estratégica, e não apenas uma atividade de teste de final de projeto
- 3. Engajamento das Pessoas
- Descrição: Pessoas competentes, capacitadas e engajadas em todos os níveis são essenciais para aumentar a capacidade da organização de criar valor.
- Aplicação em Software (Pressman):
- A responsabilidade pela qualidade é de todos (engenheiros, testadores, gerentes). Requer Revisões Técnicas Formais (RTFs), onde o engenheiro de software se responsabiliza pela qualidade do seu trabalho e a equipe colabora na identificação precoce de erros, aumentando o senso de propriedade e o engajamento na qualidade.
- 4. Abordagem de Processo
- Descrição: Um resultado consistente e previsível é alcançado de forma mais eficaz e eficiente quando as atividades são entendidas e gerenciadas como processos inter-relacionados que funcionam como um sistema coerente.
- Aplicação em Software (Pressman):
- A qualidade do produto é inseparável da qualidade do processo (a visão de fabricação da qualidade). Modelos como CMMI ou MPS.Br são adotados para padronizar, medir e controlar os processos (comunicação, modelagem, construção, deployment), garantindo que o software seja produzido de maneira repetível e previsível, resultando em menor variação e mais qualidade.
- 5. Melhoria Contínua
- Descrição: O sucesso sustentável de uma organização requer foco contínuo na melhoria.
- Aplicação em Software (Pressman):
- A equipe de SQA deve coletar métricas de erro e defeito para identificar as causas raiz dos problemas. A melhoria contínua envolve usar o ciclo PDCA (Plan-Do-Check-Act) para aprimorar os processos de desenvolvimento, reduzindo a taxa de defeitos introduzidos em projetos futuros e diminuindo os Custos de Falha
- 6. Tomada de Decisão Baseada em Evidências
- Descrição: Decisões eficazes baseiam-se na análise de dados e informações.
- Aplicação em Software (Pressman):
- A qualidade deve ser mensurada. Métricas como Densidade de Defeitos, Taxa de Falhas ou Cobertura de Testes fornecem os dados necessários para que a gerência tome decisões informadas sobre o processo (por exemplo, decidir se o software está pronto para a entrega ou se uma etapa do processo precisa de mais tempo/recursos). Isso substitui a tomada de decisão por "instinto" ou "achismo"
- 7. Gestão dos Relacionamentos
- Descrição: Para o sucesso sustentável, as organizações gerenciam seus relacionamentos com partes interessadas relevantes, como clientes, fornecedores e parceiros
- Aplicação em Software (Pressman):
- Reconhecer que a qualidade é afetada por entidades externas (clientes, fornecedores de componentes de software). O SQA deve estender suas práticas à Gestão de Fornecedores e garantir a colaboração eficaz com o cliente para a validação dos requisitos e a aceitação final do produto. É uma extensão do foco no cliente para todo o ecossistema do projeto.
- 2. Liderança
Erro, defeito e falha
- ISTQB - International Software Testing Qualifications Board:
- Em Engenharia de Software, embora sejam frequentemente usados como sinônimos no dia a dia (e muitas vezes chamados genericamente de "bug"), os termos erro, defeito e falha possuem significados distintos e representam estágios diferentes no processo de desenvolvimento e execução do software
- Erro (Error / Mistake):
- Ação humana incorreta (um engano, um equívoco) que leva a um problema no software ou em seus artefatos (documentos, requisitos, código, etc.)
- Cometido por um ser humano, como um desenvolvedor que escreve um código incorreto, um analista que documenta um requisito errado ou um designer que especifica uma interface confusa
- Exemplo: O programador digita o operador " < " (menor que) em vez de " <= " (menor ou igual) em uma condição if.
- Defeito (Defect / Fault / Bug):
- Resultado de um erro; uma imperfeição, inconsistência ou não conformidade presente no código-fonte ou em algum artefato relacionado (documento de requisitos, de projeto, etc.). É a causa raiz latente de um comportamento incorreto
- É a "peça" incorreta no software (o código incorreto, o requisito ambíguo, etc.)
- Relação: O erro humano introduz o defeito no sistema. Um defeito pode existir no código por muito tempo sem se manifestar
- Exemplo: A linha de código com o operador errado (if (x < 10)) é o defeito.
- Falha (Failure):
- Manifestação do defeito durante a execução do software. É o comportamento operacional do software diferente do esperado ou especificado
- É o sintoma visível, a não entrega do resultado ou serviço esperado. É o que o usuário ou testador percebe
- Relação: O defeito é ativado sob certas condições de execução, levando a um estado incorreto (o erro no sentido de estado inconsistente/resultado inesperado), que se propaga e se manifesta como uma falha para o usuário
- Exemplo: Um usuário tenta inserir o valor 10. Devido ao defeito (if (x < 10)), a ação esperada não é executada, e o software se comporta de forma incorreta (ex.: não processa o valor 10 ou trava). Isso é a falha.
- Resumindo:
- Erro é o engano que você comete
- Defeito é o código ruim que resulta desse engano
- Falha é o sistema quebrando ou não funcionando como deveria por causa daquele código ruim.