Engenharia de Software Qualidade de Software Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho O que é qualidade? • Capacidade de um produto ou serviço: – Realizar as funções esperadas – Atender às expectativas do cliente • Depende do cliente e da aplicação • Conceito estendido: – envolve outros atributos considerados importantes Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Qualidade, segundo os gurus • “Quality is free” (Philip Crosby) – benefícios superam os custos – custo da não qualidade • Ishikawa – “Remova a causa principal e não os sintomas” – “Não confunda os meios com os objetivos” – “Objetivos devem levar em consideração os clientes” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Joseph Juran • Duas visões da qualidade (custo e benefício): – centrada no cliente: • mais qualidade representa mais custo – centrada na empresa: redução de custos e defeitos • mais qualidade representa menos custo • Três eixos: – planejamento, controle e melhoria Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Armand Feigenbaum • Total Quality Control • Três passos – Liderança: gerenciamento contínuo e ênfase em excelência (não em reduzir falhas) – Tecnologia moderna: todos devem se envolver, depto de qualidade sozinho não resolve – Compromisso organizacional: comprometimento e relacionamento com o planejamento estratégico Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Edwards Deming – os 14 pontos • • • • • • • • Constância de propósitos Mudança filosófica Não depender de inspeção somente Fornecedores = parceiros Melhorar continuamente Treinar sempre e em todos os níveis Incentivar liderança Enfrentar e superar receios (bloqueios) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Edwards Deming – os 14 pontos • Quebrar barreiras entre áreas • Eliminar slogans e exortações • Eliminar cotas numéricas de trabalho, gerenciamento por objetivos • Tratar e eliminar as razões de insatisfação dos trabalhadores (baixa produtividade) • Instituir programa de melhoria pessoal • Engajar todos na organização no programa de transformação Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho A cadeia de Deming Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho PDCA - Ciclo de Deming/Shewhart Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Aspectos humanos da qualidade • Qualidade ligada à cultura organizacional • Todos os grandes nomes da qualidade abordam questões culturais e pessoais • Resistência a mudanças – alta administração – gerentes de nível intermediário – base • Processo de mudança – deve se iniciar de cima – pontos importantes de apoio nos vários níveis – implantação piloto Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Crise do software • Abordagem tradicional com teste final • DoD americano verificou: – grande percentual de sistemas encomendados e não usados; desperdício – motivos: ou com problemas de confiabilidade ou não atendiam mais às necessidades do cliente • Falta de foco no cliente: – distância do especificado • Foco no processo – não basta esperar o produto final – bons processos -> bons produtos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Promessas e realidade • • • • • • “There is no silver bullet” (Fred Brooks) Ferramentas CASE Metodologias de desenvolvimento Ciclos de vida Técnicas A realidade: a melhoria é custosa e gradativa Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Qualidade de Software • No início: função estava no hardware – qualidade de software: funcionalidade ao substituir o HW • • • • • Com a disseminação do software: confiabilidade Foco no produto: outros atributos de qualidade Foco no cliente TQM e processos Capabilidade e maturidade de processos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Qualidade de Software • Histórico semelhante ao de manufatura • Grande resistência, dizia-se: – “software é diferente” – “arte e criatividade” – “atividades não repetitivas” Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Criatividade e procesos • projeto de desenvolvimento: – entradas -> produto específico – usa uma sequência de processos • processo: – uma coleção de entradas -> um tipo de saída – rotinas repetitivas (especificar, inspecionar, projetar, codificar, testar, compilar, etc) – produção baseada em processos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Criatividade e procesos • Como é possível usar as mesmas abordagens da manufatura? • Melhorar/otimizar processos repetitivos que compõem a criação • Liberar a capacidade criadora Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Funcionalidade – Conjunto de atributos que evidenciam a existência de um conjunto de funções e suas propriedades especificadas – Sub-características: • • • • • adequação acurácia interoperabilidade conformidade segurança de acesso Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Confiabilidade – conjunto de atributos que evidenciam a capacidade do software de manter seu nível de desempenho sob condições estabelecidas durante um período de tempo estabelecido – Sub-características: • maturidade • tolerância a falhas • recuperabilidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Usabilidade – conjunto de atributos que evidenciam o esforço necessário para se poder utilizar o software, bem como o julgamento individual deste uso, por um conjunto explícito ou implícito de usuários – Sub-características: • inteligibilidade • apreensibilidade • operacionalidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Eficiência – conjunto de atributos que evidenciam o relacionamento entre o nível de desempenho do software e a quantidade de recursos usados, sob condições estabelecidas – Sub-características: • comportamento em relação ao tempo • comportamento em relação aos recursos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Manutenibilidade – conjunto de atributos que evidenciam o esforço necessário para fazer modificações especificadas no software – Sub-características: • • • • analisabilidade modificabilidade estabilidade testabilidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Produto – ISO 9126 • Portabilidade – conjunto de atributos que evidenciam a capacidade do software ser transferido de um ambiente para outro – Sub-características: • • • • adaptabilidade capacidade para ser instalado conformidade capacidade para substituir Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Qualidade é... • • • • • • • Função Confiabilidade Durabilidade Desempenho Consumo Tamanho Flexibilidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Mas é também... • • • • Preço Prazo Serviços pós-venda Aspectos humanos: – exploração do trabalho – respeito ao meio ambiente – posição quanto à comunidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Características de Qualidade do Projeto • Prazo – O melhor produto do mundo entregue com atraso pode não servir pra nada • Custo – Se o custo for maior do que o previsto, alguém vai ter que arcar com os prejuízos, o cliente ou a empresa desenvolvedora • Qualidade dos serviços – Atendimento ao cliente, pós-venda etc. • Satisfação do cliente – Envolve os aspectos anteriores e a qualidade do produto, além de outros fatores Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Gestão da qualidade • Ferramenta de administração para atingir os objetivos do negócio • Evolução da qualidade deve ser gerenciada como se fosse um projeto • Articulação com os planos corporativos, principalmente o estratégico • Planos são traçados a partir das expectativas dos clientes • Foco no cliente não basta -> stakeholders Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Gestão da qualidade • Stakeholders: partes interessadas • Clientes são os mais importantes, mas: – acionistas – empregados: qualidade no ambiente de trabalho e no futuro profissional – fornecedores e parceiros – comunidade e meio ambiente • Frequentemente os objetivos dos stakeholders são antagônicos • Objetivo: atingir o equilíbrio, satisfazer a todos (win x win) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Controle da Qualidade • Verificar se o artefato produzido tem qualidade • Exemplos de atividades – Testes – Revisões • Encontro formal onde um ou mais artefatos são apresentados ao cliente, usuário ou outra parte interessada no produto para que seja(m) comentado e aprovado(s) – Inspeções • Encontro formal onde um ou mais artefatos são analisados pro uma pessoa ou grupo de pessoas para detectar erros, violações de padrões e outros problemas • Foco na qualidade do produto Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Garantia da Qualidade • Estabelecer procedimentos e padrões que conduzam a um software de qualidade • Padrões (ou normas) são a chave para a garantia da qualidade • Padrões podem ser internacionais, nacionais ou organizacionais. – Organizações de padronização: • ISO, IEEE, ANSI, SEI etc • Foco na qualidade do processo (contempla tanto produto quanto projeto) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Técnicas para garantir qualidade • Inspeção: – exame (visual) de características dos produtos • Teste: – execução e comparação com os resultados esperados • Auditoria: – avaliação independente de produtos e processos • Aplicação em produtos: – inspeção, teste e auditoria • Aplicação em processos: – auditoria Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Modelos/Padrões de Qualidade • Repositório das melhores práticas • Referência para estabelecimento de processos • Define métrica para avaliação e roteiro seqüencial para a melhoria, baseado na capacidade de processo • Define “o quê“ deve ser feito, não o “como” • Independente da tecnologia a ser utilizada Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Modelos/Padrões de Qualidade • • • • • • • CMM/CMMI ISO/IEC 15504 (SPICE) CobiT ITIL Six Sigma MPS – Br ... Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Maturidade de Processos Processo IMATURO • Ad hoc - improvisado • Fortemente dependente dos profissionais • Pouca produtividade geral • Prazos e nível de qualidade difíceis de cumprir • Mais riscos na adoção de novas tecnologias • Precisa “apagar incêndios” freqüentemente Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Maturidade de Processos Processo IMATURO • A maioria das organizações de software nessa situação são como “bombeiros” – O fogo está sob controle – Constantemente reativas – sem tempo para as melhorias – Os bombeiros se queimam – Seu único controle é: prevenção do incêndio Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Maturidade de Processos Processo MADURO: • É bem conhecido por todos os envolvidos • Permite auditoria da fidelidade ao processo • Propicia adoção disciplinada de tecnologias • Os papéis e responsabilidades são claramente definidos • Permite acompanhamento da qualidade do produto • Permite acompanhamento da satisfação do cliente • O cronograma, custo e qualidade são alcançados • Há melhoria contínua do processo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Maturidade de Processos Processo MADURO: • A organização possui uma infra-estrutura que efetiva e consistentemente aplica o processo • Gerência deve “alimentar” a cultura de gestão – “se ninguém se importa, todo mundo esquece” • Um processo institucionalizado resiste mesmo sem as pessoas que o definiram originalmente Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Maturidade de Processos IMATURO • Processo improvisado pelas pessoas • Processo não é seguido ou cumprido • Grande dependência dos atuais desenvolvedores • Baixa visibilidade do processo para seu progresso e qualidade • Funcionalidade e qualidade do produto comprometidas para atender prazo • Custos excessivos de manutenção • Tecnologia Processo MADURO • Processo é definido, documentado e melhorado continuamente • Processo é entendido, utilizado e “vivo” • Processo suportado pela gerência • Processo verificado e cumprido • Grande visibilidade do processo alinhado ao negócio da organização • Papéis e responsabilidades claramente definidas • Processo Tecnologia Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMM - Histórico Desenvolvido pelo SEI – Software Engineering Institute da Carnegie Mellon University no final dos anos 80 a pedido do Departamento de Defesa dos EUA (DoD) Watts Humphey foi o principal mentor do CMM Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI • Capability Maturity Model Integrated • Desenvolvido pelo Software Engineering Institute (SEI) • Evolução do CMM • Objetivo: servir de base para a melhoria de processos da organização • É um modelo, não é um processo!!! Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI • Modelo de gestão da qualidade aplicável ao processo de desenvolvimento de software • Descreve elementos chave para um processo eficaz e o caminho evolutivo para um processo maduro e disciplinado • Busca da melhoria contínua, aprimorando a habilidade da organização para atender aos objetivos de custo, prazo, funcionalidade e qualidade do produto Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI Capability Maturity Model Integrated = Engenharia de Software (SW) + Engenharia de Sistemas (SE) + Desenvolvimento Integrado de Produtos e Processos (IPPD) + Gerência de Fornecimento (SS) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI • Em relação ao CMM, o CMMI é: – Mais compatível com as práticas atuais de desenvolvimento de software – Mais flexível – Mais compreensível – Mais complexo Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI - Visões • Depende do tipo de negócio da empresa. • Pode ser: – SW – SW + SE – SW + SE + IPPD – SW + SE + IPPD + SS Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI - Representações • Estágios – Melhoria de processos por níveis – Cada nível contempla algumas áreas de processo – Níveis de maturidade (1 a 5) • Contínua – Melhoria de processos por grupos de processo – Níveis de capacidade (0 a 5) – Mais flexível e mais confuso Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI - Estrutura Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI Níveis de Maturidade Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI • Nível 1 - Inicial - organizações imaturas – Não há metodologia implementada • Nível 2 - Repetível - disciplina e estabilidade – Empresa consegue produzir no prazo com custo previsível • Nível 3 - Definido - padronização e consistência – Garante o nível de qualidade no produto e no processo • Nível 4 - Gerenciado - medição e controle – O processo é definido, quantificado e acompanhado • Nível 5 - Otimizado - melhoria contínua – Mudanças no processo não prejudicam o desenvolvimento Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 1 Nível 1 - Inicial • Processo disforme e de baixa visibilidade • Resultados são imprevisíveis • Formas de controle muito pobres • Enormes dificuldade para previsões de – – – – cronogramas orçamentos funcionalidades qualidade do produto Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 2 Nível 2 - Repetível • Disciplinado e estável • Procedimentos de gerenciamento de projetos • Aproveitamento sistemático de históricos • Padrões para projetos de software • Acompanhamento de custos, cronogramas e funcionalidades Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 2 Nível 2 - Repetível Processos disciplinados garantem a reprodução de processo já utilizados em projetos bem sucedidos em aplicações semelhantes... Entretanto... A Gerência ainda é reativa!!!! Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 2 • Meta Genérica: institucionalizar um processo gerenciado • Práticas Genéricas – – – – – – – – – – Estabelecer uma política organizacional Planejar o processo Prover recursos Atribuir responsabilidade Treinar pessoal Gerenciar configurações Identificar e envolver stakeholders relevantes Monitorar e controlar o processo Avaliar aderência objetivamente Revisar status com gerência sênior Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 2 • Áreas de Processo (PAs) – Gerenciamento de Requisitos – Planejamento do Projeto – Acompanhamento do Projeto – Gerenciamento de Fornecimento e Subcontratação – Medição e Análise – Garantia da Qualidade – Gerenciamento de Configuração Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 3 Nível 3 - Definido • As saídas de uma atividade fluem naturalmente para as entradas da atividade seguinte • Os processos de software são – Integrados no processo padrão da empresa – Documentados – Padronizados Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 3 Nível 3 - Definido Todos os projetos usam uma versão aprovada e individualmente adaptada do processo padrão da organização A Gerência é Pro-Ativa!!! Há um grupo para o estabelecimento dos padrões e multiplicação do conhecimento – SEPG (Software Engineering and Process Group) Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 3 • Meta Genérica: institucionalizar um processo definido • Práticas Genéricas – Estabelecer um processo definido – Coletar informações para melhoria Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 3 • Áreas de Processo (PAs) – – – – – – – – – – – – – – Desenvolvimento de Requisitos Solução técnica Integração de Produtos Verificação Validação Foco no Processo Organizacional Definição do Processo Organizacional Treinamento Organizacional Gerenciamento Integrado de Projetos Gerenciamento de Riscos Alocação Integrada de Pessoas Gerenciamento Integrado de Fornecimento Análise de Decisão Ambiente Organizacional para Intgração Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 4 Nível 4 - Gerenciado • Faz controle estatístico de processo • Aponta causas da variação do processo • Capacitação predizível • Bases objetivas para tomada de decisão • Gerência quantitativa de produto e processo • Os processo de software e a qualidade do produto são medidos e controlados quantitativamente Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 4 • Meta Genérica: institucionalizar um processo quantitativamente gerenciado • Práticas Genéricas – Estabelecer objetivos quantitativos para o processo – Estabilizar performance dos subprocessos Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 4 • Áreas de Processo (PAs) – Performance do Processo Organizacional – Gerenciamento Quantitativo do Projeto Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 5 Nível 5 - Otimizado • Foco na melhoria contínua do processo • Melhoria contínua proporcionada por • Realimentação quantitativa do processo • Condução de novas idéias e tecnologias A organização tem capacidade gerencial para estimar e acompanhar quantitativamente o impacto e a eficácia das mudanças Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 5 • Meta Genérica: institucionalizar um processo em otimização • Práticas Genéricas – Garantir melhoria contínua do processo – Corrigir causas (root causes) de problemas Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho CMMI – Nível 5 • Áreas de Processo (PAs) – Inovação Organizacional – Análise Causal Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Exemplo – Gerenciamento de Requisitos • Gerenciar requisitos (objetivo específico) – Obter entendimento dos requisitos (prática específica) – Obter comprometimento quanto aos requisitos – Gerenciar mudanças em requisitos • • • • Capturar mudanças em requisitos (subprática) Manter histórico de mudanças Avaliar impacto das mudanças Disponibilizar mudanças – Manter rastreabilidade bidirecional de requisitos – Identificar inconsistências entre requisitos e produtos de trabalho Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho