SlideShare a Scribd company logo
1 of 57
Download to read offline
Introdu¸ao
       c˜                 Fundamentos         Dr. Java Pro         Avalia¸ao Experimental
                                                                         c˜                 Conclus˜es
                                                                                                   o




        Depura¸˜o autom´tica de programas baseada em
              ca        a
        modelos: uma abordagem hier´rquica para aux´
                                    a              ılio
                ao aprendizado de programa¸˜o
                                          ca

                                        Wellington R. Pinheiro

                              Orientadora: Profa . Dra . Leliane Nunes de Barros
                                  Departamento de Ciˆncia da Computa¸ao
                                                      e                   c˜
                      Instituto de Matem´tica e Estat´
                                          a             ıstica - Universidade S˜o Paulo
                                                                               a

                                            {wrp}@ime.usp.br

                                         07 de Maio de 2010


IME, 07 de maio de 2010                                                                        Slide: 1
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Sistema Tutor Inteligente para Programa¸˜o
                                       ca
     Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring
     System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de
                                             o                e
     Inteligˆncia Artificial.
            e
     Um ITS para programa¸˜o deve ser capaz de:
                         ca
             propor problemas de programa¸˜o que promovam o aprendizado
                                         ca
             de um determinado aluno;
             detectar os poss´
                             ıveis erros de programa¸˜o do aluno
                                                    ca
             (diagn´stico do programa do aluno);
                   o
             comunicar as falhas ao aluno com a expectativa que ele aprenda
             durante esse processo;
             construir o modelo do aluno (representa¸˜o de seu
                                                    ca
             conhecimento) com base no resultado do diagn´stico de
                                                           o
             problemas.
 IME, 07 de maio de 2010                                                            Slide: 2
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Sistema Tutor Inteligente para Programa¸˜o
                                       ca
     Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring
     System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de
                                             o                e
     Inteligˆncia Artificial.
            e
     Um ITS para programa¸˜o deve ser capaz de:
                         ca
             propor problemas de programa¸˜o que promovam o aprendizado
                                         ca
             de um determinado aluno;
             detectar os poss´
                             ıveis erros de programa¸˜o do aluno
                                                    ca
             (diagn´stico do programa do aluno);
                   o
             comunicar as falhas ao aluno com a expectativa que ele aprenda
             durante esse processo;
             construir o modelo do aluno (representa¸˜o de seu
                                                    ca
             conhecimento) com base no resultado do diagn´stico de
                                                           o
             problemas.
 IME, 07 de maio de 2010                                                            Slide: 2
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Sistema Tutor Inteligente para Programa¸˜o: exemplos
                                       ca

     PROUST [Johnson and Soloway, 1984]
             PROUST ´ o principal sistema encontrado na literatura capaz
                       e
             de detectar erros de l´gica de programa¸˜o.
                                   o                ca

     ProPAT: Tutor de Padr˜es Elementares [Delgado, 2005].
                          o
             Utiliza diagn´stico baseado em modelo para fazer depura¸˜o de
                          o                                         ca
             programas (MBSD).
             Funciona para um subconjunto de instru¸˜es da linguagem C.
                                                   co
             Utiliza um plugin Eclipse como ambiente de programa¸˜o e
                                                                ca
             interface de comunica¸˜o com o estudante.
                                   ca
             Permite que o aluno programe usando padr˜es elementares de
                                                     o
             programa¸˜o.
                      ca

 IME, 07 de maio de 2010                                                            Slide: 3
Introdu¸ao
       c˜                  Fundamentos      Dr. Java Pro        Avalia¸ao Experimental
                                                                      c˜                      Conclus˜es
                                                                                                     o

Conceitos Gerais


Diagn´stico do Programa do Aluno
     o
         PROUST [Johnson and Soloway, 1984]            ProPAT [Delgado, 2005]
                                       Caracter´
                                               ısticas

                tenta construir o modelo do                  utiliza diagn´stico baseado em
                                                                          o
                estudante reconhecendo planos de             modelo para detectar falhas no
                programa¸ao e metas (inten¸oes) no
                         c˜                c˜                programa do aluno;
                programa do aluno;                           n˜o requer uma biblioteca de planos
                                                              a
                os planos de programa¸ao e as
                                     c˜                      e metas previamente definidos para
                metas para um determinado                    a solu¸ao.
                                                                   c˜
                conjunto de problemas s˜o
                                       a
                armazenados em uma biblioteca.

                                                Limita¸oes
                                                      c˜

                os planos da biblioteca podem n˜oa           as falhas s˜o comunicadas ao aluno
                                                                        a
                cobrir todas as poss´
                                    ıveis solu¸oes
                                              c˜             em termos de linhas do programa, o
                para um determinado problema;                que fornece pouca ou nenhuma
                se nenhum plano for encontrado               informa¸ao para que o aluno
                                                                     c˜
                n˜o ´ poss´ detectar as falhas no
                 a e      ıvel                               identifique os erros no programa.
                programa do aluno.

 IME, 07 de maio de 2010                                                                         Slide: 4
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Diagn´stico Baseado em Modelo
     o
             ´
             E uma t´cnica de Inteligˆncia
                      e                e
             Artificial usada para
             encontrar componentes
             falhos em sistemas f´ısicos.
             Raciocina sobre modelos que
             descrevem o comportamento
             correto dos sistemas.
             Envolve trˆs
                        e
             subtarefas [Benjamins, 1993]:
             detec¸˜o de sintomas,
                   ca
             gera¸˜o de hip´teses e
                  ca        o
             discrimina¸˜o de hip´teses.
                        ca        o



 IME, 07 de maio de 2010                                                            Slide: 5
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Depura¸˜o de Programas Baseada em Modelo
      ca
             Model Based Software
             Debugging
             (MBSD) [Mayer et al., 2002].
             Ideia b´sica: fazer uma
                     a
             simula¸˜o passo a passo do
                     ca
             programa apontando as
             instru¸˜es que justificam as
                    co
             discrepˆncias observadas,
                     a
             i.e., a diferen¸as entre as
                            c
             sa´ıdas do programa e as
             sa´ıdas esperadas (sintomas).
             Pode ser usada por um ITS
             para tentar entender as
             diferen¸as entre as inten¸˜es
                    c                 co
             do aluno e seu programa.
 IME, 07 de maio de 2010                                                            Slide: 6
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conceitos Gerais


Depura¸˜o de Programas Baseada em Modelo
      ca




 IME, 07 de maio de 2010                                                            Slide: 7
Introdu¸ao
       c˜                 Fundamentos            Dr. Java Pro         Avalia¸ao Experimental
                                                                            c˜                 Conclus˜es
                                                                                                      o

Motiva¸ao
      c˜


Exemplo 1
    Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
                                                u
    programa que imprima esses n´meros em ordem crescente. Os casos de teste que
                                  u
    dever˜o ser usados para testar o seu programa solu¸ao s˜o:
         a                                            c˜ a
                                        CT1   Entradas: 3, 5    Sa´
                                                                  ıdas: 3, 5
                                        CT2   Entradas: 5, 3    Sa´
                                                                  ıdas 3, 5
                                        CT3   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;
                           5
                           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);
                           16        }
                           17    }
IME, 07 de maio de 2010                                                                           Slide: 8
Introdu¸ao
       c˜                 Fundamentos            Dr. Java Pro         Avalia¸ao Experimental
                                                                            c˜                 Conclus˜es
                                                                                                      o

Motiva¸ao
      c˜


Exemplo 1
    Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
                                                u
    programa que imprima esses n´meros em ordem crescente. Os casos de teste que
                                  u
    dever˜o ser usados para testar o seu programa solu¸ao s˜o:
         a                                            c˜ a
                                        CT1   Entradas: 3, 5    Sa´
                                                                  ıdas: 3, 5
                                        CT2   Entradas: 5, 3    Sa´
                                                                  ıdas 3, 5
                                        CT3   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;
                           5
                           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);
                           16        }
                           17    }
IME, 07 de maio de 2010                                                                           Slide: 8
Introdu¸ao
       c˜                   Fundamentos         Dr. Java Pro         Avalia¸ao Experimental
                                                                           c˜                            Conclus˜es
                                                                                                                o

Motiva¸ao
      c˜


Exemplo 1
      Executando um depurador autom´tico de programas
                                    a                                   6      if (a < b) {
      baseado em modelos, para o programa do exemplo,                   7          maior = a;
      com o caso de teste CT1:                                          8          menor = b;
                                                                        9      } else {
                          Entradas: 3, 5   Sa´
                                             ıdas: 3, 5                 10         maior = b;
                                                                        11         menor = a;
      s˜o obtidas as seguintes hip´teses de falha:
       a                          o                                     12     }
                                                                        13
                                                                        14     writeInt(”o menor numero e’”, menor);
                  {6}, {7, 8}, {14, 15}, {8, 15}, {7, 14}               15     writeInt(”o maior numero e’”, maior);


        Hip´tese
            o                   Corre¸˜o
                                      ca
        {6}                     trocar o operador “>” pelo operador “<” na Linha 6
        {7, 8}                  inverter os valores nas atribui¸oes das Linhas 7 e 8
                                                               c˜
        {14, 15}                inverter somente os nomes das vari´veis impressas nas Linhas 14 e
                                                                     a
                                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
Introdu¸ao
       c˜                   Fundamentos         Dr. Java Pro         Avalia¸ao Experimental
                                                                           c˜                            Conclus˜es
                                                                                                                o

Motiva¸ao
      c˜


Exemplo 1
      Executando um depurador autom´tico de programas
                                    a                                   6      if (a < b) {
      baseado em modelos, para o programa do exemplo,                   7          maior = a;
      com o caso de teste CT1:                                          8          menor = b;
                                                                        9      } else {
                          Entradas: 3, 5   Sa´
                                             ıdas: 3, 5                 10         maior = b;
                                                                        11         menor = a;
      s˜o obtidas as seguintes hip´teses de falha:
       a                          o                                     12     }
                                                                        13
                                                                        14     writeInt(”o menor numero e’”, menor);
                  {6}, {7, 8}, {14, 15}, {8, 15}, {7, 14}               15     writeInt(”o maior numero e’”, maior);


        Hip´tese
           o                    Corre¸˜o
                                      ca
                                trocar o operador “>” pelo operador “<” na Linha 6
        {6}
        {7, 8}                  inverter os valores nas atribui¸oes das Linhas 7 e 8
                                                               c˜
                                inverter somente os nomes das vari´veis impressas nas Linhas 14 e
                                                                     a
        {14, 15}                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
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

Motiva¸ao
      c˜


