Qualidade de Software Métricas de Software Prof. Daniele Chrusciak Szilagyi Introdução Não se consegue controlar o que não se consegue medir. medir. (Tom DeMarco) Medida / Medição / Métricas É preciso ter bem claro as sutis diferenças entre os termos métrica, medição e medida. • Medida – dentro dos termos da engenharia de software, a medida irá fornecer uma indicação quantitativa da extensão, capacidade, quantidade, dimensão ou tamanho de algum produto ou de processo de software. Uma medida é estabelecida quando dados de um determinado ponto são coletados.(Exemplo: quantidade de erros encontrados na revisão de um único módulo). • Medição é o ato de definir uma medida, e tem sua ocorrência quando são coletados resultados em um ou mais pontos. (Exemplo: um determinado número de revisões de módulos são feitas para coletar medidas da quantidade de erros, para cada uma das revisões). • Métrica é um atributo mensurável de uma entidade. Caso a entidade seja um projeto, uma métrica seria, por exemplo, o seu tamanho. Métricas de Software Referem-se a um conjunto amplo de medidas para softwares • Métricas de software são medições quantitativas • são coletados dados de qualidade e produtividade • os dados são analisados • resultado é comparado a médias anteriores • é avaliado se ocorreram melhorias de qualidade e produtividade • Responsabilidade • análise e avaliação - gerente do projeto • coleta das medições - analistas, engenheiros, desenvolvedores Utilidade das Métricas Sem medir, qualquer julgamento é subjetivo • Com métricas • há direcionamento • podem ser realizadas estimativas • custo, prazos, performance, etc... • melhorias verdadeiras podem ser implantadas • os gerentes e os profissionais de software podem avaliar o que funciona e o que não funciona “Métricas de software permitem que você saiba quando rir e quando chorar” chorar” Tom Gilb Utilidade das Métricas ou seja, Os engenheiros de software realizam medidas e elaboram métricas com a finalidade de obter indicadores, os quais deverão fornecer um melhor entendimento de um processo, de um projeto ou produto de software, e com isto, possibilitar aos gerentes de projeto, ou mesmo aos próprios engenheiros de software, que estes possam ajustar o processo, projeto ou produto para um nível melhor. 4 Razões para Medir • Caracterizar • Para compreensão dos processos, produtos, recursos e ambientes • Estabelecer uma base para comparação com avaliações futuras • Avaliar • Determinar a situação em relação aos planos • As medidas são sensores que nos permitem dizer quando nossos projetos e processos estão saindo dos trilhos • poder retomar o controle • Verificar a realização de nossas metas • Verificar os impactos das melhorias de tecnologia e processos nos produtos 4 Razões para Medir • Predizer (Medições prognosticas) • Para poder planejar • Envolvem obter conhecimento dos relacionamentos entre os processos • Os valores já obtidos podem ser usados para predizer outros • Base para estimativa de custos, planejamento (prazo) e qualidade • Auxiliar na análise de riscos e na relação de custo-benefício • Melhorar • Com informações suficientes para auxiliar a identificar ineficiências e oportunidades de melhoria de qualidade Melhoria do Processo Categoria das Métricas Categoria das Métricas • Métricas orientadas a tamanho usam número de linhas de código fonte como fator de medida, bem como, número de instruções de código objeto entregue, ou ainda, número de páginas de documentação de sistemas. • Métrica por ponto de função é originada a partir de medidas da funcionalidade geral do sistema. A produtividade é expressa com base na funcionalidade util produzid em um tempo determinado. • Métricas de qualidade de software, assim como métricas de produtividade, focalizam o processo, o projeto e o produto. Desenvolvendo e analisando um referencial de métricas de qualidade, uma organização pode corrigir as áreas do processo de software, que são a causa dos defeitos de software. Métrica Orientada ao Tamanho Métricas orientadas ao tamanho são medidas do software e do processo pelo qual ele é desenvolvido • Registros simples da empresa de software como • LOC (Lines of Code) • Páginas de documentação • Quantidade de erros após a entrega, ... Métrica Orientada ao Tamanho Métrica Orientada ao Tamanho Métrica Orientada ao Tamanho Vantagens • Fáceis de serem obtidas • Excelentes modelos utilizam LOC • Existe ampla literatura sobre previsões de dados Desvantagens • LOC é dependente da linguagem de programação • Penalizam programas bem planejados, mas pequenos • Não se adaptam a linguagens não procedimentais • Difícil de ser obtida em fase de planejamento Métrica de Pontos de Função Foi lançada por A.J. Albrecht da IBM no início da década de 70, e tem sido evoluída pelo IFPUG (International Function Point User Group), ou Grupo Internacional de Usuários de Pontos de Função (www.ifpug.org). É denominada também como Function Point Analisys ou Análise de Ponto de Função e é uma forma efetiva de: • estimar o tamanho de uma aplicação através da contagem de todas as funções da mesma; • estabelecer taxas de produtividade em pontos de função por hora; • avaliar requisitos; • estimar custos de mudanças em sistemas; • normalizar a comparação entre módulos de software Métrica de Pontos de Função Métricas orientadas a Função são medidas indiretas de software e do processo pelo qual ele é produzido Em vez de contar LOC, esta métrica concentra-se na funcionalidade Ponto de Função: Medida de complexidade. Os pontos de função são calculados a partir da avaliação da complexidade do software em domínio da informação Os valores do domínio da informação são os componentes da contagem e são definidos da seguinte maneira: O Processo de Contagem Funções Tipo Dados ARQUIVO LÓGICO INTERNO (ALI): Representam os requisitos de armazenamento de grupos de dados logicamente relacionados, cuja manutenção é efetuada pela própria aplicação. ARQUIVO DE INTERFACE EXTERNA (AIE): Representam os requisitos de grupos de dados logicamente relacionadas, utilizados pela aplicação, mas que sofrem manutenção a partir de outra aplicação. Funções Tipo Transação ENTRADAS EXTERNAS (EE): é um processo elementar que trata os dados ou informações de controle vindas de fora da fronteira da aplicação que está sendo contada, com o objetivo de inserir, alterar ou excluir dados dos arquivos lógicos internos. • Um processo elementar é a menor unidade de atividade significativa para o(s) usuário(s). Exemplo: O agendamento de um recebimento, com a indicação de como será o parcelamento da receita e o rateio desta entre as unidades organizacionais, é a menor unidade de atividade do usuário de contas a receber • O processo elementar deve ser auto-suficiente e deixar o negócio da aplicação, objeto da contagem, em um estado consistente. Exemplo: Ao final do agendamento de um recebimento, ele deixa o sistema consistente, O agendamento da receita sem o devido registro do parcelamento não é considerado como um processo completo pelo usuário Funções Tipo Transação CONSULTAS EXTERNAS (CE): é um processo elementar que envia dados ou informações de controle para fora da fronteira da aplicação que está sendo contada. A intenção primária de uma CE é exibir informação para o usuário através de uma recuperação de dados ou informação de controle. O processamento lógico não pode conter fórmulas matemáticas ou cálculos, e nem criar dados derivados. • Exemplos: Telas de Help, Drop-downs (desde que recuperem dados de arquivos), consultas e relatórios sem totalizadores e que não atualizam arquivos SAÍDAS EXTERNAS (SE): é um processo elementar que envia dados ou informações de controle para fora da fronteira da aplicação. A intenção primária de uma SE é exibir informação para o usuário através de um processamento lógico ou outro que resulte numa recuperação de dados ou informações de controle. • Exemplos; Relatórios com totalização de dados, relatórios que também atualizam arquivos, informações em formato gráfico. Consideração sobre os Componentes da Contagem Associação com “ranking” Uma vez que os dados foram coletados, um valor de complexidade é associado a cada contagem Organizações que utilizam pontos de função desenvolvem critérios para determinar se um determinado componente é simples, médio ou complexo De qualquer forma, a determinação da complexidade é subjetiva Para calcular os Pontos de Função, a seguinte relação é usada: FP = total contagem x [0.65 + 0.01 x Σ (Fi) Onde: total contagem é a soma de todas as entradas de FP e Fi são os fatores de ajuste Tabela de Complexidade do ALI e AIE Tabela de Complexidade do SE e CE Tabela de Complexidade da EE Contagem de Pontos de Função não Ajustados Contagem de Pontos de Função Fator de Ajuste Contagem de Pontos de Função Fator de Ajuste Contagem de Pontos de Função Fator de Ajuste Análise Análise BIBLIOGRAFIA • PRESSMAN, Roger S. Engenharia de Software. São Paulo: Makron Books, 2006. • VASQUEZ, Carlos Eduardo; SIMÕES Guilherme Siqueira; ALBERT, Renato Machado. Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de Software: Editora Érica, 2004. • material professores Gregório Perez e Marcos Roberto e Silva, UNINOVE