Metricas de Software

Post on 07-Dec-2015

15 views 0 download

description

Metrica

Transcript of Metricas de Software

1

Métricas de Software

Adjailton Cabrera

adjailton.cabrera@aedu.com

2

Objetivos

Entender porque medição é importante para avaliação e garantia da qualidade de software

Entender as abordagens principais de métricas e como elas são utilizadas

Conhecer algumas métricas e suas aplicações

Entender o que é um Plano de Métricas e como escrever um

Métricas de Software 2/57

3

Motivação

Métricas de Software 3/57

Um dos objetivos básicos da Engenharia de Software é: a transformação da criação de sistemas software de uma maneira artística, indisciplinada e pouco

entendível para uma forma devidamente controlada, quantificada e previsível

“Métricas de Software” é um assunto discutido há mais de 20 anos na engenharia de software ... e no entanto não é verificada sua utilização, na prática, pela grande maioria

dos projetos de construção de software

Pesquisas realizadas em empresas de software indicam que mais da metade de grandes projetos de software se deparam com algum tipo de atraso,

excesso de custo ou prazo ou algum fracasso na execução quando implantado Falta de

controle dos projetos

4

Motivação

“Não se pode gerenciar o que não se

pode medir”.

Tom De Marco

“Se você não sabe para onde você

quer ir, qualquer caminho você pode

seguir. Se você não sabe onde você

está, um mapa não vai ajudar!”.

Roger Pressman

Métricas de Software 4/57

5

O que são métricas de software?

Uma métrica é a medição de um atributo

(propriedades ou características ) de uma

determinada entidade (produto, processo ou

recursos). Exemplos:

Tamanho do produto de software (ex: Número de Linhas

de código)

Número de pessoas necessárias para implementar um

caso de uso

Número de defeitos encontrados por fase de

desenvolvimento

Esforço para a realização de uma tarefa

Tempo para a realização de uma tarefa

Custo para a realização de uma tarefa

Grau de satisfação do cliente (ex: adequação do

produto ao propósito, conformidade do produto com a

especificação)

Métricas de Software 5/57

6

Por que medir software?

Entender e aperfeiçoar o processo de

desenvolvimento

Melhorar a gerência de projetos e o

relacionamento com clientes

Reduzir frustrações e pressões de cronograma

Gerenciar contratos de software

Indicar a qualidade de um produto de software

Avaliar a produtividade do processo

Avaliar os benefícios (em termos de

produtividade e qualidade) de novos métodos e

ferramentas de engenharia de software

Avaliar retorno de investimento

Métricas de Software 6/57

7

Por que medir software?

Identificar as melhores práticas de desenvolvimento

de software

Embasar solicitações de novas ferramentas e

treinamento

Avaliar o impacto da variação de um ou mais

atributos do produto ou do processo na qualidade

e/ou produtividade

Formar uma baseline para estimativas

Melhorar a exatidão das estimativas

Oferecer dados qualitativos e quantitativos ao

gerenciamento de desenvolvimento de software,

de forma a realizar melhorias em todo o processo

de desenvolvimento de software

Métricas de Software 7/57

8

Propriedades desejáveis de uma métrica

Facilmente calculada, entendida e testada

Passível de estudos estatísticos

Expressa em alguma unidade

Obtida o mais cedo possível no ciclo de vida

do software

Passível de automação

Repetível e independente do observador

Sugere uma estratégia de melhoria

Métricas de Software 8/57

9

Em resumo...

Uma métrica deve ser:

Válida: quantifica o que queremos medir

Confiável: produz os mesmos resultados dadas as

mesmas condições

Prática: barata, fácil de computar e fácil de interpretar

Dois contextos para medição de software

Processo: ex. produtividade

Produto: ex. qualidade

Métricas de Software 9/57

10

Categorização de Métricas

Métricas diretas (fundamentais ou básicas)

Medida realizada em termos de atributos

observados (usualmente determinada pela

contagem)

Ex.: custo, esforço, no. linhas de código, capacidade de memória, no. páginas, no.

diagramas, etc.

Métricas indiretas (derivadas)

Medidas obtidas a partir de outras métricas

Ex.: complexidade, eficiência, confiabilidade, facilidade de manutenção

Métricas de Software 10/57

11

Categorização de Métricas

Métricas orientadas a tamanho

São medidas diretas do tamanho dos artefatos de

software associados ao processo por meio do qual

o software é desenvolvido.

Ex.: esforço, custo, no. KLOC, no. páginas de documentação, no. erros

Métricas orientadas por função

Consiste em um método para medição de

software do ponto de vista do usuário,

