La plupart des entreprises démarrant des projets denvergure
en Java ou ayant un retour dexpérience sur un premier
projet dans cette technologie saccordent sur le fait quil
est indispensable davoir un framework technique pour normaliser
les développements et assurer les évolutions futures
des applications déployées. Le débat tourne
aujourdhui essentiellement sur le choix de ce framework technique
: framework payant, framework open-source ou framework maison ?
La démarche framework
Tout dabord, il est important de préciser que le framework
technique est bien plus quune boîte à outils.
Le framework technique doit sintégrer dans une démarche
globale couvrant les domaines des normes et méthodes, de
la qualité, de larchitecture du SI, de la formation
et, dans une certaine mesure, de la méthodologie de projet.
Normes, méthodes et qualité
Sil est complet et couvre toutes les couches dune application
(IHM, code métier, accès aux données, interfaçage
aux systèmes externes), le framework technique amène
des règles de structuration des applications qui simposent
dès la phase de conception dun projet. Ces règles
doivent notamment définir les possibilités dhéritage
des services applicatifs à partir dune hiérarchie
de classes mères lors de la phase de modélisation
UML. Ces règles sétendent ensuite aux équipes
de développement.
Lentreprise sassure alors une uniformité des
développements et une plus grande qualité des applications
en introduisant une forte réutilisation de composants déjà
testés. On constate par expérience une diminution
des erreurs techniques. Ceci permet aux équipes projet de
rester focalisées sur les fonctionnalités métiers
des applications.
Architecture du SI
La réutilisation de composants techniques entraîne
la construction dun socle solide servant de base à
larchitecture du SI. Le framework ne doit cependant par contraindre
larchitecture. Il doit être paramétrable pour
autoriser différents types de déploiement (avec ou
sans EJB par exemple) et rester indépendant des serveurs
dapplications (en proposant une interface paramétrable
à certains services spécifiques de ces serveurs comme
le pool de connections à la source de données ou le
cache dobjets par exemple). Il doit respecter les normes J2EE
et ne pas introduire de run-time spécifique.
Si le framework est structurant, il est cependant faux de croire
quil enferme définitivement lentreprise. En effet,
tous les frameworks et autres boîtes à outils reprennent
généralement les mêmes concepts et ont notamment
recours aux mêmes design patterns recommandés par SUN
dans son catalogue (http://java.sun.com/blueprints/patterns/j2ee_patterns/catalog.html).
Dès lors, si des frameworks sont bien conçus (utilisation
systématique dinterfaces, de patterns tels que MVC
ou Factory), il est possible de mixer des composants de plusieurs
frameworks comme CGI France a eu loccasion de le faire pour
certains clients.
Formation
Lun des objectifs du framework étant de masquer la
complexité technique des multiples spécifications
J2EE (JSP, EJB, JMS, JCA, JDBC, etc.), il doit être accompagné
dune documentation (guides utilisateur et de référence,
documentation HTML des APIs) et dun plan de formation permettant
de faire monter rapidement en puissance les équipes de développement.
Cette formation doit être complétée par un plan
daccompagnement des équipes sur le démarrage
dun premier projet.
Méthodologie
Enfin, le framework structure aussi, dans une certaine mesure, lapproche
méthodologique. Il impose souvent la mise en place dune
équipe dédiée au support des projets. Il peut
offrir des facilités pour construire parallèlement
plusieurs parties de lapplication en spécialisant des
équipes de développement (IHM, code métier,
accès aux données par exemple). Il peut contenir des
composants permettant de déléguer certaines tâches
à des personnes moins techniques (intégration dune
bibliothèque de tags pour la construction des pages JSP par
un designer plutôt que des javascripts complexes par exemple).
Mais avant tout, un framework doit être livré au minimum
avec les métriques nécessaires au calcul préalable
des charges de conception et développement dun projet.
Sans cela, comment une entreprise peut-elle se lancer sur un projet
?
Framework open-source, maison ou payant
?
Compte tenu de tous les éléments cités auparavant,
il apparaît clairement que les frameworks open-source ne sont
pas adaptés à des projets de grande taille. Ils sont
construits par des passionnés et sadressent à
un public très technique capable de se débrouiller
avec un minimum de documentation et de sinvestir directement
dans le code pour en comprendre les subtilités.
Il est utopique de penser pouvoir former une équipe complète
de développement sur ce genre doutils (surtout si les
ressources à former viennent danciennes technologies
comme chez bon nombre de grandes entreprises où les bases
de données résident encore sur mainframe). Au mieux
une entreprise pourra-t-elle constituer une équipe restreinte
de trois ou quatre experts qui complètera et enrichira un
framework open-source de base. Cest un scénario que
CGI France a eu loccasion de voir mis en uvre chez certains
de ses clients.
Il est alors tentant de construire un framework maison en utilisant
une base open-source (en récupérant du code source
ou en sinspirant des concepts). Ceci est cependant à
réserver aux entreprises capables de dédier une équipe
dans le long terme pour la maintenance et lévolution
de ce framework (évolution des versions de J2EE, des serveurs
dapplications, ajout de nouvelles normes, etc.) aussi bien
au niveau du code que de la documentation laccompagnant (charge
de travail importante et souvent négligée).
Bien entendu, cela nécessite, de plus, davoir des
ressources très matures, avec une large expérience
des problématiques de construction par composants, darchitecture,
etc. En effet, le choix même dun framework open-source
est problématique. Il suffit pour sen convaincre de
lire les forums dans lesquels des développeurs avertis ne
parviennent pas à départager des frameworks similaires
tels que Struts et Turbine ou encore Velocity et Cocoon (pourtant
tous développés dans le cadre du projet Jakarta !).
Sans parler du fait que certains projets open-source sarrêtent
parfois du jour au lendemain, faute de ressources ou suite à
une " sélection naturelle " entre frameworks concurrents.
Seules quelques grandes entreprises (dans le domaine de lassurance
et de la banque souvent) disposent donc des moyens nécessaires
à la construction dun framework maison.
Dans les deux cas précédents, framework open-source
et maison, on ne résout pas le problème de disposer
de métriques fiables pour lévaluation des charges
dun projet. Cela nécessite au minimum de faire un projet
test (assez conséquent pour servir de référence)
et donc, sans doute, dy laisser quelques plumes.
Avec un framework payant, lentreprise bénéficie
de la capitalisation dexpérience dune société
spécialisée ayant souvent construit des frameworks
dans dautres technologies, comme CGI France a pu le faire
en Forté, NatStar ou C++ par exemple. Le framework est packagé
avec documentation, formation et accompagnement. Ce sont dailleurs
principalement ces services qui sont payants. Une maintenance permet
de sassurer de la continuation des évolutions du framework.
Lentreprise aura à cur de choisir un framework
édité par une société indépendante
dun éditeur de serveurs dapplications (et donc
proposant des paramètres permettant le portage dun
serveur à un autre), livrant les sources du framework et
nimposant pas de run-time.
Un choix définitif ?
Il convient sans doute finalement dadopter un juste milieu
dans ce débat.
En effet, si le choix dun framework payant semble être
à privilégier pour une entreprise démarrant
des projets dune certaine taille, avec des équipes
de développement à former, on peut tout de même
y adjoindre certains outils du monde de lopen-source. Ces
outils sont notamment ANT (scripts de compilation du code et génération
des fichiers JAR ou WAR), Xerces et Xalan (parseur XML et transformation
XSLT), FOP et Cocoon (production de documents PDF notamment à
partir de données XML) et Tomcat (serveur de pages JSP).
Enfin, lentreprise peut surcharger certains services du framework
payant pour les adapter à des besoins spécifiques.
Elle bénéficie alors dun framework personnalisé,
tout en profitant des évolutions futures du framework originel.
|