SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
UNIRIO
Universidade Federal do Estado do Rio de Janeiro




       CodeMI – Source Code as XMI
       Uma Representação Estrutural de Código-fonte para Coleta de Métricas




                                                      João Paulo Oliveira dos Santos
                                                           Márcio de Oliveira Barros




                           joao.santos@uniriotec.br
Agenda


 •   Contexto
 •   Motivação
 •   Problema
 •   Solução Proposta
 •   Atividades Realizadas
 •   Limitações e Contribuições
 •   Conclusões
 •   Trabalhos Futuros


                  joao.santos@uniriotec.br
Contexto


 • Evolução de Software
    – Pesquisas nesta área estudam o comportamento
      de projetos de software ao longo do tempo
    – Em geral, estes estudo se baseiam em
      repositórios de sistemas de controle de versão




                  joao.santos@uniriotec.br
Contexto


 • Estudos em evolução de software
    – Análise de repositórios de controle de versão de
      softwares
    – Coleta de métricas a partir do código-fonte ou de
      outros artefatos desenvolvidos
    – Formação de séries temporais com dados
      colhidos através das métricas
    – Análise (estatística) das séries históricas




                  joao.santos@uniriotec.br
Contexto


 • Concentração dos estudos em repositórios
   de software livre
    – Ex: SourceForge, GNU, Apache, Eclipse, ...


 • Problemas:
    – Projetos extintos e revisões anteriores perdidas
    – Software comercial/industrial é desenvolvido de
      forma diferente do software livre
    – Formulação de teorias baseadas neste tipo de
      repositório


                   joao.santos@uniriotec.br
Motivação


 • Poucos estudos são realizados sobre software
   desenvolvido segundo um modelo industrial
   – Empresas desenvolvedoras de software restringem
     o acesso ao código-fonte de seus produtos


 • Consequências
   – Falta de métricas colhidas de softwares industriais
   – Métricas colhidas de forma oportunista (muitas
     vezes sem associação com uma pesquisa)
   – Falta de teorias evolutivas sobre estes softwares


                  joao.santos@uniriotec.br
Problema


      Como realizar estudos de evolução de
    software baseados em sistemas industriais
  sem ferir restrições de propriedade intelectual
   e sem definir, antes de planejar os objetivos
      da pesquisa, quais métricas devem ser
                    analisadas?




                 joao.santos@uniriotec.br
Solução Proposta


   Prover uma representação de código-fonte
  que evidencie as características estruturais do
   código sem deixar explícita a lógica que ele
      implementa (propriedade intelectual).



 • Representação de código em XML
   • Facilidade de manipulação
   • Diversidade de mecanismos de consulta –
     Xpath, Xquery, XSLT


                   joao.santos@uniriotec.br
Principais Representações


  Críterios                   JavaML       JavaML    XJava     JavaML
                               M&K           1.0                 2.0
  Elementos essenciais                                        
  Informações textuais                                        
  Verbosidade                    Alta       Média     Baixa     Alta
  Linhas em branco                                            
  Comentários                                                 
  Representa AST                                              
  Exposição do código                                         
  Granularidade                Classe       Classe   Sistema   Classe




                         joao.santos@uniriotec.br
Critérios Desejáveis


  • Verbosidade baixa
    – facilita a realização de consultas
    – viabiliza análise de grandes sistemas

  • Não exposição do código
    – impede a extração do código-fonte
    – restrições de propriedade




                   joao.santos@uniriotec.br
Representação Proposta


 • CodeMI
    – Baseado no formato XMI v2.1

 • Requisitos
    –   Baixa verbosidade
    –   Baixa exposição do código-fonte
    –   Granularidade em nível de pacote
    –   Independência de linguagem de programação
    –   Alinhamento ao paradigma OO



                   joao.santos@uniriotec.br
Formato XMI


 • Troca de modelos entre ferramentas
   – Arquitetura MOF (4 camadas)

      Nível              Descrição
        M3                    MOF
        M2          Metamodelo UML
                    (elemento: “Classe”)
        M1            Elemento UML
                     (classe: “Hóspede”)
        M0    Instâncias de elementos UML
                      (hospede: “João”)


                joao.santos@uniriotec.br
