Baixe o app para aproveitar ainda mais
Prévia do material em texto
Profa. MSc. Gislaine Stachissini UNIDADE II Qualidade de Software 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. Agenda 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. O que é 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. 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. Qualidade de Software É o diferencial para a competitividade. 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 ela mostre qualidade. As certificações são uma forma de comprovar a qualidade no mercado. 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. Retém consumidores e aumenta os lucros. Deve vir desde a definição dos requisitos até a entrega do produto ao cliente. Não pode depender somente dos testes, apesar de os testes serem essenciais no processo de desenvolvimento. Razões para a qualidade 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; e Características implícitas que são esperadas de todo software desenvolvido profissionalmente. Garantia de produto de software Diferenças importantes entre produtos de software e manufaturados que não podem ser esquecidas: complexidade, invisibilidade, intangibilidade, conformidade, produção sob medida, validade e desgaste 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 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. 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 Conformidade: O software é a interface entre diversas entidades do meio no qual é utilizado. 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 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. Diferenças entre produtos de software e outros produtos Qual dos itens abaixo não é considerado diferenças importantes entre produtos de software e manufaturados? a) Complexidade. b) Prazo de validade. c) Não se desgasta com o uso. d) Conformidade. e) Invisibilidade e intangibilidade. Interatividade Resposta Qual dos itens abaixo não é considerado diferenças importantes entre produtos de software e manufaturados? a) Complexidade. b) Prazo de validade. c) Não se desgasta com o uso. d) Conformidade. e) Invisibilidade e intangibilidade. A garantia de qualidade de software (SQA) é um conjunto de atividades que assegura que todo 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 – Software Quality Assurance (SQA) 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 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. 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. Garantia da qualidade de software e os requisitos de software 1. Aplicação de práticas e 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, 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; 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). Atividades da SQA SQA é um grupo de especialistas em qualidade de software com o objetivo de monitoraros 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 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 imposições de ó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. Padrões e procedimentos em 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. 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. 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. Rastreamento 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. 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. Na 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. Evolução da qualidade de software A SQA não é 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) Desenvolver o sistema em análise. e) Garantir o controle da documentação de software e das mudanças feitas ao longo do ciclo de vida do produto. Interatividade Resposta A SQA não é 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) Desenvolver o sistema em análise. e) Garantir o controle da documentação de software e das mudanças feitas ao longo do ciclo de vida do produto. 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. Evolução da qualidade de software: como estamos? 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 – linhas de código/unidade de tempo) Fatores que podem ser medidos apenas de forma indireta (por ex.: usabilidade ou manutenibilidade) 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. 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. Reusabilidade – o esforço para reusar componentes do software. Interoperabilidade – o esforço exigido para acoplar o sistema a outro sistema. Fatores de qualidade de software 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. Garantia estatística da qualidade 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 do software não falhar em um determinado período de tempo. 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. Confiabilidade 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. 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; e Validações de entrega ao usuário/cliente. Controle da qualidade de software Qual dos itens abaixo não são passos que implicam na garantia estatística da qualidade? a) Abandonar os fatores de defeitos de software. b) Rastreamento de cada defeito. c) Aplicação do princípio de Pareto (80 – 20). d) Coleta das informações sobre defeitos de software. e) Tomada de providências para corrigir os problemas que causam os defeitos. Interatividade Resposta Qual dos itens abaixo não são passos que implicam na garantia estatística da qualidade? a) Abandonar os fatores de defeitos de software. b) Rastreamento de cada defeito. c) Aplicação do princípio de Pareto (80 – 20). d) Coleta das informações sobre defeitos de software. e) Tomada de providências para corrigir os problemas que causam os defeitos. 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 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: gerência da qualidade 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 entreguese 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. Prevenção x detecção: custos dos defeitos Conceitos: Verificação garante que o produto está sendo construído de acordo com os requisitos especificados; Validação garante que o sistema vai ao encontro dos requisitos do consumidor/cliente/usuário. 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 e validação A verificação inclui procedimentos sistemáticos de revisão, análise e testes empregados durante o desenvolvimento. Critérios fundamentais: O software tem de executar todas as funções desejadas; 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: verificação 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. O estudo mostrou que as RTFs são 75% mais efetivas na descoberta de erros de projeto. Técnicas da qualidade de software: Revisões Técnicas Formais 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. 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: Revisões Técnicas Formais 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ã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: testes de software 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. Técnicas da qualidade de software: princípios de testes de software Qual das afirmações a seguir está incorreta? a) Testes de software e RTFs têm o mesmo objetivo: achar erros durante o processo de desenvolvimento. b) O teste de software é um elemento crítico para a garantia de qualidade do produto de software. c) O processo de desenvolvimento que inclui revisões e inspeções produz produtos com mais qualidade. d) Os testes de software são mais efetivos que as revisões técnicas formais. e) Os testes devem ser relacionados aos requisitos. Interatividade Resposta Qual das afirmações a seguir está incorreta? a) Testes de software e RTFs têm o mesmo objetivo: achar erros durante o processo de desenvolvimento. b) O teste de software é um elemento crítico para a garantia de qualidade do produto de software. c) O processo de desenvolvimento que inclui revisões e inspeções produz produtos com mais qualidade. d) Os testes de software são mais efetivos que as revisões técnicas formais. e) Os testes devem ser relacionados aos requisitos. CÔRTES, M. L.; CHIOSSI, T. C. S. Modelos de qualidade de software. Campinas: Editora da Unicamp, 2001. MOLINARI, L. Testes de software: produzindo sistemas melhores e mais confiáveis. São Paulo: Érica, 2003. PRESSMAN, S. R. Engenharia de software. 6. ed. São Paulo: McGraw-Hill, 2006. Referências ATÉ A PRÓXIMA!
Compartilhar