Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade II QUALIDADE DE SOFTWARE Prof. Dr. Ivanir Costa Qualidade de software O que é qualidade de Software? De acordo com a norma ISO 9126 É a totalidade de características de um produto de software que lhe confere a capacidade de satisfazer ascapacidade de satisfazer as necessidades explícitas e implícitas. O que é qualidade de software? Necessidades explícitas São as condições e objetivos propostos por aqueles que produzem o software. São, portanto, fatores relativos à qualidade do processo dequalidade do processo de desenvolvimento do produto e são percebidos somente pelas pessoas que trabalham no seu desenvolvimento. O que é qualidade de software? Necessidades implícitas São necessidades dos usuários (destinatários dos resultados do software) São chamadas também de fatoresSão chamadas também de fatores externos e podem ser percebidas tanto pelos desenvolvedores quanto pelos usuários. O que é qualidade de software? De acordo com Côrtes & Chiossi (2001) Qualidade de software é software sem defeitos; Qualidade de software é software adequado ao uso;adequado ao uso; Qualidade de software é software que atende às especificações, conforme a definição de qualidade de Crosby Qualidade de software é software que possui confiabilidade usabilidade epossui confiabilidade, usabilidade e manutenibilidade. Qualidade e o diferencial competitivo Amadurecimento do mercado e as certificações da qualidade Se a empresa não tiver habilidade de sobreviver em um mercado altamente competitivo, ela está em risco no mercado. O mercado brasileiro é vulnerável a produtos importados que, normalmente, têm mais qualidade. Todas as empresas sabem que corrigirTodas as empresas sabem que corrigir defeitos após o desenvolvimento do software é mais dispendioso do que corrígi-los antes. A qualidade e os testes de software A qualidade de software deve vir desde a definição dos requisitos até a entrega ao cliente A qualidade de software não pode depender somente dos testes, apesar dos testes serem essenciais no processo de desenvolvimento. Diferenças entre produto de software e outros produtos Complexidade do produto de software Software tem muitas regras a serem cumpridas, Muitas linhas de código a serem implementadas,implementadas, Diversos desenvolvedores com idéias diferentes e às vezes divergentes. Diferenças entre produto de software e outros produtos Invisibilidade e intangibilidade O software é invisível para o usuário ou cliente. O que se vê são os resultados da execução, diferentemente de um produtoexecução, diferentemente de um produto manufaturado. Os desenvolvedores necessitam utilizar modelos para representar o sistema de software. Diferenças entre produto de software e outros produtos Produção sob medida (taylor made) Para o software não existe produção em série, Cada usuário é um cliente que usa o software a sua maneira,software a sua maneira, Com ênfase em partes diferentes. Diferenças entre produto de software e outros produtos Não se desgasta com o uso Em software os componentes lógicos são duráveis. A falha do software resulta de erros humanos cometidos durante o processohumanos cometidos durante o processo de desenvolvimento. Diferenças entre produto de software e outros produtos O software não tem prazo de vencimento e não é sensível a problemas ambientais e nem sofre qualquer tipo de defeito devido ao uso cumulativo. O custo final do software é basicamente o custo do projeto e do desenvolvimento. O software é o único produto que, quando apresenta defeito, o cliente paga para corrigir. Situação da qualidade de software Conforme Guerra & Colombo (2008): Apesar das iniciativas em relação à melhoria da qualidade de software, infelizmente, A realidade das empresas, tanto asA realidade das empresas, tanto as nacionais, como as internacionais, estão distante do ideal. Situação da qualidade de software Rocha (2001) destaca: O trabalho do subcomitê de software da ISO e IEC que vêm trabalhando desde a década de 1990: Elaborando normas que permitamElaborando normas que permitam especificar e avaliar a qualidade dos produtos de software, consolidando as diversas visões de qualidade. Interatividade Apesar de todas as iniciativas em relação a melhoria da qualidade de software, infelizmente, a realidade das empresas, tanto as nacionais, como as internacionais, está distante do ideal, e os problemas de qualidade nos produtos persistem Apontequalidade nos produtos persistem. Aponte a resposta correta a) Iniciativas dos modelos de sustentabilidade b) Iniciativas ISO/IEC a partir de 1950 ) I i i ti i d lc) Iniciativas americanas com os modelos ISO e Modelo Qualidade Brasileiro d) Iniciativas brasileiras com os modelos CMM/CMMI, MPsBR e ITIL. e) Iniciativas da ISO/IEC a partir de 1990 Garantia da Qualidade de Software Software Quality Assurance A garantia de qualidade de software SQA é um conjunto de atividades que assegura que todos os esforços serão feitos para garantir que os produtos de software tenham a qualidade desejada. Essas atividades devem: Minimizar o número de defeitos; criar mecanismos para preservar prazos e custo; garantir que o produto possa ser usado no mercado e a qualidade de versões futuras do produto. Garantia da Qualidade de Software A SQA abrange: Métodos e ferramentas de análise, projeto, codificação e teste; Revisões técnicas formais que são aplicadas durante cada fase doaplicadas durante cada fase do processo; Uma estratégia de testes; Controle da documentação de software e das mudanças efetuadas; Um procedimento para garantir a adequação aos padrões adotados; e Mecanismos de medição e divulgação. Garantia da qualidade de software e os requisitos de software A SQA enfatiza três pontos importantes sobre requisitos: 1. Eles são a base a partir da qual a qualidade é medida. A falta de conformidade aos requisitos significa falta de qualidade. 2. Padrões definem um conjunto de critérios que orientam o trabalho de engenharia. Se não forem seguidos, o resultado será a falta de qualidade. 3. Há um conjunto de requisitos implícitos que nem sempre são mencionados. A qualidade de software será suspeita Garantia da qualidade de software e os requisitos de software A comunicação entre o desenvolvedor e o cliente é a chave para a definição correta dos requisitos. O desenvolvedor deverá trabalhar em conjunto com o cliente para definir corretamente as especificações do software, isto é, a definição precisa do escopo do sistema. Garantia da qualidade de software e os requisitos de software O desenvolvimento de software deve: Utilizar as melhores práticas da engenharia de software; ser executado por pessoal qualificado; Dar ênfase na prevenção de defeitos eDar ênfase na prevenção de defeitos e não só corrígi-los. Gerar registros para demonstrar efetividade e eficiência (bases históricas) Utilizar as bases históricas na melhoria contínua dos processos. As sete grandes atividades da SQA 1. Aplicação de métodos técnicos comprovados pelas normas ISO e modelos de qualidade; 2. realizações de revisões técnicas formais utilizando técnicas de reunião, revisão por pares, inspeção, walkthrougs etc.; 3. Possuir as atividades de testes de software; 4. Uso de padrões e normas preestabelecidas pela organização epreestabelecidas pela organização e com aderência a padrões reconhecidos no mercado; As sete grandes atividades da SQA 5. Controle de mudanças com práticas bem sucedidas na gestão de mudanças – manutenção evolutiva; 6. Medição do processo e da qualidade do produto, métricas e processo de medição; 7. Manutenção de registros e relatórios para feedback superior (rastreabilidade). Revisões técnicas para se ter qualidade em software Uma equipe estruturada consegue prever os defeitos com revisões técnicas Weinberg (1997) relata sobre a eficiência das RTs em uma empresa americana em projetosde software que possuem em torno de 2,5 milhões de linhas de código de alto nível: Encontrou-se um defeito para cada homem-hora investido. Cada hora gasta em inspeções evita uma média de 33 horas de retrabalho. As inspeções podem ser até 20 vezes mais eficientes que os testes Rastreamento da qualidade de software Um objetivo importante da SQA é rastrear a qualidade de software e avaliar o impacto das mudanças metodológicas e procedimentais sobre a qualidade do software. Para realizar isso, uma métrica de software no uso dos procedimentos deve ser coletada. Rastreamento da qualidade de software O registro e a disseminação de informações de SQA com os resultados de revisões, auditorias, controle de mudanças, testes e outras atividades devem tornar-se parte do histórico de um projeto e devem ser levados aoprojeto e devem ser levados ao conhecimento do pessoal envolvido com o desenvolvimento. Rastreamento da qualidade de software Os modelos de qualidade de software, tais como o CMMI e a ISO 15504 – possuem processos específicos e práticas para atender a essas demandas pela qualidade. Interatividade A SQA é: Responda qual a alternativa é a correta. a) Métodos e ferramentas de análise, projeto, codificação e teste; b) Revisões técnicas formais que sãob) Revisões técnicas formais que são aplicadas durante cada fase de engenharia de software; c) Uma estratégia de testes de múltiplas fases; d) Controle da documentação de software e das mudanças feitas nela; e) Todas estão corretas. Evolução da qualidade de software No início, o software era produzido de maneira que ninguém tinha compromisso com o que estava sendo feito; iniciativas isoladas procuravam melhorar o produto final. Molinari (2003) afirma que na década de 1980, o importante era descobrir “bugs”, era a verdadeira caça às “bruxas”; Na década de 1990, o enfoque voltou-se para os negócios: o software deveria suportar o negócio, isto é, se o caminho usado sempre funcionasse, as exceções eram desprezadas. Evolução da qualidade de software como estamos? Na atualidade busca-se tornar o desenvolvimento de software coberto, garantido e assistido por todas as etapas de um processo de software. Os testes de software passaram a ser uma parte importante deste processo e muitas empresas estão descobrindo na prática que teste é fundamental. A atividade de teste de software combina uma estratégia de múltiplos passos com uma série de métodos de projeto de casos de testes que ajudam a garantir uma detecção de erros e defeitos efetiva. Fatores de qualidade de software Os fatores que afetam a qualidade de software podem ser categorizados em dois amplos grupos: Fatores que podem ser medidos diretamente (por ex: número de erros (KLOC)/unidade de tempo); Fatores que podem ser medidos apenas de forma indireta (por ex: usabilidade ou manutenibilidade). Em cada caso deve ocorrer a medição,Em cada caso deve ocorrer a medição, ou seja, devemos comparar o software com algum dado presente ou histórico e chegar a uma indicação de qualidade. Indicadores de qualidade de software EX: Indicador sugerido pelo IEEE que índica a maturidade de software (SMI) e que forneçe uma indicação da estabilidade de um software. SMI = [Mt – (Fa + Fc + Fd)]/Mt Mt = núm. de módulos da versão atual. Fa = número de módulos da versão atual que foram adicionados. Fc = núm. módulos da versão atual que foram mudados. Fd = número de módulos da versãoFd = número de módulos da versão anterior que foram suprimidos da versão atual. SMI próximo de 1 – software estabilizado Confiabilidade de software A confiabilidade é um elemento fundamental na qualidade de um software Se um sistema/programa deixar de funcionar com frequência pouco importa se outros fatores da qualidade são aceitáveis A confiabilidade é definida em termos estatísticos como a probabilidade do software não falhar em um determinado período de tempo. Medidas da confiabilidade de software Uma medida simples da confiabilidade é o tempo médio entre a ocorrência de falha MTBF = MTTF + MTTR. onde: MTBF – Mean Time between Failures – tempo médio entre falhastempo médio entre falhas. MTTR – Mean Time to Repair – tempo médio de reparo de uma falha ou defeito. MTTF – Mean Time to Fail – tempo médio até a ocorrência de falha.médio até a ocorrência de falha. Um usuário final está preocupado com a ocorrência de falhas, não com a contagem total de erros. Controle da qualidade de software Molinari (2003): Controle de qualidade é definido como os processos e métodos usados para monitorar o trabalho e os requsitos envolvidos. É focado nas revisões e remoção de defeitos antes da entrega do produto. Controle de qualidade deve ser responsabilidade da unidade de produção do produto dentro daprodução do produto dentro da organização. Dúvida. Deve ser feito por quem produz o software ou por um grupo independente? Controle da qualidade de software Consiste em verificações do produto bem definidas e que sejam especificadas dentro do plano de garantia de qualidade. Para produtos de software: São as revisões de especificaçãoSão as revisões de especificação Inspeções de códigos e documentos, Testes, e Verificações de entrega ao usuário/cliente. Prevenção x detecção Molinari (2003): Qualidade não pode ser alcançada pelo acesso a um produto pronto e completo. A soluçao é prevenir contra as deficiências e fazer com que o produtodeficiências e fazer com que o produto possa ter uma garantia de qualidade através de medições. Somente se pode gerenciar aquilo que se consegue medirconsegue medir. prevenção x detecção gerência da qualidade Algumas medidas de qualidade incluem a estruturação de um processo de desenvolvimento com métodos, técnicas e ferramentas. Um programa de gerência de qualidade com:Um programa de gerência de qualidade com: Documentação de padrões de códigos, Descrição de uso desses padrões, Métodos, ferramentas, Procedimentos de recuperação de dados, p ç , Gerência de mudanças/configuração, Documentação dos defeitos, e Rastreabilidade. prevenção x detecção custos dos defeitos Prevenir custos consiste no conjunto de ações tomadas para prevenir os defeitos antes que eles apareçam: inspeção e testes Custos de falhas externas consistem nos custos envolvidos com retrabalho depois que os produtos foram entregues e liberados. Afeta a reputação da organização ou resultará em perda de faturamento. A prevenção reduz o número de defeitos,A prevenção reduz o número de defeitos, melhora a qualidade e reduz o custo do software. Interatividade O Índice de Maturidade de Software (SMI) criado pelo IEEE fornece uma indicação de estabilidade de um software durante seu ciclo de vida. Aponte a(s) afirmativa(s) correta(s): Àa) À medida que o SMI se aproxima de 1,0 o produto está deteriorado b) Se o SMI for próximo de 0 o produto não apresenta nehuma estabilidade. c) Se o SMI for 1,0 indica que o softwarec) Se o SMI for 1,0 indica que o software está totalmente estabilizado. d) O SMI não serve para medir a estabilidade de um software. e) As resposta b e c estão corretas Técnicas da qualidade de software V&V Verificação e Validação: Conceitos Verificação garante que o produto está sendo construído de acordo com os requisitos especificados, ecom os requisitos especificados, e Validação garante que o sistema vai ao encontro dos requisitos do consumidor. Técnicas da qualidade de software verificação e validação O teste de um produto está muito mais perto de Validação do que de Verificação. Depois que o programa/sistema é terminado, ele é testado para determinar sua funcionalidade e sua performance. É uma prática combinar verificação com validação no processo de testes. Técnicas da qualidade de software verificação Verificação inclui procedimentos sistemáticos de revisão, análise e testes empregados durante o desenvolvimento. Critérios fundamentais:1) O software tem de executar todas as1) O software tem de executar todas as funções desejadas. 2) O software, durante sua execução, não deve passar por nenhum caminho que não tenha sido testado. Verificação é um “processo de melhoria”Verificação é um processo de melhoria que não tem fim. Técnicas da qualidade de software RTFS – objetivos e benefícios O objetivo principal das RTFs é achar erros durante o processo de desenvolvimento para que eles não se transformem em defeitos depois da entrega do software. O benefício das RTFs é a descoberta antecipada de erros, de forma que eles não se propaguem. Estudos da indústria indicam que as atividades de projeto introduzem entre 50% e 65% de todos os defeitos durante o processo de software. Técnicas da qualidade de software revisões técnicas formais O estudo mostrou que as RTFs são 75% mais efetivas na descoberta de erros de projeto. Pressman, (2006) classifica o Walkthroug, as inspeções, as revisões por par como RTFs: Pessoas envolvidas: o autor do trabalho, um escriba, um especialista do assunto, um desenvolvedor mais experiente. Preparo do material, máximo de duasPreparo do material, máximo de duas horas de trabalho, pequena parte do software, restringindo-se o foco. Técnicas da qualidade de software revisões técnicas formais Como resultado de uma RTF gera-se um relatório resumido ou ata da revisão que responde a três questões: O que foi revisado? Quem fez a revisão?Quem fez a revisão? Quais foram as descobertas e conclusões? Técnicas da qualidade de software testes de software A atividade de teste continua sendo de importância fundamental para a eliminação dos erros que persistem após as RTFs. Um bom caso de teste é aquele que tem alta probabilidade de encontrar um erro ainda não descoberto. Existem muitos tipos de testes: Teste de funcionalidade, de segurança, perfomance, usabilidade, etc. Técnicas da qualidade de software testes de software Duas perspectivas diferentes de teste: 1. A lógica interna do programa é exercitada com Casos de Testes Caixa- Branca 2. Os Requisitos de software são2. Os Requisitos de software são exercitados usando técnicas de projeto de Casos de teste Caixa-preta. O objetivo é encontrar o maior número de erros com a menor quantidade de esforço e tempo.tempo. Técnicas da qualidade de software princípios de testes de software Pressman (2002) apresenta os princípios: Testes devem ser relacionados aos Requisitos Testes devem ser planejados Princípio de Pareto 80% dos errosPrincípio de Pareto – 80% dos erros encontrados se relacionam a 20% dos componentes do software O teste deve começar nos componentes individuais e progredir a todo sistema Teste completo não é possível – cobertura adequada dentro de prioridades Técnicas da qualidade de software conclusão Fica claro que somente se pode gerenciar a qualidade de um processo e um produto de software se os mesmos puderem ser medidos e acompanhados durante todo o processo. Outra contribuição importante dos autores e especialistas é que corrigir defeitos é muito caro. Mais uma vez o “dito” popular prevalece “é melhor prevenir do que remediar”. Interatividade Das afirmações abaixo, qual está errada? a) Testes de Software e RTFs têm o mesmo objetivo: Achar erros durante o processo de desenvolvimento. b) Os Testes de Software são mais efetivosb) Os Testes de Software são mais efetivos que as Revisões Técnicas Formais. c) O processo de revisão reduz substancialmente os erros cometidos d) O teste de software é um elemento crítico para a garantia de qualidade docrítico para a garantia de qualidade do produto de software. e) O processo de desenvolvimento que inclui revisões e inspeções produzem produtos com mais qualidade. ATÉ A PRÓXIMA!
Compartilhar