Exemplo XMI




                          Pacote: org.compiere.process
                            Classe: CompiereService




              joao.santos@uniriotec.br
CodeMI


 • Extensão XMI – elementos do código-fonte
   <xmi:extension>
        //elementos estruturais do código-fonte do método
   </xmi:extension>

 • Mapeamento dos elementos estruturais
   –   Condições: if, switch, …
   –   Repetições: loop, for, while, …
   –   Comandos
   –   Declarações

                     joao.santos@uniriotec.br
CodeMI (cont...)

 Marcadores           Atributos
 <if> </if>           conditions             • Conjunto reduzido de
 <else> </else>                                marcadores
 <switch> </switch>
                                             • 1 marcador por linha de
 <case> </case>                                código-fonte
 <break>
 <for> </for>         conditions
 <while> </while>     conditions
 <try> </try>
 <catch> </catch>
 <statement>                                            Baixa verbosidade
 <localvar>           type
 <return>


                             joao.santos@uniriotec.br
CodeMI – Esboço Intramétodo

         <xmi:extension>
          <statement />
          <localvar type="int"/>
          <statement />
          <localvar type="Enumeration"/>
          <while>
              <statement />
              <localvar type="Aluguel"/>
              <statement />
          </while>
          <return />
         </xmi:extension>



                joao.santos@uniriotec.br
Construindo a Representação


  • Criação do Parser Java
    –   Análise dos lexemas da linguagem Java
    –   Verificação da ordem dos lexemas
    –   Geração da CodeMI
    –   JRefactory & Gramática do Java 1.5



         Código-fonte                              Representação
                               Parser Java
            Java                                      CodeMI




                        joao.santos@uniriotec.br
Teste do Parser – Código-fonte




                                          Pacote: org.compiere.process
                                            Classe: CompiereService
                                               Método: terminate




               joao.santos@uniriotec.br
Engenharia Reversa & CodeMI


 • Engenharia Reversa
    – Obtenção de informações de projeto

 • CodeMI
    – Estendida do formato XMI
    – Importação por ferramenta CASE
    – Obtenção dos elementos do modelo UML

 • Resultados
    – Diagramas estruturais (classe, pacote)
       • Alto nível de Abstração
       • Baixa completeza (detalhamento)


                    joao.santos@uniriotec.br
Reengenharia & CodeMI


 • Reengenharia
   – Reconstrução do sistema
   – Utilizando documentação – Engenharia Reversa
   – Dificultada (baixa completeza)

 • CodeMI
   – Inviabilidade de extração do código-fonte (XSLT)




    Preservação dos detalhes do código-fonte da CodeMI.


                   joao.santos@uniriotec.br
Avaliação - Extração de Métricas


  • Coleta de métricas
    –   Suíte de métricas de Lorenz & Kidd (projeto)
    –   Suíte de métricas de Chidamber & Kemerer
    –   Complexidade ciclomática (McCabe – Myers)
    –   Tamanho (LOC)

  • Utilização de transformações XSLT




                    joao.santos@uniriotec.br
