A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Program Slicing Patrick Machado.

Apresentações semelhantes


Apresentação em tema: "Program Slicing Patrick Machado."— Transcrição da apresentação:

1 Program Slicing Patrick Machado

2 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

3 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.

4 Dependências Dependências de dados Dependêcias de controlo x = 1;
y = x; Dependêcias de controlo if(n==2) X = 3;

5 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})

6 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})

7 Métodos Equações de fluxo de dados Grafos de dependências
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

8 Equações de fluxo de dados
No Def Ref Infl 1 {x} {} 2 {y} 3 {soma} 4 {i} {5} 5 {soma,i} 6 x = 1; y = x + 2; soma = 0; while(i < 10) soma = soma + i; output(soma)

9 Grafos de dependências
x = 1; y = x + 2; x = 10; output(x) output(y)

10 Eficiência Tempo polinomial Equações de fluxo de dados
O(v * n * e) Grafos de dependências O(n * e) v = variaveis n = vertices e = arcos

11 Aplicação Debug Manutenção (integração e diferenciação) Paralelismo …
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. É Muito bonito mas isso so funciona para coisas simples Tratar procedimentos Apontadores Codigo nao estruturado Estruturas de dados Outros paradigmas

12 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

13 Bibliografia A Survey of Program Slicing Techniques, Frank Tip, 19942.
The Use of Program Dependence Graphs in Software Engineering, Susan Horwits and Thomas Reps, Graph Theoretic Foundations of Program Slicing and Integration, Arun Lakhotia, 1993


Carregar ppt "Program Slicing Patrick Machado."

Apresentações semelhantes


Anúncios Google