février
2009
Bonjour,
Je suis actuellement en train de développer une application modulaire. Au vu des problèmes que j’ai rencontré pour développer la partie modules et le peu d’informations que j’ai pu trouver sur le net, j’ai pensé que faire une série de billets sur le sujet ne pourrait qu’être profitable à tout le monde.
Dans ce billet, je vais commencer par parler des bases de la conception d’une application modulaire, c’est-à-dire pour commencer, ce qu’est une application modulaire, ce qu’est un module et bien entendu ce que ça apporte. Dans les prochains billets, je vais essayer de décrire les différentes problématiques inhérentes au sujet et leurs résolutions. Si ces billets nécessitent du code, ces exemples de code seront en Java, car c’est le langage que j’ai choisi pour développer mon application, mais les concepts peuvent s’appliquer à tous les langages.
Bien entendu, je ne me considère pas comme un pro dans les applications modulaires et les différentes informations que je vais donner au fil des billets n’est que ma façon de voir, il y en a certainement d’autres et des meilleures, donc si vous n’êtes pas d’accord avec moi ou si vous pensez qu’on peut faire mieux, n’hésitez pas à réagir en commentant ces billets
Pour commencer, qu’est-ce qu’une application modulaire ? Une application modulaire est constituée de 2 parties bien distinctes :
- Le coeur : Comme son nom l’indique, il s’agit de la partie centrale de l’application. Cette partie doit être complètement indépendante des modules.
- Les modules : Il s’agit cette fois des parties qu’on va ajouter dynamiquement à l’application pour lui rajouter des fonctionnalités. On leur donne d’autres noms : briques, plugins, addons, …, mais le concept est toujours le même.
Il y a à mon avis 2 sortes d’applications modulaires. Le premier type est une application somme toute normale qui propose une série de fonctionnalités et qui propose en plus de rajouter des fonctionnalités par le biais de modules. Le second type est une application qui propose un coeur complètement dénué de fonctionnalités. Toutes les fonctionnalités sont proposées par les modules, c’est donc une application dans laquelle « tout est module ».
La différence principale est que la première peut être utilisée tout à fait normalement sans aucun module, alors que la deuxième ne propose pas (ou presque pas) de fonctionnalités sans module.
Au contraire d’une application normale, il faut donc prévoir des points d’extensions que les modules pourront utiliser pour ajouter des fonctionnalités à l’application ou pour modifier l’existant.
C’est sur ce deuxième type d’application modulaire que je suis parti pour réaliser mon logiciel. Cela permet d’avoir un socle solide qu’on peut éventuellement réutiliser pour d’autres applications sous réserve de quelques modifications.
Comme application modulaire connue, on peut citer Eclipse qui est entièrement modulaire et qui est du deuxième type.
Maintenant, la grande question est : C’est bien beau tout ça, mais ça sert à quoi ? Tout d’abord, du point de vue du développeur, cela permet de séparer clairement les différentes parties de l’application. On a donc des modules distincts plus faciles à maintenir qu’une grosse application. Cela permet également d’être très souple pour rajouter des fonctionnalités à l’application, en effet, pour cela, il suffit de créer un nouveau module, d’y coder la fonctionnalité et de rajouter ce module dans l’application. Du point de vue de l’utilisateur, cela ajoute de la souplesse au programme. En effet, l’utilisateur va pouvoir choisir quels modules il veut lancer, rajouter de nouveaux modules, voire même en créer s’il en est capable. Il pourra donc personnaliser son application.
Bien entendu, cela ne se fait pas tout seul et ce n’est pas des plus simples à concevoir et à implémenter. En effet, cela pose beaucoup de problématiques qu’il faut régler et cela implique beaucoup de questions qu’il faut se poser.
C’est ce que nous verrons dans les prochains articles.
5 Commentaires + Ajouter un commentaire
Archives
- novembre 2011
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- juillet 2009
- juin 2009
- avril 2009
- mars 2009
- février 2009
- octobre 2008
- septembre 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
Catégories
- AMD
- Apple
- Cartes graphiques
- Chrome
- Conception
- Divers
- Eclipse
- English
- Hardware
- Informatique générale
- Intégration continue
- IntelliJ Idea
- Java
- JTheque
- Linux
- Logiciels
- Mes articles
- Mes critiques de livres
- Mes projets
- Microsoft
- Mon serveur perso
- Office 2007
- Open Source
- Outils
- Perso
- PHP
- Processeurs
- Programmation
- Sécurité
- Spring
- Windows Vista
- Windows XP
Effectivement, ce n’est pas une sinécure de concevoir une application modulaire
Dans mon cas, ça reste une petite application et j’en suis le seul développeur. Je me sers de cette application surtout comme « bac à sable » pour explorer de nouvelles technologies, donc il n’y a pas beaucoup d’influence.
Mais malgré ça, j’ai passé pas mal de temps à réfléchir au différents concepts et les concevoir de manière théorique avant de pouvoir passer à l’implémentation et je me rends compte maintenant que j’aurais du passer encore plus de temps pour la conception avant l’implémentation.
Très intéressant comme article.
Cela reste un long chemin, développer une vrai application modulaire.
De l’expérience que j’en ai, pour de gros projet, cela est difficile de le faire seul. Je veux dire uniquement avec des développeurs. Concevoir une application modulaire, à mon sens, demande une équipe pluridisciplinaire, il faut que les rôles d’architecte et de développeur soit définit.(Au minimum)
Si cela n’est pas fait, l’équipe de développement vas construire son noyau et ces différents modules, avec tous les mécanisme de chargement dynamique, les meta-données et autres, mais personnes ne vas prendre de recule et après plusieurs années l’application aura toujours une apparence modulaire, il y aura le noyau et le plug-in. Mais derrière dans le code ça serra le vrai plat de spaghetti !!!
Je ne suis pas en train de dire que le modulaire c’est inutile, mais que la réussite d’une application modulaire ce mesure dans le temps.
Il me tarde de voir la suite de tes investigations.
Salut,
@benwit : Oui, j’ai imaginé un moment utiliser Eclipse comme socle, mais plusieurs points m’on retenus :
– En utilisant directement Eclipse comme socle, je ne pouvais pas voir tous les principes d’une application modulaire et j’ai préféré le développer de zéro pour explorer toutes les problématiques et les résoudre de moi-même.
– De plus, en utilisant Eclipse, je devais développer mon interface graphique en SWT que je n’aime pas trop. L’application sur laquelle je travaille existait déja avant et était entièrement codé en Swing, il aurait fallu que je remodifie toute l’interface graphique.
– Et enfin, il aurait fallu que je backporte mon application de Java SE 6 en Java SE 1.4.2 (ou Java SE 5, je ne suis pas sûr).
@Tommy31 : J’y ai pensé effectivement, mais cette solution ne m’a pas vraiment convaincu. L’idée de devoir déplacer la logique modulaire de l’application vers un « serveur » et de lui envoyer des commandes ne m’enchante pas vraiment, même si je ne nie pas l’apport de cette technologie.
L’article ne va pas traiter d’OSGI, je ne l’ai jamais utilisé.
OSGI est un bon soubassement pour cela.
J’espère que l’article va aller dans ce sens, il n’y a pas tant de tutoriaux que ca sur ces aspects
Salut,
As tu imaginé un instant utiliser eclipse comme socle ? et de développer toi même tes modules ?
Tu peut me répondre non car je te rassure, j’imagine plein de raisons de concevoir sa propre application modulaire.
Mais si tu l’as envisagé, pourras tu peut être nous indiquer ce qui t’a fait choisir une autre voie ?
J’attends avec impatience la suite de cet article ;o)