TravailleursDuWeb se BLACK OUT contre HADOPI

Pourquoi utiliser un framework?

Publié le 28 November 2007, par Babozor dans la catégorie Développement, Gestion de projet, Outils

Depuis quelques jours, je me confronte à une question que beaucoup de développeurs et chefs de projet techniques se posent: dois-je utiliser un framework (suivi de très près par l’autre question: lequel, mais ça c’est une autre histoire)?
En environnement de production (c’est à dire pour un projet sérieux et pas perso) la réponse est bien évidement OUI, voici pourquoi:

1. Ré-inventer le fil à couper le beurre?
C’est vrai que pour un développeur c’est très attrayant de se dire qu’on va pouvoir passer deux semaines à se concocter son micro-framework (tous les développeurs que je connais ont le leur, plus ou moins évolué) super optimisé de la mort, et qui va faire toutes les fonctions communes dont on a besoin… c’est attrayant, mais pas très productif. Il existe déjà beaucoup de framework qui font déjà toutes ces fonctionnalités, pourquoi donc réinventer la roue ou l’eau tiède. C’est tout à fait possible (et instructif et plaisant) pour un projet personnel, c’est tout à fait in-envisageable pour un projet productif.

2. Application BulletProof
Une des contraintes du développement web (outre le temps) est de garder à l’esprit les différentes attaques que peuvent subir votre applications web. Optimiser les requêtes vers la base, utiliser un connecteur persistant, faire attention aux injections SQL, etc… sont au coeur de la problématique du développement web. Certains des framework implémentent de façon efficace tout cela (et donc on en revient au point 1).

3. Travail collaboratif
Un point important est que pour une même fonction, un même langage, trois développeurs qui codent la même chose, auront trois codes diamétralement opposés, que ce soit dans la logique ou la syntaxe du code (sauf peut être en python). Si vous êtes plusieurs développeurs à travailler sur la même application, vous vous devez de rendre un code le pus propre, lisible et portable possible, pour que vos petits camarades puissent repasser sur votre code, sans dépenser quinze jours à essayer de comprendre ce que vous avez tenté de faire.
Un autre problématique concerne les métiers connexes à celui de développeur. Souvent il y a énormément de changement graphique et ergonomiques durant le développement (et particulièrement dans la phase finale du projet). Cela oblige souvent à modifier du code existant et souvent à bugger l’application. Un framework de type MVC permet à un graphiste ou à un monteur HTML de pouvoir travailler sur le template, sans toucher au coeur de votre code.

4. Gain de temps
L’avantage d’utiliser un framework es de pouvoir économiser un temps précieux sur les fonctionnalités “de base” (comme par exemple un connecteur à la base de données) et de pouvoir ainsi se concentrer sur les développements à forte valeur ajoutée.

5. Méthode
Un avantage connexe de l’utilisation d’un framework est de pouvoir suivre un guide (celui du framework en l’occurrence), qui est le même pour tous. Charte de nommage des fonctions, contrôleurs, etc… utiliser un constructeur pour ses classes, etc… le framework donne un guide (parfois un peu étouffant) pour tous les développements.

6. Autre vision, autres solutions
Bien souvent, on prend des habitudes (des bonnes et parfois des mauvaises), on rentre dans la routine… utiliser un framework nous permet aussi de voir une autre vision, des solutions alternatives à des problèmes, qui peuvent aussi nous servir dans certains de nos projets perso.

Vous l’aurez compris, même si philosophiquement je préfère tout faire moi même (c’est beaucoup plus rigolo et enrichissant), parfois on a pas le choix, le framework est la voix de la sagesse et de la productivité.
Reste ensuite à choisir le “bon framework” adapté à vos besoins, mais ça c’est un autre sujet.

Et vous, vous utilisez un framework pour vos développements? Pourquoi et lequel?



