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 ici. Chaque example est disponible sous 3 formats:
- .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)
- .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
- .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
- 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 ;
- Vous pouvez notamment l'utiliser sur votre travail réalisé dans le premier mini-projet [cf. rapport]
- 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.
Travail à rendre
- Un rapport qui présente [50%]
- l'architecture logicielle de CCG avant les modifications;
- la nouvelle architecture logicielle de votre version de LMU;
- les modifications à faire pour inverser les dépendances et permettre de remplacer KPassa par une autre bibliothèque de Graphe;
- la nouvelle architecture logicielle de CCG.
- Un ensemble d'architectures contenant [40%]
- les sources de votre version de LMU;
- les binaires (feature à déployer dans Eclipse Mars Modeling) de LMU;
- les sources de votre version de CCG;
- les binaires (feature à déploer dans Eclipse Mars Modeling) de votre version de CCG.
- Respect de consignes [10%]
Il est recommandé d'utiliser un site web ou site de dépôt de code pour la livraison.
Modalités de livraison
- Ce travail doit être fait dans un groupe de 2 ou 3 étudiants, de préférence le même que pour le premier mini-projet.
- Envoyer un email à Frederic.Mallet@unice.fr
- Objet de l'email: [RIMEL] CCG - Nom1 Nom2 [Nom3]
- Contenu: Noms et prénoms des membres du groupe, URL du site sur lequel on peut trouver le travail à rendre et le rapport
- Date limite: 19 février 2016 à minuit.