• Nenhum resultado encontrado

MANGUE Métricas e Ferramentas para Avaliação Automática da Qualidade de Código-Fonte Paulo R. M. Meirelles IME-USP

N/A
N/A
Protected

Academic year: 2021

Share "MANGUE Métricas e Ferramentas para Avaliação Automática da Qualidade de Código-Fonte Paulo R. M. Meirelles IME-USP"

Copied!
74
0
0

Texto

(1)

Paulo R. M. Meirelles

IME-USP

01 de Junho de 2009 WTDQS-SBQS Ouro Preto-MG, Brasil

MANGUE

MANGUE

Métricas e Ferramentas para

Métricas e Ferramentas para

Avaliação Automática da Qualidade

Avaliação Automática da Qualidade

de Código-Fonte

de Código-Fonte

(2)

MANGUE

MANGUE

•Projeto de Doutorado

•Ciência da Computação no IME-USP

- Projeto do CCSL-USP

- Contexto do Projeto Qualipso

•Orientador: Prof. Dr. Fabio Kon

•Início: 03/2008

•Qualificação: 2009.2

•Previsão de Conclusão: 2011.2

(3)

MANGUE

MANGUE

•Motivação

• Crescente aumento do uso e desenvolvimento do FLOSS (Freely-Licensed Open Source Software)

(4)

MANGUE

MANGUE

•Motivação

•Comunidades FLOSS

(5)

MANGUE

MANGUE

•Motivação

• Ecossistema do FLOSS

- Quantidade de FLOSS disponíveis

- SourceForge em 2007/2008:

» 167.643 projetos

» 1.776.733 usuários e desenvolvedores cadastrados

- 1% de Sucesso?

» Se aumentarmos para 10%...

- UE: 80% do $ em serviços

(6)

MANGUE

MANGUE

•Motivação

•Como “convencer a usar”/escolher um determinadado software?

(7)

MANGUE

MANGUE

•Motivação

•Como “convencer a usar”/escolher um determinadado software?

(8)

MANGUE

MANGUE

•Problema

•Avaliar rapidamente programas e códigos de terceiros

- Semelhante quando surgiu o Outsourcing

•Falta de critérios objetivos para avaliar a confiabilidade do FLOSS

(9)

MANGUE

MANGUE

•Questões a serem respondidas

•Como é possível medir a qualidade de produtos de software para ajudar na escolha de um deles?

•Que características são relevantes para avaliação de um FLOSS?

•Quais são as métricas de qualidade de um FLOSS?

(10)

MANGUE

MANGUE

•Questões a serem respondidas

•Quais métricas são apropriadas para

avaliação de código-fonte de um FLOSS?

•Como comparar FLOSS similares?

•Como automatizar a avaliação da

qualidade e o que pode ser automático?

•Como verificar a eficiência das métricas e da automação da avaliação?

(11)

Agenda

Agenda

•Objetivo

•Mais problemas

•Metodologia

•Pesquisa de campo

•Projetos relacionados

(12)

MANGUE

MANGUE

•Objetivo

•Composição de métricas

- Combinação de métricas podem representar uma

característica significativa do software

(13)

MANGUE

MANGUE

•Objetivo

•Desenvolver uma ferramenta de avaliação automática da qualidade de código-fonte - métricas combinadas e configuradas por

especialistas

- análise automática de características como

flexibilidade, clareza, modularidade e manutenibilidade do software

(14)

MANGUE

MANGUE

•Objetivo

•Aumento da qualidade do FLOSS

•Facilitar a comparação entre FLOSS

•Aumento da adoção de FLOSS pela indústria de software

(15)

MANGUE

MANGUE

•Mais problemas

•Código-Fonte é o principal artefato do FLOSS

- Metodologias e métricas baseada na

documentação do processo do software não se aplicada

(16)

MANGUE

MANGUE

•Mais problemas

•Métricas existem há decadas...

- “In the past, most metrics have been defined by an individual and then tested and used only in a very limited environment (...). Currently, useful metrics and models cannot be pulled off the shelf and used indiscriminately, careful application of available metrics and models can yield to useful results if they are tuned to a particular

(17)

MANGUE

MANGUE

•Mais problemas

(18)

MANGUE

MANGUE

•Metodologia

•Análise estatística

- Correlação significativa de métricas X

características com a qualidade do FLOSS

•Experimentos controlados - Ferramentas existentes

(19)

MANGUE

MANGUE

•Metodologia

•Levantamento do estado-da-arte em métricas de software

•Estudo das métricas e metodologias usadas em outros projetos e ferramentas

•Coleta de opinião especialistas em FLOSS e métodos ágeis

•Pesquisa de campo com especialista em desenvolvimento de software

(20)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Questionário com 123 perguntas - 9 pessoais

- 28 profissionais

- 106 métricas e características listadas

- Dividido em 16 grupos

» Código-fonte(24), Testes(11), Comunidade(12), Manutenibilidade(11), Interoperabilidade(3),

Portabilidade(2), Usabilidade(5), Ferramentas(4), Independência(2), Confiança(6),

Funcionalidades(5), Satisfação(4),

Documentação(6), Suporte(4), Treinamento(4), Canais de distribuição e licenças(2)

(21)

MANGUE

MANGUE

•Pesquisa com Especialistas