determinando de forma consistente o tamanho e a

complexidade de um software.

Métricas de Software 11/57

12

Categorização de Métricas

Métricas de produtividade Concentram-se na saída do processo de engenharia de

software.

Ex.: no. de casos de uso/iteração.

Métricas de qualidade Oferecem uma indicação de quanto o software se

adeqüa às exigências implícitas e explícitas do cliente.

Ex.: erros/fase

Métricas técnicas Concentram-se nas características do software e não no

processo por meio do qual o software foi desenvolvido.

Ex.: complexidade lógica e grau de manutenibilidade

Métricas de Software 12/57

13

Possíveis problemas com métricas

Ex: Comparar a produtividade de engenheiros em termos de linha de código

Está sendo utilizado a mesma unidade de medida?

O que é uma linha de código válida?

O contexto considerado é o mesmo?

Todos os engenheiros são familiarizados com a linguagem

de programação?

O que se quer realmente é o tamanho do código?

E a qualidade do código?

Como o resultado será interpretado?

Produtividade média de um engenheiro?

O que se quer com o resultado?

Comparar a produtividade do processo de software?

Métricas de Software 13/57

14

Teoria da Medição

Teoria sobre métricas pode ajudar a resolver

estes problemas.

Métricas de Software 14/57

15

Relações Empíricas

Ajudam a observar as relações do tipo

verdadeiro/falso entre entidades do mundo

real

Ex. Relações empíricas entre o atributo altura

das pessoas

Binária: O Super-homem é mais alto do que papai

Noel

Unária: O Super-homem é alto

Ternária: O Super-homem é mais alto do que papai

Noel e mamãe Noel

Métricas de Software 15/57

16

Medida

Medida é uma função de mapeamento

Métricas de Software 16/57

Super-homem

Papai Noel

Mamãe Noel

2.10m

1.65m

1.50m

Atributos do mundo

real (domínio)

Um símbolo em um

conjunto com

relações

matématicas

conhecidas

17

Medição

É a atribuição de uma medida (através de

um símbolo) a um atributo do mundo real

Propósito: manipular símbolos na faixa =>

determinar conclusões sobre os atributos do

domínio

Para ser precisa, a medição deve especificar

Domínio: Será medido a largura ou altura das

pessoas?

Faixa: A medida da altura foi feita em m ou cm?

Regras de mapeamento: Será permitido medir altura considerando pessoas calçadas?

Métricas de Software 17/57

18

Escala

Representa os símbolos na faixa de uma

medida mais as manipulações permitidas

Ex. de manipulações:

Mapeamento: transformar símbolos em um

conjunto em outros símbolos em outro conjunto.

{verdadeiro, falso} {1, 0}

Métricas de Software 18/57

19

Tipos de Escala

Métricas de Software 19/57

Kelvin, tamanho, largura Diferença entre qualquer par

consecutivo de valores é

preservada. Possui 0 absoluto.

Ratio

(razão)

Celsius e Fahrenheit Diferença entre qualquer par

consecutivo de valores é

preservada

Intervalar

{simples, médio,

complexo}

Símbolos ordenados Ordinal

{verdadeiro, falso} Símbolos não ordenados Nominal

Exemplos Características Nome

20

Os Quatros papéis de Medição

Segundo Humphrey, são quatro os principais papéis de

Medições de Software:

Métricas de Software 20/57

Processos, Produtos e Serviços de Software

Entender

Avaliar Prever

Controlar

21

Os Quatros papéis de Medição

Entender

Métricas ajudam a entender o comportamento e

funcionamento de processos, produtos e serviços de

software

Avaliar

Métricas podem ser utilizadas para tomar decisões e

determinar o estabelecimento de padrões, metas e

critérios de aceitação

Controlar

Métricas podem ser utilizadas para controlar processos,

produtos e serviços de software

Prever

Métricas podem ser utilizadas para prever valores de

atributos

Métricas de Software 21/57

22

O Paradigma Goal Question Metrics (GQM)

Usado para definir o conjunto de métricas a

ser coletado

Proposto por:

Basili and Rombach’s, Goal-Question-Metrics

Paradigm, IEEE Transactions on Software

Engineering, 1988.

Baseia-se no fato de que deve existir uma

necessidade clara associada a cada

métrica

Métricas de Software 22/57

23

O Paradigma Goal Question Metrics (GQM)

Inicia-se com a identificação dos interessados na

medição.

Com base nos interessados, estabelecem-se os principais objetivos da medição para a organização,

o projeto ou uma tarefa específica. Ex: reduzir

defeitos, aumentar produtividade, etc.

