Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20080610 04 - Explorations visuelles de programmes

39 views

Published on

Explorations visuelles de programmes

Published in: Software
  • Be the first to comment

  • Be the first to like this

20080610 04 - Explorations visuelles de programmes

  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

×