Limita¸˜es do MBSD para o Aprendizado de Programa¸˜o
      co                                         ca


             Mesmo para um programa pequeno, podem haver muitas
             hip´teses de falha para serem comunicadas (e discriminadas) ao
                o
             aluno, podendo deix´-lo cansado e confuso.
                                 a
             Informar as linhas do programa possivelmente falhas pode n˜o a
             ser suficiente para que um aluno iniciante consiga corrigir o seu
             programa.
             Um aprendiz de programa¸˜o n˜o tem conhecimento suficiente
                                        ca a
             para fazer predi¸˜es a respeito do comportamento do programa
                             co
             e fornecer os valores esperados para as vari´veis do programa,
                                                         a
             durante a discrimina¸˜o de hip´teses.
                                  ca         o



IME, 07 de maio de 2010                                                           Slide: 10
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

Objetivo


Depura¸˜o Hier´rquica de Programas (HPD)
      ca      a

    O objetivo desse trabalho ´ estender a t´cnica MBSD com o uso do
                              e             e
    Diagn´stico Hier´rquico Baseado em Modelos (diagn´stico
          o          a                                 o
    hier´rquico), de maneira que:
        a

             Falhas no programa do aluno possam ser encontradas em
             diferentes n´
                         ıveis de abstra¸˜o.
                                        ca
             Fun¸˜es, procedimentos e padr˜es elementares sejam vistos
                co                        o
             como componentes abstratos.
             A comunica¸˜o com o aluno possa ser feita em termos desses
                         ca
             componentes abstratos , i.e., atrav´s de uma linguagem de alto
                                                e
             n´
              ıvel, e n˜o somente atrav´s de linhas do programa.
                       a               e
             O tutor comunique um conjunto menor de hip´teses de falha
                                                       o
             menor a cada itera¸˜o.
                               ca

IME, 07 de maio de 2010                                                           Slide: 11
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro     Avalia¸ao Experimental
                                                               c˜                  Conclus˜es
                                                                                          o

Objetivo


Depura¸˜o Hier´rquica de Programas (HPD)
      ca      a



             Ap´s serem encontradas as hip´teses de falha em um
                o                         o
             determinado n´ de abstra¸˜o, o aluno pode:
                          ıvel         ca
                     fazer a discrimina¸˜o de hip´teses no n´ de abstra¸˜o atual
                                       ca        o          ıvel         ca
                     (fornecendo novas observa¸oes a respeito do comportamento
                                               c˜
                     esperado para o componente abstrato);
                     depurar o programa em um n´ mais detalhado, substituindo
                                                   ıvel
                     um componente abstrato pelos seus componentes internos
                     (refinamento);
                     modificar o programa para tentar corrigir as falhas.




IME, 07 de maio de 2010                                                              Slide: 12
Introdu¸ao
       c˜                 Fundamentos      Dr. Java Pro   Avalia¸ao Experimental
                                                                c˜                 Conclus˜es
                                                                                          o




Organiza¸˜o
        ca




                                        Fundamentos
             Diagn´stico Baseado em Modelos
                  o
             Diagn´stico Hier´rquico Baseado em Modelos
                  o          a




IME, 07 de maio de 2010                                                              Slide: 13
Introdu¸ao
       c˜                 Fundamentos             Dr. Java Pro               Avalia¸ao Experimental
                                                                                   c˜                           Conclus˜es
                                                                                                                       o

MBD


MBD: exemplo
                                     A
                             3                              X
                                               M1
                                                                                         F
                                 B
                                                                         A1                  12
                             2                              Y
                                 C
                             2
                                 D
                                                M2
                             3
                                                                                         G
                                                                          A2                 12
                                                            Z
                                     E
                                                M3
                             3

             ok(C ) indica que o componente C est´ funcionando corretamente e;
                                                 a
             ¬ok(C ) indica que o componente C est´ falho.
                                                  a

                  Modelo comportamental                          Modelo estrutural           Observa¸oes
                                                                                                    c˜
        adder(x)∧ok(x)→add(in1 (x),in2 (x),out1 (x))
                                                                                                  in1 (M1 )=3
        multiplier(x)∧ok(x)→mult(in1(x),in2 (x),out1 (x))
                                                                  out1 (M1 )=in1 (A1 )            in2 (M1 )=2
        multiplier(M1 )
                                                                  out1 (M2 )=in2 (A1 )            in1 (M2 )=2
        multiplier(M2 )
                                                                  out1 (M2 )=in1 (A2 )            in2 (M2 )=3
        multiplier(M3 )
                                                                  out1 (M3 )=in2 (A2 )            in1 (M3 )=2
        adder(A1 )
                                                                                                  in2 (M3 )=3
        adder(A2 )


IME, 07 de maio de 2010                                                                                           Slide: 14
Introdu¸ao
       c˜                  Fundamentos                   Dr. Java Pro                       Avalia¸ao Experimental
                                                                                                  c˜                        Conclus˜es
                                                                                                                                   o

MBD


MBD: exemplo
                 A                                                                     A
      3                                X                                  3                                        X
                           M1                                                                        M1
                                                                     10
                                                                 F                                                              F
             B
                                                   A1                12                                                A1           10
                                                                                  B
      2                                Y                                  2                                        Y
             C                                                                    C
      2
             D
                           M2                                             2                          M2
      3                                                                           D
                                                                 G
                                                                          3                                                         12
                                                                                                                                G
                                                   A2                12                                                A2           10
                                       Z
                                                                                                                    
                 E
                           M3                                                                        M3
                                                                                       E
      3                                                                   3

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

                                                                              Algoritmo de Reiter

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

                                                                              X            @        X          @
                                F deveria ser    G deveria ser
                                12 mas é 10      10 mas é 12


                           Hip´teses de falha:
                              o                               {{M1 },{A1 },{M2 ,M3 },{M2 ,A2 }}
IME, 07 de maio de 2010                                                                                                       Slide: 15
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro      Avalia¸ao Experimental
                                                                c˜                 Conclus˜es
                                                                                          o

HMBD


Diagn´stico Hier´rquico Baseado em Modelo
     o          a


             Hierarchical Model Based Diagnosis (HMBD) [Mozetiˇ, 1991].
                                                              c
             Usada para se obter melhor desempenho que a t´cnica de MBD
                                                              e
             tradicional.
             A descri¸˜o do sistema ´ feita em diferentes n´
                      ca            e                      ıveis de
             abstra¸˜o.
                    ca
                     Utiliza abstra¸oes para representar componentes ou o
                                   c˜
                     comportamento do sistema (abstra¸oes estruturais e
                                                         c˜
                     comportamentais).
             Utiliza a t´cnica de MBD tradicional para encontrar a solu¸˜o a
                         e                                             ca
             cada n´ de abstra¸˜o.
                    ıvel          ca



IME, 07 de maio de 2010                                                              Slide: 16
Introdu¸ao
       c˜                 Fundamentos      Dr. Java Pro              Avalia¸ao Experimental
                                                                           c˜                               Conclus˜es
                                                                                                                   o

HMBD


HMBD: exemplo




                                           Modelos do n´ 1
                                                       ıvel
             Modelo estrutural interno              Modelo comportamental               Modelo estrutural externo
    nand−composition(NandComp,And,Inv )→      nand(C )∧ok(C )→
       in1 (NandComp)=in1 (And)∧                 ∃A,I [ nand−composition(C ,A,I )∧
       in2 (NandComp)=in2 (And)∧                 and−ok(A)∧inv−ok(I ) ]
                                                                                              out1 (NA1 )=in1 (A2 )
       out1 (And)=in1 (Inv)∧                  and−ok(C )≡out1 (C )=1↔
       out1 (NandComp)=out1 (Inv))               in1 (C )=1∧in2 (C )=1
    nand−composition(NA1 ,A1 ,I1 )            nand(NA1 )

IME, 07 de maio de 2010                                                                                        Slide: 17
Introdu¸ao
       c˜                 Fundamentos      Dr. Java Pro   Avalia¸ao Experimental
                                                                c˜                 Conclus˜es
                                                                                          o

HMBD

´
Arvore de Abstra¸˜es
                co




                                        Suposi¸˜o de subsistemas independentes.
                                              ca


IME, 07 de maio de 2010                                                              Slide: 18
Introdu¸ao
       c˜                 Fundamentos         Dr. Java Pro        Avalia¸ao Experimental
                                                                        c˜                        Conclus˜es
                                                                                                         o

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-                 O comportamento de         Assim, o comporta-
      trato AC 1 e os compo-             AC 1 ´ assumido como
                                               e                    mento de C 1, C 2 e C 3
      nentes internos C 1, C 2           correto                    devem ser assumidos
      e C3                                                          como 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
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

HMBD


Algoritmo HMBD

    O algoritmo de Diagn´stico Hier´rquico [Mozetiˇ, 1991], ´
                        o          a              c         e
    composto dos seguintes passos:
        1    Verificar quais observa¸˜es dever˜o ser usadas em cada um dos
                                   co        a
             n´
              ıveis de abstra¸˜o.
                             ca
        2    Para cada n´ i , de l at´ 0, sendo l o n´ mais alto que n˜o
                        ıvel          e               ıvel              a
             esconde todas as conex˜es com observa¸˜es, encontrar o
                                    o                co
             conjunto de hip´teses de falha utilizando algum algoritmo de
                             o
             MBD. Para cada componente abstrato CA n˜o envolvido em
                                                           a
             nenhuma hip´tese de falha no n´ i , usar o Axioma 1 para o
                         o                   ıvel
             n´ i − 1.
              ıvel
        3    Devolver as hip´teses de falhas encontradas no n´ 0.
                            o                                ıvel


IME, 07 de maio de 2010                                                           Slide: 20
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

HMBD


Algoritmo HMBD




IME, 07 de maio de 2010                                                           Slide: 21
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

HMBD


Algoritmo HMBD




IME, 07 de maio de 2010                                                           Slide: 21
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

HMBD


Algoritmo HMBD




IME, 07 de maio de 2010                                                           Slide: 21
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

HMBD


Algoritmo HMBD




IME, 07 de maio de 2010                                                           Slide: 21
Introdu¸ao
       c˜                 Fundamentos      Dr. Java Pro   Avalia¸ao Experimental
                                                                c˜                 Conclus˜es
                                                                                          o




Organiza¸˜o
        ca




                                        Dr. Java Pro
             Caracter´
                     ısticas
             Componente abstrato de programa¸˜o
                                             ca
             Modelo hier´rquico de um programa
                          a
             Algoritmo HPD


IME, 07 de maio de 2010                                                              Slide: 22
Introdu¸ao
       c˜                  Fundamentos     Dr. Java Pro   Avalia¸ao Experimental
                                                                c˜                 Conclus˜es
                                                                                          o

Caracter´
        ısticas


Depura¸˜o Hier´rquica de Programas
      ca      a

     O Hierarchical Program Debugging (HPD) tem as seguintes
     caracter´
             ısticas:
             Extens˜o da t´cnica de MBSD que utiliza o diagn´stico
                    a      e                                o
             hier´rquico baseado em modelos para depurar programas.
                 a
             Permite representar o programa do aluno em diversos n´   ıveis de
             abstra¸˜o, sendo fun¸˜es, procedimentos e padr˜es elementares
                    ca             co                          o
             representados como componentes abstratos.
             Possibilita discriminar hip´teses em v´rios n´
                                        o          a      ıveis de abstra¸˜o,
                                                                         ca
             atrav´s das seguintes funcionalidades:
                  e
                      informar valores para vari´veis
                                                a
                      refinar componente abstrato



 IME, 07 de maio de 2010                                                             Slide: 23