A partir dos objetivos, geram-se perguntas cujas respostas dirão se os objetivos foram ou não

alcançados (ex: Qual a taxa de defeito atual? Qual a

taxa de defeito após a implantação do novo

processo?)

A partir das perguntas, definem-se métricas: que dados serão necessários? Quais os formatos? Como

coletar (fórmula e processo)? Onde armazenar e como utilizar?

Métricas de Software 23/57

24

O Paradigma Goal Question Metrics (GQM)

Métricas de Software 24/57

Goal 1 Goal 2

Questão 1 Questão 2 Questão 3 Questão 4

Métrica 1 Métrica 2 Métrica 3 Métrica 4 Métrica 5

25

Exemplo do uso do GQM

Objetivo: Assegurar que todos os defeitos são corrigidos antes do software ser liberado para uso.

Perguntas: Quantos defeitos temos atualmente?

Qual o status de cada defeito?

Qual a cobertura dos testes?

Métricas: Número de defeitos

Número de defeitos por status

Número de casos de testes planejados x executados

Número de requisitos testados

Métricas de Software 25/57

26

Selecionando Objetivos

Devem estar associados a um período de tempo Aumentar a produtividade em 20% no prazo de 12

meses

Facilita o acompanhamento e a tomada de ações para viabilizar objetivo pois existe um prazo!!!

Estudos indicam que objetivos muito complexos e de longo prazo podem causar impacto na motivação Objetivos menores, a curto prazo, permitem que as

pessoas visualizem o progresso e alcancem sucessos

Com o tempo e com a maturidade da organização, os objetivos devem se tornar mais complexos e mais desafiadores

Métricas de Software 26/57

27

Selecionando Métricas

Seja realista e prático

Considere o processo e o ambiente de desenvolvimento atual Não selecione métricas em que os dados sejam difíceis

de serem coletados na sua realidade

Comece com o que for possível

A equipe não deve ser muito impactada

Utilize a abordagem incremental

Com o tempo, com os benefícios, mais dados estarão disponíveis...

Métricas de Software 27/57

28

Selecionando Métricas

Objetivo: Aumentar satisfação do cliente Que atributos dos nossos produtos e serviços são mais

importantes para os nossos clientes?

Métricas de Software 28/57

Aspectos Relevantes de Produto e Serviço para Clientes

0

5

10

15

20

Qualidade Custo Prazo Visibilidade do

Progresso

Flexbilidade p/

mudanças

Aspectos Relevantes Para os Clientes

Clien

tes q

ue

Co

nsid

era

m o

Asp

ecto

# Clientes

29

O processo de medição

É um processo cíclico que envolve:

Planejar

Medir

Analisar os dados

Tomar decisões baseadas na análise

Implementar as decisões

Voltar a planejar e medir

Métricas de Software 29/57

30

Princípios de um Processo de Medição

Um processo de medição deve:

Fornecer uma base para melhoria contínua do

processo

Quantificar a qualidade e produtividade

Estar integrado com o ciclo de vida de desenvolvimento

Medir o impacto de vários métodos, ferramentas, e

técnicas de melhorias

Métricas de Software 30/57

31

Princípios de um Processo de Medição

Medições devem ser usadas para medir

processos, não pessoas

O processo de medição deve ter objetivos

claros e bem-definidos

O processo de medição deve ser fortemente

acoplado com o processo de gerência da

qualidade e integrado dentro de planos e

orçamentos

Métricas de Software 31/57

32

Princípios de um Processo de Medição

O processo de coleta de dados deve ser

simples, e ferramentas automáticas para

extração de dados devem ser usadas

O processo de medição é contínuo e sujeito

a melhoria

Métricas de Software 32/57

33

Características de um programa efetivo de medição

Escolha um conjunto adequado de métricas

Relacione as métricas ao processo de tomada de decisão (suportado pela alta administração)

Avalie processos e não pessoas (explique os objetivos da medição)

Não use as métricas para punir

Envolva várias pessoas na seleção e formulação das métricas

Estabeleça alta prioridade (recursos, ferramentas, etc.)

Integre o programa ao desenvolvimento de software

Alinhe aos objetivos de negócio

Padronize e documente

Compartilhe as métricas obtidas

Institucionalize como parte da cultura da organização

Integre com o programa de melhorias (ilustre o progresso e as melhorias obtidos a partir do programa)

Ofereça planos de ação

Métricas de Software 33/57

34

Plano de Métricas

Para cada objetivo técnico o plano contém

informação sobre:

POR QUE as métricas satisfazem o objetivo

