Prévia do material em texto
DISCIPLINA: QUALIDADE DE SOFTWARE TEMA 4: Qualidade de Processo REFORÇANDO A APRENDIZAGEM PONTOS PRINCIPAIS Qualidade de Processo A preocupação com a Qualidade de Software Período Características Anos 50 -Erros conhecidos, APÓS término do programa Anos 70 -Análise/programação estruturada. -Falta de consenso: teste ANTES do término Anos 80 - Primeiras preocupações e PADRÕES com QUALIDADE de software Anos 90 -Primeiros processos de testes. -Motivação: Bug do milênio. Anos 2000 -Estruturação dos procedimentos de testes dentro do processo de desenvolvimento. -Surgem excelentes ferramentas de testes. -QUALIDADE Total no processo de desenvolvimento e produto de software A Crise do Software Fatos reais - Projetos de Software + 30% dos projetos – CANCELADOS + 70% dos projetos – FALHAM as funcionalidades Custos e Prazos EXTRAPOLAM a Previsão Custos – em mais de 180% Prazos – em mais de 200% Custos do DESENVOLVIMENTO 80% - identificar e corrigir defeitos de programação Qualidade do Processo A Q u a l i d a d e d o S o f t w a r e d e p e n d e d a Q u a l i d a d e d e s e u P r o c e s s o d e D e s e n v o l v i m e n t o . Processo de Desenvolvimento de Software • Qualidade do produto não se atinge de forma espontânea. • A qualidade dos produtos de software depende fortemente da qualidade do processo de software usado para desenvolvê-los. • Um bom processo de software não garante que os produtos de software produzidos são de boa qualidade, mas é um indicativo de que a organização é capaz de produzir bons produtos de software . • A implantação de um Programa de Qualidade de Software começa, normalmente, pela definição e implantação de um processo de software. O que é um processo? • Cada processo recebe entradas • Entradas são transformadas por um processo. • Um processo gera saídas (os produtos do processo). • Clientes são receptores das saídas. • Fornecedores são provedores de serviços ou matérias-primas (entradas do processo). Processo de Desenvolvimento de Software • Conjunto de atividades, métodos, práticas e tecnologias que as pessoas usam para desenvolver e manter softwares • O processo adequado garante que o software será desenvolvido de maneira organizada, disciplinada e previsível. • O processo descreve formalmente e de forma organizada as atividades que devem ser seguidas para a obtenção segura de um produto de software. • A dificuldade está no gerenciamento do processo (existem vários modelos), que geralmente está dividido em fases. Processo de Desenvolvimento de Software • Análise: Analista com usuários. • Requisitos. Interesses → soluções para usuário • Projeto (design): Projetista usa a tecnologia • Requisitos tecnológicos → tecnologia para usuário • • Implementação: Programador usa L.P. • Escrita do código → Lógica de programação • Testes: Testadores com programas / sistema • Buscar defeitos e falhas nos sistema. • Homologação ou Aceitação: Com usuários. • Usuário aprovar o sistema (Participar de tudo !!!) • Implantação: Instalação e treinamento • Entrega o sistema. • Fim do ciclo de desenvolvimento ANÁLISE PROJETO IMPLEMENTAÇÃO TESTES HOMOLOGAÇÃO IMPLANTAÇÃO A Normas ISO / IEC 12207 • identifica os Processos do Ciclo de Vida de Software. • Estabelece uma estrutura comum para os processos de ciclo de vida de software, com terminologia bem definida, que pode ser referenciada pela indústria de software. • Contém um conjunto de processos, atividades e tarefas projetado para ser adaptado de acordo com cada projeto de software. • A estrutura cobre o ciclo de vida do software desde a concepção de ideias até a descontinuação do software. A Normas ISO / IEC 12207 • Não pretende prescrever o nome, formato ou conteúdo explícito da documentação a ser produzida. • Não prescreve um modelo específico de ciclo de vida ou métodos de desenvolvimento de software. – As partes envolvidas são responsáveis pela seleção de um modelo de ciclo de vida para o projeto e pelo mapeamento dos processos, atividades e tarefas dentro desse modelo. A Normas ISO / IEC 12207 • Processos possuem propósito e resultado(s). Todos os processos possuem pelo menos uma atividade. Os processos, junto com suas declarações de propósito e resultados, constituem um Modelo de Referência de Processo. • Atividades são unidades de construção usadas para agrupar tarefas relacionadas. • Uma tarefa é uma cláusula detalhada para a implementação de um processo. Pode ser um requisito (deve - “shall”), uma recomendação (deveria - “should”) ou uma permissão (pode- “may”). • Notas são usadas quando uma informação explanatória é necessária para melhor descrever a intenção ou os mecanismos de um processo A Normas ISO / IEC 12207 • Estrutura: – 24 processos • Agrupados em 4 categorias – 95 atividades – 325 tarefas – 224 resultados A Normas ISO / IEC 12207 Processos Fundamentais Processos de Apoio P ro cesso d e A d a p ta çã o Aquisição Documentação Fornecimento Gerência de Configuração Desenvolvimento Operação Garantia da Qualidade Verificação Validação Revisão Conjunta Manutenção Auditoria Usabilidade Gerência de Resolução de Problemas Gerência de Solicitação de Mudanças Avaliação do Produto Processos Organizacionais Gerência Engenharia de Domínio MelhoriaGestão de Ativos Infra-estrutura Gestão de Programa de Reúso Recursos Humanos Os processos Fundamentais da normas ISO / IEC 12207 • Aquisição: obter um produto e/ou serviço que satisfaça a necessidade expressa pelo cliente. • Fornecimento: fornecer um produto ou serviço ao cliente que atenda aos requisitos acordados. • Desenvolvimento: transformar um conjunto de requisitos em um produto de software ou um sistema baseado em software que atenda às necessidades explicitadas pelo cliente. • Operação: operar o produto de software no seu ambiente e fornecer suporte aos clientes desse produto. • Manutenção: modificar um produto de software/sistema após sua entrega para corrigir falhas, melhorar o desempenho ou outros atributos, ou adaptá-lo a mudanças no ambiente. Os processos de Apoio da normas ISO / IEC 12207 • Documentação: desenvolver e manter registradas as informações do software produzidas por um processo. • Gerência de Configuração: estabelecer e manter a integridade de todos os produtos de trabalho de um processo ou projeto e disponibilizá-los a todos os envolvidos. • Garantia da Qualidade: fornecer garantia de que os produtos de trabalho e processos estão em conformidade com os planos e condições predefinidos. Os processos de Apoio da normas ISO / IEC 12207 • Verificação: confirmar que cada produto de trabalho de software e/ou serviço de um processo ou projeto reflete apropriadamente os requisitos especificados. • Validação: confirmar que são atendidos os requisitos de um uso específico pretendido para o produto de trabalho de software. • Revisão Conjunta: manter um entendimento comum com os envolvidos (stakeholders) a respeito do progresso obtido em relação aos objetivos acordados e ao que deveria ser feito. • Auditoria: determinar, de forma independente, a conformidade dos produtos e processos selecionados com os requisitos, planos e contratos, quando apropriado. Os processos de Apoio da normas ISO / IEC 12207 • Gerência de Resolução de Problema: assegurar que todos os problemas identificados são analisados e resolvidos e que as tendências são identificadas. • Usabilidade: garantir que sejam considerados os interesses e necessidades dos envolvidos de forma a proporcionar otimização do suporte e do treinamento, aumento da produtividade e da qualidade do trabalho, melhoria das condições para o trabalho humano e redução das chances de rejeição do sistema por parte do usuário. • Avaliação de Produto: garantir, através de exame e medição sistemáticos, que o produto atende às necessidades especificadas e implícitas dos seus usuários.Os processos Organizacionais da normas ISO / IEC 12207 • Gerência: organizar, monitorar e controlar a iniciação e a execução de qualquer processo de forma a atingir as suas metas de acordo com as metas de negócio da organização. É estabelecido por uma organização para garantir a aplicação consistente de práticas por parte da organização e dos projetos. • Infraestrutura: manter uma infraestrutura estável e confiável, necessária para apoiar a execução de qualquer outro processo. A infraestrutura pode incluir hardware, software, métodos, ferramentas, técnicas, padrões e instalações para o desenvolvimento, a operação ou a manutenção. • Melhoria: estabelecer, avaliar, medir, controlar e melhorar um processo de ciclo de vida de software. Os processos Organizacionais da normas ISO / IEC 12207 • Recursos Humanos: fornecer à organização os recursos humanos adequados e manter as suas competências consistentes com as necessidades do negócio. • Gestão de Ativos: gerenciar a vida dos ativos reutilizáveis desde a sua concepção até a sua descontinuação. • Gestão do Programa de Reuso: planejar, estabelecer, gerenciar, controlar e monitorar esse programa em uma organização e sistematicamente explorar as oportunidades de reuso. • Engenharia de Domínio: desenvolver e manter modelos, arquiteturas e ativos de domínio. Exemplo de Tarefas de uma Atividade • Atividades do Processo de Desenvolvimento na ISO/IEC 12207 – Implementação do processo; – Análise dos requisitos do sistema; – Projeto da arquitetura do sistema; – Análise dos requisitos do software; – Projeto de arquitetura do software; – Projeto detalhado do software; – Codificação e testes do software; – Integração do software; – Testes de qualificação do software; – Integração do sistema; – Teste de qualificação do sistema; – Instalação do software; – Apoio à aceitação do software Exemplo de Atividades de um Processo • Tarefas da Atividade “Análise dos requisitos do software” na ISO/IEC 12207: – O desenvolvedor deve estabelecer e documentar os requisitos do software, incluindo as especificações das seguintes características de qualidade: – (i) especificações funcionais e de capacidade, – (ii) interfaces externas ao item de software, – (iii) requisitos de qualificação, – (iv) especificações de proteção, segurança e de engenharia de fatores humanos (ergonomia), – (vi) definição de dados e requisitos de bases de dados, – (vii) requisitos de instalação e aceitação do produto, – (viii) documentação do usuário, – (ix) requisitos do usuário para execução, operação e manutenção. Um guia para especificar as características de qualidade pode ser encontrado na ISO/IEC 9126. Onde estão a maior parte dos defeitos? • A maior dificuldade esta na fase INICIAL, de entendimento do sistema - Requisitos – ALTO grau de ABSTRAÇÃO + Comunicação com pessoas • A segunda maior abrangência está na modelagem – ALTO Grau de ABSTRAÇÃO + domínio das técnicas • O erros de codificação em si, representam um % pequeno, mostrando que o foco do problema não é da Implementação. Qualidade do Processo X Qualidade do Produto Qualidade do ProdutoQualidade do Processo Qualidade de Software A Qualidade do Produto é o que buscamos. A Qualidade do Processo é o meio para conseguirmos. A Qualidade do produto é fortemente influenciada pela qualidade dos processos utilizados no seu desenvolvimento. Onde aplicamos o controle de qualidade? • NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE, A QUALIDADE NÃO ATUA COMO UMA FASE ESPECÍFICA – ELA ESTÁ EM TODAS AS FASES QUALIDADE É ATUAR EM TODAS AS FASES – VERIFICANDO CONFORMIDADE COM OS PADRÕES E DEFINIÇÕES Concepção Requisitos Design Codificação Testes Implantação Qualidade Gerenciamento da Qualidade • GARANTIA DA QUALIDADE • Padrões que garantam a qualidade do software • PLANEJAMENTO • Seleção de procedimentos e padrões adequados para o projeto • CONTROLE • Assegurar que o desenvolvimento tenha seguido os procedimentos e padrões de qualidade do projeto A documentação do SW torna-se um instrumento fundamental para o CONTROLE DA QUALIDDE Garantia da Qualidade • Por melhores que sejam as técnicas de modelagem e especificação de software, por mais disciplinada e experiente que seja a equipe de desenvolvimento, sempre haverá um fator que faz com que o teste de software seja necessário: o erro humano. Erros, Defeitos e Falhas • Um erro (error) é uma diferença detectada entre o resultado de uma computação e o resultado correto ou esperado. Problema introduzido no software pelo programador • Um defeito (fault) é uma linha de código, bloco ou conjunto de dados incorretos, que provocam um erro observado. Problema encontrado no software pelos testadores. É decorrente de um erro. • Uma falha (failure) é um não funcionamento do software, possivelmente provocada por um defeito, mas também com outras causas possíveis. Problema ocorrido no software por um erro não detectado pelos testes. Erros, Defeitos e Falhas Curiosidade Thomas Edison teve problemas de leitura em seu fonógrafo com um inseto em 1878 e em todos os defeitos industriais passou a denominá-los como bug. Curiosidade • Primeiro bug em computadores – 1947 – Os engenheiros que trabalhavam com a máquina Harvard Mark I, encontraram um inseto nos circuitos. Este inseto estava causando um erro nos cálculos da máquina. Ao ser encontrado, o inseto foi retirado e colado no livro de registro com a intenção de registrá-lo como o primeiro bug encontrado. Formas de Detecção de Erros • Testes – Execução do programa em um ambiente controlado e verificação da saída produzida • Revisões – Inspeções – Walkthroughs • Métodos Formais – Software provado correto • Análise Estática – Detecta condições sujeitas a erros Orientações Gerais • Satisfação do Cliente. Entender, avaliar, definir e gerenciar as expectativas para que os requisitos do cliente sejam atendidos. Para isso, é necessária uma combinação de conformidade com os requisitos (para garantir que o projeto produza o que ele foi criado para produzir) e adequação ao uso (o produto ou serviço deve atender às necessidades reais). • Prevenção ao invés de Correção. A qualidade deve ser planejada, projetada e criada. O custo da prevenção dos erros é geralmente muito menor do que o custo de corrigir tais erros quando eles são encontrados pela inspeção ou durante o uso. Orientações Gerais • Melhoria Contínua. O ciclo PDCA (planejar-fazer-verificar-agir) é a base para a melhoria da qualidade conforme definida por Shewhart e modificada por Deming. Além disso, as iniciativas de melhoria da qualidade tais como o Gerenciamento da qualidade total (GQT), Seis sigma e Lean seis sigma devem aprimorar a qualidade do gerenciamento do projeto e também a qualidade do produto do projeto. • Responsabilidade da Gerência. O sucesso exige a participação de todos os membros da equipe do projeto. Todavia, a alta direção, dentro dos seu escopo de responsabilidade pela qualidade, retém a responsabilidade pelo fornecimento dos recursos adequados, nas capacidades adequadas.