Introdu¸ao
       c˜                 Fundamentos                 Dr. Java Pro                Avalia¸ao Experimental
                                                                                        c˜                 Conclus˜es
                                                                                                                  o

Componente abstratro de programa¸ao
                                c˜


Constru¸˜o de um componente abstrato em programas
       ca
                          a) Modelo com o componente representando
                          o padrão de Seleção Simples

                                               Seleção Simples

                                                      a < m
                                                                    componente
                                                                    de seleção



                          b) Modelo base gerado para o
                          trecho de programa apresentado

                                        condição                 a < m


                                                   Conditional
                              componente
                              de seleção
                                                         ação 1          ação 2   ação n




                          c) Padrão de Seleção Simples
                          aplicado usada em um programa
                                                              if (a < m) {
                                                                ação 1;
                                                                ação 2;
                                                                ...
                                                                ação n;
                                                              }


IME, 07 de maio de 2010                                                                                      Slide: 24
Introdu¸ao
       c˜                 Fundamentos            Dr. Java Pro         Avalia¸ao Experimental
                                                                            c˜                 Conclus˜es
                                                                                                      o

Modelo hier´rquico de um programa
           a


Exemplo 1
    Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um
                                                u
    programa que imprima esses n´meros em ordem crescente. Os casos de teste que
                                  u
    dever˜o ser usados para testar o seu programa solu¸ao s˜o:
         a                                            c˜ a
                                        CT1   Entradas: 3, 5    Sa´
                                                                  ıdas: 3, 5
                                        CT2   Entradas: 5, 3    Sa´
                                                                  ıdas 3, 5
                                        CT3   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;
                           5
                           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);
                           16        }
                           17    }
IME, 07 de maio de 2010                                                                          Slide: 25
Introdu¸ao
       c˜                   Fundamentos                     Dr. Java Pro                    Avalia¸ao Experimental
                                                                                                  c˜                                      Conclus˜es
                                                                                                                                                 o

Modelo hier´rquico de um programa
           a


Modelos do Exemplo 1
       a) Modelo abstrato
                                       a                           menor1    writeInt("menor", menor)

                                           in1     Seleção        out1 in1    Assignment (C6)           out
                                                  Alternativa
                                       b                           maior1    writeInt("maior", maior)
                                                     (CA1)
                                           in2                    out2 in1    Assignment (C7)           out

       b) Modelo base
        a     in1
                          a < b
                                                 Conditional - C1
        b
                      Expr (C0)                   C1-Then
              in2
                                                    a’          maior = a      maior2
                             result
                                                     in1    Assign (C2)        out
                          aux0   condResult

                                                    b’          menor = b      menor3
                                                                                              menor1     writeInt("menor", menor)
                                                     in1    Assign (C3)        out
                                       in1                                                   out1 in1         Assign (C6)           out


                                                                                              maior1     writeInt("maior", maior)

                                       in2
                                                  C1-Else                                                     Assign (C7)
                                                                                             out2 in1                               out
                                                    a’’         maior = b      maior4

                                                     in1    Assign (C4)        out


                                                    b’’         menor = a      menor5
                                                     in1    Assign (C5)        out




IME, 07 de maio de 2010                                                                                                                     Slide: 26
Introdu¸ao
       c˜                 Fundamentos    Dr. Java Pro      Avalia¸ao Experimental
                                                                 c˜                 Conclus˜es
                                                                                           o

Modelo hier´rquico de um programa
           a


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, C 0, C 1)
    Modelo comportamental
      cond(C ) ∧ ok(C ) → ∃E , Cond [
       composit(C , E , Cond)∧
       ok(E ) ∧ ok(Cond) ]
      cond(CA1)
    Modelo estrutural externo
      in1 (CA1) = a
      in2 (CA1) = b
      out1 (CA1) = menor 1
      out2 (CA1) = maior 1

IME, 07 de maio de 2010                                                               Slide: 27
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

Algoritmo HPD


Depura¸˜o Hier´rquica de Programas (HPD)
      ca      a

    O algoritmo proposto utiliza uma abordagem inspirada no trabalho
    de Mozetiˇ (1991), com as seguintes extens˜es:
              c                               o

      A discrimina¸˜o de hip´teses pode acontecer durante o pro-
                    ca        o
      cesso de diagn´stico hier´rquico.
                      o         a
      A falha pode ser encontrada e solucionada em qualquer n´  ıvel
      de abstra¸˜o.
                ca
      N˜o ´ necess´rio refinar todos os componentes abstratos de um
        a e        a
      n´ i para um n´ i − 1, que sejam considerados hip´teses
       ıvel             ıvel                                  o
      de falha.
      Uma vez que um componente abstrato tem seu comporta-
      mento definido como funcionando corretamente, ele n˜o pre-
                                                            a
      cisar´ ser refinado at´ o final do processo de diagn´stico.
           a                e                           o

IME, 07 de maio de 2010                                                           Slide: 28
Introdu¸ao
       c˜                  Fundamentos         Dr. Java Pro        Avalia¸ao Experimental
                                                                         c˜                 Conclus˜es
                                                                                                   o

Algoritmo HPD


Tela principal do Dr. Java Pro
    .




                          Vamos selecionar o Caso de Teste 1 para fazer a depura¸ao.
                                                                                c˜
IME, 07 de maio de 2010                                                                       Slide: 29
Introdu¸ao
       c˜                 Fundamentos     Dr. Java Pro       Avalia¸ao Experimental
                                                                   c˜                   Conclus˜es
                                                                                               o

Algoritmo HPD


Hip´teses de falha no Dr. Java Pro
   o




              Nesse ponto, o aluno deve escolher um caminho de depura¸ao para seguir.
                                                                     c˜


IME, 07 de maio de 2010                                                                   Slide: 30
Introdu¸ao
       c˜                 Fundamentos                 Dr. Java Pro                    Avalia¸ao Experimental
                                                                                            c˜                 Conclus˜es
                                                                                                                      o

Algoritmo HPD


Alguns poss´
           ıveis caminhos de depura¸˜o
                                   ca
                                              {SeleçãoAlternativa}         {15,14}
                                   Informar valores para                         Informar valores
                                   {SeleçãoAlternativa}                          para {15,14}



                                                 menor = 3                     menor = 3
                                                 maior = 5                     maior = 5


                                                          {SeleçãoAlternativa}

                                          Refinamento do
                                          componente abstrato
                                          de SeleçãoAlternativa



                                                                   {6}, {7,8}
                                         Informar                                  Informar
                                         valores                                   valores
                                         para {6}                                  para {7,8}


                                             a<b =        a<b =                 menor=3
                                             Falso        Verdadeiro            maior=5


                                                    {6}                {7,8}


        Vamos continuar a depura¸ao escolhendo a hip´tese de falha SelecaoAlternativa e
                                c˜                   o
                              informar valores para as vari´veis.
                                                           a
IME, 07 de maio de 2010                                                                                          Slide: 31
Introdu¸ao
       c˜                 Fundamentos    Dr. Java Pro         Avalia¸ao Experimental
                                                                    c˜                    Conclus˜es
                                                                                                 o

Algoritmo HPD


Informando valores para uma hip´tese de falha
                               o




       Ap´s informar os valores para as vari´veis, o depurador devolve a hip´tese de falha:
         o                                  a                               o
                                      {SelecaoAlternativa}.
                   Vamos refinar o componente abstrato SelecaoAlternativa.



IME, 07 de maio de 2010                                                                       Slide: 32
Introdu¸ao
       c˜                 Fundamentos      Dr. Java Pro        Avalia¸ao Experimental
                                                                     c˜                     Conclus˜es
                                                                                                   o

Algoritmo HPD