Avaliação – Exemplo XSLT


  • Complexidade Ciclomática - McCabe
    <xsl:for-each select="packagedElement/packagedElement">
            <xsl:for-each select="ownedOperation">
            <xsl:value-of select="(
                      count(xmi:extension//if)      +
                      count(xmi:extension//for)     +
                      count(xmi:extension//while) +
                      count(xmi:extension//case) +
                      count(xmi:extension))"/>
            </xsl:for-each>
    </xsl:for-each>



                         joao.santos@uniriotec.br
Avaliação - Estudo de Caso


  • Compiere
    –   Médio porte
    –   Gestão empresarial - ERP
    –   Gestão de relacionamento com cliente - CRM
    –   Open source
    –   Comércio, indústria e serviços

                        Extrair          Converter
           Obter
                       Versão do           Código-    Coletar
         Repositório
                        Código-          fonte para   Métricas
            CVS
                         fonte             CodeMI




                       joao.santos@uniriotec.br
Estudo de Caso - Conversão

 compiere.model.xmi           org.compiere.common.constants.xmi org.compiere.print.xmi
 org.apache.ecs.filter.xmi    org.compiere.common.xmi            org.compiere.process.xmi
 org.apache.ecs.storage.xmi   org.compiere.controller.xmi        org.compiere.report.core.xmi
 org.apache.ecs.xhtml.xmi     org.compiere.db.xmi                org.compiere.report.xmi
 org.apache.ecs.xmi           org.compiere.esb.xmi               org.compiere.server.xmi
 org.apache.ecs.xml.xmi       org.compiere.excel.xmi             org.compiere.session.xmi
 org.compiere.acct.xmi        org.compiere.framework.xmi         org.compiere.sla.xmi
 org.compiere.api.xmi         org.compiere.grid.ed.xmi           org.compiere.sqlj.xmi
 org.compiere.apps.form.xmi   org.compiere.grid.tree.xmi         org.compiere.startup.xmi
 org.compiere.apps.graph.xmi org.compiere.grid.xmi               org.compiere.swing.xmi
 org.compiere.apps.info.xmi   org.compiere.images.xmi            org.compiere.test.xmi
               ...                             ...                            ...


                                                                 66 pacotes CodeMI

                                joao.santos@uniriotec.br
Estudo de Caso – Coleta de Métricas


Lorenz & Kidd
Tamanho do Método (LOC)
Tamanho Médio do Método
Número de Métodos Públicos de Instância (PIM)
Número de Métodos de Instância numa Classe (NIM)          Complexidade Ciclomática
Média dos Métodos de Instância por Classe (ANIM)          McCabe
Número de Atributos de Instância numa Classe (NIA)        Myers
Média de Atributos de Instância por Classe (ANIA)
Número de Métodos de Classe numa Classe (NCM)
Média dos Métodos de Classe por Classe (ANCM)
Número de Atributos de Classe numa Classe (NCA)       Chidamber & Kemerer
Média dos Atributos de Classe por Classe (ANCA)       Métodos Ponderados por Classe (WMC)
Número de Parâmetros por Método (PPM)                 Número de Filhos (NOC)




                               joao.santos@uniriotec.br
Estudo de Caso - Resultado
                                           Pacote: org.compiere.grid
          Total de Classes Total de Metodos Total de Comandos ANIM ANIA ANCA ANCM C.C. Média C.C. Total
          13                160                  2652               12.08 17.46 0.23 0.23   4.16     665


Nome da Classe         LOC/NM PIM NIM NIA NCM NCA NA NM LOC WMC NOC CC Média CC Total CCM Média CCM Total

APanelTab              0          4    4    0     0     0   0   4   0    4    0   1         4      1:1         4:4

GridController         11.72      34   36   21    0     0   22 36 422 134     0   3.72      134    3.72:4.94   134:178

RecordAccessDialog     19.63      2    8    21    0     0   21 8    157 28    0   3.5       28     3.5:3.63    28:29

VCreateFrom            12.24      7    17   32    0     0   32 17 208 42      3   2.47      42     2.47:2.76   42:47

VCreateFromInvoice     18.27      5    11   4     0     0   4   11 201 48     0   4.36      48     4.36:5.73   48:63

VCreateFromShipment 18.08         5    11   3     1     0   3   12 217 45     0   3.75      45     3.75:5.25   45:63




                                                                                                                         classe
VCreateFromStatement 11.1         4    10   2     0     0   2   10 111 22     0   2.2       22     2.2:2.9     22:29

VPanel                 14         8    14   16    2     2   21 16 224 65      0   4.06      65     4.06:5.69   65:91

VPayment               63.82      4    11   94    0     0   94 11 702 151     0   13.73     151    13.73:22.45 151:247

VSortTab               19.38      9    13   25    0     1   30 13 252 59      0   4.54      59     4.54:5.92   59:77

VTabbedPane            8.67       9    9    5     0     0   5   9   78   31   0   3.44      31     3.44:4.11   31:37

VTable                 7.33       5    6    2     0     0   2   6   44   17   0   2.83      17     2.83:3.67   17:22

XLookup                5.14       7    7    2     0     0   2   7   36   19   0   2.71      19     2.71:3.71   19:26




                                            joao.santos@uniriotec.br
Ambiente de Suporte a Pesquisas


  • CodeMI – Coletas periódicas

  • Acompanhar evolução das métricas

  • Elaboração de séries temporais

  • Proposição de novas métricas

  • Evolução de softwares industriais

  • Interface com as empresas

                 joao.santos@uniriotec.br
Arquitetura do Ambiente




              joao.santos@uniriotec.br
Atividades do Ambiente




              joao.santos@uniriotec.br
Contribuições


  • Conjunto de marcadores - Métricas estruturais

  • CodeMI

  • Parser Java

  • XSLT – suíte de métricas

  • Estudo de Caso – Compiere

  • Proposta do ambiente de suporte à pesquisa

                  joao.santos@uniriotec.br
Limitações


  • Parser – Gramática Java 1.5

  • Engenharia Reversa parcial (baixa
    completeza)

  • XSLT - coletar métricas em nível de sistema
    – Ausência de operação de junção (join)




                  joao.santos@uniriotec.br
Conclusões


 • Representação Genérica

 • Granularidade em Nível de Pacote

 • Baixa Verbosidade

 • Baixa Exposição do Código-Fonte




               joao.santos@uniriotec.br
Trabalhos Futuros


  • Implementação do ambiente proposto
  • Analisar repositórios industriais de controle de
    versão
  • Construção do parser/plug-in para outras
    linguagens
  • Extrair métricas ao longo do tempo
  • Utilização da representação para construção de
    séries históricas das métricas
  • Realização de estimativas e simulações utilizando
    estas séries históricas


                    joao.santos@uniriotec.br

Más contenido relacionado

Destacado

Planejamento pet 2012 - final (1)
Planejamento pet   2012 - final (1)Planejamento pet   2012 - final (1)
Planejamento pet 2012 - final (1)Petgeologia
 
Programa semi-presencial de formacao fundamental em Analise de Negocios
Programa semi-presencial de formacao fundamental em Analise de NegociosPrograma semi-presencial de formacao fundamental em Analise de Negocios
Programa semi-presencial de formacao fundamental em Analise de NegociosGrupo Treinar
 
Os bastidores de um livro
Os bastidores de um livroOs bastidores de um livro
Os bastidores de um livroossobuco
 
Curso Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...
Curso  Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...Curso  Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...
Curso Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...Grupo Treinar
 
Adolescência 500
Adolescência 500Adolescência 500
Adolescência 500chelzinha06
 
Edital 1 processo seletivo - pet - 2013-2
Edital  1   processo seletivo - pet - 2013-2Edital  1   processo seletivo - pet - 2013-2
Edital 1 processo seletivo - pet - 2013-2Petgeologia
 
Como cuidar la pc para que dure mas(diapositivas)
Como cuidar la pc para que dure mas(diapositivas)Como cuidar la pc para que dure mas(diapositivas)
Como cuidar la pc para que dure mas(diapositivas)latuadadana
 
Artigo arlene clemesha_para_a_mouro_[final]
Artigo arlene clemesha_para_a_mouro_[final]Artigo arlene clemesha_para_a_mouro_[final]
Artigo arlene clemesha_para_a_mouro_[final]Arlene Clemesha
 
photos
photosphotos
photosdeme85
 
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...Grupo Treinar
 
Sexualidade ao longo da vida
Sexualidade ao longo da vidaSexualidade ao longo da vida
Sexualidade ao longo da vidagiaaesaof
 
Pasos para la correspondencia
Pasos para la correspondenciaPasos para la correspondencia
Pasos para la correspondencialomassonfrancisco
 

Destacado (20)

CV
CVCV
CV
 
Planejamento pet 2012 - final (1)
Planejamento pet   2012 - final (1)Planejamento pet   2012 - final (1)
Planejamento pet 2012 - final (1)
 
Cultura Caiçara
Cultura Caiçara Cultura Caiçara
Cultura Caiçara
 
Meio ambiente 1
Meio ambiente 1Meio ambiente 1
Meio ambiente 1
 
Programa semi-presencial de formacao fundamental em Analise de Negocios
Programa semi-presencial de formacao fundamental em Analise de NegociosPrograma semi-presencial de formacao fundamental em Analise de Negocios
Programa semi-presencial de formacao fundamental em Analise de Negocios
 
Os bastidores de um livro
Os bastidores de um livroOs bastidores de um livro
Os bastidores de um livro
 
Curso Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...
Curso  Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...Curso  Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...
Curso Especializacao em Gerenciamento Operacional de Servicos de TI Baseado ...
 
Adolescência 500
Adolescência 500Adolescência 500
Adolescência 500
 
Boletim Especial Savoy
Boletim Especial SavoyBoletim Especial Savoy
Boletim Especial Savoy
 
Edital 1 processo seletivo - pet - 2013-2
Edital  1   processo seletivo - pet - 2013-2Edital  1   processo seletivo - pet - 2013-2
Edital 1 processo seletivo - pet - 2013-2
 
Como cuidar la pc para que dure mas(diapositivas)
Como cuidar la pc para que dure mas(diapositivas)Como cuidar la pc para que dure mas(diapositivas)
Como cuidar la pc para que dure mas(diapositivas)
 
Artigo arlene clemesha_para_a_mouro_[final]
Artigo arlene clemesha_para_a_mouro_[final]Artigo arlene clemesha_para_a_mouro_[final]
Artigo arlene clemesha_para_a_mouro_[final]
 
R.francesa
R.francesaR.francesa
R.francesa
 
Fotos his..
Fotos his..Fotos his..
Fotos his..
 
photos
photosphotos
photos
 
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...
Gestao Estrategica de Marketing, Vendas e Servicos para Empresas de TI C Basi...
 
Questionário[1]
Questionário[1]Questionário[1]
Questionário[1]
 
Sexualidade ao longo da vida
Sexualidade ao longo da vidaSexualidade ao longo da vida
Sexualidade ao longo da vida
 
Pasos para la correspondencia
Pasos para la correspondenciaPasos para la correspondencia
Pasos para la correspondencia
 
2. Espacio
2. Espacio2. Espacio
2. Espacio
 

Similar a Defesa Mestrado

Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsWildtech
 
Métricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareMétricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareLuiz Borba
 
Eng.Software-Métricas
Eng.Software-MétricasEng.Software-Métricas
Eng.Software-Métricaselliando dias
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGdjonatascostsa
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de SoftwareIgor Takenami
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Elton Minetto
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 

Similar a Defesa Mestrado (20)

Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Conhecendo o Ruby on Rails
Conhecendo o Ruby on RailsConhecendo o Ruby on Rails
Conhecendo o Ruby on Rails
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Métricas Em Fabricas De Software
Métricas Em Fabricas De SoftwareMétricas Em Fabricas De Software
Métricas Em Fabricas De Software
 
Eng.Software-Métricas
Eng.Software-MétricasEng.Software-Métricas
Eng.Software-Métricas
 
Arquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMGArquitetura de Computadores - Lecom - UFMG
Arquitetura de Computadores - Lecom - UFMG
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Introducao ao .Net
Introducao ao .NetIntroducao ao .Net
Introducao ao .Net
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
Conhecendo o Django
Conhecendo o DjangoConhecendo o Django
Conhecendo o Django
 

Último

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Centro Jacques Delors
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfFbioFerreira207918
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022LeandroSilva126216
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...SileideDaSilvaNascim
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa paraAndreaPassosMascaren
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...marcelafinkler
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPEli Gonçalves
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxgia0123
 

Último (20)

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdfMESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
MESTRES DA CULTURA DE ASSARÉ Prof. Francisco Leite.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 

Defesa Mestrado

  • 1. UNIRIO Universidade Federal do Estado do Rio de Janeiro CodeMI – Source Code as XMI Uma Representação Estrutural de Código-fonte para Coleta de Métricas João Paulo Oliveira dos Santos Márcio de Oliveira Barros joao.santos@uniriotec.br
  • 2. Agenda • Contexto • Motivação • Problema • Solução Proposta • Atividades Realizadas • Limitações e Contribuições • Conclusões • Trabalhos Futuros joao.santos@uniriotec.br
  • 3. Contexto • Evolução de Software – Pesquisas nesta área estudam o comportamento de projetos de software ao longo do tempo – Em geral, estes estudo se baseiam em repositórios de sistemas de controle de versão joao.santos@uniriotec.br
  • 4. Contexto • Estudos em evolução de software – Análise de repositórios de controle de versão de softwares – Coleta de métricas a partir do código-fonte ou de outros artefatos desenvolvidos – Formação de séries temporais com dados colhidos através das métricas – Análise (estatística) das séries históricas joao.santos@uniriotec.br
  • 5. Contexto • Concentração dos estudos em repositórios de software livre – Ex: SourceForge, GNU, Apache, Eclipse, ... • Problemas: – Projetos extintos e revisões anteriores perdidas – Software comercial/industrial é desenvolvido de forma diferente do software livre – Formulação de teorias baseadas neste tipo de repositório joao.santos@uniriotec.br
  • 6. Motivação • Poucos estudos são realizados sobre software desenvolvido segundo um modelo industrial – Empresas desenvolvedoras de software restringem o acesso ao código-fonte de seus produtos • Consequências – Falta de métricas colhidas de softwares industriais – Métricas colhidas de forma oportunista (muitas vezes sem associação com uma pesquisa) – Falta de teorias evolutivas sobre estes softwares joao.santos@uniriotec.br
  • 7. Problema Como realizar estudos de evolução de software baseados em sistemas industriais sem ferir restrições de propriedade intelectual e sem definir, antes de planejar os objetivos da pesquisa, quais métricas devem ser analisadas? joao.santos@uniriotec.br
  • 8. Solução Proposta Prover uma representação de código-fonte que evidencie as características estruturais do código sem deixar explícita a lógica que ele implementa (propriedade intelectual). • Representação de código em XML • Facilidade de manipulação • Diversidade de mecanismos de consulta – Xpath, Xquery, XSLT joao.santos@uniriotec.br
  • 9. Principais Representações Críterios JavaML JavaML XJava JavaML M&K 1.0 2.0 Elementos essenciais     Informações textuais     Verbosidade Alta Média Baixa Alta Linhas em branco     Comentários     Representa AST     Exposição do código     Granularidade Classe Classe Sistema Classe joao.santos@uniriotec.br
  • 10. Critérios Desejáveis • Verbosidade baixa – facilita a realização de consultas – viabiliza análise de grandes sistemas • Não exposição do código – impede a extração do código-fonte – restrições de propriedade joao.santos@uniriotec.br
  • 11. Representação Proposta • CodeMI – Baseado no formato XMI v2.1 • Requisitos – Baixa verbosidade – Baixa exposição do código-fonte – Granularidade em nível de pacote – Independência de linguagem de programação – Alinhamento ao paradigma OO joao.santos@uniriotec.br
  • 12. Formato XMI • Troca de modelos entre ferramentas – Arquitetura MOF (4 camadas) Nível Descrição M3 MOF M2 Metamodelo UML (elemento: “Classe”) M1 Elemento UML (classe: “Hóspede”) M0 Instâncias de elementos UML (hospede: “João”) joao.santos@uniriotec.br
  • 13. Exemplo XMI Pacote: org.compiere.process Classe: CompiereService joao.santos@uniriotec.br
  • 14. CodeMI • Extensão XMI – elementos do código-fonte <xmi:extension> //elementos estruturais do código-fonte do método </xmi:extension> • Mapeamento dos elementos estruturais – Condições: if, switch, … – Repetições: loop, for, while, … – Comandos – Declarações joao.santos@uniriotec.br
  • 15. CodeMI (cont...) Marcadores Atributos <if> </if> conditions • Conjunto reduzido de <else> </else> marcadores <switch> </switch> • 1 marcador por linha de <case> </case> código-fonte <break> <for> </for> conditions <while> </while> conditions <try> </try> <catch> </catch> <statement> Baixa verbosidade <localvar> type <return> joao.santos@uniriotec.br
  • 16. CodeMI – Esboço Intramétodo <xmi:extension> <statement /> <localvar type="int"/> <statement /> <localvar type="Enumeration"/> <while> <statement /> <localvar type="Aluguel"/> <statement /> </while> <return /> </xmi:extension> joao.santos@uniriotec.br
  • 17. Construindo a Representação • Criação do Parser Java – Análise dos lexemas da linguagem Java – Verificação da ordem dos lexemas – Geração da CodeMI – JRefactory & Gramática do Java 1.5 Código-fonte Representação Parser Java Java CodeMI joao.santos@uniriotec.br
  • 18. Teste do Parser – Código-fonte Pacote: org.compiere.process Classe: CompiereService Método: terminate joao.santos@uniriotec.br
  • 19. Engenharia Reversa & CodeMI • Engenharia Reversa – Obtenção de informações de projeto • CodeMI – Estendida do formato XMI – Importação por ferramenta CASE – Obtenção dos elementos do modelo UML • Resultados – Diagramas estruturais (classe, pacote) • Alto nível de Abstração • Baixa completeza (detalhamento) joao.santos@uniriotec.br
  • 20. Reengenharia & CodeMI • Reengenharia – Reconstrução do sistema – Utilizando documentação – Engenharia Reversa – Dificultada (baixa completeza) • CodeMI – Inviabilidade de extração do código-fonte (XSLT) Preservação dos detalhes do código-fonte da CodeMI. joao.santos@uniriotec.br
  • 21. Avaliação - Extração de Métricas • Coleta de métricas – Suíte de métricas de Lorenz & Kidd (projeto) – Suíte de métricas de Chidamber & Kemerer – Complexidade ciclomática (McCabe – Myers) – Tamanho (LOC) • Utilização de transformações XSLT joao.santos@uniriotec.br
  • 22. Avaliação – Exemplo XSLT • Complexidade Ciclomática - McCabe <xsl:for-each select="packagedElement/packagedElement"> <xsl:for-each select="ownedOperation"> <xsl:value-of select="( count(xmi:extension//if) + count(xmi:extension//for) + count(xmi:extension//while) + count(xmi:extension//case) + count(xmi:extension))"/> </xsl:for-each> </xsl:for-each> joao.santos@uniriotec.br
  • 23. Avaliação - Estudo de Caso • Compiere – Médio porte – Gestão empresarial - ERP – Gestão de relacionamento com cliente - CRM – Open source – Comércio, indústria e serviços Extrair Converter Obter Versão do Código- Coletar Repositório Código- fonte para Métricas CVS fonte CodeMI joao.santos@uniriotec.br
  • 24. Estudo de Caso - Conversão compiere.model.xmi org.compiere.common.constants.xmi org.compiere.print.xmi org.apache.ecs.filter.xmi org.compiere.common.xmi org.compiere.process.xmi org.apache.ecs.storage.xmi org.compiere.controller.xmi org.compiere.report.core.xmi org.apache.ecs.xhtml.xmi org.compiere.db.xmi org.compiere.report.xmi org.apache.ecs.xmi org.compiere.esb.xmi org.compiere.server.xmi org.apache.ecs.xml.xmi org.compiere.excel.xmi org.compiere.session.xmi org.compiere.acct.xmi org.compiere.framework.xmi org.compiere.sla.xmi org.compiere.api.xmi org.compiere.grid.ed.xmi org.compiere.sqlj.xmi org.compiere.apps.form.xmi org.compiere.grid.tree.xmi org.compiere.startup.xmi org.compiere.apps.graph.xmi org.compiere.grid.xmi org.compiere.swing.xmi org.compiere.apps.info.xmi org.compiere.images.xmi org.compiere.test.xmi ... ... ... 66 pacotes CodeMI joao.santos@uniriotec.br
  • 25. Estudo de Caso – Coleta de Métricas Lorenz & Kidd Tamanho do Método (LOC) Tamanho Médio do Método Número de Métodos Públicos de Instância (PIM) Número de Métodos de Instância numa Classe (NIM) Complexidade Ciclomática Média dos Métodos de Instância por Classe (ANIM) McCabe Número de Atributos de Instância numa Classe (NIA) Myers Média de Atributos de Instância por Classe (ANIA) Número de Métodos de Classe numa Classe (NCM) Média dos Métodos de Classe por Classe (ANCM) Número de Atributos de Classe numa Classe (NCA) Chidamber & Kemerer Média dos Atributos de Classe por Classe (ANCA) Métodos Ponderados por Classe (WMC) Número de Parâmetros por Método (PPM) Número de Filhos (NOC) joao.santos@uniriotec.br
  • 26. Estudo de Caso - Resultado Pacote: org.compiere.grid Total de Classes Total de Metodos Total de Comandos ANIM ANIA ANCA ANCM C.C. Média C.C. Total 13 160 2652 12.08 17.46 0.23 0.23 4.16 665 Nome da Classe LOC/NM PIM NIM NIA NCM NCA NA NM LOC WMC NOC CC Média CC Total CCM Média CCM Total APanelTab 0 4 4 0 0 0 0 4 0 4 0 1 4 1:1 4:4 GridController 11.72 34 36 21 0 0 22 36 422 134 0 3.72 134 3.72:4.94 134:178 RecordAccessDialog 19.63 2 8 21 0 0 21 8 157 28 0 3.5 28 3.5:3.63 28:29 VCreateFrom 12.24 7 17 32 0 0 32 17 208 42 3 2.47 42 2.47:2.76 42:47 VCreateFromInvoice 18.27 5 11 4 0 0 4 11 201 48 0 4.36 48 4.36:5.73 48:63 VCreateFromShipment 18.08 5 11 3 1 0 3 12 217 45 0 3.75 45 3.75:5.25 45:63 classe VCreateFromStatement 11.1 4 10 2 0 0 2 10 111 22 0 2.2 22 2.2:2.9 22:29 VPanel 14 8 14 16 2 2 21 16 224 65 0 4.06 65 4.06:5.69 65:91 VPayment 63.82 4 11 94 0 0 94 11 702 151 0 13.73 151 13.73:22.45 151:247 VSortTab 19.38 9 13 25 0 1 30 13 252 59 0 4.54 59 4.54:5.92 59:77 VTabbedPane 8.67 9 9 5 0 0 5 9 78 31 0 3.44 31 3.44:4.11 31:37 VTable 7.33 5 6 2 0 0 2 6 44 17 0 2.83 17 2.83:3.67 17:22 XLookup 5.14 7 7 2 0 0 2 7 36 19 0 2.71 19 2.71:3.71 19:26 joao.santos@uniriotec.br
  • 27. Ambiente de Suporte a Pesquisas • CodeMI – Coletas periódicas • Acompanhar evolução das métricas • Elaboração de séries temporais • Proposição de novas métricas • Evolução de softwares industriais • Interface com as empresas joao.santos@uniriotec.br
  • 28. Arquitetura do Ambiente joao.santos@uniriotec.br
  • 29. Atividades do Ambiente joao.santos@uniriotec.br
  • 30. Contribuições • Conjunto de marcadores - Métricas estruturais • CodeMI • Parser Java • XSLT – suíte de métricas • Estudo de Caso – Compiere • Proposta do ambiente de suporte à pesquisa joao.santos@uniriotec.br
  • 31. Limitações • Parser – Gramática Java 1.5 • Engenharia Reversa parcial (baixa completeza) • XSLT - coletar métricas em nível de sistema – Ausência de operação de junção (join) joao.santos@uniriotec.br
  • 32. Conclusões • Representação Genérica • Granularidade em Nível de Pacote • Baixa Verbosidade • Baixa Exposição do Código-Fonte joao.santos@uniriotec.br
  • 33. Trabalhos Futuros • Implementação do ambiente proposto • Analisar repositórios industriais de controle de versão • Construção do parser/plug-in para outras linguagens • Extrair métricas ao longo do tempo • Utilização da representação para construção de séries históricas das métricas • Realização de estimativas e simulações utilizando estas séries históricas joao.santos@uniriotec.br