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

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

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

Apresentações semelhantes


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

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

2 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

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

4 Programação funcional avançada Program Slicing Dependências Dependências de dados x = 1; y = x; Dependêcias de controlo if(n==2) X = 3;

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

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

7 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

8 Programação funcional avançada Program Slicing Equações de fluxo de dados NoDefRefInfl 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)

9 Programação funcional avançada Program Slicing Grafos de dependências x = 1; y = x + 2; x = 10; output(x) output(y)

10 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)

11 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. …

12 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

13 Programação funcional avançada Program Slicing Bibliografia A Survey of Program Slicing Techniques, Frank Tip, 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 "Programação funcional avançada Program Slicing Patrick Machado."

Apresentações semelhantes


Anúncios Google