depuração automática de programas baseada em modelos

57
Introdu¸ ao Fundamentos Dr. Java Pro Avalia¸ ao Experimental Conclus˜ oes Depura¸ ao autom´ atica de programas baseada em modelos: uma abordagem hier´ arquica para aux´ ılio ao aprendizado de programa¸ ao Wellington R. Pinheiro Orientadora: Prof a . Dr a . Leliane Nunes de Barros Departamento de Ciˆ encia da Computa¸ ao Instituto de Matem´ atica e Estat´ ıstica - Universidade S˜ ao Paulo {wrp}@ime.usp.br 07 de Maio de 2010 IME, 07 de maio de 2010 Slide: 1

Upload: wellington-pinheiro

Post on 05-Jul-2015

148 views

Category:

Education


0 download

DESCRIPTION

Apresentação do trabalho de conclusão do curso de mestrado em Ciência da Computação feito no Instituto de Matemática e Estatística da USP, em Maio de 2010

TRANSCRIPT

Page 1: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Depuracao automatica de programas baseada emmodelos: uma abordagem hierarquica para auxılio

ao aprendizado de programacao

Wellington R. Pinheiro

Orientadora: Profa. Dra. Leliane Nunes de BarrosDepartamento de Ciencia da Computacao

Instituto de Matematica e Estatıstica - Universidade Sao Paulo

{wrp}@ime.usp.br

07 de Maio de 2010

IME, 07 de maio de 2010 Slide: 1

Page 2: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Sistema Tutor Inteligente para Programacao

Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring

System): ferramenta de aprendizado eletronico que usa tecnicas deInteligencia Artificial.

Um ITS para programacao deve ser capaz de:

propor problemas de programacao que promovam o aprendizadode um determinado aluno;

detectar os possıveis erros de programacao do aluno(diagnostico do programa do aluno);

comunicar as falhas ao aluno com a expectativa que ele aprendadurante esse processo;

construir o modelo do aluno (representacao de seuconhecimento) com base no resultado do diagnostico deproblemas.

IME, 07 de maio de 2010 Slide: 2

Page 3: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Sistema Tutor Inteligente para Programacao

Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring

System): ferramenta de aprendizado eletronico que usa tecnicas deInteligencia Artificial.

Um ITS para programacao deve ser capaz de:

propor problemas de programacao que promovam o aprendizadode um determinado aluno;

detectar os possıveis erros de programacao do aluno(diagnostico do programa do aluno);

comunicar as falhas ao aluno com a expectativa que ele aprendadurante esse processo;

construir o modelo do aluno (representacao de seuconhecimento) com base no resultado do diagnostico deproblemas.

IME, 07 de maio de 2010 Slide: 2

Page 4: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Sistema Tutor Inteligente para Programacao: exemplos

PROUST [Johnson and Soloway, 1984]

PROUST e o principal sistema encontrado na literatura capazde detectar erros de logica de programacao.

ProPAT: Tutor de Padroes Elementares [Delgado, 2005].

Utiliza diagnostico baseado em modelo para fazer depuracao deprogramas (MBSD).

Funciona para um subconjunto de instrucoes da linguagem C.

Utiliza um plugin Eclipse como ambiente de programacao einterface de comunicacao com o estudante.

Permite que o aluno programe usando padroes elementares deprogramacao.

IME, 07 de maio de 2010 Slide: 3

Page 5: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Diagnostico do Programa do AlunoPROUST [Johnson and Soloway, 1984] ProPAT [Delgado, 2005]

Caracterısticas

tenta construir o modelo doestudante reconhecendo planos deprogramacao e metas (intencoes) noprograma do aluno;

os planos de programacao e asmetas para um determinadoconjunto de problemas saoarmazenados em uma biblioteca.

utiliza diagnostico baseado emmodelo para detectar falhas noprograma do aluno;

nao requer uma biblioteca de planose metas previamente definidos paraa solucao.

Limitacoes

os planos da biblioteca podem naocobrir todas as possıveis solucoespara um determinado problema;

se nenhum plano for encontradonao e possıvel detectar as falhas noprograma do aluno.

as falhas sao comunicadas ao alunoem termos de linhas do programa, oque fornece pouca ou nenhumainformacao para que o alunoidentifique os erros no programa.

