r267 - in trunk/src/site/doc/rapport: . img
Author: gcrieloue Date: 2010-03-24 15:35:10 +0100 (Wed, 24 Mar 2010) New Revision: 267 Log: Mise ?\195?\160 jour du rapport (mise ?\195?\160 jour de la partie conception, sommaire ajout?\195?\169, typos), ajout d'une capture d'?\195?\169cran. Added: trunk/src/site/doc/rapport/img/screenshot_view_content.png Modified: trunk/src/site/doc/rapport/rapport.rst Added: trunk/src/site/doc/rapport/img/screenshot_view_content.png =================================================================== (Binary files differ) Property changes on: trunk/src/site/doc/rapport/img/screenshot_view_content.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/site/doc/rapport/rapport.rst =================================================================== --- trunk/src/site/doc/rapport/rapport.rst 2010-03-21 00:37:51 UTC (rev 266) +++ trunk/src/site/doc/rapport/rapport.rst 2010-03-24 14:35:10 UTC (rev 267) @@ -11,7 +11,43 @@ :Version: 1.0 of 9/03/10 :Dedication: To Code Lutin & Université de Nantes +Remerciements +============= + +Avant tout chose, nous tenons à remercier toute l'équipe de Code Lutin qui nous +a apporté une aide précieuse à l'élaboration du projet, en nous indiquant les +démarches générales à entreprendre. Nous tenons aussi, tout particulièrement, à +remercier Mr Poussin qui nous a guidé jusqu'ici. + +Nous remercions également l'Université de Nantes et l'entreprise Code Lutin pour +avoir proposé ce sujet intéressant sur lequel nous avons pu progresser. + +Sommaire +======== + 1. Spécifications : préliminaires +* 1.1 Le demandeur +* 1.2 La demande +* 1.3 Objectifs +* 1.4 Outils +* 1.5 Chiffrage et organisation +2. Spécifications : analyse +* 2.1 Analyse des technologies +* 2.1.1 Maven +* 2.1.2 Jaxx +* 2.1.3 Jmx +* 2.2 Analyse du domaine +* 2.3 Description des cas d'utilisation +* 2.3.1 Modèle du domaine +* 2.3.2 Architecture globale (Packages) +3. Conception +* 3.1 pluginloader +* 3.2 plugins +* 3.3 ui +* 3.4 Initialisation et lancement de MSM + + +1. Spécifications : préliminaires ================================= 1.1 Le demandeur @@ -75,21 +111,21 @@ Voyons voir ce qui se cache derrière le nom de code MSM (Map Storage Manager) : -Il se trouve que Facebook, Amazone etc. utilisent depuis déjà un moment +Il se trouve que Facebook, Amazon, etc. utilisent depuis déjà un moment une spécification d'un système de gestion de base de données innovant. Il s'agit de la spécification BigTable créée par Google Corp. -Parmis les implémentations existantes de cette spécification, on trouve +Parmi les implémentations existantes de cette spécification, on trouve diverses bases telle que Hbase, Cassandra (Facebook)... Le concept est relativement simple puisqu'il repose sur un principe <clé, valeur> de type HashMap. -Il existe dors et déjà des systèmes en ligne de commande. Toutefois, Code +Il existe d'ores et déjà des systèmes en ligne de commande. Toutefois, Code Lutin souhaite réaliser une application graphique permettant de visualiser et manipuler les données au sein de telles bases, principalement HBase. De plus, nous devons prévoir le fait que des implémentations de BigTable naissent régulièrement et qu'un utilisateur expert de MSM pourrait -souhaiter utiliser une nouvelle base. Il s'agit donc d'une architecture -à plugins sous-jacente. +souhaiter utiliser une nouvelle base. Ce qui justifie le fait de concevoir une +architecture à plugins. 1.3 Objectifs ------------- @@ -106,15 +142,15 @@ * SVN : Dépôt de Code Lutin prévu à cet effet - Architecture Maven comportant un pom.xml natif à Code Lutin - permettant l'utilisation d'artifact JAXX notamment. + permettant l'utilisation d'artefact JAXX notamment. * Intégration continue : Hudson - Site répertoriant un ensemble de statistiques sur chaque projet et effectuant compilation et jeux de tests à chaque validation sur - le dépôt de manière automatique. + le dépôt de manière automatique, ainsi qu'un contrôle de qualité du code. -* Communication : Maillist de Nuiton pour le développement, l'utilisation et le commit. +* Communication : Mailing list de Nuiton pour le développement, l'utilisation et le commit. 1.5 Chiffrage et organisation ----------------------------- @@ -135,8 +171,8 @@ * 18/02/2010 * 04/03/2010 -Permettant à chaque fois de faire le point sur le travail réalisé et le -travail à faire. +Ces derniers permettent à chaque fois de faire le point sur le travail réalisé +et le travail à faire. Un compte rendu symbolisé par les rectangles noirs en fin de semaine suit chaque réunion. @@ -152,10 +188,10 @@ Maven est connu d'un bon nombre de développeurs. Il s'agit d'un outil de développement permettant de faciliter la compilation, la documentation, -les tests et surtout les dépendances récupérées automatiquement sur -l'Internet. +les tests et surtout la gestion de dépendances qui sont récupérées +automatiquement sur Internet. Le fichier de description d'un projet Maven est un pom.xml. -Code Lutin dispose de leur propre pom.xml permettant d'aller récupérer +Code Lutin dispose de leur propre pom.xml permettant de récupérer les dépendances qui vont suivre. 2.1.2 Jaxx @@ -163,9 +199,9 @@ Jaxx est un framework permettant de générer une interface graphique en SWING (Java). SWING est parfois fastidieux à gérer et le code n'est -pas toujours très propre, nous pensons notamment à la gestion des conteneurs, -aux styles graphique,... Le but de Jaxx est donc de contraindre un -développeur à obtenir du code propre et performant en SWING. +pas toujours propre, nous pensons notamment à la gestion des conteneurs, +aux styles graphique,... Le but de Jaxx est donc de faciliter le développement +d'applications SWING tout en fournissant un code lisible. Le principe est très simple. On définit les éléments de la vue (les composants graphiques), les contrôleurs, les classes Java à utiliser @@ -174,20 +210,19 @@ Il faut savoir qu'à l'origine, Jaxx est un projet récupéré par Code Lutin qui l'a fait évoluer jusqu'à atteindre une version 2.0. -La dépendance est explicitée dans le fichier pom.xml de l'entreprise. -Plus de précisions à cet endroit : +Plus de précisions à cette adresse : http://maven-site.nuiton.org/jaxx/index.html 2.1.3 Jmx ~~~~~~~~~ -Jmx est une API Java permettant à la base de gérer la dynamique d'une +Jmx est une API Java permettant de gérer la dynamique d'une application en cours d'exécution. Elle permet notamment de faire du paramétrage -(modification dynamique), modifier les fichiers de configurations, générer +(dynamique), modifier les fichiers de configurations, générer des statistiques, notifier ... -Dans notre cadre, nous nous en servirons pour réaliser un monitoring de +Dans notre cadre, nous pensions l'utiliser pour réaliser un monitoring de l'application. Plus de détails sur le Wiki : @@ -219,7 +254,7 @@ Diagramme de classes du domaine -De manière très simple, l'application MSM utilise un ensemble de bases +De manière simplifiée, l'application MSM utilise un ensemble de bases de données BigTable qui peuvent être de type HashMap, HBase ou Cassandra ou d'autres. L'application doit permettre de réaliser l'ensemble des fonctionnalités prévues sur cet ensemble de bases de données BigTable. @@ -233,24 +268,28 @@ Diagramme de packages En réalité, on veut donner la possibilité à un développeur d'intégrer -la base et les fonctionnalités qu'il souhaite dans MSM. L'application doit -donc être découpée en modules (packages). +la base et les fonctionnalités qu'il souhaite dans MSM. L'application a été +découpée en packages. -Trois modules principaux composent l'application. On trouve le module -*Plugin* correspondant à chaque base et dépendant du module -gérant l'interface graphique, *Gui*, ainsi que du module *Msm* qui n'est autre -que le coeur de l'application, véritable architecture à plugins. +Trois packages composent l'application. On trouve le module +*Plugins* correspondant aux interfaces des plugins, +*ui* décrivant l'interface graphique, ainsi que du module *pluginloader* +qui s'occupe du chargement des plugins. +Le package ui contient un quatrième package, *engine*, qui est le contrôleur +de l'interface graphique. + + 3. Conception ============= -3.1 Msm (Core) +3.1 pluginloader -------------- .. figure:: img/msm.png :scale: 400% - Diagramme de classes de conception du module msm + Diagramme de classes de conception du package pluginloader Le coeur de MSM est constitué principalement d'une architecture à plugins. Un PluginLoader étend un URLClassLoader. On construit un PluginLoader @@ -261,19 +300,19 @@ dans le PluginLoader. On utilise ensuite un ServiceLoader de Java pour charger chacun des plugins de chaque type (BigTable, Importer, Exporter, Monitoring). -Finallement, on stocke chaque plugin dans une Map dont la clé est le nom +Finalement, on stocke chaque plugin dans une Map dont la clé est le nom du plugin (un plugin doit implémenter la méthode getPluginName()). Le PluginLoader propose ensuite différents services permettant de récupérer, d'utiliser les différents plugins. -3.2 Plugin +3.2 plugins ---------- .. figure:: img/plugin.png :scale: 400% - Diagramme de classes de conception du module plugin + Diagramme de classes de conception du package plugins Un plugin est avant tout décrit via une interface *Plugin* permettant de s'auto-décrire, se charger, se désactiver. Lorsqu'un plugin se charge, il @@ -293,7 +332,7 @@ Un développeur voulant rajouter une nouvelle base doit donc implémenter cette interface. -3.3 GUI +3.3 ui ------- .. figure:: img/ui.png @@ -302,33 +341,32 @@ Diagramme de classes de conception du module gui Comme dit précédemment, on utilise JAXX pour générer automatiquement une -classe SWING. En l'occurence, la classe MainUI faisant office de Vue dans +classe en SWING. En l'occurence, la classe MainUI faisant office de Vue dans notre framework MVC. Cette vue est une frame composée de plusieurs composants SWING associés à leur listener et modèles de données le cas échéant. La vue ainsi générée implémente l'interface JaxxObject et est un type -d'application Jaxx. Il existe une uniquement instance de l'application, +d'application Jaxx. Il existe une unique instance de l'application, implémentée grâce au pattern Singleton et récupérable via la méthode getInstance() en statique. On trouve ensuite le contrôleur, ApplicationEngine qui connaît la vue du -module *gui*, l'interface BigTable du module *plugin* (une seule +package *ui*, l'interface BigTable du module *plugin* (une seule implémentation de BigTable à la fois est possible, et ApplicationEngine -la connaît) et le PluginLoader du module *msm*. Il fait office de pivot -entre les trois modules. On y trouve les différentes méthodes appelées depuis -l'application MainUI ainsi qu'une méthode pour charger un plugin à partir +la connaît) et le PluginLoader. On y trouve les différentes méthodes appelées +depuis l'application MainUI ainsi qu'une méthode pour charger un plugin à partir du PluginLoader. C'est également un singleton récupéré grâce à la méthode statique getInstance(). Grâce à la technologie JAXX, on peut établir une feuille de style propre à -notre application mais qui pourra être reutiliser si besoin. Cela offre une -flexibilité dans la création de l'interface graphique puisqu'on a un découpage -entre les éléments graphique, le style attribué et les actions sur ces éléments. +notre application mais qui pourra être réutilisée si besoin. Cela offre une +flexibilité dans la création de l'interface graphique puisque cela permet un +découpage entre les éléments graphique et le style qui leur est attribué. 3.4 Initialisation et lancement de MSM -------------------------------------- Au lancement du programme principal, l'instance de MainUI est récupérée, -la configuration autour de Msm concernant notamment la localisation +la configuration autour de MSM concernant notamment la localisation (gérée par des classes i18n propres à Code Lutin et dont les dépendances sont écrites dans le pom.xml du projet) également. @@ -339,7 +377,15 @@ on fait appel au contrôleur ApplicationEngine (défini à chaque appel dans le fichier MainUI.jaxx et donc généré tel quel dans MainUI) qui se charge de faire le lien entre les différents plugins de son PluginLoader et -l'interface graphique, qu'il peut modifier à sa guise. +l'interface graphique. +3.5 Captures d'écran +-------------------- + +.. figure:: img/screenshot_view_content.png + :scale: 400% + + Visualisation du contenu d'une table + .. Manuel utilisateur TODO -.. Manuel développeur TODO +.. Manuel développeur TODO \ No newline at end of file
participants (1)
-
gcrieloue@users.nuiton.org