SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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 Negocios
Grupo Treinar
 
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 500
chelzinha06
 
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
Petgeologia
 
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
 
photos
photosphotos
photos
deme85
 
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 vida
giaaesaof
 
Pasos para la correspondencia
Pasos para la correspondenciaPasos para la correspondencia
Pasos para la correspondencia
lomassonfrancisco
 

Andere mochten auch (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
 

Ähnlich wie Defesa Mestrado

Eng.Software-Métricas
Eng.Software-MétricasEng.Software-Métricas
Eng.Software-Métricas
elliando dias
 
Introdução a Testes de Software
Introdução a Testes de SoftwareIntrodução a Testes de Software
Introdução a Testes de Software
Igor Takenami
 
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
Alini Rebonatto
 
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
abacrazy
 

Ähnlich wie 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
 

Kürzlich hochgeladen

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
azulassessoria9
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
rosenilrucks
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
LusGlissonGud
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
LeloIurk1
 

Kürzlich hochgeladen (20)

PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 

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