IME, 07 de maio de 2010 Slide: 4

Page 6: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Diagnostico Baseado em Modelo

E uma tecnica de InteligenciaArtificial usada paraencontrar componentesfalhos em sistemas fısicos.

Raciocina sobre modelos quedescrevem o comportamentocorreto dos sistemas.

Envolve tressubtarefas [Benjamins, 1993]:deteccao de sintomas,geracao de hipoteses ediscriminacao de hipoteses.

IME, 07 de maio de 2010 Slide: 5

Page 7: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Depuracao de Programas Baseada em Modelo

Model Based SoftwareDebugging(MBSD) [Mayer et al., 2002].

Ideia basica: fazer umasimulacao passo a passo doprograma apontando asinstrucoes que justificam asdiscrepancias observadas,i.e., a diferencas entre assaıdas do programa e assaıdas esperadas (sintomas).

Pode ser usada por um ITSpara tentar entender asdiferencas entre as intencoesdo aluno e seu programa.

IME, 07 de maio de 2010 Slide: 6

Page 8: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conceitos Gerais

Depuracao de Programas Baseada em Modelo

IME, 07 de maio de 2010 Slide: 7

Page 9: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Motivacao

Exemplo 1

Problema da ordem crescente: Dados dois numeros inteiros, a e b, construir umprograma que imprima esses numeros em ordem crescente. Os casos de teste quedeverao ser usados para testar o seu programa solucao sao:

CT1 Entradas: 3, 5 Saıdas: 3, 5CT2 Entradas: 5, 3 Saıdas 3, 5CT3 Entradas: 3, 3 Saıdas: 3, 3

1 public class OrdemCrescente {2 public static void crescente(int a, int b) {3 int maior;4 int menor;56 if (a < b) {7 maior = a;8 menor = b;9 } else {10 maior = b;11 menor = a;12 }1314 writeInt("o menor numero e’", menor);15 writeInt("o maior numero e’", maior);16 }17 }

IME, 07 de maio de 2010 Slide: 8

Page 10: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Motivacao

Exemplo 1

Problema da ordem crescente: Dados dois numeros inteiros, a e b, construir umprograma que imprima esses numeros em ordem crescente. Os casos de teste quedeverao ser usados para testar o seu programa solucao sao:

CT1 Entradas: 3, 5 Saıdas: 3, 5CT2 Entradas: 5, 3 Saıdas 3, 5CT3 Entradas: 3, 3 Saıdas: 3, 3

1 public class OrdemCrescente {2 public static void crescente(int a, int b) {3 int maior;4 int menor;56 if (a < b) {7 maior = a;8 menor = b;9 } else {10 maior = b;11 menor = a;12 }1314 writeInt("o menor numero e’", menor);15 writeInt("o maior numero e’", maior);16 }17 }

IME, 07 de maio de 2010 Slide: 8

Page 11: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Motivacao

Exemplo 1Executando um depurador automatico de programasbaseado em modelos, para o programa do exemplo,com o caso de teste CT1:

Entradas: 3, 5 Saıdas: 3, 5

sao obtidas as seguintes hipoteses de falha:

{6}, {7, 8}, {14, 15}, {8, 15}, {7, 14}

6 if (a < b) {

7 maior = a;

8 menor = b;

9 } else {

10 maior = b;

11 menor = a;

12 }

13

14 writeInt(”o menor numero e’”, menor);

15 writeInt(”o maior numero e’”, maior);

Hipotese Correcao

{6} trocar o operador “>” pelo operador “<” na Linha 6{7, 8} inverter os valores nas atribuicoes das Linhas 7 e 8{14, 15} inverter somente os nomes das variaveis impressas nas Linhas 14 e

15{8, 15} na Linha 8 mudar para menor = a e na Linha 15, imprimir o valor

de b{7, 14} na Linha 7 mudar para maior = b e na Linha 14, imprimir o valor

de a

IME, 07 de maio de 2010 Slide: 9

Page 12: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Motivacao

Exemplo 1Executando um depurador automatico de programasbaseado em modelos, para o programa do exemplo,com o caso de teste CT1:

Entradas: 3, 5 Saıdas: 3, 5

sao obtidas as seguintes hipoteses de falha:

{6}, {7, 8}, {14, 15}, {8, 15}, {7, 14}

