Gerenciamento de Qualidade
Engenharia de Software 2o. Semestre de 2005
UNIVERSIDADE ESTADUAL PAULISTA
INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS
Gerenciamento de Qualidade
●
Gerenciar a qualidade tanto
do processo como do
produto de software
Tópicos
● Garantia e padrões de qualidade ● Planejamento de qualidade
● Controle de qualidade
Gerenciamento da qualidade de
software
● Preocupa-se em garantir que o nível exigido de
qualidade do produto de software seja atingido
● Envolve definir procedimentos e padrões de
qualidade que devem ser seguidos
● Devem ajudar a desenvolver uma “cultura de
qualidade” onde qualidade deve ser vista como
O que é qualidade?
● Classicamente, a noção de qualidade é a de que o
produto desenvolvido deve cumprir com suas especificações
● Para sistemas de software, existem problemas:
• O desenvolvedor também possui requisitos de qualidade (por ex. facilidade de manutenção)
• Alguns requisitos de qualidade são difíceis de serem especificados de forma não ambígua. (Ex. facilidade de manutenção).
• Especificações de software são usualmente incompletas e inconsistentes.
O compromisso com a qualidade
● Não se pode esperar por uma especificação
perfeita antes de implantar procedimentos de gerenciamento de qualidade.
● Deve-se implantar procedimentos para melhorar
a qualidade dentro das restrições impostas por uma especificação imperfeita.
● O gerenciamento de qualidade não se preocupa
somente em reduzir defeitos, se preocupa reduzir defeitos
Atividades do gerenciamento de
qualidade
● Garantia de qualidade
• Estabelecer uma estrutura de procedimentos e de padrões organizacionais para qualidade.
● Planejamento de qualidade
• Seleção e ajustes de procedimentos e de padrões de qualidade para um projeto específico.
● Controle de qualidade
• Garantir que os procedimentos e padrões estão sendo seguidos pela equipe de desenvolvimento de software.
O gerenciamento de qualidade deve ser uma atividade
Gerenciamento de qualidade e desenvolvimento de software Processo de desenvolvimento de software Processo de gerenciamento de qualidade Padrões e procedimentos Plano de qualidade Relatórios de revisão De qualidade
ISO 9000
● Padrão internacional para o gerenciamento de
qualidade.
● Aplicável a uma gama de organizações, desde a
industria de manufatura até as indústrias de serviços.
● ISO 9001 é aplicável a organizações que projetam,
desenvolvem e dão manutenção a produtos
● ISO 9001 é um modelo genérico de um processo de
ISO 9001 – áreas cobertas
Treinamento Auditorias internas de qualidade
Identificação e facilidade de rastreamento do produto
Produtos fornecidos para o comprador
Ação corretiva Revisão do contrato
Status de inspeção e teste Equipamentos de inspeção e teste
Registros de qualidade Controle de documento
Compras Manuseio, armazenamento, embalagem e
entrega
Controle de projeto Controle de produto que não estão em
conformidade
Sistema de qualidade Responsabilidade de gerenciamento
Certificação ISO 9000
● Os procedimentos de garantia de qualidade devem ser
documentados em um manual de qualidade organizacional
● Instituições independentes podem certificar que o
processo de qualidade de uma organização, segundo o manual, está em conformidade com a ISSO 9001
● Cada vez mais, os clientes procuram a certificação da
ISO 9000 em fornecedores, como indicativo do nível de seriedade com que consideram a qualidade.
● Padrões são a chave para gerenciamento de qualidade
efetivos.
● Podem ser internacionais, nacionais, organizacionais ou
padrões de projeto.
● Padrões de produto são os padrões que se aplicam ao
produto de software em desenvolvimento. Ex: estilo de programação, etc.
● Padrões de processo definem os processos a serem
seguidos durante o desenvolvimento de software. Ex. definições de especificação, processos de projeto e validação, e documentos que devem ser gerados
● Encapsulam as melhores práticas – evitam a
repetição de erros passados.
● Infra estrutura para o processo de garantia de
qualidade – envolve a verificação de conformidade com os padrões
● Ajudam em termos de continuidade – todos os
engenheiros de uma organização adotam as mesmas práticas – o esforço de aprendizado é reduzido.
Padrões de produto e de
processo
Submissão de documentos a CM (gerenciamento de configuração) Estrutura do documento de requisitos
Conduta de revisão de projeto Formulário de revisão de projeto
Padrões de processo Padrões de produto
Processo de liberação de versão Modelo de cabeçalho de procedimento
Processo de registro de teste Formulário de pedido de mudança
Processo de controle de mudança Modelo do plano de projeto
Processo de aprovação do plano de projeto Estilo de programação em Java
● A qualidade de um produto desenvolvido é diretamente
influenciado pela qualidade do processo de produção.
● Particularmente importante em desenvolvimento de
software, uma vez que é difícil avaliar atributos de qualidade do produto sem utilizar o software por um período longo.
● Contudo, a relação entre a qualidade de processo e do
produto em produção é complexa – a modificação do processo nem sempre conduz à melhoria da qualidade.
Qualidade de produto e de
processo
Qualidade baseada em processo
● Ligação direta entre o processo e produto em
produtos manufaturados.
● Mais complexo em software pois:
• A aplicação de habilidades individuais e experiências é
particularmente importante no desenvolvimento de software. • Fatores externos, tais como novidade de uma aplicação ou
pressão comercial para a liberação rápida de um produto, podem afetar o produto.
Qualidade baseada no processo
Defina o processo Desenvolva O produto Avalie a qualidade Do produto Melhore o processo Padronize o processo Qualidade OK? sim não
● Definição de padrões de processo, como por
exemplo: como conduzir revisões, quando devem ocorrer, etc.
● Monitorar o processo de desenvolvimento, a fim
de assegurar que os padrões estão sendo seguidos.
● Relatar o processo de software para a gerência
de projeto e para o comprador do software.
Atividades de gerenciamento de
qualidade de processo
Planejamento de qualidade
● Um plano de qualidade deve estabelecer as
qualidades desejadas para o produto e como essas qualidades devem ser avaliadas.
● Deve definir o processo de garantia de
qualidade.
● Deve selecionar os padrões organizacionais
apropriados a um determinado produto e
processo de desenvolvimento e, se necessário, definir novos padrões.
Estrutura do plano de qualidade
● Introdução sobre o produto ● Planos para o produto
● Descrições de processo ● Metas de qualidade
● Riscos e gerenciamento dos riscos.
Planos de qualidade devem ser documentos sucintos.
Atributos de qualidade do
software
Facilidade de uso Testabilidade Proteção Portabilidade Facilidade de compreensão Segurança Facilidade de aprendizado Complexidade Robustez Eficiência Modularidade Capacidade de recuperação Facilidade de reuso Facilidade de adaptação ConfiabilidadeControle de qualidade
● Supervisionar o processo de desenvolvimento
de software para garantir que os procedimentos e os padrões de garantia de qualidade seja
seguidos.
● Duas abordagens para o controle de qualidade
• Revisões de qualidade
• Avaliação automática de software e medição quantitativa de alguns atributos de software
Revisões de qualidade
● O principal método de validar a qualidade de um
processo ou de um produto.
● Revisores examinam partes ou todo o processo
ou o sistema e sua documentação para encontrar potenciais problemas.
● Existem diferentes tipos de revisões com
diferentes objetivos
• Inspeções para a remoção de defeitos (produto)
• Revisões para avaliar o progresso (produto e processo) • Revisões de qualidade (produto e padrões)
Tipos de revisões
Realizar uma análise técnica dos
componentes ou da documentação do produto, a fim de encontrar inconsistências entre a especificação e o projeto, código ou documentação dos componentes e garantir Revisões de qualidade
Fornecer informações à gerência sobre o progresso geral do projeto. Essa é uma revisão de processo e de produto, e se preocupa com custos, planos e prazos. Revisões de progresso
Detectar erros detalhados nos requisitos, nos projetos ou no código. A revisão deve ser orientada por uma lista de possíveis erros,
Inspeções de projeto ou programa
Objetivo Tipo de revisão
Medição e métricas de software
● Medição de software se preocupa em obter um
valor numérico para alguns atributos de um produto ou de um processo de software.
● Permite comparações objetivas entre técnicas e
processos.
● Algumas organizações introduziram programas
de medições, porém o uso sistemático de medições ainda não é comum.
● Qualquer tipo de medição que se refira a um sistema de
software, processo ou documentação relacionada
• Linhas de código em um programa, número de pessoas-dia
necessário para desenvolver um componente, número de defeitos relatados em um produto de software fornecido, etc.
● Permite que o sofware e o processo de desenvolvimento
de software sejam quantificados
● Medidas do processo de software ou produto
● Podem ser usadas para estimar atributos do produto
(métricas preditivas) ou controlar o processo de software
Métricas preditivas e de controle
Processo de software Decisões de gerenciamento Medições de controle Produtos de software Medições preditivas● Uma propriedade do software pode ser medida ● Existe um relacionamento entre o que podemos
medir e o que queremos saber.
● Esse relacionamento pode ser formalizado e
validado.
Pode ser difícil relacionar o que pode ser medido com os atributos de qualidade desejados.
Relação entre atributos internos e
externos de software
Manutenibilidade Confiabilidade Portabilidade Facilidade de uso Número de parâmetros de procedimento Complexidade ciclomática Tamanho do programa em Linhas de códigoNúmero de mensagens de erro
O processo de medição
● Um processo de medição pode ser parte de um
processo de controle de qualidade.
● Dados coletados durante esse processo devem
ser mantidos como um recurso organizacional (dados históricos)
● Uma vez estabelecido um banco de dados de
medição, comparações entre projetos podem ser efetuadas e métricas específicas podem ser
● Métricas devem predizer a qualidade do produto ● Classes de métricas de produto
• Métricas dinâmica – coletadas por medições feitas de um programa em execução
• Métricas estáticas – coletadas por medições feitas das
representações do sistema (projeto, programa, documentação) Métricas dinâmicas ajudam a avaliar a eficiência e
confiabilidade; métricas estáticas ajudam a avaliar a
complexidade, facilidade de compreensão e facilidade de manutenção.
Métricas estáticas e dinâmicas
● Métricas dinâmicas estão intimamente
relacionadas com os atributos de qualidade do software
• É relativamente fácil medir o tempo de resposta de um sistema (atributo de performance) ou número de falhas (atributo de
confiabilidade)
● Métricas estáticas tem um relacionamento
indireto com atributos de qualidade
• É preciso derivar um relacionamento entre essas métricas e propriedades como complexidade, legibilidade e facilidade de manutenção.
Métricas de produto de software
Medida do tamanho de um programa.
Tamanho do código
Medida da complexidade de controle de um programa. Pode estar relacionada com a
facilidade de compreensão. Complexidade ciclomática
Descrição Métricas de software
Mede o comprimento das variáveis. Quanto maior, mais compreensível o programa. Extensão dos identificadores
Fan-in - Medida do número de funções que chamam outra função. Fan-out é o número de funções que são chamada pela função.
Métricas de software orientado a
objetos
Quanto mais profunda, mais complexo é o projeto.
Profundidade da árvore de herança
Idem ao software convencional. Deve-se fazer uma distinção entre as
chamadas de outros métodos dentro do objeto e chamadas de métodos
externos. Método de Fan-in/Fan-out
Descrição Métricas de software
Um alto valor para essa métrica indica que a superclasse utilizada pode não Número de operações sobrepostas
(overloading)
Número de métodos em uma classe ponderados pela complexidade de cada método.
Análise de medições
● A dificuldade está em compreender o que as
medidas significam
• A análise dos dados coletados é bastante difícil
● Profissionais da área de estatística podem
oferecer ajuda valiosa.
● A Análise dos dados deve levar em conta as
● Entender os processos existentes
● Introduzir alterações no processo para atingir objetivos
organizacionais que, geralmente, são melhorar a
qualidade do produto, reduzir os custos e o tempo de desenvolvimento
● A maioria da literatura relacionada a melhoria de
processo tem se concentrado na redução de defeitos. Isso reflete a grande preocupação da indústria em
relação a qualidade de seus produtos.
● Outros atributos do processo podem ser o alvo de
melhorias.
Atributos de processo
Até que ponto as atividades do processo podem ser apoiadas por ferramentas CASE?
Facilidade de suporte
O processo pode continuar , mesmo que surjam problemas inesperados?
Robustez
O processo está projetado de tal maneira que seus erros sejam evitados ou identificados antes que resultem em erros no produto?
Confiabilidade
As atividades de processo culminam em resultados nítidos, de modo que o processo do processo seja externamente visível?
Visibilidade
Até que ponto o processo está explicitamente definido e com que facilidade de pode compreender a definição do processo?
Facilidade de compreensão
Descrição Características de processo
● Análise de processo
• Analisar e modelar (quantitativamente, se possível) processos existentes
● Identificação de melhoria
• Identificar gargalos relativos a qualidade, ao prazo e ao custo
● Introdução de mudançã de processo
• Modificar o processo para remover os gargalos identificados
● Treinamento em mudanças de processo
• Treinar o pessoal envolvidos em novas propostas de processo
● Ajuste de mudanças
● A qualidade de processo e qualidade de produto estão
intimamente relacionados
● Um bom processo geralmente produz bons produtos ● Em algumas classes produtos manufaturados, o
processo é o principal determinante da qualidade do produto
● Para atividades baseadas em projeto, outros fatores
também estão envolvidos, em especial a habilidade dos projetistas.
Qualidade de processo e de
produto
Principais fatores da qualidade de
produtos de software
Qualidade do produto Tecnologia de desenvolvimento Qualidade do processo Custo, tempo e cronograma Qualidade do pessoal● Fundado pelo Dept. de Defesa dos EUA, junto à
Universidade Carnegie Mellon
● A missão é a transferência de tecnologia de software,
para capacitação das organizações que recebem fundos do DoD para grandes projetos de defesa.
● Modelo de maturidade foi proposto em meados da
década de 80, e refinado no início da década de 90.
● O resultado desse trabalho tem tido grande influência na
melhoria do processo de software
O Intituto de Engenharia de
Software (SEI)
O Modelo de Maturidade de
Capacitação da SEI
Nível 2 Repetível Nível 3 Definido Nível 4 Gerenciado Nível 5 Otimização● Inicial
• Essencialmente não controlado
● Repetível
• Procedimentos de gerenciamento de produto definidos e usados
● Definido
• Procedimentos e estratégias de gerenciamento de projeto definidos e usados
● Gerenciado
• Estratégias de gerenciamento de qualidade definidas e usadas.
● Otimização
• Estratégias de melhoria do processo definidas e usadas
Áreas-chave
de processo
Gerenciamento de configuração de software Garantia de qualidade de software
Gerenciamento de contrato de software Acompanhamento e supervisão do projeto
Revisão por pares
Coordenação entre grupos
Engenharia de produto de software Gerenciamento de software integrado Programa de Treinamento
Definição de processo as organização Foco em processo da organização
Gerenciamento da qualidade de sotware Gerenciamento do processo quantitativo
Gerenciamento da mudança de processo Gerenciamento da mudança de tecnologia Prevenção de defeitos
Repetível
Definido
Gerenciado
● O enfoque é em gerenciamento de projeto em
vez de gerenciamento de produto
● Ignora o uso de tecnologias como por exemplo a
prototipação.
● Não incorpora a análise de risco como uma área
chave de processo.
● Não define o seu domínio de aplicabilidade
CMM e ISO 9000
● Existe uma clara correlação entre os processos
chave e o padrão ISO 9000.
● O CMM é mais detalhado e prescritivo e inclui
uma estrutura de melhoria de processo.
● Em geral, as organizações cuja maturidade de
processo é classificada no Nível 2 ou 3
provavelmente são compatíveis com a ISO 9000.
Pontos chave
●● Gerenciamento de qualidade de software tem Gerenciamento de qualidade de software
como objetivo garantir que o software está de acordo com os padrões propostos.
● Procedimentos de garantia de qualidade devem
ser documentados em um manual de qualidade manual de qualidade organizacional
organizacional.
●
● Padrões de software reuni as melhores práticasPadrões de software
●
● Revisão é a abordagem mais utilizada para Revisão
Pontos chave
● Medições de software são informações
coletadas sobre o processo de software e o produto de software.
● Medidas de qualidade do produto devem ser
usadas para identificar componentes potencialmente problemáticos.
● Não existe um padrão universalmente aceito