Fundamentos
Prof. Davi Viana dos Santos
Gestão da Qualidade de Software
• Introdução a qualidade
– Princípios Básicos – Benefícios
– Breve histórico
• Qualidade de Software
• 5 erros da Qualidade de software
• Visões da Qualidade de Software
• Custo da Qualidade de Software
• Fator Humano da Qualidade de Software
Agenda
2 Fundamentos de Qualidade de Software
3 Fundamentos de Qualidade de Software
Refletindo...
O que é um carro de QUALIDADE?Exemplo retirado de “Guerra, Ana. Slidesde Curso. Disponível em :
http://www.ic.unicamp.br/~eliane/Cursos/SeminariosPos-2009/AnaGuerra-Qualidade.pdf
Princípios básicos da qualidade
1. Tentar prevenir defeitos ao invés de consertá-los
2. Ter a certeza que os defeitos que foram
encontrados, sejam corrigidos o mais rápido
possível
3. Estabelecer e eliminar as causas, bem como os
sintomas dos defeitos
4. Auditar o trabalho de acordo com padrões e
procedimentos previamente estabelecidos
5 Fundamentos de Qualidade de Software
Benefícios da Qualidade
•
Para o fornecedor do produto (1/2):
– Maior produtividade
– Maior precisão nas estimativas – Redução de defeitos no produto – Aumento da confiabilidade do produto – Menos esforço de re-trabalho
6 Fundamentos de Qualidade de Software
Benefícios da Qualidade
•
Para o fornecedor do produto (2/2):
– Menos horas extras de trabalho
– Redução do tempo para atender o mercado
– Redução de custo de desenvolvimento e manutenção – Maior competitividade
7 Fundamentos de Qualidade de Software
Benefícios da Qualidade
•
Para o contratante:
– Definição de critérios para seleção e descredenciamento de fornecedores
– Criação de processos de acompanhamento do progresso e desempenho dos fornecedores em todas as etapas – Definição de critérios para avaliação e aceitação dos
produtos entregues pelo fornecedor
Breve Histórico da Qualidade
•
Relatos da qualidade no egito antigo
– Medida de comprimento: cúbito
•
Grande Marco: Revolução Industrial
– Desencadeou um processo de melhoria contínua
•
1920: Controle Estatístico da Produção
•
1940: Organizações ligadas à Qualidade
– ASQC, ABNT, ISO – Destaque ao Japão
9 Fundamentos de Qualidade de Software
Breve Histórico da Qualidade
•
1968: Crise do Software e relatório do Comitê de
Ciência da OTAN
– Cronogramas não observados
– Projetos com tantas dificuldades que são abandonados – Módulos que não operam corretamente quando combinados – Programas que não fazem exatamente o que era esperado – Programas tão difíceis de usar que são descartados – Programas que simplesmente param de funcionar
Quais são os problemas enfrentados hoje?
10 Fundamentos de Qualidade de Software
Algumas particularidades do software:
Exemplo retirado de “Guerra, Ana. Slides de Curso. Disponível em :
http://www.ic.unicamp.br/~eliane/Cursos/SeminariosPos-2009/AnaGuerra-Qualidade.pdf
•
É uma construção infinitamente maleável
•
Não existe produção em série
•
Não se desgasta nem se modifica com o uso
•
O custo final é de projeto e desenvolvimento
•
Produto extremamente complexo
11 Fundamentos de Qualidade de Software
Algumas particularidades do software:
Exemplo retirado de “Guerra, Ana. Slides de Curso. Disponível em :
http://www.ic.unicamp.br/~eliane/Cursos/SeminariosPos-2009/AnaGuerra-Qualidade.pdf
•
É uma construção infinitamente maleável
•
Não existe produção em série
•
Não se desgasta nem se modifica com o uso
•
O custo final é de projeto e desenvolvimento
•
Produto extremamente complexo
O que é um software de qualidade para você?
•
A Engenharia de Software tem como objetivo criar
produtos confiáveis e eficientes
– Gerenciar a qualidade de software é importante para atingir esses objetivos
•
No contexto da Engenharia de Software é o grau
no qual um sistema, componente ou processo
satisfaz os requisitos específicos e as necessidades
e expectativas do cliente ou usuário
[IEEE, 1990]Qualidade de Software
13 Fundamentos de Qualidade de Software
•
Outras definições:
– Garantir que especificações explícitas e necessidades implícitas estejam presentes no produto, por meio da definição e normatização de processos de desenvolvimento[Guerra e Colombo, 2009]
– Conformidade[Rezende, 2005]:
• A requisitos funcionais e de desempenho explicitamente declarados
• A padrões de desenvolvimento claramente documentados • A características implícitas que são esperadas de todo
software ou sistema profissionalmente desenvolvido • Atendimento aos padrões de uma norma e dos
clientes/usuários
Qualidade de Software
14 Fundamentos de Qualidade de Software
15 Fundamentos de Qualidade de Software
Se eu tivesse revisado as atas de reunião com o cliente?
Se eu tivesse inspecionado os
requisitos e os casos de uso? Se eu tivesse avaliado a execução do processo de desenvolvimento? Se eu tivesse revisado
o código?
Qualidade de Software
• Desenvolvedores se preocupam com qualidade de
software depois que o código foi gerado
[PRESSMAN, 2006]Qualidade de Software
17 Fundamentos de Qualidade de Software
Quando devemos nos preocupar com a gestão da qualidade de software?
• Desenvolvedores se preocupam com qualidade de
software depois que o código foi gerado
[PRESSMAN, 2006]Qualidade de Software
18 Fundamentos de Qualidade de Software
É uma atividade guarda-chuva e deve ser aplicada em todo o processo de
• Elabore uma forma de comparar dois programas
para saber qual deles tem mais qualidade
Exercício
19 Fundamentos de Qualidade de Software
• Apresentação das respostas
Exercício
• 1º: Qualidade de software significa "ótimo", ou
"luxo", ou "brilhante", ou "de grande valor"
5 erros da Qualidade de Software
21 Fundamentos de Qualidade de Software
A palavra ”qualidade”, muitas vezes, é usada em expressões do tipo: “boa qualidade”, “má qualidade” e até “qualidade de vida”.
Mas, cada um que a ouve atribui um significado para o que seja “qualidade de vida”. É preciso definir “qualidade de vida” em termos específicos, tais como: renda familiar; saúde; controle de poluição; programas políticos e quaisquer outros itens que possam ser medidos
Retirado de: “GUERRA, Ana Cervigni; COLOMBO, Regina Maria Thienne. Tecnologia da Informação: qualidade de produto de software. Brasilia: PBQP, 2009. 429p.”
• 2º:
Qualidade
é
intangível,
portanto
não
mensurável.
5 erros da Qualidade de Software
22 Fundamentos de Qualidade de Software
Na verdade, qualidade é precisamente mensurável por meio da mais antiga e respeitada medida, o dinheiro.
Ignorar esse fato tem levado gerentes a perder muito dinheiro. A qualidade é medida pelo “custo da qualidade”, que é a despesa, ou “custo da não conformidade”, que é o custo de fazer coisas erradas.
Retirado de: “GUERRA, Ana Cervigni; COLOMBO, Regina Maria Thienne. Tecnologia da Informação: qualidade de produto de software. Brasilia: PBQP, 2009. 429p.”
• 3º: As desculpas dos gerentes para não fazer nada, em relação à qualidade de seus produtos, é que "seu negócio é diferente" e que a "ciência" da qualidade não os ajudaria a fazer o que já fazem, e de forma ainda melhor
5 erros da Qualidade de Software
23 Fundamentos de Qualidade de Software
Eles ainda não compreenderam o real significado de “qualidade” e continuam acreditando que ela significa “luxo”. Nesses casos, é importante explicar o real significado de “qualidade” e que é sempre mais barato fazer certo na primeira vez.
Retirado de: “GUERRA, Ana Cervigni; COLOMBO, Regina Maria Thienne. Tecnologia da Informação: qualidade de produto de software. Brasilia: PBQP, 2009. 429p.”
• 4º: Os problemas de qualidade são originados por trabalhadores, principalmente aqueles que trabalham diretamente na área de produção.
5 erros da Qualidade de Software
Os funcionários da produção de uma fábrica são acusados de provocar os problemas. Na realidade eles pouco contribuem para a prevenção, ou não, de defeitos, pois todo planejamento e criação
• 5º: Qualidade é responsabilidade do departamento da qualidade.
5 erros da Qualidade de Software
25 Fundamentos de Qualidade de Software
O departamento da qualidade tem como atribuição:
1. Medir a conformidade de acordo com o que foi previamente determinado;
2. Reportar os resultados das medidas de forma clara e objetiva;
3. Liderar uma atitude positiva da empresa, na busca da melhoria da qualidade;
4. Prover e capacitar os funcionários com ferramentas que podem auxiliar na melhoria da qualidade. Porém, o departamento da qualidade “não deve” executar o trabalho, pois, caso o faça, a empresa nunca mudará sua conduta
Retirado de: “GUERRA, Ana Cervigni; COLOMBO, Regina Maria Thienne. Tecnologia da Informação: qualidade de produto de software. Brasilia: PBQP, 2009. 429p.”
• Qualidade do Produto
– Controle de Qualidade• Qualidade do Processo
– Garantia da Qualidade• Qualidade do Serviço
– Provido pela TIVisões da Qualidade de Software
26 Fundamentos de Qualidade de Software
• Qualidade do Produto
– Controle de Qualidade• Qualidade do Processo
– Garantia da Qualidade• Qualidade do Serviço
– Provido pela TIVisões da Qualidade de Software
27 Fundamentos de Qualidade de Software
• Critérios da qualidade de software
(ISO/IEC9126-1)– Usabilidade • É fácil de usar? – Funcionalidade • Satisfaz as necessidades? – Confiabilidade • É imune as falhas?
Qualidade do Produto
• Critérios da qualidade de software
(ISO/IEC9126-1) – Eficiência • É rápido e enxuto? – Manutenibilidade • É Fácil de modificar? – Portabilidade• É fácil utilizar em outro ambiente?
Qualidade do Produto
29 Fundamentos de Qualidade de Software
• CMMI
– Áreas de Processos
• Ex.: Planejamento do Projeto, Garantia da Qualidade do processo e do Produto...
– Representações
• Contínua e por Estágios (5 Níveis)
• MPS.BR
– Processos
• Ex.: Gerência de Projetos, Gerência de Requisitos, Garantia da Qualidade...
– 7 níveis
Qualidade do Processo
30 Fundamentos de Qualidade de Software
31 Fundamentos de Qualidade de Software
Retirado de: “Campos , Fábio Martinho; TestExpert. Qualidade, Qualidade de Software e Garantia da Qualidade de Software São as Mesmas Coisas ?. Disponível em: http://testexpert.com.br/?q=node/669”
Garantia da Qualidade Controle de Qualidade Garante que o processo é definido e
apropriado
As atividades focam na descoberta de defeitos em itens específicos
Metodologia e padrões de desenvolvimento são exemplos de garantia da qualidade
Um exemplo de controle da qualidade poderia ser: "Os requisitos definidos são os requisitos certos?"
É orientada a processo É orientado a produto É orientada a prevenção É orientado a detecção Foco em monitoração e melhoria de
processo
Inspeções e garantia de que o produto de trabalho atenda aos requisitos especificados As atividades são focadas no inicio das fases
no ciclo de vida de desenvolvimento de software
As atividades são focadas no final das fases no ciclo de vida de desenvolvimento de software
Garante que você está fazendo certo as coisas e da maneira correta
Garante que os resultados do seu trabalho são os esperados conforme requisitos
• É necessário um planejamento adequado para que a
qualidade de software seja atingida, conforme a
definição de qualidade que deverá ser alcançada.
– São necessários modelos, padrões, procedimentos e técnicas para atingir essas metas de qualidade propostas. – Todas as etapas do ciclo de vida de engenharia de
software devem ser contempladas com atividades que visam garantir a qualidade tanto do processo quanto do produto.
• Para estudantes de computação?
• Para profissionais da Indústria?
Qualidade e Bugs
33 Fundamentos de Qualidade de Software
Qualidade = não ter bugs?
• O dilema gerencial
– Um programa edição de texto
– Falhas apareciam apenas sob certas condições, como trabalhar em textos muito longos
– O fabricante explicou para um cliente insatisfeito que menos de 1% dos clientes tiveram o problema
– Alterar o código implicaria mudanças profundas e poderia introduzir novos problemas – um risco muito grande – Em nome dos 99% de clientes satisfeiros o gerente tinha
razão em não corrigir o programa
Alguns exemplos (para PENSAR)
34 Fundamentos de Qualidade de Software
• A importância Relativa
– Vários jogos de computador possuem imperfeições no tratamento de colisão entre sólidos
– Objetos atravessam paredes
– Isso impede os usuários continuarem se divertindo? – Isso impede a recomendação desses produtos?
Alguns exemplos (para PENSAR)
35 Fundamentos de Qualidade de Software
• Precisa decidir o que significa qualidade
• Não é um assunto que possa ser tratado como
dogmas
– "Não cometerás erro de programação"
• Adote uma perspectiva técnica e considere alguns
fatores
– Tamanho e complexidade do software – Número de pessoas envolvidas no projeto
• Formas do software adquirir qualidade:
– Uma construção que utilize processos maduros e bem definidos
– Identificação e resolução dos problemas do software, antes que ele seja entregue aos usuários
– Estabilização pós-implantação do software
• Possibilidade de alguns ciclos desgastantes de ocorrência de falhas, identificação e correção de defeitos,
• Com a liberação de novas versões da aplicação.
Custo da Qualidade de Software
37 Fundamentos de Qualidade de Software
A cada uma dessas alternativas, está associado um custo específico.
Custo da Qualidade de Software
38 Fundamentos de Qualidade de Software
• Custo de Prevenção
– É um investimento realizado para se evitar erros e fazer o trabalho certo na primeira tentativa.
– É um investimento com retorno a médio ou longo prazo e que contempla:
• Criação de métodos e procedimentos • Melhoria de processos
• Capacitação dos profissionais • A aquisição de ferramentas • Planejamento da qualidade.
– Esse custo ocorre antes da criação do produto.
Custo da Qualidade de Software
39 Fundamentos de Qualidade de Software
• Custo de Avaliação
– Esse custo refere-se ao que é gasto em procedimentos de verificação e em testes dos produtos de software para identificação de defeitos
– Após a sua construção e antes que sejam disponibilizados para uso ou implantados em produção.
– Contempla tanto produtos intermediários, como documentos de requisitos, modelos de dados ou especificações, como também o produto de software
• Custo de Falhas
– Envolve todos os custos associados a produtos defeituosos, que já foram entregues aos usuários ou disponibilizados em produção e que geraram algum tipo de falha.
– Esses custos referem-se ao retrabalho para reparação de produtos defeituosos, ou a prejuízos decorrentes das falhas no software.
• Falhas Interas e Externas
– Incluem-se nesta categoria, também os custos associados à manutenção de um Help Desk.
Custo da Qualidade de Software
41 Fundamentos de Qualidade de Software
• Fator 1: Organização do Trabalho
– Boas relações Informais entre os desenvolvedores – Liderança adequada
– Fazer o grupo compartilhar a responsabilidade de definir os objetivos do software
– Utilizar metodologias, métodos e técnicas para organização do trabalho
• MPS.BR, CMMI, XP, Scrum.
Fatores Humanos da Qualidade de Software
42 Fundamentos de Qualidade de Software
• Fator 2: Comunicação
– Auxilia a garantir que todos os envolvidos tenham em mente a construção da mesma e única solução
• Compreensão sobre o que se está trabalhando – Comunicação Formal:
• Reuniões, E-mails formais, comunicadores empresariais
– Comunicação Informal
• Troca de ideias e comentários no ambiente de trabalho – Pode revelar posturas e atitudes
• Positivas ou Negativas
Fatores Humanos da Qualidade de Software
43 Fundamentos de Qualidade de Software
• Fator 3: Individualismo
– Apesar do esforço conjunto para fazer um projeto, a solução ocorre basicamente dentro da mente de um desenvolvedor
– Alguns desenvolvedores sentem-se ofendidos com a ideia de mudarem seus hábitos em favor de padrões de uma equipe
– Relação de possessão entre o desenvolvedor e o produto • Defeitos no software podem ser interpretados como
• Livro: Qualidade de Software. André Koscianski e
Michel dos Santos Soares
• Livro: Engenharia de Software: Fundamentos,
Métodos e Padrões. Wilson Pádua
• Web:
http://basedetestedesoftware.blogspot.com.br/2010
/05/o-custo-da-qualidade-de-software.html
Referências
45 Fundamentos de Qualidade de Software