6 if (a < b) {

7 maior = a;

8 menor = b;

9 } else {

10 maior = b;

11 menor = a;

12 }

13

14 writeInt(”o menor numero e’”, menor);

15 writeInt(”o maior numero e’”, maior);

Hipotese Correcao

{6}trocar o operador “>” pelo operador “<” na Linha 6

{7, 8} inverter os valores nas atribuicoes das Linhas 7 e 8

{14, 15}inverter somente os nomes das variaveis impressas nas Linhas 14 e15

{8, 15} na Linha 8 mudar para menor = a e na Linha 15, imprimir o valorde b

{7, 14} na Linha 7 mudar para maior = b e na Linha 14, imprimir o valorde a

IME, 07 de maio de 2010 Slide: 9

Page 13: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Motivacao

Limitacoes do MBSD para o Aprendizado de Programacao

Mesmo para um programa pequeno, podem haver muitashipoteses de falha para serem comunicadas (e discriminadas) aoaluno, podendo deixa-lo cansado e confuso.

Informar as linhas do programa possivelmente falhas pode naoser suficiente para que um aluno iniciante consiga corrigir o seuprograma.

Um aprendiz de programacao nao tem conhecimento suficientepara fazer predicoes a respeito do comportamento do programae fornecer os valores esperados para as variaveis do programa,durante a discriminacao de hipoteses.

IME, 07 de maio de 2010 Slide: 10

Page 14: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Objetivo

Depuracao Hierarquica de Programas (HPD)

O objetivo desse trabalho e estender a tecnica MBSD com o uso doDiagnostico Hierarquico Baseado em Modelos (diagnostico

hierarquico), de maneira que:

Falhas no programa do aluno possam ser encontradas emdiferentes nıveis de abstracao.

Funcoes, procedimentos e padroes elementares sejam vistoscomo componentes abstratos.

A comunicacao com o aluno possa ser feita em termos dessescomponentes abstratos , i.e., atraves de uma linguagem de altonıvel, e nao somente atraves de linhas do programa.

O tutor comunique um conjunto menor de hipoteses de falhamenor a cada iteracao.

IME, 07 de maio de 2010 Slide: 11

Page 15: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Objetivo

Depuracao Hierarquica de Programas (HPD)

Apos serem encontradas as hipoteses de falha em umdeterminado nıvel de abstracao, o aluno pode:

fazer a discriminacao de hipoteses no nıvel de abstracao atual(fornecendo novas observacoes a respeito do comportamentoesperado para o componente abstrato);depurar o programa em um nıvel mais detalhado, substituindoum componente abstrato pelos seus componentes internos(refinamento);modificar o programa para tentar corrigir as falhas.

IME, 07 de maio de 2010 Slide: 12

Page 16: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Organizacao

Fundamentos

Diagnostico Baseado em Modelos

Diagnostico Hierarquico Baseado em Modelos

IME, 07 de maio de 2010 Slide: 13

Page 17: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

MBD

MBD: exemplo

M1

M2

M3

A1

A2

2

12

12

3

3

3

2

A

B

C

D

E

F

G

X

Y

Z

ok(C) indica que o componente C esta funcionando corretamente e;

¬ok(C) indica que o componente C esta falho.

Modelo comportamental Modelo estrutural Observacoes

adder(x)∧ok(x)→add(in1(x),in2(x),out1(x))

multiplier(x)∧ok(x)→mult(in1(x),in2(x),out1(x))

multiplier(M1)

multiplier(M2)

multiplier(M3)

adder(A1)

adder(A2)

out1(M1)=in1(A1)

out1(M2)=in2(A1)

out1(M2)=in1(A2)

out1(M3)=in2(A2)

in1(M1)=3

in2(M1)=2

in1(M2)=2

in2(M2)=3

in1(M3)=2

in2(M3)=3

IME, 07 de maio de 2010 Slide: 14

Page 18: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

MBD

MBD: exemplo

M1

M2

M3

A1

A2

2

12

12

3

3

3

2

A

B

C

D

E

F

G

X

Y

Z

10M1

M2

M3

A1

A2

2

10

3

3

3

2

A

B

C

D

E

F

G

X

Y� 12

10

{{M1},{M2},{A1}} {{M1},{M3},{A1},{A2}}

