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.
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
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
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
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.
= 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
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).
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
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
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
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
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
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
– É 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
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
– É 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
• 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
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
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
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
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
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
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
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