Carregar apresentação
A apresentação está carregando. Por favor, espere
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.