M3

M2M1

A2

G deveria ser10 mas é 12

F deveria ser12 mas é 10

{M1, M2, A1}

M1 M2 A1

{M1, M3, A1, A2}

@X

M1

X @

Algoritmo de Reiter

@ @A1

M3 A1 A2

Hipoteses de falha: {{M1},{A1},{M2,M3},{M2,A2}}

IME, 07 de maio de 2010 Slide: 15

Page 19: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Diagnostico Hierarquico Baseado em Modelo

Hierarchical Model Based Diagnosis (HMBD) [Mozetic, 1991].

Usada para se obter melhor desempenho que a tecnica de MBDtradicional.

A descricao do sistema e feita em diferentes nıveis deabstracao.

Utiliza abstracoes para representar componentes ou ocomportamento do sistema (abstracoes estruturais ecomportamentais).

Utiliza a tecnica de MBD tradicional para encontrar a solucao acada nıvel de abstracao.

IME, 07 de maio de 2010 Slide: 16

Page 20: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

HMBD: exemplo

Modelos do nıvel 1Modelo estrutural interno Modelo comportamental Modelo estrutural externo

nand−composition(NandComp,And,Inv)→

in1(NandComp)=in1(And)∧

in2(NandComp)=in2(And)∧

out1(And)=in1(Inv)∧

out1(NandComp)=out1 (Inv))

nand−composition(NA1 ,A1,I1)

nand(C )∧ok(C )→

∃A,I [ nand−composition(C ,A,I )∧

and−ok(A)∧inv−ok(I ) ]

and−ok(C )≡out1(C )=1↔

in1(C )=1∧in2(C )=1

nand(NA1)

out1(NA1)=in1(A2)

IME, 07 de maio de 2010 Slide: 17

Page 21: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Arvore de Abstracoes

Suposicao de subsistemas independentes.

IME, 07 de maio de 2010 Slide: 18

Page 22: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Comportamento de um Componente Interno

Modelos de um componente abstrato

Um componente abstrato pode ser descrito pelos modelos:

estrutural interno, estrutural externo e comportamental.

Comportamento de um componente abstrato

Um componente abs-trato AC1 e os compo-nentes internos C1, C2e C3

O comportamento deAC1 e assumido comocorreto

Assim, o comporta-mento de C1, C2 e C3devem ser assumidoscomo corretos

Esse comportamento pode ser descrito formalmente pelo seguinte axioma:

ok(CA) → ok(C1) ∧ ok(C2) ∧ · · · ∧ ok(Cm) (Axioma 1)

IME, 07 de maio de 2010 Slide: 19

Page 23: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Algoritmo HMBD

O algoritmo de Diagnostico Hierarquico [Mozetic, 1991], ecomposto dos seguintes passos:

1 Verificar quais observacoes deverao ser usadas em cada um dosnıveis de abstracao.

2 Para cada nıvel i , de l ate 0, sendo l o nıvel mais alto que naoesconde todas as conexoes com observacoes, encontrar oconjunto de hipoteses de falha utilizando algum algoritmo deMBD. Para cada componente abstrato CA nao envolvido emnenhuma hipotese de falha no nıvel i , usar o Axioma 1 para onıvel i − 1.

3 Devolver as hipoteses de falhas encontradas no nıvel 0.

IME, 07 de maio de 2010 Slide: 20

Page 24: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Algoritmo HMBD

IME, 07 de maio de 2010 Slide: 21

Page 25: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Algoritmo HMBD

IME, 07 de maio de 2010 Slide: 21

Page 26: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Algoritmo HMBD

IME, 07 de maio de 2010 Slide: 21

Page 27: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

HMBD

Algoritmo HMBD

IME, 07 de maio de 2010 Slide: 21

Page 28: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Organizacao

Dr. Java Pro

Caracterısticas

Componente abstrato de programacao

Modelo hierarquico de um programa

Algoritmo HPD

IME, 07 de maio de 2010 Slide: 22

Page 29: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Caracterısticas

Depuracao Hierarquica de Programas

O Hierarchical Program Debugging (HPD) tem as seguintescaracterısticas:

Extensao da tecnica de MBSD que utiliza o diagnosticohierarquico baseado em modelos para depurar programas.

