Mardi gras du 2 juin 2010 : CSIM2

983 views
904 views

Published on

présentation de l'outil de réappropriation de code legacy

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
983
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Mardi gras du 2 juin 2010 : CSIM2

  1. 1. Mardi Gras – CSIM2 – 2 juin 2010 Pietro Descombes
  2. 2. Plan <ul><li>CSIM2 en bref
  3. 3. Utilisation de l'outil
  4. 4. Fonctionnement
  5. 5. Approfondissement
  6. 6. Questions
  7. 7. Demos </li></ul>
  8. 8. En bref – CSIM2 QESACO? CSIM2   ? partenariat Moyen Analyse dynamique du code (exécution) Analyse dynamique du code (exécution) moyen se réapproprier le code oublié but appariement entre les éléments recherchés et les composants du code source résultat Compréhension de Systèmes d'Information Basé sur la Modélisation Métier concours pour trouver un nom plus sexy signification technologies
  9. 9. En bref – Partenariat Jérôme Layat Julien Repond Prof. Philippe Dugerdil Pietro Descombes
  10. 10. En bref – Problématique : la réappropriation ~ 50-90% du coût de maintenance <ul>[source: Standish group] </ul>
  11. 11. En bref – Problématique : fossé entre le code et le domaine métier <ul>la technique comble le fossé entre le code et le domaine conceptuel </ul>
  12. 12. En bref – Appariement (résultat) Diagramme de robustesse ( ≈ MVC) Code source if ( IsTrue ) { doSomething(); }
  13. 13. Utilisation – Edition des diagrammes Cas d'utilisation (use-case) Diagramme de robustesse ( ≈ MVC) étape description 1 clic sur le bouton 2 calcul 3 affichage du résultat
  14. 14. Utilisation – Instrumentation du code class C1 { méthode1() { // corps } méthode2() { // corps } } class C1 { méthode1() { sondeDébut(C1.class, &quot; méthode1 &quot;); // corps sondeFin(C1.class, &quot; méthode1 &quot;) ; } méthode2() { sondeDébut(C1.class, &quot; méthode2 &quot;); // corps sondeFin(C1.class, &quot; méthode2 &quot;); } } instrumentation sondeDébut(Class c, String méthode) { // génération de la trace } sondeFin(Class c, String méthode) { // génération de la trace } appels trace 12123 entrée C1.méthode1() 12255 entrée C1.méthode2() 12325 sortie C1.méthode2() 13003 sortie C1.méthode1() exécution
  15. 15. Utilisation – Exécution de l'application ( + traçage) trace étape description 1 clic sur le bouton 2 calcul 3 affichage du résultat
  16. 16. Fonctionnement – Ressources ↔ analyseurs cas d'util. scénario robustesse code source trace
  17. 17. Fonctionnement – Ressources -> faits les faits de base : fait de base fait généré depuis un analyseur (une ressource) analyseurs de ressources fait fait fait fait (de base)
  18. 18. Fonctionnement – Trouver un fait de base ? Exemple... oui analyseur de code source étend JFrame? ClassHasStereotype designClass = C stereotype = boundary certitude = élevée class C extends JFrame { // contenu } Code source
  19. 19. Fonctionnement – Inférence fait inféré fait fait fait fait moteur d'inférence règle
  20. 20. Fonctionnement – Règles robustnessClassIsIn Step(R, i) classIsIn Step(C, i) & joint Occurrence (R, C) Règle &quot; ex &quot; Règle &quot;topo&quot; match (C1, B1) robustnessCollaborate (B1, B2) & clases Collaborate (C1, C2) & joint Occurrence (C2, B2) ... & si match (C2, B2) alors
  21. 21. Approfondissement – Création de nouveaux faits règle 1 fait f2 fait f1 formule de certitude Σ1 fait f5 fait f5 fait f3 fait f2 règle 2 formule de certitude Σ2 formule de fusion Σ 3 fait f5 cor-réla-tion
  22. 22. Approfondissement – Appariement temporel
  23. 23. Approfondissement – Appariement structurel
  24. 24. Suite <ul><li>Éditeur de cas d'utilisations
  25. 25. Cas concret </li></ul><ul>Un nom prononçable et parlant ! </ul><ul>aussi par mail : [email_address] </ul>Démos Questions ? Apéro ! Concours

×