QUE métricas serão coletadas, como elas serão

definidas, e como serão analisadas

QUEM fará a coleta, quem fará a análise, e quem

verá os resultados

COMO será feito: que ferramentas, técnicas e

práticas serão usadas para apoiar a coleta e

análise das métricas

QUANDO no processo e com que frequência as

métricas serão coletadas e analisadas

ONDE os dados serão armazenados

Métricas de Software 34/57

35

Especificando as Medições – Definições

Operacionais Definir e documentar para cada métrica :

Objetivos

Público alvo da métrica

Quem precisa da informação?

Quem irá usar as informações fornecidas pela métrica?

Uma métrica útil sempre tem um cliente

Procedimento de coleta e armazenamento

Quando o dado deve ser coletado? Periodicamente ou por eventos?

Quem é o responsável pela coleta e armazenamento?

Como o dado deve ser coletado? A partir de que ferramentas e produtos de trabalho do projeto / organização?

Onde ele será armazenado? Quando o dado deve ser armazenado?

Avaliar métricas que podem acarretar em muito esforço e pouco valor

Buscar automatizar a coleta dos dados sempre que possível

Ferramentas para controle de tempo, bugtracking, helpdesk, controle de versão, gestão de requisitos

Métricas de Software 35/57

36

Especificando as Medições – Definições

Operacionais Procedimentos de Análise

Necessários para

Entendimento da métrica

Avaliação (critério para tomada de decisão)

A análise dos dados deve endereçar os objetivos das medições

Seleção dos métodos e ferramentas de análise:

Como a métrica será visualmente apresentada?

Gráficos de barras, linhas, colunas, pizza, histogramas, diagramas de scatter, tabelas...

Ferramentas de Ishikawa

A equipe de desenvolvimento deve ser envolvida sempre que necessário

Para métricas de controle:

Estabelecimento de limites de controle

Estabelecimento de thresholds (limiar)

Padrões ou requisitos de mercado de performance

Média de mercado para custo da baixa qualidade = 4%

Temos que correr atrás dessa meta!!!

Métricas de Software 36/57

37

Após todo o planejamento...

Métricas de Software 37/57

Executar as atividades com base no planejamento realizado

Utilizar o plano de medição como base!!

Tomar ações com base nos resultados

Acompanhar os itens de ação

Comunicar os resultados ao público alvo de cada métrica

Ajustar o processo com melhorias a partir dos resultados de sua execução:

Inicialmente vai ser difícil definir todos esses procedimentos da melhor forma

Eles devem ser melhorados a medida em que o processo é executado

Novos objetivos e métricas surgem...

Melhores forma de coleta são identificadas

As orientações para realização da análise vão sendo refinadas a medida

que conhecemos melhor os dados

38

Após todo o planejamento... (2)

Armazenar os resultados

Tanto os dados, como os resultados, as ações

tomadas, tudo que for relevante

Toda informação que contextualize a métrica ou

que forneça alguma informação adicional

Métricas de Software 38/57

Dados históricos não são apenas números

39

Cuidado com...

Elaborar um política de controle de acesso

Apenas pessoas autorizadas devem ter acesso a

certos tipos de dados

Evitar o uso indevido dos dados

Avaliação de pessoas

Comparação entre projetos, grupos ou áreas da

empresa de forma indevida

Publicação de informações que foram fornecidas

de forma confidencial

Métricas de Software 39/57

Atenção: O uso indevido dos dados impacta fortemente e negativamente um programa de medições

40

Estimativas de Software

Métricas de Software 40/57

41

Por que é tão difícil estimar?

É difícil conhecer se é possível desenvolver o

produto desejado pelo

cliente antes de

conhecer os detalhes do projeto.

Métricas de Software 41/57

42

Por que é tão difícil estimar?

Desenvolvimento é um processo gradual de

refinamento

Incerteza da natureza do produto contribui para a

incerteza da estimativa

Requisitos e escopo mudam

Defeitos são encontrados e demandam retrabalho

Produtividade varia

Métricas de Software 42/57

43

O Processo de Estimativas

1. Estimar o tamanho do produto

2. Estimar o esforço

3. Estimar o prazo

4. Fornecer estimativas dentro de uma faixa

permitida e refinar essa faixa à medida que

o projeto progride

Métricas de Software 43/57

44

Tipos de Estimativas

Tamanho

Quantidade de software a ser produzida

Ex. no. linhas de código, no. pontos de função, n.o

de requisitos, pontos de casos de uso

Esforço

Derivado da estimativa de tamanho

Ex. dividindo a estimativa de tamanho por

produtividade produz-se o esforço