Permite representar o programa do aluno em diversos nıveis deabstracao, sendo funcoes, procedimentos e padroes elementaresrepresentados como componentes abstratos.

Possibilita discriminar hipoteses em varios nıveis de abstracao,atraves das seguintes funcionalidades:

informar valores para variaveisrefinar componente abstrato

IME, 07 de maio de 2010 Slide: 23

Page 30: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Componente abstratro de programacao

Construcao de um componente abstrato em programas

Seleção Simples

componentede seleção

a < m

a < m

ação 1 ação 2 ação n

condição

componentede seleção

Conditional

i f (a < m) { ação 1; ação 2; ... ação n;}

c) Padrão de Seleção Simplesapl icado usada em um programa

b) Modelo base gerado para otrecho de programa apresentado

a) Modelo com o componente representando o padrão de Seleção Simples

IME, 07 de maio de 2010 Slide: 24

Page 31: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Modelo hierarquico de um programa

Exemplo 1

Problema da ordem crescente: Dados dois numeros inteiros, a e b, construir umprograma que imprima esses numeros em ordem crescente. Os casos de teste quedeverao ser usados para testar o seu programa solucao sao:

CT1 Entradas: 3, 5 Saıdas: 3, 5CT2 Entradas: 5, 3 Saıdas 3, 5CT3 Entradas: 3, 3 Saıdas: 3, 3

1 public class OrdemCrescente {2 public static void crescente(int a, int b) {3 int maior;4 int menor;56 if (a < b) {7 maior = a;8 menor = b;9 } else {10 maior = b;11 menor = a;12 }1314 writeInt("o menor numero e’", menor);15 writeInt("o maior numero e’", maior);16 }17 }

IME, 07 de maio de 2010 Slide: 25

Page 32: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Modelo hierarquico de um programa

Modelos do Exemplo 1

Seleção A l te rna t i va

(CA1)

a

b

menor1

Ass ignment (C7)

Ass ignment (C6)

writeInt("menor", menor)

writeInt("maior", maior)maior1

Expr (C0)

a < b

aux0

Condi t ional - C1

menor1

Assign (C7)

condResultAssign (C2)

maior = a

Assign (C3)

menor = b

C1-Then

Assign (C4)

maior = b

Assign (C5)

menor = a

C1-Else

Assign (C6)

writeInt("menor", menor)

writeInt("maior", maior)

a

b

a’

b’

a’’

b’’

maior1

b) Mode lo base

a) Mode lo abs t ra to

in1

in2

in1

in2

in1

in1

in1

in1

in1

in1

result

out

out

out

out

out

out

maior2

menor3

menor5

maior4

in1

in2

out1

out2

out1

out2

in1

in1 out

out

IME, 07 de maio de 2010 Slide: 26

Page 33: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Modelo hierarquico de um programa

Modelos do Exemplo 1

Modelo estrutural interno

composit(C , E , Cond) →in1(C) = in1(E) ∧ in2(C) = in2(E)∧in1(C) = in1(Cond) ∧ in2(C) = in2(Cond)∧result(E) = aux0 ∧ condResult(C) = aux0∧condResult(Cond) = aux0∧out1(C) = out1(Cond) ∧ out2(C) = out2(Cond)

composit(CA1, C0,C1)

Modelo comportamental

cond(C) ∧ ok(C) → ∃E , Cond [composit(C , E , Cond)∧ok(E) ∧ ok(Cond) ]

cond(CA1)

Modelo estrutural externo

in1(CA1) = ain2(CA1) = bout1(CA1) = menor1out2(CA1) = maior1

IME, 07 de maio de 2010 Slide: 27

Page 34: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Depuracao Hierarquica de Programas (HPD)

O algoritmo proposto utiliza uma abordagem inspirada no trabalhode Mozetic (1991), com as seguintes extensoes:

A discriminacao de hipoteses pode acontecer durante o pro-cesso de diagnostico hierarquico.

A falha pode ser encontrada e solucionada em qualquer nıvelde abstracao.

Nao e necessario refinar todos os componentes abstratos de umnıvel i para um nıvel i − 1, que sejam considerados hipotesesde falha.

Uma vez que um componente abstrato tem seu comporta-mento definido como funcionando corretamente, ele nao pre-cisara ser refinado ate o final do processo de diagnostico.

