Successfully reported this slideshow.

20080610 04 - Explorations visuelles de programmes

0

Share

Upcoming SlideShare
ALF 11 - WebAssembly
ALF 11 - WebAssembly
Loading in …3
×
1 of 22
1 of 22

20080610 04 - Explorations visuelles de programmes

0

Share

Download to read offline

Description

Explorations visuelles de programmes

Transcript

  1. 1. Explorations Visuelles de Programmes Françoise Balmas LIASD – Université Paris 8 Club Qualimétrie – Paris – 10 juin 2008
  2. 2. • Expériences de visualisation • Contexte de recherche – Exploration de programmes – Mise au point des outils • 3 Exemples • Harald Wertz, Rim Chaabane
  3. 3. Foo / Series • 33 LOC (Lisp), 8 fonctions • Enseignement • Compréhension de programmes • Très difficile
  4. 4. (define (foo s) (foo2 1 (nc s) s)) (define (foo2 p m s) (unless (> p m) (rec p nil s p) (foo2 (+ p 1) m s) )) (define (rec x sol s p) (if (= x 0) (im s sol p) (rec (- x 1) (cons (kamm (nthcdr (- x 1) s) p) sol) s p))) (define (kamm s p) (when (number? (nth p s)) (kamm2 (- (nth p s) (car s)) (nthcdr p s) p) )) (define (kamm2 inc s p) (cond ((null? (and s (number? (nth p s)))) inc) ((= inc (- (nth p s) (car s))) (kamm2 inc (nthcdr p s) p)) (t nil))) (define (nc l) (if (and l (number? (car l))) (+ 1 (nc (cdr l))) 0)) (define (im l sol p) (unless (member nil sol) (im2 (length sol) (length l) sol p l))) (define (im2 lsol ll sol p l) (set-cdr! (last sol) sol) (printf "--> : %on" (calcule 0 sol lsol ll p l)) ) (define (calcule n sol lsol ll p l) (unless (>= n ll) (cons (+ (nth (% n lsol) l) (* (/ n p) (car sol))) (calcule (+ n 1) (cdr sol) lsol ll p l))))
  5. 5. +1 +1 (foo '(1 2 1 3 X X)) +0 +0 Succes (0 1) pas 2 --> (1 2 1 3 1 4) -1 (foo '(1 2 1 3 1 4 X X X X)) +2 +3 Succes (0 1) pas 2 --> (1 2 1 3 1 4 1 5 1 6) Succes (2 -1 3) pas 3 --> (1 2 1 3 1 4 5 0 7 7) (foo '(1 2 4 8 16 X X)) Echec
  6. 6. Robot virtuel • 1600 LOC (Lisp), 143 fonctions, 17 macros, 18 escape • Enseignement • Vérification • Complexe car développé à plusieurs périodes, parties réutilisées
  7. 7. (createTable 4 4) (creObjet 'a 'boite 'taille '(2 2 3)) (creObjet 'b 'cube 'taille 2) (creObjet 'c 'block 'taille '(1 2)) (creObjet 'd 'block 'taille '(2 1)) (mapc '(e f g h) 'creObjet) (showTable) la Table : a a b b a a b b c c d e f g d h (pose-sur 'a 'b) (pose-sur 'd 'c) (pose-sur 'd 'Table) (pose-dans 'c 'a) (pose-dans 'd 'a) (showSur) a sur b c dans a d dans a (showTable) la Table : nil nil b b nil nil b b nil nil nil e f g nil h
  8. 8. Sudoku • 3300 LOC (Tcl/Tk), 110 procédures • Enseignement • Maintenance, refactoring • « Legacy » car développé en plusieurs étapes, parties presque redondantes
  9. 9. Expériences d’exploration visuelle • Pistes pour – Observer des comportements inattendus – Détecter des bugs – Suggérer des optimisations – … • A valider avec d’autres approches

Description

Explorations visuelles de programmes

Transcript

  1. 1. Explorations Visuelles de Programmes Françoise Balmas LIASD – Université Paris 8 Club Qualimétrie – Paris – 10 juin 2008
  2. 2. • Expériences de visualisation • Contexte de recherche – Exploration de programmes – Mise au point des outils • 3 Exemples • Harald Wertz, Rim Chaabane
  3. 3. Foo / Series • 33 LOC (Lisp), 8 fonctions • Enseignement • Compréhension de programmes • Très difficile
  4. 4. (define (foo s) (foo2 1 (nc s) s)) (define (foo2 p m s) (unless (> p m) (rec p nil s p) (foo2 (+ p 1) m s) )) (define (rec x sol s p) (if (= x 0) (im s sol p) (rec (- x 1) (cons (kamm (nthcdr (- x 1) s) p) sol) s p))) (define (kamm s p) (when (number? (nth p s)) (kamm2 (- (nth p s) (car s)) (nthcdr p s) p) )) (define (kamm2 inc s p) (cond ((null? (and s (number? (nth p s)))) inc) ((= inc (- (nth p s) (car s))) (kamm2 inc (nthcdr p s) p)) (t nil))) (define (nc l) (if (and l (number? (car l))) (+ 1 (nc (cdr l))) 0)) (define (im l sol p) (unless (member nil sol) (im2 (length sol) (length l) sol p l))) (define (im2 lsol ll sol p l) (set-cdr! (last sol) sol) (printf "--> : %on" (calcule 0 sol lsol ll p l)) ) (define (calcule n sol lsol ll p l) (unless (>= n ll) (cons (+ (nth (% n lsol) l) (* (/ n p) (car sol))) (calcule (+ n 1) (cdr sol) lsol ll p l))))
  5. 5. +1 +1 (foo '(1 2 1 3 X X)) +0 +0 Succes (0 1) pas 2 --> (1 2 1 3 1 4) -1 (foo '(1 2 1 3 1 4 X X X X)) +2 +3 Succes (0 1) pas 2 --> (1 2 1 3 1 4 1 5 1 6) Succes (2 -1 3) pas 3 --> (1 2 1 3 1 4 5 0 7 7) (foo '(1 2 4 8 16 X X)) Echec
  6. 6. Robot virtuel • 1600 LOC (Lisp), 143 fonctions, 17 macros, 18 escape • Enseignement • Vérification • Complexe car développé à plusieurs périodes, parties réutilisées
  7. 7. (createTable 4 4) (creObjet 'a 'boite 'taille '(2 2 3)) (creObjet 'b 'cube 'taille 2) (creObjet 'c 'block 'taille '(1 2)) (creObjet 'd 'block 'taille '(2 1)) (mapc '(e f g h) 'creObjet) (showTable) la Table : a a b b a a b b c c d e f g d h (pose-sur 'a 'b) (pose-sur 'd 'c) (pose-sur 'd 'Table) (pose-dans 'c 'a) (pose-dans 'd 'a) (showSur) a sur b c dans a d dans a (showTable) la Table : nil nil b b nil nil b b nil nil nil e f g nil h
  8. 8. Sudoku • 3300 LOC (Tcl/Tk), 110 procédures • Enseignement • Maintenance, refactoring • « Legacy » car développé en plusieurs étapes, parties presque redondantes
  9. 9. Expériences d’exploration visuelle • Pistes pour – Observer des comportements inattendus – Détecter des bugs – Suggérer des optimisations – … • A valider avec d’autres approches

More Related Content

More from LeClubQualiteLogicielle

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

×