20080610 04 - Explorations visuelles de programmes

Explorations Visuelles
de
Programmes
Françoise Balmas
LIASD – Université Paris 8
Club Qualimétrie – Paris – 10 juin 2008
• Expériences de visualisation
• Contexte de recherche
– Exploration de programmes
– Mise au point des outils
• 3 Exemples
• Harald Wertz, Rim Chaabane
Foo / Series
• 33 LOC (Lisp), 8 fonctions
• Enseignement
• Compréhension de programmes
• Très difficile
(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))))
+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
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
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
(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
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
Sudoku
• 3300 LOC (Tcl/Tk), 110 procédures
• Enseignement
• Maintenance, refactoring
• « Legacy » car développé en plusieurs
étapes, parties presque redondantes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
20080610 04 - Explorations visuelles de programmes
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
1 of 22

Recommended

ALF 11 - WebAssembly by
ALF 11 - WebAssemblyALF 11 - WebAssembly
ALF 11 - WebAssemblyAlexandru Radovici
275 views43 slides
ALF 10 - Convention d'appel de fonction by
ALF 10 - Convention d'appel de fonctionALF 10 - Convention d'appel de fonction
ALF 10 - Convention d'appel de fonctionAlexandru Radovici
624 views20 slides
ALF 8 - Generation de code by
ALF 8 - Generation de codeALF 8 - Generation de code
ALF 8 - Generation de codeAlexandru Radovici
243 views36 slides
Tp1 awk by
Tp1 awkTp1 awk
Tp1 awkHunter Hisoka
228 views2 slides
Enib cours c.a.i. web - séance #5 - groovy by
Enib   cours c.a.i. web - séance #5 - groovyEnib   cours c.a.i. web - séance #5 - groovy
Enib cours c.a.i. web - séance #5 - groovyHoracio Gonzalez
472 views30 slides
Ch09 21 by
Ch09 21Ch09 21
Ch09 21schibu20
159 views3 slides

More Related Content

What's hot

Need it help in Operating System quiz(computer language) and in some course by
Need it help in Operating System quiz(computer language) and in some courseNeed it help in Operating System quiz(computer language) and in some course
Need it help in Operating System quiz(computer language) and in some courseDouria Zohbi
51 views3 slides
Calcul vent selon l'eurocode en excel by
Calcul vent selon l'eurocode en excelCalcul vent selon l'eurocode en excel
Calcul vent selon l'eurocode en excelHani sami joga
980 views12 slides
Exercice dérivabilité by
Exercice dérivabilitéExercice dérivabilité
Exercice dérivabilitéYessin Abdelhedi
488 views2 slides
12 quelques prédicats prédéfinis de swi by
12  quelques prédicats prédéfinis de swi12  quelques prédicats prédéfinis de swi
12 quelques prédicats prédéfinis de swiSiham Rim Boudaoud
745 views2 slides
OpenLayers 3 by
OpenLayers 3OpenLayers 3
OpenLayers 3Camptocamp
1.3K views57 slides
Exercice primitives by
Exercice primitivesExercice primitives
Exercice primitivesYessin Abdelhedi
706 views3 slides

What's hot(8)

Need it help in Operating System quiz(computer language) and in some course by Douria Zohbi
Need it help in Operating System quiz(computer language) and in some courseNeed it help in Operating System quiz(computer language) and in some course
Need it help in Operating System quiz(computer language) and in some course
Douria Zohbi51 views
Calcul vent selon l'eurocode en excel by Hani sami joga
Calcul vent selon l'eurocode en excelCalcul vent selon l'eurocode en excel
Calcul vent selon l'eurocode en excel
Hani sami joga980 views
OpenLayers 3 by Camptocamp
OpenLayers 3OpenLayers 3
OpenLayers 3
Camptocamp1.3K views
INVERSE TRIGONOMETRIC FUNCTIONS by sumanmathews
INVERSE TRIGONOMETRIC FUNCTIONSINVERSE TRIGONOMETRIC FUNCTIONS
INVERSE TRIGONOMETRIC FUNCTIONS
sumanmathews101 views

Similar to 20080610 04 - Explorations visuelles de programmes

Introduction Clojure - Geneva JUG - Octobre 2012 by
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Pablo Tamarit
813 views22 slides
Programmation Fonctionnelle by
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation FonctionnelleFrançois Sarradin
2.3K views62 slides
ALF 11 - Diagramme de flux de contrôle et WebAssembly by
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssemblyAlexandru Radovici
694 views43 slides
Programmation fonctionnelle by
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelleGeeks Anonymes
1.2K views46 slides
Compte rendu jess by
Compte rendu jessCompte rendu jess
Compte rendu jessMarwa Marwouta
427 views17 slides
SdE 2 - Langage C, Allocation de memoire by
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireAlexandru Radovici
493 views70 slides

Similar to 20080610 04 - Explorations visuelles de programmes(20)

Introduction Clojure - Geneva JUG - Octobre 2012 by Pablo Tamarit
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
Pablo Tamarit813 views
ALF 11 - Diagramme de flux de contrôle et WebAssembly by Alexandru Radovici
ALF 11 - Diagramme de flux de contrôle et WebAssemblyALF 11 - Diagramme de flux de contrôle et WebAssembly
ALF 11 - Diagramme de flux de contrôle et WebAssembly
Alexandru Radovici694 views
Programmation fonctionnelle by Geeks Anonymes
Programmation fonctionnelleProgrammation fonctionnelle
Programmation fonctionnelle
Geeks Anonymes1.2K views
traitement-du-signal-avance.pptx by NouzhaBoukouba1
traitement-du-signal-avance.pptxtraitement-du-signal-avance.pptx
traitement-du-signal-avance.pptx
NouzhaBoukouba1100 views
Lattice Boltzmann sur architecture multicoeurs vectorielle - Une approche de ... by Joel Falcou
Lattice Boltzmann sur architecture multicoeurs vectorielle - Une approche de ...Lattice Boltzmann sur architecture multicoeurs vectorielle - Une approche de ...
Lattice Boltzmann sur architecture multicoeurs vectorielle - Une approche de ...
Joel Falcou772 views
TP3: Comportement Temps Réel de l'Agent Perception by Said Benaissa
TP3: Comportement Temps Réel de l'Agent PerceptionTP3: Comportement Temps Réel de l'Agent Perception
TP3: Comportement Temps Réel de l'Agent Perception
Said Benaissa210 views
Inverse trigonometric functions ii by sumanmathews
Inverse trigonometric functions ii Inverse trigonometric functions ii
Inverse trigonometric functions ii
sumanmathews112 views
Traitement des données massives (INF442, A4) by Frank Nielsen
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)
Frank Nielsen178 views
Distances sémantiques dans des applications utilisant le web sémantique by Fabien Gandon
Distances sémantiques dans des applications utilisant le web sémantiqueDistances sémantiques dans des applications utilisant le web sémantique
Distances sémantiques dans des applications utilisant le web sémantique
Fabien Gandon1.9K views
Théorie de l'information by RichardTerrat1
Théorie de l'informationThéorie de l'information
Théorie de l'information
RichardTerrat11.4K views

