Frameworks/Librairies: avantages et dangers
Publié le 2 June 2008, par Babozor dans la catégorie Développement, Gestion de projet, Organisation, méthodo..., Outils
On a déjà discuté quelques fois de la problématique lié aux frameworks (principalement sur le bon choix du bon framework pour le bon projet), mais quels sont les réels avantages et dangers de leur utilisation?
Avantages:
1. Ne pas réinventer la roue
Voilà quelque chose de fortement appréciable: plus la peine de re-développer votre connecteur à la base de donnée pour la 29ème fois, puisque certaines fonctionnalités essentielles sont contenues dans le framework. Cela veut dire pour vous beaucoup moins de travail.
2. Développement Bullet-proof
Un des avantages d’utiliser un framework ou une librairie prête à l’emploi est sans aucun doute le fait que cet outil a été testé dans divers environnements de productions, serveurs et navigateurs, vous épargnant ainsi la tâche de devoir debugger certaines parties du code.
3. Code maintenu
Pour la plupart des framework encore en développement (ou en constant amélioration), les bugs sont connus, référencés et des releases régulières vous permettent de profiter des dernières trouvailles et debuggages effectués par la communauté autour de ce projet.
4. Déploiement/développement accéléré
Sans aucun doute la fonctionnalité majeure qui vous fera choisir un framework: les fonctions présentes vous permettent d’accélérer significativement votre temps de développement. Idem avec les frameworks pré-packagées qui permettent un déploiement de votre application simple et rapide.
5. Accès facile à certaines fonctions touchy
Certaines fonctions, bien qu’accessibles à tous, sont soit très longues à développer, soit difficiles à mettre en place et si elles sont déjà implémentées dans le framework, vous permettent d’en profiter, sans spécialement mettre les mains dans le camboui. C’est le cas par exemple de certaines fonctions statistiques, de génération de graphique, de pdf, etc… bien pratique à rajouter sur certains projet, sans temps de développement supplémentaire.
6. Cadre de travail borné et unifié
Très pratique pour l’organisation de votre équipe, surtout si elle est nombreuse (voir même indispensable si votre équipe grossie à vue d’oeil), un framework mets aussi en place (dans la plupart des cas) un certain cadre de travail, une normalisation des fichiers de configuration, du nommage des fonctions, de l’emplacement des fichiers, etc… qui vous permet de garder une certaine cohérence dans vos projets peu importe qui prend en charge le code.
Dangers:
1. L’habitude
On s’habitue très vite à une méthode ou à un cadre de travail et un des principaux danger est d’avoir de plus en plus de mal à s’adapter aux nouvelles contraintes ou à commencer à border certains de vos projets par rapport aux possibilités de votre framework et d’avoir de plus en plus du mal à développer sans.
2. Pas de connaissance profonde du code
Un framework doit rester une aide, une béquille, pas la solution miracle… même si certains avec peu d’expérience réussissent à monter monter un projet, une bonne connaissance du langage de base est indispensable (beaucoup de gens se sont mis à RoR par exemple sans vraiment s’intéresser à Ruby) pour palier aux manques du framework ou étendre certaines fonctionnalités…
3. Code pas ou peu maintenu
Un des dangers aussi est d’avoir choisi un projet peu ou pas maintenu, avec des bugs connus mais pas réparés… là soit vous changez de crèmerie, soit vous vous lancez tête baissée dans le code.
4. Fonctions manquantes/modifications profondes du code source
Il peu arriver que votre projet évolu (parfois radicalement)et que la décision que vous avez pris il y à quelques mois, ne convienne plus à ce projet: fonctions manquantes, bugs bloquants (et pas de nouvelle release en vue pour les prochains mois). Soit vous décidez de changer de framework (avec tout le travail que cela implique), soit vous décidez de vous plonger dans le code. Suivant les framework et la façon de coder mise en place cela peut s’avérer enrichissant ou un cauchemard.
Pour finir, vous devez garder à l’esprit qu’un framework est une aide, bien pratique j’en convient pour accélérer votre développement, mais sans une bonne maîtrise de la technologie socle de voter framework, problèmes en perspective…



le 2 June 2008 à 20h47
Et si la bonne question était plutôt: quel est le bon niveau d’abstraction pour un framework ? Tu cites entre autres risques le manque de connaissance de la techno (langage(s) et framework), et la rigidité (fonctionnalités manquantes et rendues difficiles à implémenter *à cause* de l’architecture du framework).
Dans mon expérience, ce genre de problèmes se rencontrent plus sur des frameworks trop abstraits - souvent des applis ayant évoluées en framework à force de vouloir être extensibles et configurables -, et qui n’en deviennent en fait que plus complexes (donc plus difficile à connaitre en profondeur) et plus rigides (quand on sort du cadre du paramétrage prévu). Je pourrais citer comme example Zope et (pire encore) tout ce qui se base sur Zope/CMF (Plone, feu CPS…). Dans la pratique - et AMHA bien sûr - le meilleur “paramétrage”, c’est parfois un bon vieux bout de code qui fait ce qu’on lui demande, et pas un assemblage à n’en plus finir de fichiers de config qui finit par rendre le simple contrôle de la présence ou non d’un champs dans un formulaire une épreuve relevant au mieux du du labyrinthe, le plus souvent de la torture chinoise (parait-il très raffinée…) et parfois de la quadrature du cercle.
le 3 June 2008 à 05h46
Personellement, j’ai choisi la soluce framework home made
Au début tu commences par une te faire un fichiers avec des fonctions usuelles en vrac, pis avec le temps tu te construis une lib un peu plus propre et digne ce nom, et au bout de quelques semaines / mois / années, à force de s’étoffer, tu te retrouves avec ton propre outil de travail.
Tu bénéficies donc de nombreux avantages d’un framework, tu le connais sur le bout des doigts puisque c’est toi qui l’a fait. Bon, problème, y’a pas de doc pour que tes collègues puissent y toucher, et c’est pas toujours facile pour eux. Mais au moins, toi, tu bosses vite et bien
le 3 June 2008 à 08h46
@bruno: complètement d’accord avec toi…
@Tsadiq: aussi d’accord mais parfois (la plupart des fois en fait) pas le temps de re-dev ce qui existe déjà, mais l’absolu je suis über d’accord avec toi, mieux vaut un projet resserré et que tu maitrise qu’une usine à gaz que tu connais vaguement.
le 3 June 2008 à 11h59
Bah oui babozor, on est pas là pour réinventer la roue tous les jours non plus
Cela dit, rien n’empêche d’intégrer dans ton framework du code opensource que tu prends le temps d’étudier et / ou d’adapter selon tes besoins.
A partir de là tu peux te faire un truc très efficace assez rapidement, avec un minimum de modifs
Bon en l’occurence moi j’aime bien réinventer la roue, mais développer tes propres outils c’est un investissement ^^