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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
www.dcc.ufmg.br/~camilo www.camiloribeiro.com Perguntas??? Muito Obrigado!!! Engenharia de Software – DCC/UFMG – Brasil

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

  • 1.
    Camilo Falcão RibeiroFigueiredo [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 simplificadada 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

Notas do Editor

  • #2 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".
  • #3 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
  • #4 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
  • #5 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
  • #6 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
  • #7 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
  • #8 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
  • #9 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
  • #10 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
  • #11 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
  • #12 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
  • #13 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
  • #14 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
  • #15 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
  • #16 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
  • #17 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
  • #18 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
  • #19 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
  • #20 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
  • #21 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
  • #22 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
  • #23 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
  • #24 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
  • #25 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
  • #26 I would like to thank you all... Thanks a lot.