Share
Embed
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
Transcript
30 slides
-
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 -
" 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 -
" 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 -
" 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 -
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. -
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 -
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). -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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