Qualidade de Software - Luiz Leaoluizleao.com/Docencia/FAP/Qualidade/QUALIDADE_UND_01.pdf · •...
Transcript of Qualidade de Software - Luiz Leaoluizleao.com/Docencia/FAP/Qualidade/QUALIDADE_UND_01.pdf · •...
Qualidade de Software
Luiz Leão – [email protected]
http://www.luizleao.com
Unidade I – Conceito de Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• 1.1 Qualidade de processo de software
• 1.2 Qualidade de produto de software
UNIDADE I : Conceito de Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• 2.1 Uma visão geral dos fatores que afetam a qualidade
• 2.2 Métrica dos fatores de qualidade
• 2.3 Garantia da Qualidade de Software
• 2.3.1 Atividades SQA
• 2.3.2 Revisões de software
• 2.3.3 Revisões técnicas formais
• 2.3.4 Indicadores de qualidade
• 2.3.5 Garantia estatística da qualidade
• 2.3.6 Medidas e modelos de confiabilidade de software
UNIDADE II : Fatores e Métricas de Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• 3.1 A abordagem NBR ISO 9000
• 3.2 Modelos de qualidade de produto de software
• 3.2.1 NBR ISO/IEC 9126 (software)
• 3.2.2 NBR ISO/IEC 12119 (pacote)
• 3.2.3 NBR ISO/IEC 9241 (usabilidade)
• 3.2.4 NBR ISO/IEC 14598 (avaliação)
• 3.3 Modelos de melhoria e avaliação de processo de software
• 3.3.1 NBR ISO 9000 3
• 3.3.2 NBR ISO/IEC 12207 (ciclo de vida)
• 3.3.3 NBR ISO/IEC 15504 (SPICE avaliação)
• 3.3.4 CMMI (melhoria de processo)
• 3.3.5 MPS.BR (melhoria de processo)
UNIDADE III: Sistema de Garantia de Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• 4.1 Princípios da gerência de risco
• 4.2 Atividades da gerência de risco
• 4.3 Aplicação nos modelos de qualidade de processo de
software
UNIDADE IV: A Gerência de Risco na Qualidade de
Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
Introdução
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• O que é Qualidade?
• O que é Qualidade de Software?
• Qualidade do Produto e do Processo
• Normas e Organismos Normativos
Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• “O problema da gestão de qualidade não é o que as
pessoas NÃO sabem a respeito dela. O problema é o
que elas PENSAM que sabem”
Philip Crosby
Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• O que um determinado produto apresenta para
considerarmos que o mesmo tem qualidade?
Ex.: Carro
• Qualidade é um conceito relativo. Diversos aspectos são
levados em conta. No caso de um automóvel, fatores
como conforto, segurança, desempenho, beleza e custo
têm estreita relação com a qualidade.
O que é Qualidade?
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Qualidade está fortemente relacionada à conformidade
com os requisitos.
• O que é “conformidade em relação a requisitos”?
observado x especificado.
• Pode haver problemas na observação.
• Pode haver problemas na especificação.
O que é Qualidade?
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Qualidade diz respeito à satisfação do cliente.
• Requisitos são especificados por alguns e com o
objetivo de satisfazer outros.
– Uma especificação depende das escolhas feitas (clientes alvo).
– Pode haver problemas na especificação.
O que é Qualidade?
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Na visão do fornecedor (ex: equipe interna de TI ou fornecedor externo – do mercado) – Maior produtividade
– Maior precisão nas estimativas
– Redução de defeitos no produto
– Aumento da confiabilidade do produto
– Menos esforço de re-trabalho
– Menos horas extras de trabalho
– Redução do tempo para atender o mercado
– Redução de custo de desenvolvimento e manutenção
– Maior competitividade
– Maior índice de satisfação do cliente/usuário final
Benefícios da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Na visão do contratante
– Auxilia a definição de critérios para seleção e
descredenciamento de fornecedores
– Auxilia a definição de processos de acompanhamento do
progresso e desempenho dos fornecedores nas etapas de
desenvolvimento, entrega e pós-entrega dos produtos
– Auxilia a definição de critérios para avaliação e aceitação dos
produtos entregues pelo fornecedor
Benefícios da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Relatos Históricos de 4.000 anos atrás no Egito.
– Cultura Naqada
• Marco Importante: Revolução Industrial
• 1920: Controle Estatístico da Produção
• 1940: Surgimento de vários organismos ligados à qualidade
– ASQC (American Society for Quality Control)
– ABNT (Associação Brasileira de Normas Técnicas)
– ISO (International Standardization Organization)
• Ainda década de 1940: Japão destaca-se.
– Toyota - Kanban
• Década de 1970: Qualidade de Software
Breve Histórico da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
Evolução
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Armand Feigenbaum
• W.Edwards Deming
• Joseph M.Juran
• Karou Ishikawa
• Philip Crosby
• Tom Peters
Gurus da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Definiu TQM como um sistema efetivo que integra a
qualidade do desenvolvimento, qualidade de
manutenção, e esforços de melhoria da qualidade de
vários grupos em uma organização
Armand Feigenbaum – EUA (1922-)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Considerado no Japão o “pai” do controle da qualidade
• Afirmou que qualidade inicia com o alto nível gerencial e
é uma atividade estratégica. Enfatiza a necessidade dos
métodos estatísticos, participação, educação e proposta
de melhoria.
William Edwards Deming – EUA (1900-1993)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Melhoria estruturada da qualidade
– Estudar sintomas de defeitos e/ou falhas encontrados
– Desenvolver uma teoria para as causas destes defeitos e/ou
falhas
– Testar a teoria até que a causa seja encontrada
– Simular ação remediadora por áreas apropriadas
• Preocupou-se com o impacto nos trabalhadores
individuais, no envolvimento e motivação da força de
trabalho nas atividades de melhoria da qualidade
Joseph M.Juran – Romênia (1904-2008)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Baseando seu trabalho nos de Deming, Juran e
Feigenbaum, Ishikawa criou os conceitos de círculos da
qualidade e diagramas de causa-e-efeito.
• Considerou a participação do trabalhador como a
chave do sucesso da implementação do TQM.
Karou Ishikawa – Japão
(1915-1989)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Definiu 4 certezas para o Gerenciamento da Qualidade
– Qualidade significa atendimento aos requisitos.
– Qualidade vem através de prevenção.
– Padrão para desempenho da qualidade é “defeito zero”.
– A qualidade é medida pelo preço da não-conformidade, e não
por índices.
• Zero Defeito – Qualidade Máxima
Philip Crosby – EUA (1926-2001)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Focou no atendimento às expectativas do cliente
Tom Peters – EUA (1926-2001)
UNIDADE I – Conceito de Qualidade
Qualidade de Software
Elementos-Chave do TQM
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• “Atividades coordenadas para orientar e controlar uma organização com relação à qualidade” (ISO9000:2000).
• Princípios – Foco no cliente
– Liderança
– Envolvimento das pessoas
– Abordagem de processo
– Abordagem sistêmica
– Melhoria contínua
– Tomada de decisão baseada em fatos
– Relacões de “ganha-ganha”.
Gestão da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Controle da Qualidade
– Evita que produtos defeituosos sejam entregues aos clientes;
– Natureza reativa;
– Objetiva monitoração de processo, e detecção e correção de
defeitos.
Ex: Inspeções, ensaios e testes.
Garantia da Qualidade X Controle da
Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Garantia da Qualidade
– Tenta produzir software com uma baixa taxa de defeitos;
– Natureza proativa.
– Definição de procedimentos, padrões, treinamentos.
– Gerência e melhoria de processo.
Garantia da Qualidade X Controle da
Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• “Intenções e diretrizes globais de uma organização
relativas à qualidade, formalmente expressas pela alta
administração.” (ISO9000:2000)
– Alinhada aos objetivos da organização.
– Comprometimento em atender os requisitos.
– Melhoria contínua.
– Comunicação e entendimento.
– Análise crítica.
Política da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Não basta que a qualidade exista, ela deve ser
reconhecida pelo cliente;
• Deve existir uma certificação oficial emitida com base
em um padrão;
• As certificações são dadas por instituições competentes;
• Exemplos de certificação:
– Selo SIF de qualidade de produtos alimentícios;
– Selo ABIC de qualidade do café;
– Classificação da rede hoteleira pela Embratur.
Certificação da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Por que Normalização Internacional?
– Garantir a confiabilidade do produto.
– Reduzir custos e evitar desperdícios e retrabalhos.
– Implementar e utilizar práticas reconhecidas internacionalmente.
– Estabelecer confiança no relacionamento com o cliente.
– Cartão de visita para o mercado internacional.
Certificação da Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• 1.1 Qualidade de processo de software
• 1.2 Qualidade de produto de software
UNIDADE I : Conceito de Qualidade
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Conferência da OTAN sobre Engenharia de Software (NATO Software Engineering Conference) (1968) – Crise de Software
• Problemas detectados:
• Cronogramas não observados. – Projetos abandonados.
– Módulos que não operam corretamente quando combinados.
– Programas que não fazem exatamente o que era esperado.
– Sistemas tão difíceis de usar que são descartados.
– Sistemas que simplesmente param de funcionar.
• Passados quase 40 anos, o que mudou?
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Qualidade em geral:
– É um conceito relativo.
– Está fortemente relacionada à conformidade com requisitos.
– Diz respeito à satisfação do cliente.
• Como isso se manifesta em software?
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• O aspecto não repetitivo do desenvolvimento de
software torna essa atividade difícil e em boa medida
imprevisível.
• Delimitar o escopo de um sistema não é trivial.
• A volatilidade dos requisitos é lugar comum no
desenvolvimento de software.
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Fatores que afetam o desenvolvimento e que
influenciam no julgamento dos usuários:
– Tamanho e complexidade do software;
– Número de pessoas envolvidas no projeto;
– Métodos, técnicas e ferramentas utilizadas;
– Custo x benefício do sistema;
– Custos associados à existência de erros;
– Custos associados à detecção e remoção de erros;
– Etc.
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Conjunto de características a serem satisfeitas em um
determinado grau, de modo que o software satisfaça às
necessidades de seus usuários
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
Qualidade de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Qualidade do produto de software não se atinge de
forma espontânea.
• A qualidade do produto depende fortemente da
qualidade do processo de desenvolvimento.
Qualidade do Produto x
Qualidade do Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Um bom processo não garante que os produtos
produzidos são de boa qualidade, mas é um indicativo
de que a organização é capaz de produzir bons
produtos.
Qualidade do Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Motivação para a busca da Qualidade do Processo
de Software:
– Aumento da qualidade do produto.
– Diminuição do retrabalho.
– Maior produtividade.
– Redução do tempo para atender o mercado (time to market).
– Maior competitividade.
– Maior precisão nas estimativas.
Qualidade do Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• A implantação de um Programa de Qualidade começa
pela definição e implantação de um processo de
software.
• O processo de software deve estar documentado, ser
compreendido e seguido.
Qualidade do Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Processos de Software devem estabelecer:
– Atividades a serem realizadas durante o processo, sua estrutura
e organização (decomposição e precedência), incluindo a
definição de um modelo de ciclo de vida quando pertinente (ex.:
processo de desenvolvimento);
– Artefatos requeridos e produzidos por cada uma das atividades
do processo;
– Procedimentos (métodos, técnicas, roteiros e padrões) a serem
adotados na realização das atividades;
– Recursos necessários (humanos, hardware e software) para a
realização das atividades.
O que é Processo de Software?
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Processo de Software
– Sub-processos (Desenvolvimento, Manutenção, etc)
• Atividades – Sub-atividades
– Pré-atividades
– Artefatos • Insumos
• Produtos
– Recursos • Humanos
• Software
• Hardware
– Procedimentos • Métodos
• Técnicas
• Roteiros
Estrutura do Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Processo de Software – Processo de Desenvolvimento
• Análise e Especificação de Requisitos
• Projeto – Projeto Arquitetural
• Pré-atividade: Análise e Especificação de Requisitos
• Insumo: Documento de Especificação de Requisitos
• Produto: Documento de Arquitetura do Sistema
• Recurso Humano: Projetista de Software
• Ferramenta de Software: Ferramenta de Modelagem UML
• Técnica: Modelagem de Objetos
– Projeto Detalhado
• Implementação
• Testes
• Implantação
Exemplo de Processo de Software
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Processos têm de ser definidos caso a caso, levando-se
em consideração as características específicas do
projeto em questão: equipe, domínio de aplicação, tipo
de software, tecnologias a serem adotadas, restrições
de negócio (cronograma, custo, qualidade) etc.
• Apoio de Normas e Modelos de Qualidade de Processos
de Software.
Como definir um processo?
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Normas internacionais de qualidade são criadas no
trabalho voluntário de especialistas do mundo todo.
• Essas normas tornaram-se a base para especificar
produtos, organizar o fornecimento de serviços e até
mesmo para a elaboração de legislação em vários
países.
Normas e Organismos Normativos
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Muitas vezes padrões surgem espontaneamente, a
partir de uma necessidade ou como uma solução
amplamente adotada quando comparada a outras
alternativas.
• Padrões de facto são padrões aplicados na prática, mas
que não foram formalizados como um regulamento.
• Podem ser criados involuntariamente ou por razões
comerciais.
Padrões de Facto
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• São criados de maneira formal, regulamentada.
• São escritos seguindo regulamentos e aprovados por
instituições reconhecidas publicamente como
capacitadas para tal (ex., ISO, IEEE etc).
Padrões de Jure
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• International Standardization Organization.
• Criada em 1946, começou a funcionar em 1947.
• Conta atualmente com mais de 15.000 documentos
internacionais de padronização, tendo
aproximadamente 150 países participantes e cerca de
50.000 especialistas que contribuem no mundo inteiro
para a criação e verificação dos documentos.
ISO
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• A ISO criou com a IEC (International Eletrotechnical
Commission) a primeira comissão conjunta para
elaboração de normas, o JTC1 (Joint Technical
Committee 1).
• O JTC1 é responsável pela criação de normas
relacionadas a TI e é dividido em subcomissões (SC),
que, por sua vez, são divididas em grupos de trabalho
(working groups – WG).
A ISO e as Normas Relacionadas à TI
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• A subcomissão SC-7 (Engenharia de Software e de
Sistemas) trata das normas relacionadas à qualidade de
software.
• Alguns grupos de trabalho da SC-7:
– WG-2: Documentação de Sistemas
– WG-6: Avaliação e Métricas
– WG-7: Gerência do Ciclo de Vida
– WG-12: Medição do Tamanho Funcional
A ISO e as Normas Relacionadas a QS
UNIDADE I – Conceito de Qualidade
Qualidade de Software
• Uma norma possui pelo menos um editor e um ou mais co-editores, que são pessoas de conhecimento técnico reconhecido e podem se dedicar ao projeto.
• O editor (junto com os co-editores) é responsável pela escrita do primeiro esboço do documento.
• Esse esboço é distribuído para análise pelos grupos de trabalho internacionais.
• A partir daí, sugestões de modificações são submetidas, avaliadas e introduzidas, em um ciclo que culmina com a versão final.
Etapas na Criação de uma Norma