Modélisation, RAD et génération de code
Bonjour
J'aimerais connaitre l'avis de la communauté sur un sujet dont on parle de plus en plus : les outils de développement rapide, la modélisation et l'avenir de la programmation.
Aujourd'hui, de plus en plus d'entreprises externalisent et délocalisent la production de code. Les métiers purement techniques sont de moins en moins recherchés, du moins sous la forme du développement pur.
Je suis très intéressé par cette thématique, c'est pourquoi je me suis informé et j'ai découvert tout type d'outils, allant de la modélisation UML simple (diagramme de classe et génération de POJOs) à de la programmation avec l'approche MDA (Model Driven Architecture) et de la génération de code avec JET, en passant par la génération de code à partir d'interfaces graphiques à la VB (Drag & Drop).
Ce topic a plusieurs objectifs. D'une part connaitre la "température" générale du secteur (a la fois les grands comptes et également les petits éditeurs et SSII), et également connaitre les trouvailles de chacun et l'avis de chacun quant à l'avenir de la programmation.
Bien sûr, certains pourront dire qu'il est abominable de délocaliser tout le développement d'application, mais je pense qu'au contraire nous devons nous adapter et évoluer dans le sens de la modélisation. J'ai notamment pu observer les solutions proposées par plusieurs éditeurs tels que IBM et son IDE RSA. Cela semble se développer dans le bon sens et associé avec des produits OpenSource tels que JET, il semble à portée de main, à partir d'une bonne modélisation, de générer des applications complètes.
Ce qui manque de façon évidente, c'est d'une part des distributions fiables et globales et également les ponts pour aller de la modélisation à l'implémentation de frameworks aussi divers et variés que Struts, JSF, Velocity, Behive, mais également pouvoir en changeant de "transformateurs" réaliser une application lourde avec Swing ou AWT ou encore RCP...
Que se passe-t-il dans les autres mondes (autres que la nébuleuse J2EE) dans ce domaine ?
Enfin, quels outils utilisez vous pour modéliser vos application ? Utilisez vous du retro engeneering pour que la modélisation suive l'évolution du développement au cours d'un projet? Utilisez vous la génération de code ? Quelles référence utilisez vous pour vous former à la modélisation (UML, MDA...) ?
Damien
Perennisation & pragmatisme
Je n'avais pas vu que mon sujet avait suscité autant d'émoi. Je continue à mener mon étude. Je constate, comme on peut d'ailleurs le constater sur ce post, que les avis s'accumulent et ne se ressemblent pas toujours.
Pour les détracteurs de l'approche MDA (ou de la modélisation dans un sens plus restrictif), je confirme que j'évolue dans une société où l'approche MDA commence à se pérenniser et à faire ses preuves. Les outils deviennent matures et on commence à parler de reverse engeneering permettant ainsi de lier très fortement la modélisation et son implémentation. Ils arrivent à atteindre un taux de génération supérieur à la moitié du code total.
Sans parler d'offshore chez nos amis indiens, l'externalisation des équipes au sein des SSII a forcé de nombreux grands comptes à structurer leurs applications. Ainsi, la modélisation avancée et la génération de code associée peuvent être un outil puissant. Elles peuvent permettre de réaliser un squelette avancé des logiciels et de mettre en place des architectures normées afin de cadrer les équipes de développement. (Cependant, il est forcé de constater qu'elle prend tout son sens dans des projets de taille importante.)
Nous ne parlons pas ici autant de réduction budgetaire que de perennisation des solutions. L'approche MDA est ici une méthode d'abstraction parmi d'autres pour pouvoir cacher la complexité des solutions actuelles.
Evidemment, l'utilisation d'outils de modélisation et de génération de code ne doit pas faire croire que la maitrise technique n'est plus requise. La plupart des solutions s'orientent de plus en plus vers le schéma : une équipe de développeurs "moyens" avec dans le groupe plusieurs experts techniques très pointus.
La modélisation est une expertise très précise pour laquelle il est encore difficile de trouver une bibliographie et des références stables.
Une bonne partie du marché se cantonne à réaliser des diagrammes de classes et n'exploitent donc pas les capacités de la modélisation. De plus, la MDA a apporté une adaptabilité en instaurant les transformations de modèle à modèle.
Les nouvelles technologies et approches ont nécessairement besoin de maturation mais je pense que nous allons dans le bon sens. Il devient de plus en plus obsolète d'écrire from scratch l'ensemble d'une application
Il reste évident qu'une application écrite entièrement à la main par un spécialiste sera toujours plus performante qu'une application générée en partie. Mais je vous pose la question : que vaut-il mieux ?
- un projet cadré et maintenable, mais techniquement pas à la pointe de la technologie
- ou un projet où la qualité de rendu final et la maitrise dependra uniquement de la qualité aléatoire des réalisateurs.
Il y a d'un côté les défis techniques qui sont très intéressants mais en général réservés aux passionnés, aux étudiants et aux universitaire (laissons la recherche aux chercheurs qui la font très bien) et de l'autre côté les défis économiques et la nécessité pour les DSI de s'adapter à un marché concurrentiel ouvert de plus en plus à l'international. Ceci force les décisionnaires à chercher des solutions pour limiter les coûts de formation et améliorer la productivité de leurs équipes.