Qualidade de software Prof. Emiliano Monteiro
Por que realizar revisões por pares? 1. Para melhorar a qualidade. 2. Captura 80% de todos os erros se feito corretamente. 3. Captura erros de codificação e erros de design. 4. Aplicar o espírito de qualquer organização e padrões. 5. Implica em treinamento.
Confiabilidade de Software Definido como: a probabilidade de falha operação livre de um programa de computador em um ambiente especificado para um período de tempo especificado. Pode ser medido diretamente e estimado usando dados históricos e de desenvolvimento (ao contrário de muitos outros fatores de qualidade de software). Problemas de confiabilidade de software geralmente podem ser rastreados até erros de design ou implementação. Usando sistemas de bug trackers!
Métricas de confiabilidade 1. Probabilidade de Falha na Demanda (POFOD) POFOD = 0,001 Para uma em cada 1000 solicitações, o serviço falha por unidade de tempo. 2. Taxa de Ocorrência de Falha (ROCOF) ROCOF = 0,02 Duas falhas para cada 100 unidades operacionais de tempo de operação.
Métricas de confiabilidade 3. Tempo médio de falha (MTTF) Tempo médio entre falhas observadas (ou MTBF) 4. Disponibilidade = MTBF / (MTBF + MTTR) MTBF = tempo médio entre falhas MTTR = tempo médio de reparo 5. Confiabilidade = MTBF / (1 + MTBF)
Unidades de tempo Tempo de execução bruto de um sistema sem interrupção. Hora (no calendário)... se o sistema tiver padrões de uso regulares. Número de transações do sistemas transacional por tipo de operação.
O que é um produto de software? Produto de software = programas de computador (fontes e executáveis) + documentação associada. Os produtos de software podem ser: 1. Personalizado - desenvolvido para um cliente específico, de acordo com suas especificações. 2. Genérico ("pacote") - desenvolvido para um mercado geral, para ser vendido a uma gama de clientes diferentes. Off the shelf Software de prateleira.
O que é um produto de software? Tipos de produtos de software: 1. Software de suporte empresarial: Software utilizado para manter um determinado negócio operando. 2. Software de desenvolvimento: ferramentas de engenharia de software bem como IDE e compiladores para a produção de artefatos de software. 3. Software de produtividade pessoal: Planilhas, ferramentas de processamento de texto,... Software embutido
A importância do software 1. As economias de TODOS os países desenvolvidos dependem do software. 2. Cada vez mais sistemas são controlados por software Incluindo um número crescente de sistemas críticos e de missão crítica, com altas exigências de confiabilidade. 3. Mais e mais empresas dependem do software para o seu sucesso. 4. Software e Sistemas de Informação são fatores críticos de sucesso em um número crescente de empresas e organizações. 5. As despesas de engenharia de software (no desenvolvimento e manutenção de produtos de software) representam uma fração significativa do PIB (Produto Interno Bruto) em todos os países desenvolvidos
Software rodando por longo período perde a qualidade? 1. Um programa executando continuamente por um longo período de tempo (sem desligar) pode funcionar cada vez mais lento ou mesmo falhar, por exemplo. 2. Devido a problemas de memória ou fragmentação de memória. 3. A qualidade original é restaurada desligando e reiniciando.
Software rodando por longo período perde a qualidade? Você conhece produtos antigos com problemas de execução? 1. O desempenho diminui com o número de usuários simultâneos e o tamanho dos dados. 2. Pode requerer atualização de hardware e, consequentemente, atualização de software. 3. A manutenção diminui com o tempo. 4. Pode requerer manutenção preventiva (migração para tecnologias conhecidas). 5. O software torna-se obsoleto muito rapidamente: Devido à rápida evolução da tecnologia, requisitos ou conhecimentos. 6. Às vezes o software é usado por mais tempo do que o esperado (bug Y2K) Requer inovação e evolução contínuas.
Principais fatores de qualidade do produto Qualidade do processo: 1. Um bom processo é geralmente necessário para produzir um bom produto! 2. Para os bens manufaturados, o processo é o principal determinante da qualidade. 3. Para a atividade baseada em projeto (como o desenvolvimento de software), outros fatores também estão envolvidos especialmente as capacidades dos projetistas.
Principais fatores de qualidade do produto Para projetos de grande porte com capacidades 'médias', o processo de desenvolvimento determina a qualidade do produto. Qualidade das pessoas: 1. Para projetos pequenos, as capacidades dos desenvolvedores são o principal determinante. 2. Corolário: você precisa de pessoas de qualidade inferior (e processo de qualidade superior) em projetos maiores? 3. Tamanho do Projeto x Pessoas Qualidade = Constante?
Principais fatores de qualidade do produto Tamanho do Projeto x Pessoas Qualidade = Constante? Tecnologia de desenvolvimento: 1. É particularmente importante para pequenos projetos. Orçamento e cronograma: 1. Em todos os projetos, se um cronograma irreal é imposto, a qualidade do produto sofrerá.
Importância das normas Encapsulamento das melhores práticas - evita a repetição de erros passados. Estrutura para o processo de garantia de qualidade - envolve a verificação da conformidade padrão. Fornecer continuidade - o novo pessoal pode entender a organização por entender os padrões aplicados.
Black-box Teste de caixa preta: 1. Uma abordagem para testar onde o programa é considerado como uma "caixa-preta. 2. Os casos de teste do programa são baseados na especificação do sistema. 3. O planejamento de testes pode começar cedo no processo de software.
White-box Teste de caixa branca: 1. Algum tempo chamado teste estrutural. 2. Derivação de casos de teste de acordo com a estrutura do programa. 3. O conhecimento do programa é usado para identificar casos de teste adicionais. 4. O objetivo é executar todas as instruções do programa (nem todas as combinações de caminho). 5. As medidas de cobertura de teste garantem que todas as declarações tenham sido executadas pelo menos uma vez.
Teste de componentes e integração Teste de componentes: 1. Testes de componentes individuais do programa. 2. Geralmente a responsabilidade é do desenvolvedor do componente. 3. Os testes são derivados da experiência do desenvolvedor. Teste de integração: 1. Testes de grupos de componentes integrados para criar um sistema ou subsistema. 2. A responsabilidade de uma equipe de testes independente. 3. Os testes são baseados em uma especificação do sistema (caixa-preta)
Métrica de software Uma métrica de software é uma propriedade de um produto de software, processo ou documentação relacionada que leva um valor numérico que pode ser medido em Linhas de código (LOC) em um programa, número de dias-pessoa necessários para desenvolver um componente, etc. É importante medir (quantificar) a qualidade de um produto de software. Dificuldade principal: distância entre o que queremos saber (geralmente um atributo de qualidade externo) e o que podemos medir (normalmente um atributo interno).
Tipos de métricas do produto Métricas dinâmicas: 1. São coletadas por medições feitas de um programa em execução. 2. Estão intimamente relacionados com atributos de qualidade de software, como eficiência e confiabilidade. 3. É relativamente fácil medir o tempo de resposta de um sistema (atributo de desempenho) ou o número de falhas (atributo de fiabilidade).
Tipos de métricas do produto Métricas estáticas: 1. São coletados por medições feitas das representações do sistema (arquivos de origem, documentação, etc.). 2. Tem uma relação indireta (e difícil de estabelecer) com atributos de qualidade, tais como complexidade, compreensão e manutenção.