Refinando um componente abstrato




    Ap´s o refinamento do componente abstrato SelecaoAlternativa, o depurador devolve as
      o
                              seguintes hip´teses de falha:
                                           o
                                               {6},{7,8}

             Vamos continuar o processo de depura¸ao informando valores para as vari´veis
                                                 c˜                                 a
                                    relacionadas a hip´tese {6}.
                                                 `    o

IME, 07 de maio de 2010                                                                       Slide: 33
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro       Avalia¸ao Experimental
                                                                 c˜                   Conclus˜es
                                                                                             o

Algoritmo HPD


Informando valores para uma condi¸˜o l´gica
                                 ca o




      Ap´s informar o valor esperado condi¸ao na Linha 6, o depurador devolve somente a
        o                                 c˜
                                    hip´tese de falha: {6}.
                                       o
     Nesse momento, o aluno deveria ser capaz de reconhecer que a falha est´ no operador
                                                                            a
                l´gico da express˜o na Linha 6 e realizar a corre¸ao adequada.
                 o               a                               c˜

IME, 07 de maio de 2010                                                                    Slide: 34
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

Avalia¸ao do Dr. Java Pro
      c˜


Avalia¸˜o do uso da ferramenta
      ca



             A avalia¸˜o foi feita com um grupo de alunos em duas aulas
                      ca
             pr´ticas.
               a
             Os problemas de programa¸˜o foram classificados como:
                                     ca
             Resolva e Modifique.
             A intera¸˜o dos alunos com a ferramenta Dr. Java Pro foram
                      ca
             armazenadas em logs, a partir dos quais foram feitas nossas
             an´lises.
               a




IME, 07 de maio de 2010                                                           Slide: 35
Introdu¸ao
       c˜                 Fundamentos          Dr. Java Pro         Avalia¸ao Experimental
                                                                          c˜                     Conclus˜es
                                                                                                        o

Avalia¸ao do Dr. Java Pro
      c˜


Problema P1: C´lculo do n´mero par
              a          u

      Nome:                       C´lculo do n´mero par
                                    a           u
      Enunciado:                  Dado um n´mero inteiro n, calcule n/2 se n for par ou (n-3)/2,
                                               u
                                  caso contr´rio
                                             a
      Tipo:                       Resolva
                                    Identificador    Entradas Sa´   ıdas
                                    CT1                    10         5
      Casos de teste:               CT2                      1       -1
                                    CT3                      0        0
                                    CT4                    23        10
      Classe:                     CalculoPar
      Justificativa:               Esse problema tem como objetivo introduzir ao aluno a ferramenta
                                  Dr. Java Pro e os conceitos de depura¸ao autom´tica. Nesse
                                                                            c˜         a
                                  primeiro contato, devem ser apresentados: o conceito de casos de
                                  teste e sua aplica¸ao; os conceitos de hip´teses de falha; a tarefa
                                                    c˜                      o
                                  de discrimina¸ao de hip´teses que envolve informar valores para
                                                 c˜        o
                                  vari´veis e refinamento de componentes abstratos.
                                      a




IME, 07 de maio de 2010                                                                            Slide: 36
Introdu¸ao
       c˜                 Fundamentos     Dr. Java Pro           Avalia¸ao Experimental
                                                                       c˜                        Conclus˜es
                                                                                                        o

Avalia¸ao do Dr. Java Pro
      c˜

Programas escritos pelos alunos para solucionar o
Problema P1
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 0)                    if (n % 2 != 0)
            resultado = n/2;                resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = (n-3)/2;            resultado = (n-2)/2;               resultado = n/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1a                             P1b                                P1c
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 1)                 if (n % 2 == 0)                    if (n % 2 == 0)
            resultado = (n-3)/2;            resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1d                             P1e                                P1f
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 1)                    if (n % 2 != 1)
            resultado = (n-3)/2;            resultado = (n-3)/2;               resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1g                             P1h                                P1i

IME, 07 de maio de 2010                                                                            Slide: 37
Introdu¸ao
       c˜                  Fundamentos                   Dr. Java Pro    Avalia¸ao Experimental
                                                                               c˜                   Conclus˜es
                                                                                                           o

Avalia¸ao do Dr. Java Pro
      c˜

Sequˆncia de modifica¸˜es nos programas utilizados pelos
     e                co
alunos durante a solu¸˜o do Problema P1.
                     ca
                          Versão 1                            Versão 2                   Versão 3
                   8
                           P1a                                    P1a                        P1a
                   1                             5
                           P1b                                    P1b                        P1b
                   6
                           P1c       1                            P1c                        P1c
                                                 2
                   2
                           P1d           6                        P1d                        P1d
                                                                                1
                   1
                           P1e                       1            P1e                        P1e
                                             1                              4
                   9
                           P1f                                    P1f                        P1f
                                                         1
                           P1g                   1                P1g                        P1g

                           P1h                                    P1h                        P1h

                           P1i                                    P1i                        P1I

IME, 07 de maio de 2010                                                                               Slide: 38
Introdu¸ao
       c˜                 Fundamentos     Dr. Java Pro           Avalia¸ao Experimental
                                                                       c˜                        Conclus˜es
                                                                                                        o

Avalia¸ao do Dr. Java Pro
      c˜


Sequˆncia de programas: P1a →5 P1c →4 P1g
    e
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 0)                    if (n % 2 != 0)
            resultado = n/2;                resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = (n-3)/2;            resultado = (n-2)/2;               resultado = n/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1a                             P1b                                P1c
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 1)                 if (n % 2 == 0)                    if (n % 2 == 0)
            resultado = (n-3)/2;            resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1d                             P1e                                P1f
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 1)                    if (n % 2 != 1)
            resultado = (n-3)/2;            resultado = (n-3)/2;               resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1g                             P1h                                P1i



IME, 07 de maio de 2010                                                                            Slide: 39
Introdu¸ao
       c˜                 Fundamentos     Dr. Java Pro           Avalia¸ao Experimental
                                                                       c˜                        Conclus˜es
                                                                                                        o

Avalia¸ao do Dr. Java Pro
      c˜


Sequˆncia de programas: P1c →6 P1g
    e
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 0)                    if (n % 2 != 0)
            resultado = n/2;                resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = (n-3)/2;            resultado = (n-2)/2;               resultado = n/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1a                             P1b                                P1c
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 1)                 if (n % 2 == 0)                    if (n % 2 == 0)
            resultado = (n-3)/2;            resultado = n/2;                   resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1d                             P1e                                P1f
        public int calcula(int n) {     public int calcula(int n) {        public int calcula(int n) {
          int resultado = 0;              int resultado = 0;                 int resultado = 0;
          if (n % 2 != 0)                 if (n % 2 == 1)                    if (n % 2 != 1)
            resultado = (n-3)/2;            resultado = (n-3)/2;               resultado = n/2;
          else                            else                               else
            resultado = n/2;                resultado = n/2;                   resultado = (n-3)/2;
          return resultado                return resultado                   return resultado
        }                               }                                  }
                    P1g                             P1h                                P1i



IME, 07 de maio de 2010                                                                            Slide: 40
Introdu¸ao
       c˜                 Fundamentos             Dr. Java Pro             Avalia¸ao Experimental
                                                                                 c˜                 Conclus˜es
                                                                                                           o

Avalia¸ao do Dr. Java Pro
      c˜


Problema P2: C´lculo da Mediana
              a
      Nome:                       C´lculo da mediana
                                   a
      Enunciado:                  Dados 3 n´meros inteiros, determinar um inteiro n, tal que ni ≤
                                              u
                                  n ≤ nj , sendo ni e nj os outros inteiros dados (lidos). Encontre e
                                  corrija os erros no programa fornecido.
      Tipo:                       Modifique
                                   Identificador      Entradas     Sa´
                                                                    ıdas
                                   CT1                  1, 2, 3        2
                                   CT2                  1, 3, 2        2
                                   CT3                  2, 1, 3        2
                                   CT4                  2, 3, 1        2
                                   CT5                  3, 1, 2        2
      Casos de teste:              CT6                  3, 2, 1        2
                                   CT7             9, -100, 10         9
                                   CT8               12, 12, 5        12
                                   CT9               12, 5, 12        12
                                   CT10              5, 12, 12        12
                                   CT11             12, 12, 12        12
                                   CT12                0, -1, 1        0
      Classe:                     Mediana
      Justificativa:               Esse problema tem como objetivo fixar os conceitos de padr˜es de
                                                                                             o
                                  sele¸ao. O problema tamb´m ´ um bom exerc´
                                      c˜                    e e                 ıcio para utilizar a
                                  funcionalidade de refinamento de componentes abstratos do Dr.
                                  Java Pro, visto que cada sele¸ao aninhada ´ representada por um
                                                               c˜           e
                                  componente abstrato.

IME, 07 de maio de 2010                                                                               Slide: 41
Introdu¸ao
       c˜                 Fundamentos                Dr. Java Pro             Avalia¸ao Experimental
                                                                                    c˜                 Conclus˜es
                                                                                                              o

Avalia¸ao do Dr. Java Pro
      c˜


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
Introdu¸ao
       c˜                  Fundamentos        Dr. Java Pro          Avalia¸ao Experimental
                                                                          c˜                      Conclus˜es
                                                                                                         o

Avalia¸ao do Dr. Java Pro
      c˜

Sequˆncia de modifica¸˜es nos programas utilizados pelos
     e                co
alunos durante a solu¸˜o do Problema P2.
                     ca

      P2a                     Modifica¸ao da condi¸ao: troca do operador da linha 16 de “<” para
                                       c˜          c˜
                              “>”.
      P2b                     Modifica¸ao da condi¸ao: troca do operador da linha 17 de “<” para
                                       c˜          c˜
                              “>”.
      P2c                     Invers˜o dos blocos: Linhas 19 e 23.
                                    a
      P2d                     [Programa correto]. Modifica¸ao da condi¸ao: troca do operador “<”
                                                           c˜         c˜
                              da Linha 17 para “>” e troca do operador “>” da linha 26 para “<”.

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

                                                            P2a                          P2a
                                                1
                                                    3       P2b           1              P2b
               7
                     Programa Mediana                2
                                                                     3
                                                            P2c                          P2c
                                                                      2
                                                        1
                                                            P2d                          P2d


IME, 07 de maio de 2010                                                                             Slide: 43
Introdu¸ao
       c˜                 Fundamentos          Dr. Java Pro                Avalia¸ao Experimental
                                                                                 c˜                           Conclus˜es
                                                                                                                     o

Avalia¸ao do Dr. Java Pro
      c˜


Sequˆncia de programas: Mediana →3 P2b →3 P2d
    e


        16      if (a < b) {              16     if (a < b) {                     16    if (a < b) {
        17         if (b < c) {           17        if (b > c) {                  17       if (b > c) {
        18            if (a < c)          18           if (a < c)                 18          if (a < c)
        19               resultado = c;   19              resultado = c;          19             resultado = c;
        20            else                20           else                       20          else
        21               resultado = a;   21              resultado = a;          21             resultado = a;
        22         } else {               22        } else {                      22       } else {
        23            resultado = b;      23           resultado = b;             23          resultado = b;
        24         }                      24        }                             24       }
        25      } else {                  25     } else {                         25    } else {
        26         if (c > b)             26        if (c > b)                    26       if (c < b)
        27            resultado = b;      27           resultado = b;             27          resultado = b;
        28         else if (c > a)        28        else if (c > a)               28       else if (c > a)
        29            resultado = a;      29           resultado = a;             29          resultado = a;
        30         else                   30        else                          30       else
        31            resultado = c;      31           resultado = c;             31          resultado = c;
        32      }                         32     }                                32    }
        33      return resultado;         33     return resultado;                33    return resultado;

               Programa Mediana                        P2b                                     P2d




IME, 07 de maio de 2010                                                                                           Slide: 44
Introdu¸ao
       c˜                 Fundamentos          Dr. Java Pro                Avalia¸ao Experimental
                                                                                 c˜                           Conclus˜es
                                                                                                                     o

Avalia¸ao do Dr. Java Pro
      c˜


Sequˆncia de programas: Mediana →2 P2c →2 P2d
    e


        16      if (a < b) {              16     if (a < b) {                     16    if (a < b) {
        17         if (b < c) {           17        if (b < c) {                  17       if (b > c) {
        18            if (a < c)          18           if (a < c)                 18          if (a < c)
        19               resultado = c;   19              resultado = b;          19             resultado = c;
        20            else                20           else                       20          else
        21               resultado = a;   21              resultado = a;          21             resultado = a;
        22         } else {               22        } else {                      22       } else {
        23            resultado = b;      23           resultado = c;             23          resultado = b;
        24         }                      24        }                             24       }
        25      } else {                  25     } else {                         25    } else {
        26         if (c > b)             26        if (c > b)                    26       if (c < b)
        27            resultado = b;      27           resultado = b;             27          resultado = b;
        28         else if (c > a)        28        else if (c > a)               28       else if (c > a)
        29            resultado = a;      29           resultado = a;             29          resultado = a;
        30         else                   30        else                          30       else
        31            resultado = c;      31           resultado = c;             31          resultado = c;
        32      }                         32     }                                32    }
        33      return resultado;         33     return resultado;                33    return resultado;

               Programa Mediana                        P2c                                     P2d




IME, 07 de maio de 2010                                                                                           Slide: 45
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro    Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Avalia¸ao do Dr. Java Pro
      c˜


Resultados das an´lises experimentais
                 a


             As an´lises sugerem que o uso da ferramenta Dr. Java Pro auxiliou os
                  a
             alunos na detec¸˜o e corre¸˜o dos problemas de programa¸˜o
                             ca        ca                            ca
             propostos, dadas as seguintes evidˆncias:
                                               e
                 1   tradicionalmente, apenas 30% dos alunos dessa disciplina
                     conseguem acertar integralmente uma quest˜o equivalente ao
                                                               a
                     Problema P2 em prova escrita;
                 2   56% dos alunos acertaram os problemas P2 e 90% acertaram o
                     Problema P1.
             Problema P1: dos 30 alunos avaliados, 18 seguiram a orienta¸˜o do
                                                                        ca
             depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja,
                                                 ca
             60% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus
                                                ınio o              ca
             programas, ao inv´s de fazer modifica¸oes aleat´rias.
                              e                   c˜       o



IME, 07 de maio de 2010                                                            Slide: 46
Introdu¸ao
       c˜                 Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                             c˜                 Conclus˜es
                                                                                       o

Avalia¸ao do Dr. Java Pro
      c˜


Resultados das an´lises experimentais
                 a



             Problema P2: dos 16 alunos avaliados, 7 seguiram a orienta¸˜o do
                                                                       ca
             depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja,
                                                 ca
             44% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus
                                                ınio o              ca
             programas.
             Com base na avalia¸˜o feita pelos alunos sobre a ferramenta, a
                                ca
             maioria acredita que a ferramenta ´ ´til para o aprendizado e que ela
                                               eu
             deveria ser usada mais frequentemente em disciplinas de Introdu¸˜o `
                                                                             ca a
             Programa¸˜o.
                       ca