IME, 07 de maio de 2010 Slide: 28

Page 35: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Tela principal do Dr. Java Pro.

Vamos selecionar o Caso de Teste 1 para fazer a depuracao.

IME, 07 de maio de 2010 Slide: 29

Page 36: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Hipoteses de falha no Dr. Java Pro

Nesse ponto, o aluno deve escolher um caminho de depuracao para seguir.

IME, 07 de maio de 2010 Slide: 30

Page 37: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Alguns possıveis caminhos de depuracao

{SeleçãoAlternat iva} {15,14}

{SeleçãoAlternat iva}

{6 } , {7 ,8 }

{ 6 } { 7 ,8 }

meno r=3ma io r=5

Informar valores para{SeleçãoAl ternat iva}

Informar valores pa ra {15 ,14 }

Refinamento docomponente abstratode SeleçãoAlternativa

menor = 3maior = 5

a < b =Falso

a < b =Verdadeiro

Informarvalorespa ra {7 ,8 }

Informar valoresp a r a { 6 }

menor = 3maior = 5

Vamos continuar a depuracao escolhendo a hipotese de falha SelecaoAlternativa einformar valores para as variaveis.

IME, 07 de maio de 2010 Slide: 31

Page 38: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Informando valores para uma hipotese de falha

Apos informar os valores para as variaveis, o depurador devolve a hipotese de falha:{SelecaoAlternativa}.

Vamos refinar o componente abstrato SelecaoAlternativa.

IME, 07 de maio de 2010 Slide: 32

Page 39: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Refinando um componente abstrato

Apos o refinamento do componente abstrato SelecaoAlternativa, o depurador devolve asseguintes hipoteses de falha:

{6},{7,8}

Vamos continuar o processo de depuracao informando valores para as variaveisrelacionadas a hipotese {6}.

IME, 07 de maio de 2010 Slide: 33

Page 40: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Algoritmo HPD

Informando valores para uma condicao logica

Apos informar o valor esperado condicao na Linha 6, o depurador devolve somente ahipotese de falha: {6}.

Nesse momento, o aluno deveria ser capaz de reconhecer que a falha esta no operadorlogico da expressao na Linha 6 e realizar a correcao adequada.

IME, 07 de maio de 2010 Slide: 34

Page 41: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Avaliacao do uso da ferramenta

A avaliacao foi feita com um grupo de alunos em duas aulaspraticas.

Os problemas de programacao foram classificados como:Resolva e Modifique.

A interacao dos alunos com a ferramenta Dr. Java Pro foramarmazenadas em logs, a partir dos quais foram feitas nossasanalises.

IME, 07 de maio de 2010 Slide: 35

Page 42: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Problema P1: Calculo do numero par

Nome: Calculo do numero parEnunciado: Dado um numero inteiro n, calcule n/2 se n for par ou (n-3)/2,

caso contrarioTipo: Resolva

Casos de teste:

Identificador Entradas Saıdas

CT1 10 5CT2 1 -1CT3 0 0CT4 23 10

Classe: CalculoParJustificativa: Esse problema tem como objetivo introduzir ao aluno a ferramenta

Dr. Java Pro e os conceitos de depuracao automatica. Nesseprimeiro contato, devem ser apresentados: o conceito de casos deteste e sua aplicacao; os conceitos de hipoteses de falha; a tarefade discriminacao de hipoteses que envolve informar valores paravariaveis e refinamento de componentes abstratos.

IME, 07 de maio de 2010 Slide: 36

Page 43: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Programas escritos pelos alunos para solucionar oProblema P1

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-2)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}P1a P1b P1c

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1d P1e P1f

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1g P1h P1i

IME, 07 de maio de 2010 Slide: 37

Page 44: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de modificacoes nos programas utilizados pelosalunos durante a solucao do Problema P1.

P1d

P1g

P1i

P1a

P1b

P1c

P1e

P1f

P1h

P1d

P1g

P1i

P1a

P1b

P1c

P1e

P1f

P1h

P1d

P1g

P1I

P1a

P1b

P1c

P1e

P1f

P1h

5

2

1

6

1

1

1 4

1

8

1

6

2

1

Versão 1 Versão 2 Versão 3

9

1

