Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade II QUALIDADE DE SOFTWARE Profa. Gislaine Stachissini Conteúdo da Unidade II O que é qualidade de software Garantia de produto de software Diferenças entre produto de software e outros produtos Garantia da qualidade de software As sete grandes atividades da SQA Revisões técnicas para haver qualidade em software Fatores de qualidade de software Controle da qualidade de software Técnicas da qualidade de software Qualidade de software O que é qualidade de software? De acordo com a norma ISO NBR 9126, qualidade de software é a totalidade de características de um produto de software que lhe confere a capacidade de satisfazer necessidades explícitas e implícitas. Qualidade de software Necessidades explícitas São as condições e objetivos propostos por aqueles que desenvolvem ou produzem o software. São, portanto, fatores relativos à qualidade do processo de desenvolvimento e são percebidos somente pelas pessoas que trabalham no seu desenvolvimento. Qualidade de software Necessidades implícitas São necessidades dos usuários ou clientes (destinatários dos resultados do software). São chamadas também de fatores externos e podem ser percebidas tanto pelos desenvolvedores quanto pelos usuários. São conhecidas como qualidade em uso e devem levar os usuários a atingirem efetividade, produtividade, segurança e satisfação. Qualidade de software Definições comuns da QS de acordo com Côrtes e Chiossi (2001): qualidade de software é software sem defeitos; qualidade de software é software adequado ao uso (Juran); qualidade de software é software que atende às especificações (Crosby); qualidade de software é software que possui confiabilidade, usabilidade e manutenibilidade. Razões para a qualidade de software Qualidade é o diferencial para a competitividade. Qualidade é essencial para a sobrevivência. Os clientes estão exigindo qualidade. Em um mercado maduro, os clientes não querem apenas que a empresa fale que tem qualidade, mas que mostre qualidade. As certificações são uma forma de comprovar a qualidade no mercado. Razões para a qualidade de software O mercado brasileiro é vulnerável a produtos importados, que, normalmente, têm mais qualidade. Qualidade é custo/benefício. Um sistema de qualidade direciona para o aumento da produtividade e redução da correção de defeitos. Sabe-se que corrigir defeitos após o desenvolvimento do software é mais dispendioso do que corrigi-los antes. Razões para a qualidade de software A qualidade retém consumidores e aumenta os lucros. A qualidade de software deve vir desde a definição dos requisitos até a entrega do produto ao cliente. A qualidade de software não pode depender somente dos testes, apesar de estes serem essenciais no processo de desenvolvimento. Garantia de produto de software Pode-se definir qualidade de produto de software como: conformidade a requisitos funcionais e de desempenho declarados explicitamente; padrões de desenvolvimento claramente documentados; características implícitas que são esperadas de todo software desenvolvido profissionalmente. Diferenças entre produtos de software e outros produtos Diferenças importantes entre produtos de software e manufaturados que não podem ser esquecidas I. Complexidade: um produto de software tem muitas regras a serem cumpridas; muitas linhas de código a serem implementadas; diversos desenvolvedores com ideias diferentes e às vezes divergentes envolvidos no seu desenvolvimento. Diferenças entre produtos de software e outros produtos II. Invisibilidade e intangibilidade: o software é invisível para o usuário ou cliente; o que se vê são as consequências da execução, diferentemente de um produto manufaturado; usam-se modelos para representar o software, e essa intangibilidade causa grandes dificuldades de comunicação. Diferenças entre produtos de software e outros produtos III. Conformidade: o software é a interface entre diversas entidades do meio no qual é utilizado. IV. 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 à sua maneira, com ênfase em partes diferentes; mesmo os famosos ERPs normalmente precisam ser customizados. Diferenças entre produtos de software e outros produtos V. Não se desgasta com o uso: no software, os componentes lógicos são duráveis e não se desgastam; a falha do software resulta de erros humanos cometidos durante o processo de desenvolvimento. Diferenças entre produtos de software e outros produtos VI. Não tem prazo de validade: o software 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 que paga para corrigir. Interatividade Qual dos itens abaixo não é considerado uma diferença importante entre produtos de software e manufaturados? a) Complexidade. b) Invisibilidade e intangibilidade. c) Conformidade. d) Não se desgasta com o uso. e) Prazo de validade. Garantia da qualidade de software – Software Quality Assurance (SQA) 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; melhorar qualidade de versões futuras do produto. Garantia da qualidade de software A SQA abrange: métodos e ferramentas para execução do processo de software; revisões técnicas formais que são aplicadas durante as fases do processo; uma estratégia de testes de múltiplas fases; controle da documentação de software e das mudanças efetuadas; um procedimento para garantir a adequação aos padrões adotados; mecanismos de medição e divulgação. Garantia da qualidade de software A garantia da qualidade enfatiza três pontos importantes a serem seguidos: 1. requisitos – são a base a partir da qual a qualidade é medida; 2. padrões – definem um conjunto de critérios que orientam o trabalho de engenharia; 3. requisitos implícitos – conjunto de requisitos que nem sempre são mencionados. Garantia da qualidade de software e seus requisitos A comunicação entre o desenvolvedor e o cliente/usuário é a chave para a definição correta dos requisitos. O desenvolvedor deverá trabalhar em conjunto com o cliente/usuário para definir corretamente as especificações do software, isto é, a definição precisa do escopo do sistema. Garantia da qualidade de software e seus requisitos O desenvolvimento de software deve: utilizar as melhores práticas da engenharia de software na elicitação dos requisitos; ser executado por pessoal qualificado; dar ênfase na prevenção de defeitos, e não só corrigi-los; gerar registros para demonstrar efetividade e eficiência (lições aprendidas); utilizar as bases históricas na melhoria contínua dos processos. As sete grandes atividades da SQA 1. Aplicação de práticas e métodos técnicos comprovados pelas normas ISO e modelos de qualidade. 2. Realização de revisões técnicas formais utilizando técnicas de reunião, revisão por pares,inspeção, walkthroughs etc. 3. Aplicação das atividades de testes de software. 4. Uso de padrões e normas preestabelecidas 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 (feedback e rastreabilidade). Revisões técnicas para haver qualidade em software SQA é um grupo de especialistas em qualidade de software com o objetivo de monitorar os métodos e padrões utilizados pelos desenvolvedores. Uma equipe estruturada em qualidade consegue prever grande parte dos defeitos nas revisões técnicas formais. Revisões técnicas para haver qualidade em software Weinberg (1997) relata sobre a eficiência das RTs em uma empresa americana em projetos de software que possuía 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 evitou uma média de 33 horas de retrabalho; as inspeções podem ser até 20 vezes mais eficientes que os testes. Padrões e procedimentos em qualidade de software O grau de aplicação dos padrões e procedimentos de qualidade varia de empresa para empresa. Mas, às vezes, são impostos pelos clientes ou até por órgãos reguladores. Uma grande ameaça à qualidade de software vem das mudanças que são efetuadas nos softwares em produção. A aplicação de modelos de gestão de serviços, como o ITIL, contribui para organizar as mudanças e evitar a propagação de erros. 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 de procedimentos 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 e testes. Todos esses resultados devem fazer parte de um registro histórico 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, a ISO 15504 e MPS.BR, possuem processos específicos e práticas para atender a essas demandas pela qualidade. 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. A qualidade não era uma preocupação e dependia totalmente das pessoas envolvidas. Evolução da qualidade de software 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 A partir da década de 2000: a qualidade de software passa por um processo de evolução; busca-se tornar o desenvolvimento de software coberto, garantido e assistido em todas as etapas do processo. Interatividade A SQA é responsável por: a) monitorar o uso dos métodos e ferramentas de análise, projeto, codificação e teste. b) aplicar revisões técnicas formais que garantam a aplicação da engenharia de software em cada fase do desenvolvimento. c) garantir uma estratégia de testes de múltiplas fases. d) garantir o controle da documentação de software e das mudanças feitas ao longo do ciclo de vida do produto. e) todas estão corretas. Evolução da qualidade de software: como estamos? Os testes de software são uma parte importante do processo de software e muitas empresas estão descobrindo na prática que testar é 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 a detecção de erros e defeitos de forma 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 (ex.: número de erros/KLOC – linhas de código/unidade de tempo); fatores que podem ser medidos apenas de forma indireta (ex.: usabilidade ou manutenibilidade). Fatores de qualidade de software Para determinar esses fatores, deve ocorrer um processo de medição. Ou seja, devemos comparar o software com algum dado presente ou histórico e chegar a uma indicação de qualidade. Fatores de qualidade de software Os fatores que afetam a qualidade de um software podem ser descritos da seguinte forma: corretude – medida de quanto o sistema satisfaz sua especificação e cumpre os objetivos do cliente; confiabilidade – medida de quanto o sistema executa sua função com a precisão exigida; eficiência – medida da quantidade de recursos exigidos pelo sistema na sua execução; Fatores de qualidade de software Os fatores que afetam a qualidade de um software podem ser descritos da seguinte forma: integridade – medida de controle no acesso de pessoas não autorizadas; usabilidade – medida de quanto o sistema é fácil de ser usado; manutenibilidade – medida do esforço exigido para reparar erros do sistema; Fatores de qualidade de software Os fatores que afetam a qualidade de um software podem ser descritos da seguinte forma: flexibilidade – o esforço para modificar o sistema a novos ambientes operacionais; testabilidade – o esforço exigido para testar um software; portabilidade – o esforço exigido para transferir o sistema para outro ambiente operacional; Fatores de qualidade de software Os fatores que afetam a qualidade de um software podem ser descritos da seguinte forma: reusabilidade – o esforço para reusar componentes do software; interoperabilidade – o esforço exigido para acoplar o sistema a outro sistema. Garantia estatística da qualidade Os indicadores de qualidade levam à garantia estatística da qualidade. Implicam os seguintes passos: coleta das informações sobre defeitos de software; rastreamento de cada defeito; aplicação do princípio de Pareto (80 – 20); tomada de providências para corrigir os problemas que causam os defeitos. Confiabilidade de software A confiabilidade é um elemento fundamental na qualidade de um software. Se um sistema deixar de funcionar com frequência, pouco importa para os usuários se outros fatores da qualidade são aceitáveis. A confiabilidade é definida em termos estatísticos, como a probabilidade de o software não falhar em um determinado período de tempo. Confiabilidade de software A confiabilidade é uma medida da probabilidade de funcionamento correto em alguma unidade de comportamento em um período de tempo. De acordo com a NBR ISO 9126, confiabilidade significa basicamente um software imune a falhas durante sua execução. Medidas da confiabilidade de software Uma medida simples da confiabilidade é o tempo médio entre a ocorrência de falha MTBF, em que: MTBF = MTTF + MTTR. MTBF – Mean Time between Failures – tempo médio entre falhas. MTTR – Mean Time to Repair – tempo médio de reparode uma falha ou defeito. MTTF – Mean Time to Fail – tempo médio até a ocorrência de falha. Controle da qualidade de software De acordo com Molinari (2003): o CQ é definido como os processos e métodos usados para monitorar o trabalho e os requisitos envolvidos no projeto. É focado nas revisões e na remoção de erros antes da entrega do produto. Deve ser responsabilidade da unidade de produção dentro da organização. Controle da qualidade de software De acordo com Molinari (2003): quem deve fazer o controle da qualidade? A empresa deve decidir: se é por quem produz o software ou se é 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ção; inspeções de códigos; validações de entrega ao usuário/cliente. Interatividade Qual dos itens abaixo não são passos que implicam a garantia estatística da qualidade? a) Coleta das informações sobre defeitos de software. b) Rastreamento de cada defeito. c) Abandonar os fatores de defeitos de software. d) Aplicação do princípio de Pareto (80 – 20). e) Tomada de providências para corrigir os problemas que causam os defeitos. Prevenção x detecção Segundo Molinari (2003): a qualidade não pode ser alcançada pelo acesso a um produto já pronto e completo; a solução é prevenir contra as deficiências e fazer com que o produto possa ter uma garantia de qualidade por meio de medições; somente se pode gerenciar aquilo que se consegue medir e vice-versa. Prevenção x detecção: gerência da qualidade A organização deve implementar 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 e ferramentas; procedimentos de recuperação de dados; gerência de mudanças/configuração; documentação dos defeitos; 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 por meio de inspeção e testes: custos de falhas externas consistem nos custos envolvidos com retrabalho depois que os produtos foram entregues e liberados; as falhas afetam a reputação da organização ou resultarão em perda de faturamento; a prevenção reduz o número de defeitos, melhora a qualidade e reduz o custo do software. Técnicas da qualidade de software: verificação e validação Conceitos: a verificação garante que o produto está sendo construído de acordo com os requisitos especificados; a validação garante que o sistema vai ao encontro dos requisitos do consumidor/cliente/usuário; Técnicas da qualidade de software: verificação e validação o teste de um produto está muito mais perto da validação do que da verificação; depois que o 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 A 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 as funções desejadas; 2. o software, durante sua execução, não deve passar por nenhum caminho que não tenha sido testado. A verificação é um “processo de melhoria” que não tem fim. Técnicas da qualidade de software: Revisões Técnicas Formais 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 (análise, design, construção e testes) 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. O funcionamento de uma RTF envolve: pessoas – o autor do trabalho, um escriba, um especialista do assunto, um desenvolvedor mais experiente; preparo 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? Quais foram as descobertas e conclusões? Técnicas da qualidade de software: testes 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, segurança, perfomance, usabilidade etc. Técnicas da qualidade de software: testes 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ã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. Técnicas da qualidade de software: princípios de testes Pressman (2002) apresenta os princípios: os testes devem ser relacionados aos requisitos; os testes devem ser planejados; princí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 o sistema; teste completo não é possível – procurar uma cobertura adequada dentro de prioridades e custos. Conclusão Somente se pode gerenciar a qualidade de um processo e um produto de software se eles puderem ser medidos e acompanhados durante todo o processo. Retrabalho ou corrigir defeitos é muito caro. Mais uma vez, o dito popular prevalece: “é melhor prevenir do que remediar”. Interatividade Das afirmações abaixo, qual está incorreta? 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 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 do produto de software. e) O processo de desenvolvimento que inclui revisões e inspeções produz produtos com mais qualidade. ATÉ A PRÓXIMA! Slide Number 1 Conteúdo da Unidade II Qualidade de software Qualidade de software Qualidade de software Qualidade de software Razões para a qualidade �de software Razões para a qualidade �de software Razões para a qualidade �de software Garantia de produto de software Diferenças entre produtos de�software e outros produtos Diferenças entre produtos de�software e outros produtos Diferenças entre produtos de�software e outros produtos Diferenças entre produtos de�software e outros produtos Diferenças entre produtos de�software e outros produtos Interatividade Resposta Garantia da qualidade de software –�Software Quality Assurance (SQA) Garantia da qualidade de software Garantia da qualidade de software Garantia da qualidade de�software e seus requisitosGarantia da qualidade de�software e seus requisitos As sete grandes atividades da SQA As sete grandes atividades da SQA Revisões técnicas para haver�qualidade em software Revisões técnicas para haver�qualidade em software Padrões e procedimentos�em qualidade de software Rastreamento da �qualidade de software Rastreamento da �qualidade de software Rastreamento da �qualidade de software Evolução da qualidade de software Evolução da qualidade de software Evolução da qualidade de software Interatividade Resposta Evolução da qualidade de �software: como estamos? �Fatores de qualidade de software� �Fatores de qualidade de software� �Fatores de qualidade de software� �Fatores de qualidade de software� �Fatores de qualidade de software� �Fatores de qualidade de software� Garantia estatística da qualidade �Confiabilidade de software� �Confiabilidade de software� �Medidas da confiabilidade de software� ��Controle da qualidade de software�� ��Controle da qualidade de software�� ��Controle da qualidade de software�� Interatividade Resposta ��Prevenção x detecção�� ��Prevenção x detecção: �gerência da qualidade�� ��Prevenção x detecção:�custos dos defeitos�� Técnicas da qualidade de software:�verificação e validação Técnicas da qualidade de software:�verificação e validação Técnicas da qualidade�de software: verificação Técnicas da qualidade de software:�Revisões Técnicas Formais Técnicas da qualidade de software:�Revisões Técnicas Formais Técnicas da qualidade de software:�Revisões Técnicas Formais Técnicas da qualidade�de software: testes Técnicas da qualidade�de software: testes Técnicas da qualidade de�software: princípios de testes Conclusão Interatividade Resposta Slide Number 67
Compartilhar