11 Responses to “Pourquoi utiliser un framework?”

  1. despe_ki_roule Says:

    Auparavant je faisais tout mes dév from scratch et c’était assez rébarbatif sur plusieurs points. Cela m’a poussé à regarder un peu les frameworks et à les tester.
    Ils apportent un confort non négligeable.
    J’utilise Jelix (http://www.jelix.org) qui est un framework français que j’utilise parce qu’il offre une base intéressantes (intégration des ACL et de l’authentification, gestion des formulaires, daos, etc…) et performantes (selon moi).
    Après le choix du framework c’est selon les affinités et les possibilités.
    Zend Framework a le vent en poupe notamment.

  2. Jean-Sébastien Mansart Says:

    Après, il y a aussi la phase d’apprentissage du framework, et la documentation disponible.

    J’ai eu l’occasion de rencontrer le créateur de symfony, un framework PHP que j’avais testé avant sa sortie en version stable et que j’avais trouvé plutôt limite et pas vraiment utilisable. Il m’a assuré que ça avait bien évolué depuis.

    Dans mon travail, je n’utilise pas de framework, mais un CMS : Plone.
    C’est une approche différente, et le principal avantage, c’est que l’on peut déployer un site extrêmement rapidement.

  3. Fabien Says:

    en ce qui me concerne, j’utilise django qui est un framework en python. Je l’utile cas je trouve qui est très bien conçu et qu’il me permet de faire à la fois des choses classiques très rapidement et des choses complexes en vraiment peu de temps. En plus le code est souvent très pythonique et très concis :

    http://www.djangoproject.com

  4. No' Says:

    “Et vous, vous utilisez un framework pour vos développements? Pourquoi et lequel?”

    Oui, Django, pour toutes les raisons indiquées ci-dessus.
    La petite différence, c’est que c’est écrit en Python, et ça simplifie énormément la syntaxe et l’écriture de modules. Une ligne frameworkisée peut simuler un comportement “PHP pur” de plusieurs pages de fonction.
    Et ça reste lisible. Et déboguable facilement.
    Ce qui est un gain de temps autre que le gain “en dév”. Débarquer sur une appli qu’on n’a pas touché depuis 6 mois et constater qu’on n’a aucune idée de l’endroit d’où vient la panne… Voilà qui est frustrant. Avec un jeu de fonctions et de fichiers réduit, on trouve plus vite, on débogue plus vite, et on a plus de temps pour boire un café !

    Et les frameworks ont plusieurs longueurs d’avance sur nos petits cerveaux mal dégrossis : il m’arrive fréquemment (tous les jours) de m’exclamer dans le bureau : “J’adore Django !”.
    Mes collègues me regardent bizarrement, mais bon…

  5. Jérémy Says:

    C’est marrant car Rasmus Lerdorf (le père du PHP) a répondu la semaine dernière a la même question par la négative !

    “Répondant à nos questions en privé à l’issue de son intervention, Rasmus Lerdorf a encore expliqué que les performances étaient tributaires de l’utilisation ou non d’un framework. De fait, les cadres applicatifs censés améliorer la productivité des développeurs et assurer un déploiement optimisé sont légion. Or, pour lui, les frameworks n’améliorent vraiment la productivité que de ceux qui les ont conçus, car ils les connaissent très bien. « Et si vous avez des problèmes de performance, il est difficile d’en sortir. » Le mieux serait encore de bien identifier son besoin, et de personnaliser un framework, voire de se créer son propre framework bien spécifique.”

  6. Nicolas Mérouze Says:

    Bon si je dis que j’utilise Ruby On Rails, cela ne surprendra pas ceux qui me lisent ^^

    J’avais aussi l’idée qu’utiliser un framework était moins enrichissant que tout faire soit même. Mais force est de constater que mettre les mains dans le core d’un framework est super enrichissant et créer des plugins aussi l’est vraiment énormément. Je me suis donc rendu compte qu’il est tout aussi enrichissant (mais peut-être moins fun, quoique) d’utiliser un framework plutôt que tout faire à la main.

    Après c’est une histoire de goût pour le choix. Je n’aime pas la syntaxe de PHP ni celle de Python donc je me suis orienté vers Ruby On Rails. Même s’il n’est pas parfait, coder me procure enfin du plaisir dans mon travail alors qu’avant avec PHP, C# ou bien même Python le plaisir n’était pas tout le temps là.

    Et la dernière chose, quand on réunit des dizaines de personnes pour la création d’un framework, c’est souvent bien mieux et bien plus complet que tout ce qu’on pourrait faire en plusieurs années.

  7. Nathalie Says:

    *cough cough* …. Oracle Portal……. (c’est un choix décidé par le national, on peut pas passer outre… Help)

  8. Olivier Says:

    Dans l’équipe, nous utilisons au niveau ORM : NHibernate + dsMap pour l’abstraction d’accès aux données.

    Ensuite pour le Web, cela reste ASP.NET/C# (un modèle différent que MVC) associé au modèle PAC (3 tiers : Présentation, Controleur, Abstraction de la couche métier) développé à la main, avec parfois des services Web, des librairies JS (Prototype/scriptaculous) ou autre mais encapsulées pour d’éventuels changements.

    L’utilisation de frameworks ou de librairies, associée à une bonne architecture, est primordiale pour la “maintenabilité” du code, sans cela, les anti-patterns nous guettent, et cela devient impossible à faire évoluer dans le temps.

  9. Brice Says:

    Merci pour cet argumentaire très intéressant.

    Pour ma part j’utilise et je participe au développement du framework Copix. C’est un framework PHP très mature (il existe depuis 6 ans). Il propose une architecture complète basé sur les designs patterns, ainsi que de nombreuses fonctionnalités aussi bien coté coeur que coté interface (ex: intégration du framework Ajax Mootools).

    http://www.copix.org/

  10. Nicolas Says:

    J’utilise Copix (http://www.copix.org) depuis maintenant 4 mois, et cela révolutionne complètement mes développements ! S’il fallait choisir parmi les meilleures fonctionnalités proposées par le framework, je dirais que j’aime particulièrement le système de dialogue avec les bases de données (je ne tape plus une seule requête SQL, fini les oublis !), le système de droits et d’authentification déjà tout fait, le système de thèmes graphiques qui m’a permis d’avoir un look and feel adapté à mon site même sur les modules livrés avec le framework !

    Au début, j’avoue que je doutais de la facilité de prise en main ou de l’intérêt de ce genre de framework, mais j’ai été bluffé. Les développeurs sont de plus assez sympa et ont répondu à mes questions sur leur forum.

    J’ai testé d’autres framework PHP avant de choisir Copix, comme Symfony (un peu trop lourd à mon goût) et Jelix (que je ne suis pas arrivé à installer car je crois qu’il n’est pas stable).

  11. sylvain Says:

    On utilise Jelix chez nous et je peut vous assurer qu’il tout ce qu’il y a de plus stable !
    Si c’était pas le cas on aurait perdu bcp de de client à l’heure qu’il est…
    Il n’a pas la richesse de symphonie mais et plus performant et plus facile à apprendre.

Laissez un commentaire