IME, 07 de maio de 2010 Slide: 38

Page 45: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de programas: P1a →5 P1c →

4 P1g

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-2)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}P1a P1b P1c

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1d P1e P1f

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1g P1h P1i

IME, 07 de maio de 2010 Slide: 39

Page 46: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de programas: P1c →6 P1g

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-2)/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}P1a P1b P1c

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 0)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1d P1e P1f

public int calcula(int n) {int resultado = 0;

if (n % 2 != 0)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 == 1)

resultado = (n-3)/2;

else

resultado = n/2;

return resultado

}

public int calcula(int n) {int resultado = 0;

if (n % 2 != 1)

resultado = n/2;

else

resultado = (n-3)/2;

return resultado

}P1g P1h P1i

IME, 07 de maio de 2010 Slide: 40

Page 47: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Problema P2: Calculo da Mediana

Nome: Calculo da medianaEnunciado: Dados 3 numeros inteiros, determinar um inteiro n, tal que ni ≤

n ≤ nj , sendo ni e nj os outros inteiros dados (lidos). Encontre ecorrija os erros no programa fornecido.

Tipo: Modifique

Casos de teste:

Identificador Entradas Saıdas

CT1 1, 2, 3 2CT2 1, 3, 2 2CT3 2, 1, 3 2CT4 2, 3, 1 2CT5 3, 1, 2 2CT6 3, 2, 1 2CT7 9, -100, 10 9CT8 12, 12, 5 12CT9 12, 5, 12 12CT10 5, 12, 12 12CT11 12, 12, 12 12CT12 0, -1, 1 0

Classe: MedianaJustificativa: Esse problema tem como objetivo fixar os conceitos de padroes de

selecao. O problema tambem e um bom exercıcio para utilizar afuncionalidade de refinamento de componentes abstratos do Dr.Java Pro, visto que cada selecao aninhada e representada por umcomponente abstrato.

IME, 07 de maio de 2010 Slide: 41

Page 48: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Esqueleto do programa para o Problema da Mediana

