programação funcional avançada program slicing patrick machado

13
Programação funcional avançada Program Slicing Program Slicing Patrick Machado

Upload: internet

Post on 17-Apr-2015

134 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Program SlicingPatrick Machado

Page 2: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Conteúdo

• O que é?• Dependências • Slicing estático• Slicing dinâmico• Métodos

– Equações de fluxo de dados– Grafos de dependências– Eficiência

• Aplicação– Aplicação ao trabalho

• Bibliografia

Page 3: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

O que é?

• Mecanismo para particionar um programa em partes independentes.

• Um slice ou partição consiste em todos os ‘statements’ do programa que podem afectar o valor da computação num determinado ‘statement’.

• Essa partição é definida segundo o critério de slicing.

Page 4: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Dependências

• Dependências de dadosx = 1;

y = x;

• Dependêcias de controloif(n==2)

X = 3;

Page 5: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Slicing estático

• É usada apenas informação disponível estaticamente

• Critério especifica o statement e o conjunto de variáveis relevantes.

x = 1;

y = x + 2;

x = 10;

output(x)

output(y)

C = ( 5, {y})

Page 6: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Slicing dinâmico

• É utilizada uma determinada instância do programa.

• O critério tem em conta o input, o statement relevante e o conjunto de variáveis.

x = 2;if(x == 2){

y = x;}else{

y = x + 1;}output(y)

C = ({x==2}, 10, {y})

Page 7: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Métodos

• Equações de fluxo de dados– Calculam-se conjuntos sucessivos de

‘statements’ indirectamente relevantes, de acordo com as dependências

• Grafos de dependências– Constrói-se um grafo com as dependências.

• Nos -> ‘statements’

• Arcos -> dependências

Page 8: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Equações de fluxo de dados

No Def Ref Infl

1 {x} {} {}

2 {y} {x} {}

3 {soma} {} {}

4 {} {i} {5}

5 {soma}{soma,i}

{}

6 {} {soma} {}

x = 1;

y = x + 2;

soma = 0;

while(i < 10)

soma = soma + i;

output(soma)

Page 9: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Grafos de dependências

x = 1;

y = x + 2;

x = 10;

output(x)

output(y)

Page 10: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Eficiência

• Tempo polinomial– Equações de fluxo de dados

• O(v * n * e)

– Grafos de dependências• O(n * e)

Page 11: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Aplicação• Debug

– Ignorar ‘statements’ que não interferem no resultado pretendido

– Observar os ‘statements’ afectados por uma possível alteração

• Manutenção (integração e diferenciação)– Tratamento de diferentes versões. Verificação de

componentes equivalentes– Integração de versões modificadas relativamente à base

• Paralelismo– Determinar secções independentes do programa para

serem executados em paralelo.

• …

Page 12: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Aplicação ao projecto

• Construção de grafos de dependências– Relações explícitas

entre tipos– Relações implícitas

• Invocações de métodos• Possivelmente ao nível

do ‘statement’

• Slicing e chopping através do grafo de dependências

Page 13: Programação funcional avançada Program Slicing Patrick Machado

Programação funcional avançada

Program Slicing

Bibliografia

• A Survey of Program Slicing Techniques, Frank Tip, 19942.

• The Use of Program Dependence Graphs in Software Engineering, Susan Horwits and Thomas Reps, 19923.

• Graph Theoretic Foundations of Program Slicing and Integration, Arun Lakhotia, 1993