Engenharia de Software
Prof. Wilkerson de L. Andrade
Versão resumida e traduzida dos slides originais produzidos por Ian Sommerville, Software Engineering, 7th edition. Chapter 27.
Estes slides foram adaptados dos slides gentilmente cedidos pela professora Patrícia D. L. Machado (DSC/UFCG).
Gerenciamento de Qualidade de
Software
• Garantir que o nível de qualidade requerido para o software é atingido.
• Envolve definir padrões de qualidade
adequados e procedimentos e assegurar que estes serão seguidos.
• Deve desenvolver uma “cultura de
qualidade” onde qualidade é vista como uma responsabilidade de todos.
O que é Qualidade?
• No geral, significa que um produto deve atender a sua especificação.
• Isto é mais difícil para sistemas de software:
▫ Podem existir conflitos entre requisitos de
qualidade do cliente (eficiência, confiabilidade, etc.) e requisitos de qualidade do desenvolvedor (manutenibilidade, reusabilidade, etc.);
▫ Alguns requisitos de qualidade são difíceis de especificar de forma não ambígua;
▫ Especificações de software são usualmente incompletas e inconsistentes.
O Compromisso de Qualidade
• Não podemos esperar até que
especificações sejam melhoradas antes de dar atenção ao gerenciamento de qualidade.
• Precisamos implantar procedimentos de gerência de qualidade mesmo com
Escopo de Gerência de Qualidade
• Gerência de qualidade é particularmenteimportante para sistemas grandes e complexos.
• A qualidade da documentação é um registro de progresso e dá suporte contínuo ao
desenvolvimento a medida que a equipe muda.
• Para sistemas pequenos, gerenciamento de qualidade demanda menos documentação e deve ter enfoque em uma cultura de qualidade.
Atividades de Gerência de Qualidade
• Estabelece procedimentos organizacionais e padrões de qualidade.
Garantia de Qualidade
• Seleciona procedimentos e padrões aplicáveis para um projeto específico e os modifica se necessário.
Planejamento de Qualidade
• Garante que procedimentos e padrões são seguidos pela equipe de desenvolvimento.
Controle de Qualidade
Gerenciamento de qualidade deve ser separado do gerenciamento do projeto para assegurar independência.
Gerenciamento de Qualidade e
Desenvolvimento de Software
Processo de desenvolvimento de software Processo de gerenciamento de qualidade D1 D2 D3 D4 D5 Padrões e procedimentos Plano deQualidade de Processo de Produto
• A qualidade de um produto é influenciada pela qualidade do processo de produção.
• Isto é ainda mais importante no
desenvolvimento de software, pois alguns
atributos de qualidade são difíceis de avaliar.
• Porém, existe uma relacionamento complexo e ainda pouco entendido entre processos de desenvolvimento e qualidade de produtos.
Qualidade Baseada em Processos
Definir processo Desenvolver produto Assegurar a qualidade do produto Padronizar o processo Aprimorar o processo Qualidade OK Não Sim
Qualidade de Processos na Prática
Definir padrões de processo. Ex. Como revisões devem ser conduzidas.
Monitorar o processo de desenvolvimento para assegurar que padrões estão sendo seguidos. Manter comunicação com gerentes e clientes do
projeto.
Não aplicar práticas inapropriadas simplesmente porque padrões foram estabelecidos.
Garantia de Qualidade e Padrões
• Padrões são fundamentais para o gerenciamento efetivo de qualidade.
• Existem padrões internacionais, nacionais e organizacionais.
• Padrões de Produto definem características
que todos os componentes devem exibir, como, por exemplo, um estilo comum de programação.
• Padrões de Processo definem como o
Importância de Padrões
• Encapsulamento de boas práticas – evita repetição de erros do passado.
• Representam um arcabouço para processos de garantia de qualidade – envolvem a
checagem de conformidade com padrões.
• Provêem continuidade – novos membros podem compreender a organização a partir do entendimento dos padrões que são
Padrões de Produto e Processo
Padrões de produto Padrões de processo
Formulário de revisão de projeto Conduta de revisão de projeto Estrutura de documento de requisitos Envio do documento para o CM Formato do cabeçalho de método Processo de liberação de versão
Estilo de programação em Java Processo de aprovação de plano de projeto Formato de plano de projeto Processo de controle de mudança
Problemas com Padrões
• Podem não ser vistos como relevantes e atualizados por engenheiros de software.
• Usualmente envolvem muita burocracia como preenchimento de formulários.
• Se não houver suporte adequado de
ferramentas, trabalho manual tedioso pode ser necessário para manter a documentação associada com os padrões.
ISO 9000
• Um conjunto de padrões internacionais para gerencia de qualidade.
• Aplicável a diferentes tipos de organizações desde manufatura a serviços.
• ISO 9001 é aplicável a organizações que projetam, desenvolvem e mantém produtos.
• ISO 9001 é um modelo genérico do processo de qualidade que pode ser instanciado por
ISO 9001
Responsabilidade da gerência Sistema de qualidade Controle de produtos que estão em
não-conformidade
Controle de projeto
Manuseio, armazenamento, empacotamento e entrega
Compras
Produtos fornecidos para o comprador Identificação e rastreabilidade de produto Controle de processo Inspeção e teste
Equipamento de inspeção e teste Status de inspeção e teste Revisão de contrato Ação corretiva
Controle de documento Registros de qualidade Auditorias internas de qualidade Treinamento
Certificação ISO 9000
• Procedimentos e padrões de qualidade devem ser documentados em um manual de qualidade da organização.
• Um corpo de avaliadores externo pode certificar que o manual da organização está em acordo com os padrões ISO 9000.
• Alguns consumidores requisitam que
fornecedores possuam certificação ISO 9000, apesar de que a necessidade de flexibilidade está sendo cada vez mais reconhecida.
ISO 9000 e Gerenciamento de
Qualidade
Plano de qualidade Projeto 1 Gerenciamento de qualidade do projeto Manual de qualidade da organização Modelos de qualidade ISO 9000 Processo de qualidade da organização é usado para desenvolverconhecido como documenta Apoia Plano de qualidade Projeto 2 Plano de qualidade Projeto 3 conhecido como
Planejamento de Qualidade
• Um plano de qualidade deve estabelecer as qualidades de software desejadas, descrever como elas devem ser avaliadas e definir os atributos de qualidade mais importantes.
• O plano de qualidade deve definir o processo de avaliação de qualidade.
• O plano de qualidade deve estabelecer que padrões organizacionais devem ser
aplicados e, quando necessário, definir novos padrões a serem utilizados.
Planejamento de Qualidade
• Estrutura geral de um plano de qualidade:
▫ Apresentação do produto;
▫ Planos de produto;
▫ Descrições de processos;
▫ Metas de qualidade;
▫ Riscos e gerenciamento de riscos.
• Planos de qualidade devem ser documentos curtos e sucintos
▫ Se eles forem muito longos, as pessoas não os lerão.
Atributos de Qualidade de Software
Segurança Facilidade de compreensão Portabilidade Proteção Facilidade de testes Facilidade de usoConfiabilidade Adaptabilidade Facilidade de reuso
Facilidade de
recuperação Modularidade Eficiência Robustez Complexidade Facilidade de
Controle de Qualidade
• Envolve a monitoração do processo de
desenvolvimento de software para assegurar que os padrões de garantia de qualidade
estão sendo seguidos.
• Existem duas abordagens para o controle de qualidade:
▫ Revisões de qualidade;
Revisões de Qualidade
• São o principal método de validação de
qualidade de um processo ou de um produto.
• Um grupo examina parte ou o todo de um
processo ou sistema e sua documentação para descobrir problemas potenciais.
• Há diferentes tipos de revisão com diferentes objetivos:
▫ Inspeções para a remoção de defeitos (produto);
▫ Revisões para avaliação de progresso (produto e processo);
▫ Revisões de qualidade (padrões de produto e processo).
Medições e Métricas de Software
• A medição de software se dedica a derivar umvalor numérico para algum atributo de um produto de software ou de um processo de software.
• Permite comparações objetivas entre técnicas e processos.
• Embora algumas companhias tenham
introduzido programas de medição, a maior
parte delas ainda não faz o uso sistemático de medição de software.
Métrica de Software
• Qualquer tipo de medição que se refira a um sistema de software, processo ou
documentação relacionada
▫ Linhas de código, índice de Fog, número de pessoas-dia necessário para desenvolver um componente.
• Permite quantificar o software e o processo de software.
• Pode ser usado para predizer atributos de produto ou controlar o processo de software.
• Métricas de produto podem ser usadas para previsões gerais ou identificar componentes anômalos.
Medições de Predição e de Controle
Decisões gerenciais Medições de controle Processo de software Medições de predições Produto de softwarePrevisão de Métricas
• Uma propriedade de software pode ser medida.
• Existe uma relação entre o que podemos medir e o que queremos saber. Só podemos medir
atributos internos, mas muitas vezes estamos mais interessados em atributos de software externos.
• Essa relação tem sido formalizada e validada.
• Pode ser difícil relacionar o que pode ser medido a atributos de qualidade externos desejáveis.
Atributos Internos e Externos
Confiabilidade Número de parâmetros de procedimento Complexidade ciclomática Tamanho do programa em linhas de código Número de mensagens de erro Extensão do manual do usuário Facilidade de manutenção Facilidade de uso PortabilidadeO Processo de Medição
• Um processo de medição de software pode ser parte de um processo de controle de qualidade.
• Os dados coletados durante esse processo devem ser mantidos como um recurso da organização.
• Data collected during this process should be maintained as an organisational resource.
• Uma vez que um banco de dados de medições foi estabelecido, as comparações entre projetos tornam-se possíveis.
Coleta de Dados
• Um programa de métricas deve ser baseado em um conjunto de dados de processo e
produto.
• Os dados devem ser coletados
imediatamente (sem considerar dados
históricos) e, se possível, automaticamente.
• Há três tipos de coleta de dados automática
▫ Análise estática do produto;
▫ Análise dinâmica do produto;
Precisão dos Dados
Não coletedados
desnecessários
As questões a serem respondidas devem ser
decididas com antecedência e os dados necessários identificados. Explique para as pessoas porque os dados estão sendo coletados
Esse processo não deve fazer parte de uma
avaliação pessoal.
Não confie na memória
Colete os dados quando os mesmos são gerados,
não quando o projeto terminar.
Métricas de Produtos
• Uma métrica de boa qualidade deve predizer a qualidade de um produto.
• Tipos de métricas de produto:
▫ Métricas dinâmicas são coletadas por meio de
medições realizadas em um programa em execução;
▫ Métricas estáticas são coletadas por meio de
medições realizadas em representações do sistema.
• Métricas dinâmicas ajudam a avaliar a eficiência e a confiabilidade.
• Métricas estáticas ajudam a avaliar a
complexidade, a facilidade de compreensão e a facilidade de manutenção.
Métricas Estáticas e Dinâmicas
Métricas dinâmicas estão estreitamente relacionadas com os atributos de qualidade de softwareÉ relativamente fácil medir o tempo de resposta de um sistema (atributo de performance) ou o número de falhas (atributo de confiabilidade). Métricas estáticas possuem um relacionamento indireto com atributos de qualidade
Você precisa tentar derivar um relacionamento entre essas métricas e propriedades como complexidade, facilidade de compreensão e manutenibilidade.
Métricas de Produto de Software
Métrica de
Software Descrição
Fan-in/Fan-out Fan-in é um medida do número de funções ou métodos que
chamam alguma outra função ou método (digamos X). Fan-out é o número de funções chamadas pela função X. Um valor alto para fan-in significa que X está firmemente acoplado com o resto do projeto, e mudanças em X terão grande impacto. Um alto valor para fan-out sugere que a complexidade geral de X pode ser alta devido à complexidade da lógica de controle necessária para coordenar os componentes chamados.
Extensão de código
É uma medida do tamanho de um programa. Geralmente, quanto maior for o tamanho do código de um componente, mais complexo e propenso a erros esse componente será. A extensão de código foi mostrada como uma das métricas mais confiáveis de previsão de propensão a erros em componentes.
Métricas de Produto de Software
Métrica de
Software Descrição
Complexidade ciclomática
É uma medida da complexidade de controle de um programa.
Essa complexidade de controle pode estar relacionada à facilidade de compreensão do programa.
Extensão de identificadores
É uma medida da extensão média de identificadores distintos em um programa. Quanto maiores forem os identificadores, mais eles serão significativos e, por isso, mais compreensível será o
programa. Profundidade
de aninhamento de declarações condicionais
É uma medida da profundidade de aninhamento de declarações IF em um programa. As declarações IF profundamente aninhadas são difíceis de compreender e são potencialmente propensas a erros.
Índice de Fog É uma medida da extensão média das palavras e da sentenças em documentos. Quanto maior for o valor para o índice de Fog, mais difícil será a compreensão de documentos.
Métricas Orientadas a Objetos
Métrica orientada a objetos Descrição Profundidade de árvore de herançaRepresenta o número de níveis discretos na árvore de herança da qual as subclasses herdam atributos e operações (métodos) das superclasses. Quanto maior for a
profundidade da árvore de herança, mais complexo será o projeto. Muitas classes de objeto podem ser compreendidas ao se compreender as classes de objeto das folhas da árvore.
Fan-in/fan-out de método
Está diretamente relacionado com fan-in e fan-out e significa essencialmente a
mesma coisa. Contudo, pode ser apropriado fazer uma distinção entre chamadas de outros métodos dentro do objeto e chamadas com base em métodos externos.
Métodos ponderados por classe
Este é o número de métodos incluídos em um classe, ponderados pela complexidade de cada método. Portanto, um método simples pode ter uma complexidade de 1 e um método grande e complexo pode ter um valor muito mais alto. Quanto maior for o valor dessa métrica, mais complexa será a classe de objeto. Os objetos complexos são, provavelmente, mais difíceis de compreender. Eles podem não ser logicamente coesos, de modo que não podem ser reusados eficazmente como superclasses em um árvore de herança.
Número de operações sobrescritas
Este é o número de operações, em uma superclasse, sobrescritas em uma subclasse. Um valor alto dessa métrica indica que a superclasse usada pode não ser uma classe-mãe apropriada para a subclasse.
Análise de Medições
• Nem sempre a compreensão do que os dados significam é óbvia
▫ A análise dos dados coletados é muito difícil.
• Estatísticos profissionais devem ser consultados se houver disponibilidade.
• A análise de dados deve levar em consideração circunstâncias locais.