Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso: Análise e Desenvolvimento de Sistemas Disciplina: Qualidade de Software Aula 06: Métricas para Avaliação de Qualidade Prof. Hemir da C. Santiago hemircsantiago@fac.pe.senac.br Objetivo da aula: Conhecer os diversos tipos de métricas de qualidade, bem como a sua aplicação na avaliação da qualidade do software. Agenda Motivação Medidas Diretas Complexidade Ciclomática Medidas Indiretas Métricas Orientadas ao Tamanho Métricas Orientadas à Função Análise de Pontos de Função Motivação Razões para medir o software: Indicar a qualidade do produto; Avaliar a produtividade dos que desenvolvem o produto; Avaliar os benefícios derivados de novos métodos e ferramentas de engenharia de software; Formar uma base para as estimativas; Ajudar na justificativa de aquisição de novas ferramentas ou de treinamentos adicionais. Motivação As métricas de softwares possibilitam realizar uma das atividades mais fundamentais do processo de gerenciamento de projetos: o planejamento. Elas podem ser divididas em duas categorias: medidas diretas e indiretas. Medidas Diretas Custo ($) Esforço (HH: Homem-Hora) Linhas de Código (tamanho) Velocidade de Execução (performance) Memória (RAM) Número de Erros (CRs: Change Requests) Complexidade Ciclomática* Complexidade Ciclomática Essa complexidade é computada através do grafo de fluxo de controle do programa: Mede a quantidade de caminhos de execução independentes em um código fonte. Complexidade Ciclomática A complexidade ciclomática de uma seção do código fonte é a quantidade de caminhos independentes pelo código. Por exemplo, se o código possui apenas uma estrutura condicional, então há dois caminhos possíveis: aquele quando a condição é avaliada em verdadeiro, e aquele quando a condição é avaliada em falso. Complexidade Ciclomática Matematicamente, a complexidade é definida como: CC = T – N + 2 CC – complexidade ciclomática T – quantidade de setas (transições) N – quantidade de nós 2 – constante Complexidade Ciclomática Exemplo: Número de caminhos independentes (CC) = = número de transições – número de nós + 2 = 12 – 10 + 2 = 4 3 4 2 1 Medidas Indiretas Exemplos de medidas indiretas do processo de engenharia de software: confiabilidade; eficiência; qualidade; usabilidade; flexibilidade; e manutenibilidade. Outros Tipos As medições de software também podem ser organizadas em outras categorias: Métricas Orientadas ao Tamanho; Métricas Orientadas à Função. Métricas Orientadas ao Tamanho A medida de software mais familiar é a contagem de linhas de código. Esta métrica pode parecer simples, mas existe discordância sobre o que constitui uma linha de código. Está fortemente ligado à linguagem de programação utilizada, impossibilitando a utilização de dados históricos para projetos que não utilizam a mesma linguagem. Métricas Orientadas à Função Concentram-se na funcionalidade do software, com a vantagem de poder ser aplicada independente da tecnologia usada para desenvolver o software. Objetivos: Prover uma métrica de medição para apoiar a análise de produtividade e qualidade; Prover uma forma de estimar o tamanho do software; Prover um fator de normalização para comparação de software. Pontos de Função Unidade de medida de software para estimar o tamanho de um sistema de informação baseando-se na funcionalidade percebida pelo usuário. O método para medir o tamanho de um sistema de informação e expressá-lo em número de pontos de função é chamado de Análise por Pontos de Função (APF). Pontos de Função A APF foi criada em 1977 pelo funcionário da IBM Allan J. Albrecht. Ela basicamente quantifica as funções contidas no software em termos significativos para os usuários. A medida tem relação direta com os requisitos de usuário (requisitos de negócio). Apesar de muito popular, ela também é bastante criticada por diversos autores que acreditam que ela não seja uma medida objetiva. Análise de Pontos de Função Exemplo: Imagine um website em que vendedores de uma empresa entram para fazer cotações de pedidos. Os preços podem variar segundo a categorização de clientes, aos quais se oferecem descontos especiais. Passo 1 – Mapear as entidades: Passo 2 – Classificar as entidades: As entidades que gravam dados e que não dependem de outras para existir chamamos de Entidades Fortes ou ALIs (Arquivo Lógico Interno). Exemplo: Produto. Já as entidades que consomem dados ou dependem de outras para existir chamamos de Entidades Fracas ou AIEs (Arquivo de Interface Externa). Exemplo: Orçamento. Análise de Pontos de Função Análise de Pontos de Função Passo 2 – Classificar as entidades (ALIs e AIEs): Análise de Pontos de Função Passo 3 – Contar os pontos de função: Passo 4 – Estimar as horas de trabalho: A média de mercado para linguagens mais robustas como o Java é de 13hrs/PF, incluindo todo trabalho de requisitos, design, desenvolvimento, testes e correções. 265 pontos de função x 13hs/PF = 3.445 horas de trabalho Cada empresa/projeto deve estabelecer a sua quantidade de hrs/PF. Análise de Pontos de Função Passo 5 – Calcular o custo: Existem duas formas: 1. Multiplicar o total de horas pelo custo médio: 3.445 horas x R$ 100,00 = R$ 344.500 Análise de Pontos de Função Passo 5 – Calcular o custo: 2. Segmentar o esforço de trabalho entre diferentes perfis para chegar a um valor mais preciso: Análise de Pontos de Função Passo 6 – Calcular o preço: Com os custos, pode-se calcular o preço, bastando multiplicar pela margem bruta esperada para o projeto. Para exemplificar, consideremos uma margem de 35%: R$287.657,50 x (1,35) = R$ 388.337,63 Análise de Pontos de Função Análise de Pontos de Função Exemplo de caso prático para cálculo de custo e precificação do software: https://www.elirodrigues.com/2016/09/08/analise-indicativa-de-pontos-de-funcao-caso-pratico/ Exemplos para identificação de PFs com Cadastro de Clientes e Relatório de Cadastro de Clientes: https://www.devmedia.com.br/contagem-de-pontos-de-funcao/34390 Dúvidas? 1) AVALIAÇÃO: UNIDADE I 2) UNIDADE II: SEMINÁRIO + PROJETO Plano de Aulas DATA AULA 1 15/02/2023 Apresentação da disciplina | Revisão: Engenharia de Software 2 01/03/2023 Engenharia de Software 3 08/03/2023 Introdução à Qualidade de Software 4 15/03/2023 Modelos de Maturidade para Processos de Software 5 18/03/2023 Sábado Letivo (Atividade no Google Classroom) 6 22/03/2023 Ferramentas de Qualidade 7 29/03/2023 Métricas para Avaliação de Qualidade 8 05/04/2023 Revisão da 1ª Unidade 9 12/04/2023 Atividade Avaliativa 10 19/04/2023 1ª Devolutiva Plano de Aulas DATA AULA 11 26/04/2023 Introdução a Testes de Software 12 29/04/2023 Sábado Letivo (Atividade no Google Classroom) 13 03/05/2023 Técnicas e Níveis de Teste 14 10/05/2023 Testes Automatizados 15 17/05/2023 Seminário: Apresentações 16 24/05/2023 Seminário: Apresentações 17 31/05/2023 Atividade Avaliativa 18 07/06/2023 2ª Devolutiva 19 14/06/2023 Recuperação 20 21/06/2023 Devolutiva da recuperação � � � N < 0� N := -N;� Yes� (i < N) and �(result <= maxint)� � i := i+1;�result := result + i;� Yes� result <= maxint� No� � � No� � Start� Exit� output(�too large�);� result := 0;�i := 0;� � output(result);� Yes� No� � � N < 0N := -N;Yes (i < N) and (result <= maxint) i := i+1; result := result + i; Yes result <= maxint No Start No Exit result := 0; i := 0; output(“too large”); output(result); YesNo
Compartilhar