Christian Kästner and Michael Schulze

Slides:



Advertisements
Apresentações semelhantes
Utilizando o R. Técnicas para Predição de Dados 2 17/8/2008 Introdução ao R R é um linguagem (ambiente) de programação para computação estatística e gráfica.
Advertisements

Programação em Java Prof. Maurício Braga
Introdução à Programação Engenharia da Computação
Experiments with Clustering as a Software Remodularization Method Nicolas Anquetil and Timothy C. Lethbridge University of Ottawa, Canada WCRE 1999:
Transmissão de pacotes
Amintas engenharia.
Aspect Oriented Software Development - AOSD 1 Elaborado por: Bruno Nunes nº 3202 Pedro Casqueiro nº 2163.
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Técnicas de orçamento de capital
Interação entre objetos
Dispositivos lógicos programáveis (DLP)
FOLHA DE CÁLCULO 1.
Múltiplos Os múltiplos de um número inteiro obtêm-se multiplicando esse número por 0, 1, 2, 3, 4, 5, 6, ... Exemplos: M5= {0, 5, 10, 15, 20,
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Excel Profa. Cristina M. Nunes.
João Carlos Porto Orientadora: Prof.ª Dr.ª Junia Coutinho Anacleto 26/03/2010 Projeto de interceo.
Modelos no Domínio do Tempo de Sistemas LTI Contínuos
Introdução à Programação
Análise de regressão linear simples: abordagem matricial
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Estatística Básica Utilizando o Excel
April 05 Prof. Ismael H. F. Santos - 1 Modulo II CheckStyle Professor Ismael H F Santos –
INTRODUÇÃO À PROGRAMAÇÃO
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Auditoria de Segurança da Informação
Arquitetura de Computadores
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Carlos Alberto de Freitas Pereira Júnior
Classes e objetos Arrays e Sobrecarga
Classes e objetos Modelagem
Estrutura de decisão e repetição em JAVA
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
MetaLib - Visão Geral 1º Encontro de Usuários ALEPH 30 Nov. e 1º Dez. de 2006 Caio Pellegatti.
Provas de Concursos Anteriores
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Impressão de etiquetas
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Momentos de Inércia Cap. 10
DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel de Queiroz Roberto.
PROGRAMAÇÃO I UNIDADE 1.
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
Resultantes de Sistemas de Forças Cap. 4
Fundamentos de Engenharia de SW
Cap 4 – Métricas do Processo e Projeto de Software
Algoritmos Culturais.
Funções Universidade Federal de Ouro Preto - UFOP
Salas de Matemática.
Programação Funcional
Entendendo as definições de classe
Análise Fatorial Factor analysis.
Modelagem Estatística
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Centro de Gravidade e Centróide Cap. 9
Arquitetura de computadores
Introdução e Busca Cega
Técnicas de Modelagem para Aplicações em Computação Gráfica
Projeto de Banco de Dados
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Regressão Pontos mais importantes: -objectivo -regressão linear
Resolução de sistemas de equações lineares
Campus de Caraguatatuba Aula 2: Somatório e Produtório
Diagramas de Venn e de Carroll Não se chamam propriamente ferramentas/instrumentos estatísticos mas ajudam a organizar de uma forma simples alguns tipos.
Rio Verde - Goiás - Brasil
Campos elétricos na matéria
Planilha Eletrônica - Excel
Transcrição da apresentação:

Christian Kästner and Michael Schulze An Analysis of the Variability in Forty Preprocessor-Based Software Product Lines Jörg Liebig, Sven Apel Christian Kästner and Michael Schulze ICSE 2010 Luciana Lourdes Silva

Introdução O pré-processador cpp é uma ferramenta para implementação de software variável. O uso do cpp causa vários problemas: Erros semânticos e sintáticos durante a geração dos produtos; Poluição de código devido aos #ifdefs espalhados e entrelaçados; Dificulta as tarefas de manutenção e evolução. É usado com bastante frequência na implementação de SPLs. Como o cpp é empregado para implementar variabilidade.

Introdução Como o tamanho do programa influencia na variabilidade de SPLs? O quanto são complexas as extensões aplicadas por features via mecanismos de variabilidade do cpp? Em qual nível de granularidade as extensões são aplicadas? Que tipo de extensões ocorrem?

Contribuições Introduz um conjunto métricas que permite medir: Variabilidade; Complexidade; Granularidade e; Tipos de extensão aplicados por diretivas do pré-processador. Apresentar dados coletados com a ferramenta cppstats. Analisar correlações entre o tamanho de um software e as questões de variabilidade. Discutir a viabilidade e os benefícios de usar técnicas de implementação alternativas de SPL.

SPL Pontos de extensão - Se uma implementação da feature estende um programa em um ou mais lugares. Code scattering – se uma feature estende múltiplos pontos. Code tangling – código de feature entrelaçado com o código base e com código de outras features. Extensão homogênea – adiciona o mesmo pedaço de código em diferentes pontos de extensão. Extensão heterogênea – adiciona diferentes pedaços de código em diferentes pontos de extensão.

Metodologia A análise feita cobre duas áreas: Compreensão de programas Refactoring Refere-se à aplicabilidade de técnicas alternativas de implementação de SPL

Compreensão de Programas Como tamanho de programas influencia na variabilidade? Geralmente, sistemas maiores possuem mais features Quantas constantes de feature ocorrem no código porque: Marcam parâmetros de configuração e; Definem o espaço de configuração de uma SPL. Quantidade de código de feature. Porque representa variabilidade no nível no qual o programador opera. Uma alta variabilidade aumenta as chances de: Erros sintáticos e semânticos; Poluição de código.

Compreensão de Programas Quanto são complexas as extensões feitas via mecanismos de variabilidade do cpp? Tratar a presença de código de feature espalhado e entrelaçado Se um número maior de features aumenta o SD e TD. Analisar o número de #ifdefs aninhados .

Refactoring Em que nível de granularidade as extensões são aplicadas? Até que ponto quais features causam extensões de granularidade fina. Um número grande de extensões de granularidade fina requer técnicas de modularização.

Refactoring Quais tipos de extensões ocorrem? Pontos fracos e fortes de técnicas alternativas de implementação. Extensões homogêneas podem ser implementadas usando AOL. Extensões heterogêneas podem ser especificadas com mecanismos mais simples. Mixins ou feature modules Estudos mostraram que a maioria das extensões em código AspectJ são heterogêneas. Verificar se também ocorre na implementação de SPL baseada em cpp.

Métricas LOC Compreensão Número de constantes de features (NOFC) Extração de constantes de features das expressões e soma Lines of feature code (LOF) Conta o número de linhas entre 2 #ifdefs e soma Scattering degree (SD) e Tangling degree (TD) Average nesting depth of #ifdefs (AND) Calcula a média e desvio padrão dos #ifdefs em um arquivo. A média e desvio para um projeto.

Crosscutting Metrics (Example) SD: Scattering Degree; TD: Tangling Degree

Métricas Refactoring Granularity (GRAN) Granularidade grossa. Ex: adição de novas funções Granularidade fina. Ex: declaração de variáveis, extensões de expressão. Seis níveis de granularidade: GL – Global level. Ex: adicionar uma função FL – Function or type level. Ex: declaração de variável dentro de uma função. BL – Block level. Ex: adicionar um bloco SL – Statement level. Ex: variar o tipo de uma variável local EL – Expression level. ML – Function signature level. Ex: adicionar um parâmetro a uma função. Objetivo: Auxiliar na escolha de técnicas alternativas.

Granularidade GL FL BL EL

Métricas Refactoring Type (TYPE) É o número de ocorrências de extensões particulares no código. HOM HET HEHO : compara linhas subsequentes que pertencem à mesma expressão de feature. Usa comparação de string.

Análise Análise em 40 sistemas open-source diferentes em C. Contêm várias features alternativas e opcionais.

Análise Comparação dos dados dos sistemas selecionados. Alguns ajustes no código foram feitos: Deletar linhas em branco, comentários e; Formatar o código uniformemente. src2srcml - Gerar uma representação XML do código para medir a granularidade de extensões feitas com cpp. cppstats – ferramenta para analisar software em relação a sua variabilidade.

Análise - src2srcml

Interpretação dos Dados Compreensão Como o tamanho do programa influencia na variabilidade? A variabilidade de um software aumenta com seu tamanho. (a) Sistemas maiores exibem mais parâmetros de configuração. A quantidade de código variável em cada projeto correlaciona com seu tamanho. Média de 23+17% (b)

Interpretação dos Dados LOF metric revela duas questões: A quantidade de código de feature excede 50% em sistemas de tamanho médio. Os 4 maiores sistemas são gcc, linux, opensolaris, freebsd. A porcentagem de código variável em sistemas maiores é menor comparado com a média. Porque a especificação de features configuráveis é mais complexa.

Interpretação dos Dados Compreensão O quanto são complexas as extensões via mecanismos de variabilidade do cpp? Não existe relacionamento entre o NOF e a complexidade em termos de constantes de features. A complexidade das expressões de feature é a mesma entre sistemas com NOF alto e baixo.

Interpretação dos Dados

Interpretação dos Dados

Interpretação dos Dados Média de 1 a 3

Interpretação dos Dados A média da métrica AND é aproximadamente 1. #ifdefs aninhados são usados moderadamente. Ex: o número não cresce com o NOFC Freebsd e o gcc possui um número máximo de 24. O resto permanece entre 2 e 9. Número alto prejudica na compreensão de programa e refatoração.

Interpretação dos dados Refactoring Em qual nível de granularidade as extensões são aplicadas? Extensões de granularidade fina não são usadas com frequência. Ex: declarações ou expressões A ocorrência no geral das extensões é na média de 1.8+1.8% Dois sistemas usam um pouco mais frequente: Lighttpd – 6% declarações Vim – 6% de expressões A maioria das extensões ocorrem no GL: 42+12%. Podem ser feitas por técnicas como aspectos ou feature modules. Em segundo, as métricas FL e BL : 33+9% e 19+7%. Os dados não mostram se uma técnica de implementação é aplicável

Interpretação dos dados Refactoring Quais tipos das extensões ocorrem? 89+9% mostram que são heterogêneas 5+5% são homogêneas E a combinação de ambas é de 4+2% Aspectos tem a habilidade de implementar extensões homogêneas. Assim, 5% das extensões teria bons resultados usando aspectos. 89% com mecanismos mais simples como mixins ou feature modules. O restante das extensões uma combinação das técnicas.

Ameaças Limitação de uma única linguagem Seleção dos sistemas Código fonte Detecção de feature Igualdade de expressão de feature Expressões de feature A&&B e B&&A. Extensões heterogêneas e homogêneas A ferramenta distingue por comparar strings Fragmento de código equivalente semanticamente pode diferir na sintaxe.

Conclusão 4 questões foram elaboradas em relação a variabilidade de softwares: Complexidade; Granularidade e; Tipos de extensões. Um conjunto de métricas para responder as questões. 40 sistemas foram analisados com mais de 30 milhões LOC. Média de 23% da base de código é variável. A complexidade das extensões é independente do tamanho do software. A maioria das extensões ocorrem em um nível alto de granularidade. A maioria das extensões são heterogêneas e OALs não são necessárias frequentemente.