Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Qualidade de Software | A crise do software e Fatores de Qualidade

Qualidade de Software | A crise do software e Fatores de Qualidade

Slides utilizados em aula na disciplina Qualidade de Software do Instituto de Ciências Exatas e Informática - Sistemas de Informação. Pontifícia Universidade Católica de Minas Gerais - Unidade Barreiro, 1º Semestre 2015.

Eduardo Miranda

March 03, 2015
Tweet

More Decks by Eduardo Miranda

Other Decks in Education

Transcript

  1. Qualidade de Software Pontifícia Universidade Católica de Minas Gerais Unidade

    Barreiro — 1º Semestre 2015 Prof. Eduardo Miranda [email protected] A crise do software e Fatores de Qualidade
  2. " A coisa mais mortal em software é o conceito,

    que quase universalmente parece ser seguido, que você está indo especificar o que você vai fazer, e depois fazê-lo. E é aí que a maioria de nossos problemas vêm." — Douglas T. Ross [1968] a crise do software
  3. " A gestão de desenvolvimento de software vai continuar a

    merecer a sua atual má reputação em eficácia de custos e cronograma, até que uma compreensão mais completa do processo de concepção de software seja alcançado." — Mr. K. Kolence [1968] a crise do software
  4. " Nós tendemos a continuar por anos com investimentos enormes

    para descobrir que o sistema, que não foi bem compreendido para ser iniciado, não funciona como esperado. Nós construímos sistemas como os irmãos Wright construíam aviões — nós construir a coisa toda, o empurramos pelo penhasco, o deixamos cair e começar tudo de novo. " — James Wesley Graham [1968] a crise do software
  5. a crise do software O relatório de 1968 da conferência

    de NATO (Organização do Tratado do Atlântico Norte ) e outros documentos da década de 1970 descrevem que a causa para a crise do software estavam relacionadas aos seguintes problemas: • Projetos extrapolando o orçamento; • Prazos de entrega não cumpridos; • Ineficiência dos softwares; • Software de baixa qualidade; • Software constantemente não atendendo os requisitos; • Software não eram sequer finalizados; • Projetos muito difíceis de gerenciar e código difícil de manter.
  6. código difícil de manter 10 i = 0 20 i

    = i + 1 30 PRINT i; " squared = "; i * i 40 IF i >= 10 THEN GOTO 60 50 GOTO 20 60 PRINT "Program Completed." 70 END 10 FOR i = 1 TO 10 20 PRINT i; " squared = "; i * i 30 NEXT i 40 PRINT "Program Completed." 50 END Código espaguete Código estruturado
  7. exercício 1) Na teoria de grafos, o problema do caminho

    mínimo consiste na minimização do custo de travessia de um grafo entre dois nós (ou vértices); custo este dado pela soma dos pesos de cada aresta percorrida. Existem várias variantes para problemas de caminho mínimo, cada uma adequada a um conjunto de problemas diferente. Elabore um cronograma para caso você tivesse que implementar o problema de origem-destino: determinar o menor caminho entre nós dados. ➔ Inclua tempo para estudo e projeto, para programação e testes e acrescente uma margem de segurança. 2) A confiabilidade de software, ao contrário de muitos outros fatores de qualidade, pode ser medido diretamente e estimado usando dados históricos e de desenvolvimento. A confiabilidade do software é definida em termos estatísticos como "a probabilidade de um programa de computador ser livre de falha em um ambiente especificado por um tempo determinado" 1 . Para ilustrar, o programa X é estimado para ter uma confiabilidade de 0,96 no decorrer de oito horas de processamento. Em outras palavras, se o programa X fosse executado 100 vezes e exigisse oito horas de tempo de processamento (tempo de execução), é provável que funcione corretamente (sem falha) 96 vezes em 100. Qualidade e confiabilidade são conceitos relacionados mas são fundamentalmente diferentes de várias formas. Quais? Justifique sua resposta. 1 Musa, J. D., A. Iannino, and K. Okumoto. "Engineering and managing software with reliability measures." (1987).
  8. fatores de qualidade McCall, Richards, and Walters : Fatores de

    Qualidade Correção Confiabilidade Usabilidade Integridade Eficiência Manutenibilidade Flexibilidade Testabilidade Portabilidade Reusabilidade Interoperabilidade Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf Revisão Operação Transição
  9. Características operacionais Correção O quanto um programa satisfaz a sua

    especificação e cumpre os objetivos visados pelo cliente Confiabilidade O quanto um programa executa a função pretendida com a precisão exigida Eficiência A quantidade de recursos computacionais e de código exigida para que um programa execute sua função Integridade O quanto o acesso ao software ou aos dados por pessoas não autorizadas pode ser controlado Usabilidade O quanto de esforço é necessário para aprender, preparar a entrada e interpretar a saída de um programa Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf fatores de qualidade
  10. fatores de qualidade McCall, Richards, and Walters : Fatores de

    Qualidade Correção Confiabilidade Usabilidade Integridade Eficiência Manutenibilidade Flexibilidade Testabilidade Portabilidade Reusabilidade Interoperabilidade Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf Revisão Operação Transição
  11. Habilidade para ser submetido a alterações Manutenibilidade O quanto de

    esforço é necessário para localizar e eliminar erros em um programa Flexibilidade O quanto de esforço é necessário para modificar um programa Testabilidade O quanto de esforço é necessário para testar um programa a fim de garantir que ele execute a função pretendida Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf fatores de qualidade
  12. fatores de qualidade McCall, Richards, and Walters : Fatores de

    Qualidade Revisão Transição Operação Correção Confiabilidade Usabilidade Integridade Eficiência Manutenibilidade Flexibilidade Testabilidade Portabilidade Reusabilidade Interoperabilidade Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf
  13. Adaptabilidade a novos ambientes Portabilidade O quanto de esforço é

    necessário para transferir um programa de uma plataforma de hardware e/ou software para outra Reusabilidade O quanto um programa (ou partes dele) pode ser reutilizado em outros programas Interoperabilidade O quanto de esforço é necessário para se acoplar um programa a um outro Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf fatores de qualidade
  14. A norma ISO 9126 foi desenvolvida na tentativa de identificar

    os principais atributos de qualidade para um software de computador. A norma identifica seis principais atributos de qualidade: 1. Funcionalidade – O software satisfaz às necessidades explícitas e implícitas do usuário? 2. Confiabilidade – O software, durante um período de tempo, funciona de acordo com as condições pré-estabelecidas? 3. Usabilidade – O software é fácil de usar? 4. Eficiência – O software desperdiça recursos? 5. Manutenibilidade – O software é fácil de alterar? 6. Portabilidade – O software é facilmente adaptável a diferentes plataformas? Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf características de qualidade
  15. Funcionalidade – O software satisfaz às necessidades explícitas e implícitas

    do usuário? • Adequação – Propõe-se a fazer o que é apropriado ? • Acurácia – Gera resultados corretos ou conforme acordado ? • Interoperabilidade – É capaz de interagir com os sistemas especificados ? • Conformidade – Está de acordo com normas e convenções previstas em leis, normas e descrições similares ? • Segurança de acesso – Evita acesso não autorizado, acidental ou deliberado acesso a programa e dados ? características e subcaracterísticas
  16. Confiabilidade – O software, durante um período de tempo, funciona

    de acordo com as condições pré-estabelecidas? • Maturidade – Com que freqüência apresenta falhas ? • Tolerância a falhas – Ocorrendo falhas, como ele reage ? • Recuperabilidade – É capaz de recuperar dados após uma falha ? características e subcaracterísticas
  17. Usabilidade – O software é fácil de usar? • Inteligibilidade

    – É fácil entender os conceitos utilizados? • Apreensibilidade – É fácil de aprender a usar? • Operacionalidade – É fácil de operar e controlar a operação? características e subcaracterísticas
  18. Eficiência – O software desperdiça recursos? • Comportamento em relação

    tempo – Qual é o tempo de resposta e de processamento? • Comportamento em relação aos recursos – Quanto recurso usa? Durante quanto tempo? características e subcaracterísticas
  19. Manutenibilidade – O software é fácil de alterar? • Analisabilidade

    – É fácil encontrar um erro quando ocorre? • Modificabilidade – É fácil modificar e remover erros? • Estabilidade – Há grandes riscos de erros quando se faz alterações? • Testabilidade – É fácil testar quando se faz alterações? características e subcaracterísticas
  20. Portabilidade – O software é facilmente adaptável a diferentes plataformas?

    • Adaptabilidade – É fácil adaptar a outras plataformas sem aplicar outras ações ou meios além dos fornecidos para esta finalidade no software considerado? • Capacidade para instalar – É fácil instalar em outras plataformas? • Capacidade para substituir – É fácil substituir por outro software? • Conformidade – Está de acordo com padrões e convenções de portabilidade? características e subcaracterísticas
  21. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software Funcionalidade Confiabilidade Usabilidade Eficiência Manutenibilidade Portabilidade Vídeo locadora Satélite
  22. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ Confiabilidade Usabilidade Eficiência Manutenibilidade Portabilidade Vídeo locadora Satélite
  23. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ ✓ Confiabilidade ✓ Usabilidade Eficiência Manutenibilidade Portabilidade Vídeo locadora Satélite
  24. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ ✓ Confiabilidade ✓ ✓ Usabilidade Eficiência Manutenibilidade Portabilidade Vídeo locadora Satélite
  25. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ ✓ Confiabilidade ✓ ✓ Usabilidade Eficiência ✓ Manutenibilidade Portabilidade Vídeo locadora Satélite
  26. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ ✓ Confiabilidade ✓ ✓ Usabilidade Eficiência ✓ ✓ Manutenibilidade Portabilidade Vídeo locadora Satélite
  27. Cada tipo de software tem seu próprio requisito de qualidade.

    A importância de cada característica depende do tipo de software. Apresentação original: http://www.ic.unicamp.br/~ranido/mc626/Qualidade.pdf qualidade X tipo de software ✓ Funcionalidade ✓ ✓ Confiabilidade ✓ ✓ Usabilidade Eficiência ✓ ✓ Manutenibilidade ✓ Portabilidade Vídeo locadora Satélite
  28. Randell, Brian. "The 1968/69 nato software engineering reports." History of

    Software Engineering (1996): 37. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF Wagner, Stefan. Software product quality control. Berlin: Springer, 2013. referências