More from LeClubQualiteLogicielle

20171122 03 - Les tests de performance en environnement DevOps by
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOpsLeClubQualiteLogicielle
2.3K views30 slides
20171122 04 - Automatisation - formation et certifications by
20171122 04 - Automatisation - formation et certifications20171122 04 - Automatisation - formation et certifications
20171122 04 - Automatisation - formation et certificationsLeClubQualiteLogicielle
764 views37 slides
20171122 01 - REX : Intégration et déploiement continu chez Engie by
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
1.1K views30 slides
20171122 02 - Engage developers to use better coding practices by
20171122 02 - Engage developers to use better coding practices20171122 02 - Engage developers to use better coding practices
20171122 02 - Engage developers to use better coding practicesLeClubQualiteLogicielle
269 views21 slides
20171122 - Accueil Club Qualité Logicielle by
20171122 - Accueil Club Qualité Logicielle 20171122 - Accueil Club Qualité Logicielle
20171122 - Accueil Club Qualité Logicielle LeClubQualiteLogicielle
415 views12 slides
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des... by
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...LeClubQualiteLogicielle
460 views23 slides

More from LeClubQualiteLogicielle(20)

20171122 03 - Les tests de performance en environnement DevOps by LeClubQualiteLogicielle
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
20171122 01 - REX : Intégration et déploiement continu chez Engie by LeClubQualiteLogicielle
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des... by LeClubQualiteLogicielle
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20151013 - Crédit Mutuel ARKEA : mise en place d'une traçabilité outillée des...
20140410 - Cartographie applicative multi-technologies et analyse d'impact by LeClubQualiteLogicielle
20140410 - Cartographie applicative multi-technologies et analyse d'impact20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Cartographie applicative multi-technologies et analyse d'impact
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie by LeClubQualiteLogicielle
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Implémentation de squash TM-TA - Architecture et méthodologie
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu... by LeClubQualiteLogicielle
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20140410 - Gestion des identités, traçabilité des accés - Analogie avec la qu...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a... by LeClubQualiteLogicielle
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 02 - TMMI, un modèle pour rentabiliser une organisation de test et a...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e... by LeClubQualiteLogicielle
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 06 - Travaux de recherche sur la corrélation entre qualité du code e...
20130113 04 - Tests d'integration et virtualisation - La vision IBM by LeClubQualiteLogicielle
20130113 04 - Tests d'integration et virtualisation - La vision IBM20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130113 04 - Tests d'integration et virtualisation - La vision IBM
20130523 06 - The mathematics the way algorithms think / the mathematics the ... by LeClubQualiteLogicielle
20130523 06 - The mathematics the way algorithms think / the mathematics the ...20130523 06 - The mathematics the way algorithms think / the mathematics the ...
20130523 06 - The mathematics the way algorithms think / the mathematics the ...

20080610 04 - Explorations visuelles de programmes

  • 1. Explorations Visuelles de Programmes Françoise Balmas LIASD – Université Paris 8 Club Qualimétrie – Paris – 10 juin 2008
  • 2. • Expériences de visualisation • Contexte de recherche – Exploration de programmes – Mise au point des outils • 3 Exemples • Harald Wertz, Rim Chaabane
  • 3. Foo / Series • 33 LOC (Lisp), 8 fonctions • Enseignement • Compréhension de programmes • Très difficile
  • 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. +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
  • 10. 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
  • 11. (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
  • 16. Sudoku • 3300 LOC (Tcl/Tk), 110 procédures • Enseignement • Maintenance, refactoring • « Legacy » car développé en plusieurs étapes, parties presque redondantes
  • 22. 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