Unioeste - Universidade Estadual do Oeste do Parana Ciência da Computação – Disciplina: Engenharia de Software II Prof. Willian Francisco da Silva Introdução a Métricas de Software 32 Apresentar os conceitos de métricas de software e destacar sua importância e utilidade. Bibliografia www.bfpug.com.br http://www.pr.gov.br/batebyte/edicoes/2000/bb101/metricas.htm www.psphome.hpg.ig.com.br/downloads/ etapas_do_gerenciamento_do_projeto.doc http://www.iis.com.br/~coriceu/prodsoft/12metr.htm Título Nro. Objetivo
Introdução a Métricas de Software
Não se pode controlar aquilo que não se consegue medir. Tom de Marco Software é atualmente um dos maiores componentes do orçamento de muitas organizações. A maioria delas reconhece a importância de controlar os gastos com software, de analisar a performance dos resultados obtidos com o seu desenvolvimento e manutenção, a fim de permitir uma padronização. Para fazer isto, necessitamos fazer uso de medidas e de modelos apropriados. Medidas são necessárias para analisar qualidade e produtividade do processo de desenvolvimento e manutenção bem como do produto de software construído. Sabendo exatamente o "tamanho" do sistema a ser desenvolvido, pode-se pensar em : • alocar adequadamente a equipe que o desenvolverá; • definir claramente as responsabilidades; • ter indicação de performance durante o desenvolvimento; • avaliar se novas tecnologias estão efetivamente trazendo os ganhos esperados; • ter um gerenciamento mais correto; • melhorar a precisão das estimativas envolvidas; • avaliar o patrimônio representado pelo software desenvolvido; E a partir de medições torna-se possível realizar uma das atividades mais fundamentais do processo de gerenciamento de projetos que é o planejamento. A partir deste planejamento, passamos a identificar a quantidade de esforço, o custo e as atividades que serão necessárias para a realização do projeto.[2] Pela medição é possível quantificar e assim administrar melhor. O processo é medido num esforço para melhorá-lo. O produto é medido, num esforço para aumentar a sua qualidade.
1
Unioeste - Universidade Estadual do Oeste do Parana Ciência da Computação – Disciplina: Engenharia de Software II Prof. Willian Francisco da Silva O software é medido por muitas razões: indicar a qualidade do produto, avaliar a produtividade das pessoas que produzem o produto, avaliar os benefícios derivados de novos métodos e ferramentas de software, formar uma linha básica para estimativas, ajudar a justificar os pedidos de novas ferramentas ou treinamento adicional. Porém, às vezes surgem indagações do tipo: Quais são as métricas apropriadas para o processo e para o produto? É justo usar medições para se comparar pessoas, processos e produtos? Essas perguntas vem à tona quando é feita uma tentativa de se medir alguma coisa que não tenha sido medido no passado. A medição é algo comum no mundo da engenharia. Infelizmente, a engenharia de software está longe de ter uma medição padrão amplamente aceita e com resultados sem nenhum fator subjetivo. Temos dificuldade em concordar sobre o que medir e como avaliar o resultado das medições obtidas. Geralmente, usa-se o recursos das estimativas (ou do chute1). Estimativas são feitas usando-se a experiência passado como único guia. Se um novo projeto for muito semelhante, em termos de tamanho e função, a um projeto passado, provavelmente esse novo projeto exigirá aproximadamente a mesma quantidade de esforço, tomará o mesmo tempo em calendário e custará o mesmo valor em dólares. Há bem pouco tempo, a única base para a realização de estimativas era a experiência da equipe técnica envolvida no projeto, ou seja, um processo inteiramente subjetivo e que fatalmente levava a atividades atropeladas ou não realizadas, produtos com deficiência funcional, custo de realização além do previsto e atraso na entrega do produto. Um dos grandes problemas da utilização da experiência passada de desenvolvimento de projetos de software em novos desenvolvimentos é a dificuldade de estabelecer semelhanças de funcionalidade e tamanho entre projetos de software. Se o projeto romper novos horizontes, novas técnicas de estimativas foram disponibilizadas para o desenvolvimento de software com os seguintes atributos: • O escopo do projeto deve ser estabelecido antecipadamente. • Métricas de software são utilizadas e o histórico de aferições passadas é usado como uma base a partir da qual estimativas são feitas. • O projeto é dividido em pequenas partes que são estimadas individualmente.
1
CHUTE – calculo hipotetico usando tecnica estruturada
2
Unioeste - Universidade Estadual do Oeste do Parana Ciência da Computação – Disciplina: Engenharia de Software II Prof. Willian Francisco da Silva Utilidade das Medidas A capacidade de se medir um sistema de software (ou suas partes) permite: 1. estimar o tempo de construção do software 2. estimar regiões que tendem a apresentar uma grande taxa de defeitos. 3. ajudar na justificação de novas ferramentas e especialização adicional. As métricas relacionadas com (1) são importantes principalmente na etapa de análise do sistema. As métricas relacionadas com (2 e 3) são importantes em todas as fases de desenvolvimento do sistema. Categorias de métricas As métricas de software, do ponto de vista de medição, podem ser divididas em duas categorias: medidas diretas e indiretas. Podemos considerar como medidas diretas do processo de engenharia de software o custo e o esforço aplicados no desenvolvimento e manutenção do software e do produto, a quantidade de linhas de código produzidas e o total de defeitos registrados durante um determinado período de tempo. Porém, a qualidade e a funcionalidade do software ou a sua capacidade de manutenção são mais difíceis de ser avaliadas e só podem ser medidas de forma indireta. Também podemos dividir as métricas de software, sob o ponto de vista de aplicação, em duas categorias: métricas de produtividade e de qualidade. As métricas de produtividade se concentram na saída do processo de engenharia de software e métricas de qualidade indicam o quanto o software atende aos requisitos definidos pelo usuário. Entre as medidas diretas do processo de engenharia de software incluem-se o custo e o esforço aplicados. As medidas diretas do produto incluem as linhas de código produzidas, velocidade de execução, tamanho de memória e defeitos registrados ao longo de certo espaço de tempo. As medidas indiretas do produto incluem funcionalidade, qualidade, complexidade, eficiência, confiabilidade, manutenibilidade e outras. • • • • •
métricas da produtividade que se concentra na saída do processo de engenharia de software; métricas da qualidade que mostra o quão o estreitamente o software conforma-se às exigências implícitas e explícitas do cliente. métricas técnicas concentram-se na característica do software e não no processo pelo qual o software foi desenvolvido. métricas Orientadas ao Tamanho são usadas para compilar as medições diretas da saída e da qualidade da engenharia de software. métricas Orientadas para a função oferecem medidas indiretas
3
Unioeste - Universidade Estadual do Oeste do Parana Ciência da Computação – Disciplina: Engenharia de Software II Prof. Willian Francisco da Silva •
métricas Orientadas às Pessoas compilam informações sobre a maneira segundo a qual as pessoas desenvolvem software de computador.
Implementando um programa de métricas A implementação de um programa de métricas em uma empresa requer a atuação em diversas frentes: estrutura organizacional, padrões, ferramentas e processos. Estrutura organizacional: A estrutura organizacional da empresa deve ser modificada sendo criada uma equipe central para dar suporte às atividades relacionadas ao controle de métricas. Dentre as responsabilidades atribuídas a esta equipe destacam-se: definir os processos de medidas que serão usados; consolidar as métricas; analisar e divulgar; manter as ferramentas utilizadas para a coleta e gerenciamento; treinar as equipes; Padrões: Diversos padrões devem ser estabelecidos pela equipe central do programa de métricas. Exemplos: • Classificar os projetos em tipos de desenvolvimento: novos desenvolvimentos; grandes melhorias; manutenção; projetos internos; • Padronizar as fases dos projetos: levantamento de requisitos; análise; projeto; • Padronizar as atividades não operacionais da equipe: férias; licenças; • Padronizar as métricas primitivas: linhas de código, homens-hora,... • Padronizar as métricas compostas: Produtividade = linhas-decódigo/pessoas-mês, Tempo de entrega = pontos-de-função / duração Ferramentas: Diversos programas podem ser utilizados no apoio à implementação do programa de métricas. Como exemplo, programas para: a manutenção do banco de dados de métricas; a apropriação das homem-horas consumidos nas atividades; a contagem de linhas de código e para o cálculo de pontos de função; visulaização gráfica dos dados obtidos e consolidados; Processo: O processo de implementação do programa de métricas se faz por fases com as seguintes atividades. Pontos de Função – PF Para se dimensionar o "tamanho" de um software utilizam-se diversas técnicas. Dentre elas destaca-se a Análise por Pontos de Função. Em resumo, é uma técnica na qual verifica-se no software a ser criado a quantidade de interfaces com outras funcões e arquivos de dados e pontua-se cada interface considerando sua complexidade. Após algumas considerações qualitativa-se chega-se a uma quantidade que representa o "tamanho" do software a ser desenvolvido.
4
Unioeste - Universidade Estadual do Oeste do Parana Ciência da Computação – Disciplina: Engenharia de Software II Prof. Willian Francisco da Silva Na engenharia temos o uso de metro quadrado (m2) para avaliar o tamanho de uma construção. Mas obviamente outros grandezas são necessárias para um completo conhecimento da construção, por exemplo, preço, tempo de duração da construção, qualidade do material a ser utilizado, etc. Da mesma forma, o PF nos dá o tamanho do software (como se fosse o m2 da engenharia civil) mas necessita diversas outras grandezas para permitir um planejamento adequado do desenvolvimento e o dimensionamento completo do software.
5