Rétro-Ingénierie d'architectures de plugins

De $1

Table des matières
  1. 1. Première étape
    1. 1.1. Travail
  2. 2. Deuxième étape
    1. 2.1. Travail

Version de 22:49, 3 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Le premier mini-projet avait pour but de vous familiariser avec des architectures simples avec du code Java "plat" ou "standalone". Ce deuxième mini-projet a pour but d'expérimenter la rétro-ingénierie d'un projet plus complexe fait d'un ensemble de plugins Eclipse. 

Première étape

Nous avons vu lors du premier mini-projet que LMU ou VisualParadigm présentaient les dépendances entre classes. Ce niveau est trop bas pour comprendre l'architecture d'un programme. Un niveau plus adéquate est le niveau de dépendances entre unités de déploiement. Une unité de déploiement est une ressource qui est déployée par le développeur vers son client et qui peut (ou non) dépendre d'autres ressources de déploiement. 

Exemples d'unités de déploiement:

  • Un fichier .jar: dépendances dans le manifest.mf;
  • Un plugin Eclipse: dépendances dans le plugin.xml ou à travers l'API IPlugin;
  • Un bundle OSGI. 

Travail

Modifier LMU pour introduire la notion d'unité de déploiement ainsi que de dépendance entre unités de déploiement.

Modifier votre plugin pour afficher les dépendances entre les unités de déploiement.

  • Lors de l'analyse d'un .jar, utiliser le manifest.mf;
  • Lors de l'analyse d'un plugin, utiliser le plugin.xml (plugin pas déployé) ou l'API IPlugin si le plugin est déployé.

Note:

  • On pourra choisir d'afficher toutes les dépendances ou seulement les dépendances à une distance donnée. Exemple: si A dépend de B, B dépend de C, et C dépend de D. D est à une distance de 3 depuis A.
  • Pour exécuter toutes les sources fournies vous devez installer XText et Graphiti. Cependant, le travail demandé ne nécessite pas de faire fonctionner ces extensions. On vous demande en revanche de maintenir cette fonctionnalité dans la version finale.

Deuxième étape

Le code suivant: CCG source contient une application qui s'appelle CCG (Clock Causality Graph), un ensemble de plugins. Un CCG est un graphe qui contient des noeuds (Node) et deux types d'arcs (Arc et Counter). 

CCG est disponible:

  • comme un ensemble de plugins Eclipse: CCG feature (à déposer dans le répertoire dropins)
  • et comme une application Java standalone: CCG jar 
    • une fois l'archive dézippée, exécuter le script run.bat
    • Tapez la commande help pour avoir la liste des commandes disponibles
    • Des examples de fichiers lus par CCG sont disponibles iciChaque example est disponible sous 3 formats:
      1. .ccg: un format .xml seulement lisible en utilisant un plugin Eclipse (disponible dans les sources de CCG)
        • Ce format nécessite l'installation d'un plugin Eclipse nommé EMF (déjà disponible dans la version Modeling de Eclipse)
      2. .ccgxt: un formal textuel lisible par l'application Standalone et par un autre plugin Eclipse (disponible dans les sources CCG)
        • Ce format nécessite l'installation d'un plugin Eclipse nommé XText 
      3. .diagram: un formal .xml seulement lisible en utilisant un plugin Eclipse (disponible dans les source de CCG)
        • Ce format nécessite l'installation d'un plugin Eclipse nommé Graphiti 
    • Essayer de charger (commande readText) un fichier d'exemple, de l'imprimer (commande print), et la commande unsafeCounters.

La commande unsafeCounters utilise le logiciel KPassa pour analyser les cycles dans le graphe CCG et décider si oui ou non le graphe possède seulement des arcs contenus dans un cycle. Un plugin KPassa est livré avec les sources de CCG.

Travail

  1. Utiliser votre travail de la première étape pour analyser le code de CCG et les dépendances, établir notamment les dépendances sur KPassa ;
  2. Utiliser les techniques d'inversion de dépendances présentées dans le cours pour pouvoir remplacer KPassa par une autre bibliothèque d'analyse de graphe. On veut pouvoir utiliser une ou l'autre des bibliothèques selon la disponibilité, les licences, les performances.
    • Modifier CCG pour pouvoir utiliser soit KPassa, soit GRPH

Note: A la place de GRPH vous pouvez utiliser à la place n'importe quelle autre bibliothèque de graphe de votre choix.