•38 entrevistados

- ...de 80 convidados por e-mail

- 8 gerentes

- 13 lideres de projetos FLOSS

- 22 com mais de 10 anos de experiência

- 16 com menos de 10 anos de experiência

(22)

Pesquisa

Pesquisa

Download do código-fonte e binários

(23)

Pesquisa

Pesquisa

Uso de padrões da indústria e protocolos

(24)

Pesquisa

Pesquisa

Módulo para configurações

(25)

Pesquisa

(26)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Módulo para configurações

(não espalhados pelo código)

(27)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

(28)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Existência de

comentários no código (cobertura e distribuição

(29)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Uso de bons nomes para classes, métodos, variáveis

(30)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Padrões de nomenclatura

usados uniformemente

(31)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Cobertura dos testes

(32)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Sem duplicação de Código

(33)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Nível de coesão entre módulos/

classes do sistema

(34)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Nível de acoplamento

(35)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Estruturas de dados utilizadas

(36)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Estilo uniforme de

(37)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de testes por método ou

(38)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de testes por linha

(39)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de linhas em cada

(40)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de métodos em

(41)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de linhas de testes

(42)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de linhas em cada

(43)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de atributos em

(44)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de colunas por linha não muito grande

(45)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Complexidade Ciclomática

(46)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de

variáveis locais em cada método

(47)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de métodos ou

(48)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Código-Fonte

Número de classes (ou arquivos ou

(49)

MANGUE

MANGUE

•Pesquisa com Especialistas

(50)

MANGUE

MANGUE

•Aquele problema

(51)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Existência de testes automatizados

(52)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Existência de testes de desempenho (benchmarks)

(53)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Estudo sobre o consumo de recursos

(54)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Relatos dos experimentos de

(55)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Testabilidade do código (facilidade de

(56)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Uso de um

(57)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Tipos de teste disponíveis

(58)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Estudo sistemático sobre o tempo de

(59)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Publicação dos resultados dos testes

(60)

MANGUE

MANGUE

•Pesquisa com Especialistas

•Análise estatística: Testes

Existência de um subgrupo (comunidade

ou pessoa)

(61)

MANGUE

MANGUE

•Pesquisa com Especialistas

(62)

MANGUE

MANGUE

•Outros projetos

- FlossMetrics - Ohloh - Qualoss - QSOS - SQO-OSS - Fossology - ETICS •Mais focados em metodologias - Avaliações subjetivas

(63)

MANGUE

MANGUE

•Ferramenta: Crab (caranguejo)

•Módulo de Configuração e Interpretação de Métricas de Software

- Independente para ferramentas de métricas Java

- JaBUTi, Metrics, CheckStyle...

- Carrega métricas de uma ferramenta

- Define intervalos e categoria de cada métrica

- Definição de nota e classificação de cada intervalo

- Resultado geral do programa analisado

- Nota final da avaliação

(64)

CRAB

(65)

CRAB

(66)

CRAB

(67)

CRAB

(68)

CRAB

(69)

CRAB

(70)

MANGUE

MANGUE

•Resultados Parciais

•Monografia

- Relatório técnico do IME-USP

•Pesquisa com especialistas - Análise estatística

- Delimitação do escopo do projeto

•Versão 0.1 da Ferramenta Crab - Acoplada à JaBUTi

(71)

MANGUE

MANGUE

•Links

•http://ccsl.ime.usp.br/mangue •svn://ccsl.ime.usp.br/jabutimetrics - /trunk/JabutiMetrics - Sob GPL - Posteriormente em FreeBSD

(72)

Discussão

Discussão

(73)

Agradecimentos

Agradecimentos

IME-USP

http://www.ime.usp.br

CCSL-USP

http://ccsl.ime.usp.br

Qualipso

http://www.qualipso.org

http://qualipso.icmc.usp.br

CNPQ

(74)

Contato

Contato

Paulo Meirelles

paulormm@ime.usp.br

Centro de Competência em Software

Livre da USP

Referências

Documentos relacionados

Para instauração do competente Procedimento Disciplinar para verificação de quebra de decoro parlamentar em desfavor do senador Aécio Neves da Cunha (PSDB-MG),

379 também, e o pessoal das artes cênicas eles são muito criativos, e na Educação 380 Física eu fazia esse trabalho também, na [disciplina] Ginástica Escolar, de 381

Até que seja instituído o Conselho Municipal de Acompanhamento e Controle Social do Fundo de Manutenção e Desenvolvimento da Educação Básica e de Valorização dos Profissionais

Mezuro[4] - plataforma para monitoramento de código-fonte Kalibro[5] - software que realiza coleta e análise de métricas de código-fonte.. Com o Mezuro prestes a entrar em produção,

O projeto do aplicativo desenvolvido durante o início deste trabalho para esse estudo de caso específico também deve ser submetido a análise de aproximação ao código do sistema e

Este trabalho teve como objetivo principal o monitoramento de métricas estáticas de código fonte, essencialmente métricas OO, e fazer um estudo da evolução de seus valores

Os achados observa- dos nos sincrânios foram: apinhamento dentário (Fig.3), ausência dentária antes da morte (Fig.4), cálculo dentário, dentina terciá- ria, desgaste

Almeida João Machini Orientador: Fabio Kon Coorientador: Paulo Meirelles...