Extração de Features Usando Compilação Condicional

  • 1,190 views
Uploaded on

Monografia apresentada por Camilo Ribeiro como requisito parcial para a obtenção do título de Especialista em Engenharia de Software pela Universidade Federal de Minas Gerais

Monografia apresentada por Camilo Ribeiro como requisito parcial para a obtenção do título de Especialista em Engenharia de Software pela Universidade Federal de Minas Gerais

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,190
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Good afternoon... My name is Ricardo Terra and I'm from PUC Minas at Brazil. I'm going to present a paper named "Towards a Dependency Constraint Language to Manage Software Architectures".
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • First, I would like to briefly introduce the subject of this study. However, we have a recurrent problem in forcing architecture compliance: - The document architecture of a system – if available at all – doesn't reflect the implemented architecture
  • I would like to thank you all... Thanks a lot.

Transcript

  • 1. Camilo Falcão Ribeiro Figueiredo [email_address] Prof. Dr. Marco Túlio de Oliveira Valente [email_address] EXTRAÇÃO DE FEATURES USANDO COMPILAÇÃO CONDICIONAL Engenharia de Software – DCC/UFMG – Brasil
  • 2. SUMÁRIO (1/1)
    • Objetivo
    • Revisão da Literatura
      • Linha de produtos de Software
      • Exemplos de Linhas de Produtos de Software
        • Expression Product Line
        • Graph Product Line
        • Mobile Media
      • Compilação condicional
      • Implementando LPS usando Compilação Condicional
    • ArgoUML-SPL
      • ArgoUML
      • ArgoUML-SPL
    • Extração das Features
    • Avaliação
    • Conclusão
    • Principais Referências
    Extração de Features Usando Compilação Condicional
  • 3. OBJETIVO (1/1)
    • Este trabalho tem como objetivo implementar duas novas features em uma linha de produtos de software já existente, chamada ArgoUML-SPL, desenvolvida pelo mestrando Marcus Vinícius de Ávila Couto do Instituto de Informática da Pontifícia Universidade Católica de Minas Gerais sob orientação dos Profs. Dr. Marco Túlio de Oliveira Valente e Dr. Eduardo Figueiredo do Departamento de Ciência da Computação da Universidade Federal de Minas Gerais.
    Extração de Features Usando Compilação Condicional
  • 4. Revisão da Literatura (1/6)
    • Segundo [CLEMENTS, NORTHROP 2002] Linha de Produtos de Software é uma abordagem para construção sistematica de produtos de software através de um comum e gerenciado conjunto de features que satisfaçam as necessidades de um segmento específico do mercado ou missão, e que são desenvolvidos através núcleo comum a toda a família de produtos.
    Extração de Features Usando Compilação Condicional Figura: Representação de uma Linha de produtos de software Fonte: Arquivo Pessoal
  • 5. Figura: Representação simplificada da Expression Product Line Fonte: GÜNTHERM, SUNKLE
    • EXPRESSION PRODUCT LINE
    Extração de Features Usando Compilação Condicional Revisão da Literatura (2/6)
  • 6. Revisão da Literatura (3/6)
    • GRAPH PRODUCT LINE
    Extração de Features Usando Compilação Condicional Figura: Exemplo de um simples modelo de features do Grapf Product Line Fonte: GÜNTHERM, SUNKLE
  • 7. Revisão da Literatura (4/6)
    • MOBILE MEDIA
    Extração de Features Usando Compilação Condicional Figura: Exemplo de um simples modelo de features Mobile Media Fonte: FIGUEIREDO, CACHO, SANT’ANNA, MONTEIRO, KULESZA, GARCIA, SOARES, FERRARI, KHAN, CASTOR FILHO, DANTAS 2008
  • 8. Revisão da Literatura (5/6)
    • COMPILAÇÃO CONDICIONAL
      • Compilação condicional é uma técnica onde, através de um conjunto instruções no código fonte, chamadas diretivas de pré-processamento, podemos incluir ou excluir blocos de código fonte de acordo com a necessidade [ANASTASOPOULOS, GACEK 2001].
    Extração de Features Usando Compilação Condicional Figura: Exemplo de código anotado para ser pré-processado Fonte: JAVAPP, 2010
  • 9. Revisão da Literatura (6/6)
    • IMPLEMENTANDO LINHAS DE PRODUTOS DE SOFTWARE USANDO COMPILAÇÃO CONDICIONAL (Métricas)
      • Número de Features (NOFC): Total de features diferentes espalhadas no programa;
      • Linhas de Código de Feature (LOF): Total de linhas de código que uma feature possui;
      • Grau de dispersão (SD): Total de marcações existentes para uma feature em diferentes arquivos, módulos ou classes;
      • Grau de entrelaçamento (TD): Total de marcações com mais de uma feature , usando condições lógicas AND e OR;
      • Granularidade (GRAN): Determina os níveis em que as marcações de uma feature está disposta no código fonte;
      • Tipo (TYPE): define o quando a feature possui de código redundante
        • [LIEBIG, APEL, LENGAUER, KÄSTNER, HULZE 2010]
    Extração de Features Usando Compilação Condicional
  • 10. ARGOUML-SPL (1/3)
    • ARGOUML
      • O ArgoUML é um projeto de código aberto para auxiliar no desenvolvimento de software através de diverssas ferramentas do UML ( Unified Modeling Language ) como diagrama de casos de uso, diagrama de atividades, diagrama de sequencia entre outros [TOLKE, KLINK, VAN DER WULP 2010].
    Extração de Features Usando Compilação Condicional Figura: Arquitetura do ArgoUML Fonte: ÁVILA COUTO, VALENTE, FIGUEIREDO, 2010
  • 11. ARGOUML-SPL (2/3)
    • Features
      • O ArgoUML-SLP [ÁVILA COUTO, VALENTE, FIGUEIREDO 2010] é um projeto com o objetivo de demonstrar a aplicação de linha de produtos de software através de compilação condicional no ArgoUML, um software maduro e estável com um grande número de linhas de código (Aproximadamente 75KLOC).
    Extração de Features Usando Compilação Condicional Figura: Features do ArgoUML-SPL Fonte: ÁVILA COUTO, VALENTE, FIGUEIREDO, 2010
  • 12. ARGOUML-SPL (3/3)
    • Avaliação
      • Métrcas de Tamanho:
        • Contagem do total de linhas de Código (LOC)
        • Contagem do total de pacotes (#pacotes)
        • Contagem do total de classe (#classes)
        • Contagem do total de linhas de código de cada feature (LOF)
      • Métricas de Transversalidade:
        • Contagem do número de ocorrências das constantes que definem cada features (SD)
        • Número de ocorrência de expressões do tipo AND e OR em expressões utilizadas para anotação do código fonte (Entelaçamento)
        • Conta o número de ocorrências de marcações cobertas por outras marcações do código anotado (aninhamento);
      • Métricas de Granularidade:
        • Packade
        • Class
        • ClassSignature
        • InterfaceMethod
        • Method
        • MethodBody
        • Statement.
    Extração de Features Usando Compilação Condicional
  • 13. EXTRAÇÃO DE FEATURES (1/4)
    • Novas Features removidas:
      • Diagrama de Sequência
      • Diagrama de Caso de Uso
    Extração de Features Usando Compilação Condicional Figura: Modelo de Features com evolução de novas features. Fonte: Arquivo pessoal
  • 14. EXTRAÇÃO DE FEATURES (2/4)
    • Exemplo de Aninhamento
    Extração de Features Usando Compilação Condicional Figura: Exemplo de aninhamento entre duas marcações de features diferentes Fonte: Arquivo pessoal
  • 15. EXTRAÇÃO DE FEATURES (3/4)
    • Exemplo de Entrelaçamento
    Extração de Features Usando Compilação Condicional Figura: Exemplo de transversalidade do tipo entrelaçamento entre as features Diagrama de Seqüência, Diagrama de Estados e Diagrama de Atividades. Fonte: Arquivo pessoal
  • 16. EXTRAÇÃO DE FEATURES (4/4)
    • Garantia de qualidade
      • Análise estática do código fonte antes do pre-processamento
      • Análise léxica do compilador após o pre-processamento
      • Testes exploratórios nos pontos críticos que envolvem as features do sistema com análise dos logs da feature ( Logging )
    Extração de Features Usando Compilação Condicional
  • 17. AVALIAÇÃO (1/5) Extração de Features Usando Compilação Condicional
    • Contagem do número de ocorrências das constantes que definem cada features representado pela medição de Grau de dispersão (SD) Total de marcações existentes para uma feature em diferentes arquivos, módulos ou classes.
    Tabela: Métricas de Espalhamento coletadas no ArgoUML-SPL com as novas features identificadas Fonte: Arquivo pessoal 74 Diagrama de Caso de Uso 84 Diagrama de Sequência 1427 Logging 111 Diagrama de Estados 112 Diagrama de Atividades 319 Suporte Cognitivo SD Feature
  • 18. AVALIAÇÃO (2/5) Extração de Features Usando Compilação Condicional
        • Tamanho das features .
    Tabela: Métricas de tamanho coletadas em produtos do ArgoUML-SPL com as duas novas features. Fonte: Arquivo pessoal 27.78% 16509 1650 76 59419 Todas 5.68% 4080 1926 92 71848 Novas features 1.63% 1221 2291 93 74707 Diagrama de Caso de Uso 3.76% 2749 2267 92 73179 Diagrama de Sequência 22,58% 13984 2034 78 61944 Features Antigas 2,07% 1539 2332 93 74389 Logging 2,67% 1974 2298 93 73954 Diagrama de Estados 1,98% 1475 2306 91 74453 Diagrama de Atividades 13,04% 8461 2104 82 67167 Suporte Cognitivo - - 2332 93 75928 Todas as Features LOF #Classes #Pacotes LOC Métricas Feature Removida
  • 19. AVALIAÇÃO (3/5) Extração de Features Usando Compilação Condicional Transversalidade entre as features . Tabela: Métricas de Transversalidade do ArgoUML-SPL com as duas novas features. Fonte: Arquivo pessoal 0 0 Diagrama de Caso de Uso + Diagrama de Sequência 0 0 Diagrama de Estados + Diagrama de Caso de Uso 0 2 Diagrama de Estados + Diagrama de Sequência 11 26 Diagrama de Atividades + Diagrama de Estados 3 3 Diagrama de Atividades + Diagrama de Sequência 0 0 Diagrama de Atividades + Diagrama de Casos de uso 30 0 Diagrama de Caso de Uso + Logging 35 0 Diagrama de Sequência + Logging 30 0 Diagrama de Estados + Logging 9 0 Diagrama de Atividades + Logging 171 0 Suporte Cognitivo + Logging Aninhamento Entrelaçamento Features envolvidas
  • 20. AVALIAÇÃO (4/5) Extração de Features Usando Compilação Condicional Granularidade das features . Tabela: Granularidade do código anotado para cada feature . Fonte: Arquivo pessoal 85,12% 1154 72 53 41 77 56 Statement 1,35% 14 0 0 0 4 5 MethodBody 2,52% 3 5 7 10 8 10 Method 0,18% 0 0 0 0 2 1 InterfaceMethod Use 0,12% 0 0 0 0 0 2 ClassSignature 10,02% 0 40 47 41 35 8 Class 0,70% 0 0 1 0 0 11 Package Implements % Logging Diag. De C. Uso Diag. De Sequ. Diag. De estado Diag. De Ativ. Suporte Cognitivo Features
  • 21. AVALIAÇÃO (5/5) Extração de Features Usando Compilação Condicional Localização das features. Tabela: Tipo de localização do código anotado para cada feature Fonte: Arquivo pessoal 387 1 3 3 6 9 NestedCommand 0 0 0 0 0 2 InsideStaticBlock 1 0 0 0 0 0 EntireStaticBlock 1 0 0 0 0 0 EndStaticBlock 99 0 0 1 0 0 BeforeReturn 13 0 0 0 4 5 EntireMethod 23 0 0 0 1 5 EndMethod 138 1 2 1 1 3 StartMethod Logging Diag. De C. Uso Diag. De Sequ. Diag. De estado Diag. De Ativ. Suporte Cognitivo Tipo de Localização Features
  • 22. CONCLUSÃO (1/1) Extração de Features Usando Compilação Condicional A adoção de compilação condicional para implementação de Linhas de Produtos de Software, apesar de possuir algumas desvantagens como dependência de tecnologias alternativas, aumento da complexidade do código fonte e difícil definição do escopo, demonstra-se como uma boa candidata para a implementação em sistemas legados desenvolvidos sem uma metodologia que suporte a criação de Linhas de Produtos de Software. Isso se deve a facilidade de implementação das marcações e da independência de padrões de desenvolvimento.
  • 23. PRINCIPAIS REFERÊNCIAS (1/2)
    • ÁVILA COUTO, Marcus Vinícius de, VALENTE, Marco Túlio; FIGUEIREDO, Eduardo .Extração de Linhas de Produtos de Software. Um Estudo de Caso Usando Diretivas de Pré-Processamento. SBCARS, 2010
    • CLEMENTS, Paul; NORTHROP, Linda, M. Software Product Lines: Pratices and Patterns . Addison-Wesley, 2002
    • LIEBIG, Jörg; APEL, Sven; LENGAUER, Christian; KÄSTNER, Christian; SCHULZE, Michael. An analysis of the variability in forty preprocessor-based software product lines. In Proceedings of the 32nd International Conference on Software Engineering (ICSE) , New York, NY, USA, May 2010.
    • CHAKMA, Liya; ZHANG,Hongyu. Evaluating Product Line Technologies: A Graph . RMIT University, 2004.
    • LOPEZ-HERREJON R. E.; BATORY, D. A standard problem for evaluating product-line methodologies. In Proceedings International Conference Generative and Component-based Software Engineering (GCSE '01), Erfurt, Germany, 2001.
    • FIGUEIREDO, Eduardo; CACHO, Nelio; SANT’ANNA, Claudio; MONTEIRO, Mario; KULESZA, Uira; GARCIA, Alessandro; SOARES Sergio; FERRARI, Fabiano; KHAN, Safoora; CASTOR FILHO, Fernando; DANTAS, Francisco. Evolving Software Product Lines with Aspects: An Empirical Study on Design Stability . In proceedings of the 30th International Conference on Software Engineering (ICSE). Leipzig, Germany, 10-18 May 2008 .
    Extração de Features Usando Compilação Condicional
  • 24. PRINCIPAIS REFERÊNCIAS (2/2)
    • GÜNTHERM, Sebastian; and SUNKLE, Sagar. Feature-Oriented Programming with Ruby .
    • MYERS, Glenford J.. The Art of Software Testing . John Wiley and Sons. ISBN 0-471-04328-1. 1979
    • LOPEZ-HERREJON R. E.; BATORY, D., COOK, W. Evaluating support for features in advanced modularization techniques . In Proceedings of the 19th European Conference on Object-Oriented Programming (ECOOP), Lecture Notes in Computer Science, Springer, Berlin, Heidelberg, 2005.
    • TOLKE, Linus; KLINK, Markus; VAN DER WULP, Michiel. Argouml cookbook, 2010.
    • ANASTASOPOULOS, Michalis; GACEK, Cristina. Implementing Product Line Variabilities . Symposium on Software Reusability. 2001
    • KÄSTNER, Christian; APEL, Sven; KUHLEMANN, Martin. Granularity in software product lines . In a 30th International Conference on Software Engineering (ICSE) 2008.
    • http://www.slashdev.ca/javapp/ Acessado em 20/07/2010
    Extração de Features Usando Compilação Condicional
  • 25. www.dcc.ufmg.br/~camilo www.camiloribeiro.com Perguntas??? Muito Obrigado!!! Engenharia de Software – DCC/UFMG – Brasil