IME, 07 de maio de 2010                                                           Slide: 47
Introdu¸ao
       c˜                  Fundamentos   Dr. Java Pro   Avalia¸ao Experimental
                                                              c˜                 Conclus˜es
                                                                                        o

Conclus˜es e trabalhos futuros
       o


Conclus˜es
       o


             Foi proposta uma extens˜o da t´cnica de diagn´stico hier´rquico para
                                     a     e              o          a
             encontrar falhas em programas representados em diferentes n´
                                                                        ıveis de
             abstra¸˜o, considerando componentes abstratos, tais como: fun¸oes,
                   ca                                                      c˜
             procedimentos e padr˜es elementares.
                                  o
             O diagn´stico hier´rquico fornece uma forma de comunicar aos alunos
                     o         a
             as falhas de um programa em termos de componentes abstratos, isto
             ´, em uma linguagem de alto n´
             e                              ıvel.
             A avalia¸˜o preliminar da ferramenta com um grupo de alunos de
                      ca
             uma disciplina de Introdu¸˜o ` Programa¸˜o mostrou que um n´mero
                                       ca a          ca                     u
             razo´vel de alunos foi capaz de compreender as hip´teses de falha
                  a                                            o
             geradas pelo depurador autom´tico e usar essas informa¸oes para
                                            a                       c˜
             corrigir seus programas.



 IME, 07 de maio de 2010                                                           Slide: 48
Introdu¸ao
       c˜                  Fundamentos    Dr. Java Pro      Avalia¸ao Experimental
                                                                  c˜                 Conclus˜es
                                                                                            o

Conclus˜es e trabalhos futuros
       o


Trabalhos futuros


     Trabalhos futuros referentes `:
                                  a

             Implementa¸˜o
                       ca
                      Recurs˜o, uso de m´ltiplas classes, vetores e matrizes e uso de
                            a           u
                      objetos.
             T´cnicas de MBD
              e
                      Modelo de falhas, explora¸˜o de falhas estruturais, modelagem
                                                ca
                      de vari´veis do sistema e uso de modelos com probabilidades.
                             a
             Avalia¸˜o pedag´gica mais detalhada.
                   ca       o




 IME, 07 de maio de 2010                                                                Slide: 49
Introdu¸ao
       c˜                  Fundamentos      Dr. Java Pro        Avalia¸ao Experimental
                                                                      c˜                       Conclus˜es
                                                                                                      o

Conclus˜es e trabalhos futuros
       o


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).
             Diagn´stico baseado em modelos num sistema tutor inteligente para programa¸ao
                   o                                                                   c˜
             com padr˜es pedag´gicos.
                      o        o
             Disserta¸ao de mestrado, Instituto de Matem´tica e Estat´
                     c˜                                 a            ı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
Introdu¸ao
       c˜                  Fundamentos      Dr. Java Pro        Avalia¸ao Experimental
                                                                      c˜                 Conclus˜es
                                                                                                o

Conclus˜es e trabalhos futuros
       o


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.
             Mozetiˇ, I. (1991).
                     c
             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 cognitive
             approaches to the communication of knowledge.
             Morgan Kaufmann Press.




 IME, 07 de maio de 2010                                                                   Slide: 51

More Related Content

Similar to Depuração automática de programas baseada em modelos

Forma de uso dos computadores em sala de aula
Forma de uso dos computadores em sala de aulaForma de uso dos computadores em sala de aula
Forma de uso dos computadores em sala de aulaLuciene Mozzer
 
Software educativo: Uma ferramenta a ser Explorada!
Software educativo: Uma ferramenta a ser Explorada! Software educativo: Uma ferramenta a ser Explorada!
Software educativo: Uma ferramenta a ser Explorada! Fabiana Zuliani
 
Aula TDE dia 26 de Março
Aula TDE dia 26 de MarçoAula TDE dia 26 de Março
Aula TDE dia 26 de Marçonairafabieli
 
Aveiro requisitos modelagem
Aveiro requisitos modelagemAveiro requisitos modelagem
Aveiro requisitos modelagemAline Cross
 
Software Educativo e a Educação Matemática
Software Educativo e a Educação MatemáticaSoftware Educativo e a Educação Matemática
Software Educativo e a Educação MatemáticaAdriana Sousa
 
Algoritmos e-programacao-apostila-completa
Algoritmos e-programacao-apostila-completaAlgoritmos e-programacao-apostila-completa
Algoritmos e-programacao-apostila-completaAssis Alcantara
 
Avaliacao de Software Educativo
Avaliacao de Software EducativoAvaliacao de Software Educativo
Avaliacao de Software Educativosilvanatsal
 
Wei utilizando pbl no ensino de computação ubíqua
Wei   utilizando pbl no ensino de computação ubíquaWei   utilizando pbl no ensino de computação ubíqua
Wei utilizando pbl no ensino de computação ubíquaElaine Cecília Gatto
 
Tecnologias digitais e educação
Tecnologias  digitais  e educaçãoTecnologias  digitais  e educação
Tecnologias digitais e educaçãosimonefatima
 
Tecnologias digitais e educação
Tecnologias  digitais  e educaçãoTecnologias  digitais  e educação
Tecnologias digitais e educaçãosimonefatima
 
Diário de bordo da aula do dia 26 de março de 2015
Diário de bordo da aula do dia 26 de março de 2015Diário de bordo da aula do dia 26 de março de 2015
Diário de bordo da aula do dia 26 de março de 2015Cleocimara Fortes de Jesus
 
algoritmos e programacao apostila completa
 algoritmos e programacao apostila completa algoritmos e programacao apostila completa
algoritmos e programacao apostila completauna
 
Apostila de algoritmo e programação
Apostila de algoritmo e programaçãoApostila de algoritmo e programação
Apostila de algoritmo e programaçãoThiago Marques
 
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...João Henrique Berssanette
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃOAULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃOGerusa Innocente
 
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃOAULA TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃOGerusa Innocente
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.Gerusa Innocente
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.Gerusa Innocente
 

Similar to Depuração automática de programas baseada em modelos (20)

Forma de uso dos computadores em sala de aula
Forma de uso dos computadores em sala de aulaForma de uso dos computadores em sala de aula
Forma de uso dos computadores em sala de aula
 
Software educativo: Uma ferramenta a ser Explorada!
Software educativo: Uma ferramenta a ser Explorada! Software educativo: Uma ferramenta a ser Explorada!
Software educativo: Uma ferramenta a ser Explorada!
 
Aula TDE dia 26 de Março
Aula TDE dia 26 de MarçoAula TDE dia 26 de Março
Aula TDE dia 26 de Março
 
Aveiro requisitos modelagem
Aveiro requisitos modelagemAveiro requisitos modelagem
Aveiro requisitos modelagem
 
Software Educativo e a Educação Matemática
Software Educativo e a Educação MatemáticaSoftware Educativo e a Educação Matemática
Software Educativo e a Educação Matemática
 
Algoritmos e-programacao-apostila-completa
Algoritmos e-programacao-apostila-completaAlgoritmos e-programacao-apostila-completa
Algoritmos e-programacao-apostila-completa
 
Avaliacao de Software Educativo
Avaliacao de Software EducativoAvaliacao de Software Educativo
Avaliacao de Software Educativo
 
Wei utilizando pbl no ensino de computação ubíqua
Wei   utilizando pbl no ensino de computação ubíquaWei   utilizando pbl no ensino de computação ubíqua
Wei utilizando pbl no ensino de computação ubíqua
 
Tecnologias digitais e educação
Tecnologias  digitais  e educaçãoTecnologias  digitais  e educação
Tecnologias digitais e educação
 
Tecnologias digitais e educação
Tecnologias  digitais  e educaçãoTecnologias  digitais  e educação
Tecnologias digitais e educação
 
Plano de ensino de Softw
Plano de ensino de SoftwPlano de ensino de Softw
Plano de ensino de Softw
 
Aula dia 26/03
Aula dia 26/03Aula dia 26/03
Aula dia 26/03
 
Diário de bordo da aula do dia 26 de março de 2015
Diário de bordo da aula do dia 26 de março de 2015Diário de bordo da aula do dia 26 de março de 2015
Diário de bordo da aula do dia 26 de março de 2015
 
algoritmos e programacao apostila completa
 algoritmos e programacao apostila completa algoritmos e programacao apostila completa
algoritmos e programacao apostila completa
 
Apostila de algoritmo e programação
Apostila de algoritmo e programaçãoApostila de algoritmo e programação
Apostila de algoritmo e programação
 
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...
ENSINO DE PROGRAMAÇÃO DE COMPUTADORES: UMA PROPOSTA DE ABORDAGEM PRÁTICA BASE...
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃOAULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO
 
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃOAULA TECNOLOGIAS DIGITAIS E EDUCAÇÃO
AULA TECNOLOGIAS DIGITAIS E EDUCAÇÃO
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
 
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
AULA DE TECNOLOGIAS DIGITAIS E EDUCAÇÃO.
 

Recently uploaded

PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 

Recently uploaded (20)

PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 

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

  • 1. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Depura¸˜o autom´tica de programas baseada em ca a modelos: uma abordagem hier´rquica para aux´ a ılio ao aprendizado de programa¸˜o ca Wellington R. Pinheiro Orientadora: Profa . Dra . Leliane Nunes de Barros Departamento de Ciˆncia da Computa¸ao e c˜ Instituto de Matem´tica e Estat´ a ıstica - Universidade S˜o Paulo a {wrp}@ime.usp.br 07 de Maio de 2010 IME, 07 de maio de 2010 Slide: 1
  • 2. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Sistema Tutor Inteligente para Programa¸˜o ca Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de o e Inteligˆncia Artificial. e Um ITS para programa¸˜o deve ser capaz de: ca propor problemas de programa¸˜o que promovam o aprendizado ca de um determinado aluno; detectar os poss´ ıveis erros de programa¸˜o do aluno ca (diagn´stico do programa do aluno); o comunicar as falhas ao aluno com a expectativa que ele aprenda durante esse processo; construir o modelo do aluno (representa¸˜o de seu ca conhecimento) com base no resultado do diagn´stico de o problemas. IME, 07 de maio de 2010 Slide: 2
  • 3. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Sistema Tutor Inteligente para Programa¸˜o ca Sistema Tutor Inteligente [Wenger, 1987] (ITS - Intelligent Tutoring System): ferramenta de aprendizado eletrˆnico que usa t´cnicas de o e Inteligˆncia Artificial. e Um ITS para programa¸˜o deve ser capaz de: ca propor problemas de programa¸˜o que promovam o aprendizado ca de um determinado aluno; detectar os poss´ ıveis erros de programa¸˜o do aluno ca (diagn´stico do programa do aluno); o comunicar as falhas ao aluno com a expectativa que ele aprenda durante esse processo; construir o modelo do aluno (representa¸˜o de seu ca conhecimento) com base no resultado do diagn´stico de o problemas. IME, 07 de maio de 2010 Slide: 2
  • 4. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Sistema Tutor Inteligente para Programa¸˜o: exemplos ca PROUST [Johnson and Soloway, 1984] PROUST ´ o principal sistema encontrado na literatura capaz e de detectar erros de l´gica de programa¸˜o. o ca ProPAT: Tutor de Padr˜es Elementares [Delgado, 2005]. o Utiliza diagn´stico baseado em modelo para fazer depura¸˜o de o ca programas (MBSD). Funciona para um subconjunto de instru¸˜es da linguagem C. co Utiliza um plugin Eclipse como ambiente de programa¸˜o e ca interface de comunica¸˜o com o estudante. ca Permite que o aluno programe usando padr˜es elementares de o programa¸˜o. ca IME, 07 de maio de 2010 Slide: 3
  • 5. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Diagn´stico do Programa do Aluno o PROUST [Johnson and Soloway, 1984] ProPAT [Delgado, 2005] Caracter´ ısticas tenta construir o modelo do utiliza diagn´stico baseado em o estudante reconhecendo planos de modelo para detectar falhas no programa¸ao e metas (inten¸oes) no c˜ c˜ programa do aluno; programa do aluno; n˜o requer uma biblioteca de planos a os planos de programa¸ao e as c˜ e metas previamente definidos para metas para um determinado a solu¸ao. c˜ conjunto de problemas s˜o a armazenados em uma biblioteca. Limita¸oes c˜ os planos da biblioteca podem n˜oa as falhas s˜o comunicadas ao aluno a cobrir todas as poss´ ıveis solu¸oes c˜ em termos de linhas do programa, o para um determinado problema; que fornece pouca ou nenhuma se nenhum plano for encontrado informa¸ao para que o aluno c˜ n˜o ´ poss´ detectar as falhas no a e ıvel identifique os erros no programa. programa do aluno. IME, 07 de maio de 2010 Slide: 4
  • 6. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Diagn´stico Baseado em Modelo o ´ E uma t´cnica de Inteligˆncia e e Artificial usada para encontrar componentes falhos em sistemas f´ısicos. Raciocina sobre modelos que descrevem o comportamento correto dos sistemas. Envolve trˆs e subtarefas [Benjamins, 1993]: detec¸˜o de sintomas, ca gera¸˜o de hip´teses e ca o discrimina¸˜o de hip´teses. ca o IME, 07 de maio de 2010 Slide: 5
  • 7. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Depura¸˜o de Programas Baseada em Modelo ca Model Based Software Debugging (MBSD) [Mayer et al., 2002]. Ideia b´sica: fazer uma a simula¸˜o passo a passo do ca programa apontando as instru¸˜es que justificam as co discrepˆncias observadas, a i.e., a diferen¸as entre as c sa´ıdas do programa e as sa´ıdas esperadas (sintomas). Pode ser usada por um ITS para tentar entender as diferen¸as entre as inten¸˜es c co do aluno e seu programa. IME, 07 de maio de 2010 Slide: 6
  • 8. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conceitos Gerais Depura¸˜o de Programas Baseada em Modelo ca IME, 07 de maio de 2010 Slide: 7
  • 9. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Motiva¸ao c˜ Exemplo 1 Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um u programa que imprima esses n´meros em ordem crescente. Os casos de teste que u dever˜o ser usados para testar o seu programa solu¸ao s˜o: a c˜ a CT1 Entradas: 3, 5 Sa´ ıdas: 3, 5 CT2 Entradas: 5, 3 Sa´ ıdas 3, 5 CT3 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; 5 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); 16 } 17 } IME, 07 de maio de 2010 Slide: 8
  • 10. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Motiva¸ao c˜ Exemplo 1 Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um u programa que imprima esses n´meros em ordem crescente. Os casos de teste que u dever˜o ser usados para testar o seu programa solu¸ao s˜o: a c˜ a CT1 Entradas: 3, 5 Sa´ ıdas: 3, 5 CT2 Entradas: 5, 3 Sa´ ıdas 3, 5 CT3 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; 5 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); 16 } 17 } IME, 07 de maio de 2010 Slide: 8
  • 11. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Motiva¸ao c˜ Exemplo 1 Executando um depurador autom´tico de programas a 6 if (a < b) { baseado em modelos, para o programa do exemplo, 7 maior = a; com o caso de teste CT1: 8 menor = b; 9 } else { Entradas: 3, 5 Sa´ ıdas: 3, 5 10 maior = b; 11 menor = a; s˜o obtidas as seguintes hip´teses de falha: a o 12 } 13 14 writeInt(”o menor numero e’”, menor); {6}, {7, 8}, {14, 15}, {8, 15}, {7, 14} 15 writeInt(”o maior numero e’”, maior); Hip´tese o Corre¸˜o ca {6} trocar o operador “>” pelo operador “<” na Linha 6 {7, 8} inverter os valores nas atribui¸oes das Linhas 7 e 8 c˜ {14, 15} inverter somente os nomes das vari´veis impressas nas Linhas 14 e a 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
  • 12. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Motiva¸ao c˜ Exemplo 1 Executando um depurador autom´tico de programas a 6 if (a < b) { baseado em modelos, para o programa do exemplo, 7 maior = a; com o caso de teste CT1: 8 menor = b; 9 } else { Entradas: 3, 5 Sa´ ıdas: 3, 5 10 maior = b; 11 menor = a; s˜o obtidas as seguintes hip´teses de falha: a o 12 } 13 14 writeInt(”o menor numero e’”, menor); {6}, {7, 8}, {14, 15}, {8, 15}, {7, 14} 15 writeInt(”o maior numero e’”, maior); Hip´tese o Corre¸˜o ca trocar o operador “>” pelo operador “<” na Linha 6 {6} {7, 8} inverter os valores nas atribui¸oes das Linhas 7 e 8 c˜ inverter somente os nomes das vari´veis impressas nas Linhas 14 e a {14, 15} 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
  • 13. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Motiva¸ao c˜ Limita¸˜es do MBSD para o Aprendizado de Programa¸˜o co ca Mesmo para um programa pequeno, podem haver muitas hip´teses de falha para serem comunicadas (e discriminadas) ao o aluno, podendo deix´-lo cansado e confuso. a Informar as linhas do programa possivelmente falhas pode n˜o a ser suficiente para que um aluno iniciante consiga corrigir o seu programa. Um aprendiz de programa¸˜o n˜o tem conhecimento suficiente ca a para fazer predi¸˜es a respeito do comportamento do programa co e fornecer os valores esperados para as vari´veis do programa, a durante a discrimina¸˜o de hip´teses. ca o IME, 07 de maio de 2010 Slide: 10
  • 14. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Objetivo Depura¸˜o Hier´rquica de Programas (HPD) ca a O objetivo desse trabalho ´ estender a t´cnica MBSD com o uso do e e Diagn´stico Hier´rquico Baseado em Modelos (diagn´stico o a o hier´rquico), de maneira que: a Falhas no programa do aluno possam ser encontradas em diferentes n´ ıveis de abstra¸˜o. ca Fun¸˜es, procedimentos e padr˜es elementares sejam vistos co o como componentes abstratos. A comunica¸˜o com o aluno possa ser feita em termos desses ca componentes abstratos , i.e., atrav´s de uma linguagem de alto e n´ ıvel, e n˜o somente atrav´s de linhas do programa. a e O tutor comunique um conjunto menor de hip´teses de falha o menor a cada itera¸˜o. ca IME, 07 de maio de 2010 Slide: 11
  • 15. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Objetivo Depura¸˜o Hier´rquica de Programas (HPD) ca a Ap´s serem encontradas as hip´teses de falha em um o o determinado n´ de abstra¸˜o, o aluno pode: ıvel ca fazer a discrimina¸˜o de hip´teses no n´ de abstra¸˜o atual ca o ıvel ca (fornecendo novas observa¸oes a respeito do comportamento c˜ esperado para o componente abstrato); depurar o programa em um n´ mais detalhado, substituindo ıvel um componente abstrato pelos seus componentes internos (refinamento); modificar o programa para tentar corrigir as falhas. IME, 07 de maio de 2010 Slide: 12
  • 16. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Organiza¸˜o ca Fundamentos Diagn´stico Baseado em Modelos o Diagn´stico Hier´rquico Baseado em Modelos o a IME, 07 de maio de 2010 Slide: 13
  • 17. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o MBD MBD: exemplo A 3 X M1 F B A1 12 2 Y C 2 D M2 3 G A2 12 Z E M3 3 ok(C ) indica que o componente C est´ funcionando corretamente e; a ¬ok(C ) indica que o componente C est´ falho. a Modelo comportamental Modelo estrutural Observa¸oes c˜ adder(x)∧ok(x)→add(in1 (x),in2 (x),out1 (x)) in1 (M1 )=3 multiplier(x)∧ok(x)→mult(in1(x),in2 (x),out1 (x)) out1 (M1 )=in1 (A1 ) in2 (M1 )=2 multiplier(M1 ) out1 (M2 )=in2 (A1 ) in1 (M2 )=2 multiplier(M2 ) out1 (M2 )=in1 (A2 ) in2 (M2 )=3 multiplier(M3 ) out1 (M3 )=in2 (A2 ) in1 (M3 )=2 adder(A1 ) in2 (M3 )=3 adder(A2 ) IME, 07 de maio de 2010 Slide: 14
  • 18. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o MBD MBD: exemplo A A 3 X 3 X M1 M1 10 F F B A1 12 A1 10 B 2 Y 2 Y C C 2 D M2 2 M2 3 D G 3 12 G A2 12 A2 10 Z   E M3 M3 E 3 3 {{M1 },{M2 },{A1 }} {{M1 },{M3 },{A1 },{A2 }} Algoritmo de Reiter {M1, M2, A1} M3 M1 M2 A1 M1 M2 A1 @ {M1, M3, A1, A2} @ A2 M1 M3 A1 A2 X @ X @ F deveria ser G deveria ser 12 mas é 10 10 mas é 12 Hip´teses de falha: o {{M1 },{A1 },{M2 ,M3 },{M2 ,A2 }} IME, 07 de maio de 2010 Slide: 15
  • 19. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Diagn´stico Hier´rquico Baseado em Modelo o a Hierarchical Model Based Diagnosis (HMBD) [Mozetiˇ, 1991]. c Usada para se obter melhor desempenho que a t´cnica de MBD e tradicional. A descri¸˜o do sistema ´ feita em diferentes n´ ca e ıveis de abstra¸˜o. ca Utiliza abstra¸oes para representar componentes ou o c˜ comportamento do sistema (abstra¸oes estruturais e c˜ comportamentais). Utiliza a t´cnica de MBD tradicional para encontrar a solu¸˜o a e ca cada n´ de abstra¸˜o. ıvel ca IME, 07 de maio de 2010 Slide: 16
  • 20. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD HMBD: exemplo Modelos do n´ 1 ıvel Modelo estrutural interno Modelo comportamental Modelo estrutural externo nand−composition(NandComp,And,Inv )→ nand(C )∧ok(C )→ in1 (NandComp)=in1 (And)∧ ∃A,I [ nand−composition(C ,A,I )∧ in2 (NandComp)=in2 (And)∧ and−ok(A)∧inv−ok(I ) ] out1 (NA1 )=in1 (A2 ) out1 (And)=in1 (Inv)∧ and−ok(C )≡out1 (C )=1↔ out1 (NandComp)=out1 (Inv)) in1 (C )=1∧in2 (C )=1 nand−composition(NA1 ,A1 ,I1 ) nand(NA1 ) IME, 07 de maio de 2010 Slide: 17
  • 21. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD ´ Arvore de Abstra¸˜es co Suposi¸˜o de subsistemas independentes. ca IME, 07 de maio de 2010 Slide: 18
  • 22. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o 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- O comportamento de Assim, o comporta- trato AC 1 e os compo- AC 1 ´ assumido como e mento de C 1, C 2 e C 3 nentes internos C 1, C 2 correto devem ser assumidos e C3 como 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
  • 23. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Algoritmo HMBD O algoritmo de Diagn´stico Hier´rquico [Mozetiˇ, 1991], ´ o a c e composto dos seguintes passos: 1 Verificar quais observa¸˜es dever˜o ser usadas em cada um dos co a n´ ıveis de abstra¸˜o. ca 2 Para cada n´ i , de l at´ 0, sendo l o n´ mais alto que n˜o ıvel e ıvel a esconde todas as conex˜es com observa¸˜es, encontrar o o co conjunto de hip´teses de falha utilizando algum algoritmo de o MBD. Para cada componente abstrato CA n˜o envolvido em a nenhuma hip´tese de falha no n´ i , usar o Axioma 1 para o o ıvel n´ i − 1. ıvel 3 Devolver as hip´teses de falhas encontradas no n´ 0. o ıvel IME, 07 de maio de 2010 Slide: 20
  • 24. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Algoritmo HMBD IME, 07 de maio de 2010 Slide: 21
  • 25. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Algoritmo HMBD IME, 07 de maio de 2010 Slide: 21
  • 26. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Algoritmo HMBD IME, 07 de maio de 2010 Slide: 21
  • 27. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o HMBD Algoritmo HMBD IME, 07 de maio de 2010 Slide: 21
  • 28. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Organiza¸˜o ca Dr. Java Pro Caracter´ ısticas Componente abstrato de programa¸˜o ca Modelo hier´rquico de um programa a Algoritmo HPD IME, 07 de maio de 2010 Slide: 22
  • 29. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Caracter´ ısticas Depura¸˜o Hier´rquica de Programas ca a O Hierarchical Program Debugging (HPD) tem as seguintes caracter´ ısticas: Extens˜o da t´cnica de MBSD que utiliza o diagn´stico a e o hier´rquico baseado em modelos para depurar programas. a Permite representar o programa do aluno em diversos n´ ıveis de abstra¸˜o, sendo fun¸˜es, procedimentos e padr˜es elementares ca co o representados como componentes abstratos. Possibilita discriminar hip´teses em v´rios n´ o a ıveis de abstra¸˜o, ca atrav´s das seguintes funcionalidades: e informar valores para vari´veis a refinar componente abstrato IME, 07 de maio de 2010 Slide: 23
  • 30. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Componente abstratro de programa¸ao c˜ Constru¸˜o de um componente abstrato em programas ca a) Modelo com o componente representando o padrão de Seleção Simples Seleção Simples a < m componente de seleção b) Modelo base gerado para o trecho de programa apresentado condição a < m Conditional componente de seleção ação 1 ação 2 ação n c) Padrão de Seleção Simples aplicado usada em um programa if (a < m) { ação 1; ação 2; ... ação n; } IME, 07 de maio de 2010 Slide: 24
  • 31. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Modelo hier´rquico de um programa a Exemplo 1 Problema da ordem crescente: Dados dois n´meros inteiros, a e b, construir um u programa que imprima esses n´meros em ordem crescente. Os casos de teste que u dever˜o ser usados para testar o seu programa solu¸ao s˜o: a c˜ a CT1 Entradas: 3, 5 Sa´ ıdas: 3, 5 CT2 Entradas: 5, 3 Sa´ ıdas 3, 5 CT3 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; 5 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); 16 } 17 } IME, 07 de maio de 2010 Slide: 25
  • 32. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Modelo hier´rquico de um programa a Modelos do Exemplo 1 a) Modelo abstrato a menor1 writeInt("menor", menor) in1 Seleção out1 in1 Assignment (C6) out Alternativa b maior1 writeInt("maior", maior) (CA1) in2 out2 in1 Assignment (C7) out b) Modelo base a in1 a < b Conditional - C1 b Expr (C0) C1-Then in2 a’ maior = a maior2 result in1 Assign (C2) out aux0 condResult b’ menor = b menor3 menor1 writeInt("menor", menor) in1 Assign (C3) out in1 out1 in1 Assign (C6) out maior1 writeInt("maior", maior) in2 C1-Else Assign (C7) out2 in1 out a’’ maior = b maior4 in1 Assign (C4) out b’’ menor = a menor5 in1 Assign (C5) out IME, 07 de maio de 2010 Slide: 26
  • 33. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Modelo hier´rquico de um programa a 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, C 0, C 1) Modelo comportamental cond(C ) ∧ ok(C ) → ∃E , Cond [ composit(C , E , Cond)∧ ok(E ) ∧ ok(Cond) ] cond(CA1) Modelo estrutural externo in1 (CA1) = a in2 (CA1) = b out1 (CA1) = menor 1 out2 (CA1) = maior 1 IME, 07 de maio de 2010 Slide: 27
  • 34. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Depura¸˜o Hier´rquica de Programas (HPD) ca a O algoritmo proposto utiliza uma abordagem inspirada no trabalho de Mozetiˇ (1991), com as seguintes extens˜es: c o A discrimina¸˜o de hip´teses pode acontecer durante o pro- ca o cesso de diagn´stico hier´rquico. o a A falha pode ser encontrada e solucionada em qualquer n´ ıvel de abstra¸˜o. ca N˜o ´ necess´rio refinar todos os componentes abstratos de um a e a n´ i para um n´ i − 1, que sejam considerados hip´teses ıvel ıvel o de falha. Uma vez que um componente abstrato tem seu comporta- mento definido como funcionando corretamente, ele n˜o pre- a cisar´ ser refinado at´ o final do processo de diagn´stico. a e o IME, 07 de maio de 2010 Slide: 28
  • 35. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Tela principal do Dr. Java Pro . Vamos selecionar o Caso de Teste 1 para fazer a depura¸ao. c˜ IME, 07 de maio de 2010 Slide: 29
  • 36. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Hip´teses de falha no Dr. Java Pro o Nesse ponto, o aluno deve escolher um caminho de depura¸ao para seguir. c˜ IME, 07 de maio de 2010 Slide: 30
  • 37. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Alguns poss´ ıveis caminhos de depura¸˜o ca {SeleçãoAlternativa} {15,14} Informar valores para Informar valores {SeleçãoAlternativa} para {15,14} menor = 3 menor = 3 maior = 5 maior = 5 {SeleçãoAlternativa} Refinamento do componente abstrato de SeleçãoAlternativa {6}, {7,8} Informar Informar valores valores para {6} para {7,8} a<b = a<b = menor=3 Falso Verdadeiro maior=5 {6} {7,8} Vamos continuar a depura¸ao escolhendo a hip´tese de falha SelecaoAlternativa e c˜ o informar valores para as vari´veis. a IME, 07 de maio de 2010 Slide: 31
  • 38. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Informando valores para uma hip´tese de falha o Ap´s informar os valores para as vari´veis, o depurador devolve a hip´tese de falha: o a o {SelecaoAlternativa}. Vamos refinar o componente abstrato SelecaoAlternativa. IME, 07 de maio de 2010 Slide: 32
  • 39. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Refinando um componente abstrato Ap´s o refinamento do componente abstrato SelecaoAlternativa, o depurador devolve as o seguintes hip´teses de falha: o {6},{7,8} Vamos continuar o processo de depura¸ao informando valores para as vari´veis c˜ a relacionadas a hip´tese {6}. ` o IME, 07 de maio de 2010 Slide: 33
  • 40. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Algoritmo HPD Informando valores para uma condi¸˜o l´gica ca o Ap´s informar o valor esperado condi¸ao na Linha 6, o depurador devolve somente a o c˜ hip´tese de falha: {6}. o Nesse momento, o aluno deveria ser capaz de reconhecer que a falha est´ no operador a l´gico da express˜o na Linha 6 e realizar a corre¸ao adequada. o a c˜ IME, 07 de maio de 2010 Slide: 34
  • 41. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Avalia¸˜o do uso da ferramenta ca A avalia¸˜o foi feita com um grupo de alunos em duas aulas ca pr´ticas. a Os problemas de programa¸˜o foram classificados como: ca Resolva e Modifique. A intera¸˜o dos alunos com a ferramenta Dr. Java Pro foram ca armazenadas em logs, a partir dos quais foram feitas nossas an´lises. a IME, 07 de maio de 2010 Slide: 35
  • 42. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Problema P1: C´lculo do n´mero par a u Nome: C´lculo do n´mero par a u Enunciado: Dado um n´mero inteiro n, calcule n/2 se n for par ou (n-3)/2, u caso contr´rio a Tipo: Resolva Identificador Entradas Sa´ ıdas CT1 10 5 Casos de teste: CT2 1 -1 CT3 0 0 CT4 23 10 Classe: CalculoPar Justificativa: Esse problema tem como objetivo introduzir ao aluno a ferramenta Dr. Java Pro e os conceitos de depura¸ao autom´tica. Nesse c˜ a primeiro contato, devem ser apresentados: o conceito de casos de teste e sua aplica¸ao; os conceitos de hip´teses de falha; a tarefa c˜ o de discrimina¸ao de hip´teses que envolve informar valores para c˜ o vari´veis e refinamento de componentes abstratos. a IME, 07 de maio de 2010 Slide: 36
  • 43. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Programas escritos pelos alunos para solucionar o Problema P1 public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0) resultado = n/2; resultado = n/2; resultado = n/2; else else else resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2; return resultado return resultado return resultado } } } P1a P1b P1c public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0) resultado = (n-3)/2; resultado = n/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1d P1e P1f public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1) resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1g P1h P1i IME, 07 de maio de 2010 Slide: 37
  • 44. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de modifica¸˜es nos programas utilizados pelos e co alunos durante a solu¸˜o do Problema P1. ca Versão 1 Versão 2 Versão 3 8 P1a P1a P1a 1 5 P1b P1b P1b 6 P1c 1 P1c P1c 2 2 P1d 6 P1d P1d 1 1 P1e 1 P1e P1e 1 4 9 P1f P1f P1f 1 P1g 1 P1g P1g P1h P1h P1h P1i P1i P1I IME, 07 de maio de 2010 Slide: 38
  • 45. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de programas: P1a →5 P1c →4 P1g e public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0) resultado = n/2; resultado = n/2; resultado = n/2; else else else resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2; return resultado return resultado return resultado } } } P1a P1b P1c public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0) resultado = (n-3)/2; resultado = n/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1d P1e P1f public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1) resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1g P1h P1i IME, 07 de maio de 2010 Slide: 39
  • 46. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de programas: P1c →6 P1g e public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 0) if (n % 2 != 0) resultado = n/2; resultado = n/2; resultado = n/2; else else else resultado = (n-3)/2; resultado = (n-2)/2; resultado = n/2; return resultado return resultado return resultado } } } P1a P1b P1c public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 1) if (n % 2 == 0) if (n % 2 == 0) resultado = (n-3)/2; resultado = n/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1d P1e P1f public int calcula(int n) { public int calcula(int n) { public int calcula(int n) { int resultado = 0; int resultado = 0; int resultado = 0; if (n % 2 != 0) if (n % 2 == 1) if (n % 2 != 1) resultado = (n-3)/2; resultado = (n-3)/2; resultado = n/2; else else else resultado = n/2; resultado = n/2; resultado = (n-3)/2; return resultado return resultado return resultado } } } P1g P1h P1i IME, 07 de maio de 2010 Slide: 40
  • 47. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Problema P2: C´lculo da Mediana a Nome: C´lculo da mediana a Enunciado: Dados 3 n´meros inteiros, determinar um inteiro n, tal que ni ≤ u n ≤ nj , sendo ni e nj os outros inteiros dados (lidos). Encontre e corrija os erros no programa fornecido. Tipo: Modifique Identificador Entradas Sa´ ıdas CT1 1, 2, 3 2 CT2 1, 3, 2 2 CT3 2, 1, 3 2 CT4 2, 3, 1 2 CT5 3, 1, 2 2 Casos de teste: CT6 3, 2, 1 2 CT7 9, -100, 10 9 CT8 12, 12, 5 12 CT9 12, 5, 12 12 CT10 5, 12, 12 12 CT11 12, 12, 12 12 CT12 0, -1, 1 0 Classe: Mediana Justificativa: Esse problema tem como objetivo fixar os conceitos de padr˜es de o sele¸ao. O problema tamb´m ´ um bom exerc´ c˜ e e ıcio para utilizar a funcionalidade de refinamento de componentes abstratos do Dr. Java Pro, visto que cada sele¸ao aninhada ´ representada por um c˜ e componente abstrato. IME, 07 de maio de 2010 Slide: 41
  • 48. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ 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
  • 49. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de modifica¸˜es nos programas utilizados pelos e co alunos durante a solu¸˜o do Problema P2. ca P2a Modifica¸ao da condi¸ao: troca do operador da linha 16 de “<” para c˜ c˜ “>”. P2b Modifica¸ao da condi¸ao: troca do operador da linha 17 de “<” para c˜ c˜ “>”. P2c Invers˜o dos blocos: Linhas 19 e 23. a P2d [Programa correto]. Modifica¸ao da condi¸ao: troca do operador “<” c˜ c˜ da Linha 17 para “>” e troca do operador “>” da linha 26 para “<”. Versão 1 Versão 2 Versão 3 P2a P2a 1 3 P2b 1 P2b 7 Programa Mediana 2 3 P2c P2c 2 1 P2d P2d IME, 07 de maio de 2010 Slide: 43
  • 50. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de programas: Mediana →3 P2b →3 P2d e 16 if (a < b) { 16 if (a < b) { 16 if (a < b) { 17 if (b < c) { 17 if (b > c) { 17 if (b > c) { 18 if (a < c) 18 if (a < c) 18 if (a < c) 19 resultado = c; 19 resultado = c; 19 resultado = c; 20 else 20 else 20 else 21 resultado = a; 21 resultado = a; 21 resultado = a; 22 } else { 22 } else { 22 } else { 23 resultado = b; 23 resultado = b; 23 resultado = b; 24 } 24 } 24 } 25 } else { 25 } else { 25 } else { 26 if (c > b) 26 if (c > b) 26 if (c < b) 27 resultado = b; 27 resultado = b; 27 resultado = b; 28 else if (c > a) 28 else if (c > a) 28 else if (c > a) 29 resultado = a; 29 resultado = a; 29 resultado = a; 30 else 30 else 30 else 31 resultado = c; 31 resultado = c; 31 resultado = c; 32 } 32 } 32 } 33 return resultado; 33 return resultado; 33 return resultado; Programa Mediana P2b P2d IME, 07 de maio de 2010 Slide: 44
  • 51. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Sequˆncia de programas: Mediana →2 P2c →2 P2d e 16 if (a < b) { 16 if (a < b) { 16 if (a < b) { 17 if (b < c) { 17 if (b < c) { 17 if (b > c) { 18 if (a < c) 18 if (a < c) 18 if (a < c) 19 resultado = c; 19 resultado = b; 19 resultado = c; 20 else 20 else 20 else 21 resultado = a; 21 resultado = a; 21 resultado = a; 22 } else { 22 } else { 22 } else { 23 resultado = b; 23 resultado = c; 23 resultado = b; 24 } 24 } 24 } 25 } else { 25 } else { 25 } else { 26 if (c > b) 26 if (c > b) 26 if (c < b) 27 resultado = b; 27 resultado = b; 27 resultado = b; 28 else if (c > a) 28 else if (c > a) 28 else if (c > a) 29 resultado = a; 29 resultado = a; 29 resultado = a; 30 else 30 else 30 else 31 resultado = c; 31 resultado = c; 31 resultado = c; 32 } 32 } 32 } 33 return resultado; 33 return resultado; 33 return resultado; Programa Mediana P2c P2d IME, 07 de maio de 2010 Slide: 45
  • 52. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Resultados das an´lises experimentais a As an´lises sugerem que o uso da ferramenta Dr. Java Pro auxiliou os a alunos na detec¸˜o e corre¸˜o dos problemas de programa¸˜o ca ca ca propostos, dadas as seguintes evidˆncias: e 1 tradicionalmente, apenas 30% dos alunos dessa disciplina conseguem acertar integralmente uma quest˜o equivalente ao a Problema P2 em prova escrita; 2 56% dos alunos acertaram os problemas P2 e 90% acertaram o Problema P1. Problema P1: dos 30 alunos avaliados, 18 seguiram a orienta¸˜o do ca depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja, ca 60% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus ınio o ca programas, ao inv´s de fazer modifica¸oes aleat´rias. e c˜ o IME, 07 de maio de 2010 Slide: 46
  • 53. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Avalia¸ao do Dr. Java Pro c˜ Resultados das an´lises experimentais a Problema P2: dos 16 alunos avaliados, 7 seguiram a orienta¸˜o do ca depurador, obtendo sucesso na corre¸˜o de seus programas, ou seja, ca 44% dos alunos seguiram um racioc´ l´gico na depura¸˜o de seus ınio o ca programas. Com base na avalia¸˜o feita pelos alunos sobre a ferramenta, a ca maioria acredita que a ferramenta ´ ´til para o aprendizado e que ela eu deveria ser usada mais frequentemente em disciplinas de Introdu¸˜o ` ca a Programa¸˜o. ca IME, 07 de maio de 2010 Slide: 47
  • 54. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conclus˜es e trabalhos futuros o Conclus˜es o Foi proposta uma extens˜o da t´cnica de diagn´stico hier´rquico para a e o a encontrar falhas em programas representados em diferentes n´ ıveis de abstra¸˜o, considerando componentes abstratos, tais como: fun¸oes, ca c˜ procedimentos e padr˜es elementares. o O diagn´stico hier´rquico fornece uma forma de comunicar aos alunos o a as falhas de um programa em termos de componentes abstratos, isto ´, em uma linguagem de alto n´ e ıvel. A avalia¸˜o preliminar da ferramenta com um grupo de alunos de ca uma disciplina de Introdu¸˜o ` Programa¸˜o mostrou que um n´mero ca a ca u razo´vel de alunos foi capaz de compreender as hip´teses de falha a o geradas pelo depurador autom´tico e usar essas informa¸oes para a c˜ corrigir seus programas. IME, 07 de maio de 2010 Slide: 48
  • 55. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conclus˜es e trabalhos futuros o Trabalhos futuros Trabalhos futuros referentes `: a Implementa¸˜o ca Recurs˜o, uso de m´ltiplas classes, vetores e matrizes e uso de a u objetos. T´cnicas de MBD e Modelo de falhas, explora¸˜o de falhas estruturais, modelagem ca de vari´veis do sistema e uso de modelos com probabilidades. a Avalia¸˜o pedag´gica mais detalhada. ca o IME, 07 de maio de 2010 Slide: 49
  • 56. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conclus˜es e trabalhos futuros o 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). Diagn´stico baseado em modelos num sistema tutor inteligente para programa¸ao o c˜ com padr˜es pedag´gicos. o o Disserta¸ao de mestrado, Instituto de Matem´tica e Estat´ c˜ a ı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
  • 57. Introdu¸ao c˜ Fundamentos Dr. Java Pro Avalia¸ao Experimental c˜ Conclus˜es o Conclus˜es e trabalhos futuros o 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. Mozetiˇ, I. (1991). c 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 cognitive approaches to the communication of knowledge. Morgan Kaufmann Press. IME, 07 de maio de 2010 Slide: 51