SOA

S'il est un acronyme que l'on retiendra pour 2004, c'est bien SOA (Service Oriented Architecture). SOA a supplanté les services Web dans les discussions de salon et les plaquettes marketing. SOA est une architecture du système d'information qui voit les applications comme des services, c'est-à-dire des traitements autonomes qui communiquent par messages. Cette architecture, basée sur couplage faible des processus, permet une meilleure réutilisabilité de ces processus. Les Services Web sont une des implémentations techniques de SOA, mais ces deux technologies ne sont pas liées. Bien que SOA ne soit qu'une démarche conceptuelle et méthodologique pour architectes, les éditeurs se sont emparés du concept pour remettre leurs produits au goût du jour et revendiquer un rôle dans ce nouvel eldorado. En réalité toutes solutions de type BPM (Business Process Management), ESB (Enterprise Service Bus) ou EAI (Enterprise Application Integration) sont aptes à implémenter une SOA. En tout état de cause, concevoir, développer ou intégrer des applications d'entreprise passe aujourd'hui par une démarche SOA. 2005 devrait voir l'avènement de solutions prenant en compte une vision globale de SOA.

AOP

La Programmation Orientée Objet constitue aujourd'hui la méthodologie de choix pour les nouveaux projets. Mais elle commence à montrer ses limites lorsqu'il s'agit de modéliser de manière efficace et élégante des problématiques transversales telles que le débogage, la persistance des données, la sécurité ou la gestion des erreurs. Pour séparer ces problématiques techniques des problématiques fonctionnelles, une des approches est la Programmation Orientée Aspects (AOP, Aspect Oriented Programming). L'idée est d'extraire le code de la fonctionnalité technique, de le regrouper en une entité logicielle (l'Aspect), puis de créer des liens qui vont indiquer à quels endroits du code fonctionnel doit se greffer le code technique. Cette technique, mise au point dans les années 90, s'est développée dans la communauté Java grâce à des outils Open Source comme AspectJ, JAC ou AspectWerkz. L'AOP gagne aujourd'hui le monde .NET (Loom.NET, AspectDNG). S'il reste encore un grand effort à accomplir au niveau de la maturité des outils et de la standardisation, l'AOP est considérée par les analystes comme une des technologies phares des dix prochaines années.

Conteneurs légers

Une autre approche pour aboutir à la séparation des préoccupations est d'utiliser un framework d'objets de type conteneur léger. L'idée est de réduire la complexité des EJB en les remplaçant par des objets plus légers, les bons vieux objets Java (POJO, Plain Old Java Objects). Ces frameworks, en général en Open Source, tels que Spring, HiveMind, Pico… utilisent le design pattern Inversion de Contrôle (IoC, Inversion of Control), un modèle de conception qui inverse la dépendance des objets : ce n'est plus le code fonctionnel qui appelle le code technique, mais l'inverse. Ces frameworks sont en général couplés à des fonctionnalités d'AOP. Dans cette mouvance, citons également Apache Beehive, le framework issu de BEA. Issue du monde Java, cette approche commence à gagner aussi la plate-forme .NET (Spring.NET).

Software factories

Produire des logiciels de manière aussi fiable et automatisée que dans les autres industries (automobile, aéronautique…), est un vieux rêve qui commence à prendre forme avec les Software Factories, les usines de développement. Les développeurs ont toujours été des fainéants et ont cherché sans cesse des moyens d'automatiser des tâches récurrentes telles que la compilation, l'édition de liens, les tests unitaires… Ainsi sont nés d'innombrables outils Open Source dont l'aboutissement aujourd'hui sont les outils de build continu. CruiseControl par exemple orchestre les différents outils qui composent la chaîne de production du logiciel dans le cadre de la méthologie Intégration Continue, une pratique issue de l'eXtreme Programming. Chez les éditeurs (Microsoft, IBM, Borland), la montée en puissance des environnements de développement conduit à des solutions qui prennent de plus en plus en charge le cycle de vie du logiciel. Le concept de Software Factories, lancé par Microsoft pour son futur Visual Studio 2005 et conjointement à l'ouvrage éponyme, ne fait que reprendre les concepts qui traînent par ailleurs : Model Driven Development, SOA, AOP, UML, DSL (Domain Specific Language). IBM avec Atlantic pourrait également revendiquer l'expression tant la solution répond au besoin. Quant à Borland, il revendique depuis longtemps la prise en charge totale du cycle de vie du développement. On attend l'arrivée de Visual Studio 2005 pour se faire une idée. Mais les Softwares Factories, et ses implications sous-jacentes (DSL, UML) n'ont pas fini de faire couler l'encre.