Métricas de Software 44/57

45

Tipos de Estimativas

Prazo

Geralmente são dirigidos a datas fornecidas pelo

Cliente

Qualidade

Medidas de resultados

Ex. defeitos por fase, esforço de mudanças

Métricas de Software 45/57

46

Evolução Histórica & Tendências

Métricas de Software 46/57

47

A Década de 70: Medição do Código Fonte

Caracterizada por

Métricas para código fonte propostas por Halstead

(ex: número de operadores distintos, número de

operandos distintos, etc.)

Métricas de Complexidade Ciclomática de McCabe

Medida do número de caminhos linearmente

independentes num módulo

Influenciada por:

Aceitação crescente da programação estruturada

Primeiras noções de complexidade cognitiva

Métricas de Software 47/57

48

A Década de 80: Medição no início do ciclo de vida

Estimativas de medição: esforço e custo

Medidas na etapa de projeto

Medidas na etapa de especificação

Métricas de Software 48/57

49

A Década de 90: Um perspectiva mais ampla

Surgimento de relatórios sobre programas de

métricas aplicados em empresas

Benchmarking

Impacto do modelo CMM

Surgimento de ferramentas para medição

Surgimento de uma teoria de medição como

um framework unificado

Surgimento de padrões internacionais de

medição de software (ex: Análise de pontos

de função)

Métricas de Software 49/57

50

Tendências: procura por métricas mais

específicas

Medidas que:

capturem a complexidade cognitiva

capturem a complexidade estrutural

capturem a complexidade funcional

sejam independentes de linguagem

possam ser extraídas nas etapas iniciais do ciclo de

vida

Métricas de Software 50/57

51

ISBSG

International Software Benchmarking

Standards Group

Organização sem fins lucrativos

Mantém um banco de dados de métricas de

projetos de software para auxiliar na melhoria

gerência de recursos de TI

Métricas de Software 51/57

52

Métricas de Software: Resumo

As atividades de medição devem ser

guiadas por objetivos

Plano de Métricas detalham como criar

programas de medição para atender a

objetivos técnicos específicos

Tendências recentes: evolução de métricas

ou modelos específicos para amplos

programas organizacionais de métricas

Métricas de Software 52/57

53

Principais Barreiras

Métricas de Software 53/57

Falta de comprometimento da alta gerência

Medir custa caro

Os maiores benefícios vêm a longo prazo

Má utilização das métricas

Grande mudança cultural necessária

Dificuldade de estabelecer medições apropriadas e úteis

Interpretações dos dados realizadas de forma incorreta

Obter o comprometimento de todos os envolvidos e impactados

Estabelecer um programa de medições é fácil, o difícil é manter!!

54

Mas podemos contornar ...

Métricas de Software 54/57

Foco desde os estágios iniciais da melhoria de processo

Medição faz parte do TODO

Começar Pequeno

Selecionar um conjunto coerente

É importante definir cada detalhe da métrica

Descartar o que não estiver sendo útil

Fornecer as informações corretas, para as pessoas certas

“Agregar valor”, ao invés de gerar apenas dados

55

Mas podemos contornar ...

Métricas de Software 55/57

Incentivar a equipe de desenvolvimento a fazer uso das métricas

Envolvimento de todos os impactados

Estabelecer as expectativas

Educação e Treinamento

Ganhar Confiança

Adotar uma Abordagem Evolucionária

Compreender que a Adoção leva Tempo

56

Referências

Fenton NE and Pfleeger SL, ‘Software Metrics:

A Rigorous & Practical Approach’ (2nd Ed.),

PWS, 1998.

www.csr.city.ac.uk/people/norman.fenton

www.softwaremetrics.com

IFPUG International Function Point Users

Group: www.ifpug.org

Total Metrics: www.totalmetrics.com

Métricas de Software 56/57

57

Referências

Chou, Tim. The Hidden Cost of Software. Maio 29, 2003. Url: http://itmanagement.earthweb.com/entdev/print.php/2214031.

Negulescu, Radu. Software Engineering Practice – Software Metrics II. McGill University, 2002.

Métricas de Software. Url: http://www.internext.com.br/mssa/medidas.html

Haufe, Maria Isabel. Produtividade no Desenvolvimento de Software. Url: http://www.inf.ufgrs.br/pos/SemanaAcademica/Semana99/mariaisabel/mariaisabel.html

Métricas e Estimativas de Software – O início de um rally de regularidade. Url: http://www.apinfo.com/artigo44.htm

Pressman, Roger. S. Engenharia de Software. Makron Books, 1995.

Métricas de Software 57/57