1 public class Mediana {2 /** ...

14 public int encontraMediana(int a, int b, int c) {15 int resultado;

16 if (a < b) {17 if (b < c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c > b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

34 }

IME, 07 de maio de 2010 Slide: 42

Page 49: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de modificacoes nos programas utilizados pelosalunos durante a solucao do Problema P2.

P2a Modificacao da condicao: troca do operador da linha 16 de “<” para“>”.

P2b Modificacao da condicao: troca do operador da linha 17 de “<” para“>”.

P2c Inversao dos blocos: Linhas 19 e 23.P2d [Programa correto]. Modificacao da condicao: troca do operador “<”

da Linha 17 para “>” e troca do operador “>” da linha 26 para “<”.

Versão 1 Versão 2 Versão 3

7Programa Mediana

1

13

2

13

2

P2a

P2b

P2d

P2c

P2a

P2b

P2d

P2c

IME, 07 de maio de 2010 Slide: 43

Page 50: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de programas: Mediana →3 P2b →

3 P2d

16 if (a < b) {17 if (b < c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c > b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

16 if (a < b) {17 if (b > c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c > b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

16 if (a < b) {17 if (b > c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c < b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

Programa Mediana P2b P2d

IME, 07 de maio de 2010 Slide: 44

Page 51: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Sequencia de programas: Mediana →2 P2c →

2 P2d

16 if (a < b) {17 if (b < c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c > b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

16 if (a < b) {17 if (b < c) {18 if (a < c)

19 resultado = b;

20 else

21 resultado = a;

22 } else {23 resultado = c;

24 }25 } else {26 if (c > b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

16 if (a < b) {17 if (b > c) {18 if (a < c)

19 resultado = c;

20 else

21 resultado = a;

22 } else {23 resultado = b;

24 }25 } else {26 if (c < b)

27 resultado = b;

28 else if (c > a)

29 resultado = a;

30 else

31 resultado = c;

32 }33 return resultado;

Programa Mediana P2c P2d

IME, 07 de maio de 2010 Slide: 45

Page 52: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Resultados das analises experimentais

As analises sugerem que o uso da ferramenta Dr. Java Pro auxiliou osalunos na deteccao e correcao dos problemas de programacaopropostos, dadas as seguintes evidencias:

1 tradicionalmente, apenas 30% dos alunos dessa disciplinaconseguem acertar integralmente uma questao equivalente aoProblema P2 em prova escrita;

2 56% dos alunos acertaram os problemas P2 e 90% acertaram oProblema P1.

Problema P1: dos 30 alunos avaliados, 18 seguiram a orientacao dodepurador, obtendo sucesso na correcao de seus programas, ou seja,60% dos alunos seguiram um raciocınio logico na depuracao de seus

programas, ao inves de fazer modificacoes aleatorias.

IME, 07 de maio de 2010 Slide: 46

Page 53: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Avaliacao do Dr. Java Pro

Resultados das analises experimentais

Problema P2: dos 16 alunos avaliados, 7 seguiram a orientacao dodepurador, obtendo sucesso na correcao de seus programas, ou seja,44% dos alunos seguiram um raciocınio logico na depuracao de seus

programas.

Com base na avaliacao feita pelos alunos sobre a ferramenta, amaioria acredita que a ferramenta e util para o aprendizado e que eladeveria ser usada mais frequentemente em disciplinas de Introducao aProgramacao.

IME, 07 de maio de 2010 Slide: 47

Page 54: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conclusoes e trabalhos futuros

Conclusoes

Foi proposta uma extensao da tecnica de diagnostico hierarquico paraencontrar falhas em programas representados em diferentes nıveis deabstracao, considerando componentes abstratos, tais como: funcoes,procedimentos e padroes elementares.

O diagnostico hierarquico fornece uma forma de comunicar aos alunosas falhas de um programa em termos de componentes abstratos, istoe, em uma linguagem de alto nıvel.

A avaliacao preliminar da ferramenta com um grupo de alunos deuma disciplina de Introducao a Programacao mostrou que um numerorazoavel de alunos foi capaz de compreender as hipoteses de falhageradas pelo depurador automatico e usar essas informacoes paracorrigir seus programas.

IME, 07 de maio de 2010 Slide: 48

Page 55: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conclusoes e trabalhos futuros

Trabalhos futuros

Trabalhos futuros referentes a:

Implementacao

Recursao, uso de multiplas classes, vetores e matrizes e uso deobjetos.

Tecnicas de MBD

Modelo de falhas, exploracao de falhas estruturais, modelagemde variaveis do sistema e uso de modelos com probabilidades.

Avaliacao pedagogica mais detalhada.

IME, 07 de maio de 2010 Slide: 49

Page 56: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conclusoes e trabalhos futuros

Bibliografia

Benjamins, R. (1993).Problem Solving Methods for Diagnosis.PhD thesis, University of Amsterdam.

Bergin, J. (1999).Patterns for selection.http://csis.pace.edu/ bergin/patterns/Patternsv4.html.

de Kleer, J. and Williams, B. C. (1987).Diagnosing multiple faults.Artif. Intell., 32(1):97–130.

Delgado, K. V. (2005).Diagnostico baseado em modelos num sistema tutor inteligente para programacaocom padroes pedagogicos.Dissertacao de mestrado, Instituto de Matematica e Estatıstica.

Johnson, W. L. and Soloway, E. (1984).Proust: Knowledge-based program understanding.In ICSE ’84: Proc. of the 7th international conference on Software engineering,pages 369–380, Piscataway, NJ, USA. IEEE Press.

IME, 07 de maio de 2010 Slide: 50

Page 57: Depuração automática de programas baseada em modelos

Introducao Fundamentos Dr. Java Pro Avaliacao Experimental Conclusoes

Conclusoes e trabalhos futuros

Bibliografia

Mayer, W., Stumptner, M., Wieland, D., and Wotawa, F. (2002).Observations and results gained from the jade project.In Proc. of the 13th International Workshop on Principles of Diagnosis,Semmering, Austria.

Mozetic, I. (1991).Hierarchical model-based diagnosis.Int. J. Man-Mach. Stud., 35(3):329–362.

Reiter, R. (1987).A theory of diagnosis from first principles.Artif. Intell., 32(1):57–95.

Wenger, E. (1987).Artificial intelligence and tutoring systems: Computational and cognitiveapproaches to the communication of knowledge.Morgan Kaufmann Press.

IME, 07 de maio de 2010 Slide: 51