J2EE .NET Application Generator
Transcription
J2EE .NET Application Generator
J2EE .NET Application Generator Ingénierie des modèles : panorama et tendances F. Barbier 1 Plan Introduction à la 1ère journée Ingénierie des modèles : panorama et tendances 2 Ingénierie des modèles, la 1ère journée Processus [ L’arrivée à maturité des langages de transformation et leur intégration rationnelle et « réfléchie » dans les processus de développement logiciel [ L’adaptation de processus propriétaire aux principes IDM en général [ La codification de processus IDM sur-mesure Cohérence [ L’IDM est-elle un vecteur de correction de nos incohérences en développement logiciel ? Traçabilité [ Des exigences [ Des décisions de conception [ Des impacts techniques, financiers, humains… sur le déroulement d’un processus et le pilotage d’un projet [ Des retours arrière faisables et plausibles Composants de confiance [ Le multi-modèles est soit le multi-vues (e.g., Class Diagrams, Sequence Diagrams), le multicouches d’abstraction (PIM, PSM…) mais plus rarement le découpage modulaire d’une application en entités réutilisables et surtout composables : MDE + CBSE ? [ QoS, e.g., les modèles sont-ils les meilleurs moyens de prédiction de performance par exemple ? [ Tissage d’aspects dans les modèles pour insérer les propriétés de QoS requises (sécurité, tolérance aux fautes, satisfaction de contraintes temps-réel…) 3 Choc des environnements IDM Environnement « conceptuel » : Meta Object Facility (MOF) [ Nouveaux langages : BPMN, SysML… [ Domain profiles : santé, télécoms, espace… [ Profils technologiques : SOA (SML), Executability (Activity Diagrams)… [ Neutralité, crédibilité, partenariat (ISO)… Eclipse Modeling Framework (EMF) [ Standard d’usage et de renom [ Richesse de l’offre en termes de plugins [ Interopérabilité de fait mais MOF 1.3 uniquement (Ecore) [ Impact à terme hors du monde Eclipse ? DSL Tools Suite de Microsoft [ Multi-langages : C#, J#, C++ CLI, VB.NET… [ Culture modèle ? "The model is the application" [ Conviction ou pur brouillage des pistes ? NetBeans UML [ Open Modeling API [ Modeling Framework [ Java Metadata Interface (JMI) 2 ? -> MOF 2 [ Simple stratégie de copie d’EMF ? 4 Freins à l’IDM Offre [ Instabilité quant au ciblage des plates-formes technologiques, e.g., (Hibernate/NHibernate) versus Java Persistence API (JPA) [ Nécessité absolue de la métaphore Compilation/Exécution/Test avec parfois un fort masquage des phases de transformation de modèles (code, assembleur, hexa., Etc.) [ Lisibilité de la technologie en tant que telle [ Démonstrateurs à grande échelle (e.g., appli. Web avec plus de 1000 écrans) [ Bilans, retours d’expérience succès versus échecs [ Rapports d’étude prospective jusqu’à présent prudents (versus enthousiastes) Demande [ Barrières culturelles et psychologiques [ Abstraction [ Accroissement du rôle des systèmes d’information comme outils de gouvernance et de création de valeur ajoutée [ Coût d’entrée, ROI [ Technology-independence ! 5 Componentization des applications Production d’applications plutôt monolithiques, référencement d’une DLL, d’un EJB module… ? Composants métier, e.g., composant de supply chain management branché sur un bus de services pour une application de CPFR (Collaborative Planning, Forecasting, Replenishment) ou comment remplacer Coca Cola par Pepsi Cola et Carrefour par Auchan Service-oriented computing Bornage de modèles, versionnement, points d’ancrage, propriétés de compatibilité, composabilité… 6 Sémantique Sémantique formelle, i.e., sémantique mathématiquement assise L’exécutabilité est à l’IDM ce que le test est à la programmation ou les maths appli. aux maths pures, une approche par approximation… Sémantique ? Dans UML, le méta-élément Classifier hérite du méta-élément Type. Ainsi, une instance de Class qui porte le stéréotype «type» est donc une classe qui est un Classifier qui est un type : c’est rassurant. En revanche, une instance de Class qui ne porte pas le stéréotype «type» n’est pas un type mais une classe qui est un Classifier qui est un type : c’est déroutant mais surtout contradictoire ! Quelles sont les conditions de fabrication des méta-modèles ? 7 Convergence langages - modèles Packages natifs javax.lang.model.* dans Java 6 (≠ JMI externe) [ Ex. 1 : javax.lang.model.type.NullType versus VoidType d’OCL ? [ Ex. 2 : javax.lang.model.type.PrimitiveType versus PrimitiveType de MOF ? EMF : couche de réflexion évoluée. Pourquoi ne pas la substituer à la couche de réflexion actuelle ? Quand est-il des noyaux réflexifs des langages de programmation expérimentaux des années 80 ? Java a inventé l’eau chaude : [ Principe de méta-modélisation, si tout « objet » est toujours l’instance d’un autre, il y a un problème de régression infinie, d’où : System.out.println("Absence de régression infinie du graphe d'instanciation Java : " + Class.class.getName()); [ Résultat à l’écran : Absence de régression infinie du graphe d'instanciation Java : java.lang.Class L’IDM va-t-elle continuer à exister de façon « externe » aux langages de programmation ? 8 La nature a horreur du vide… Model-Driven SOA emerges : “I don't see where if you want to address SOA in a scaleable way, you can go down that path without support for modeling.” (http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1283790,00 .html) “Rather than having models being imported and exported and generating code, the model is the application and that breaks down the silos.” (http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1280299,00 .html?bucket=NEWS&topic=300610) Ex. de MDSOA (© Ed Seidweitz - Model-Driven Solutions - OMG, March 2008) 9 Conclusions, opinions Le fossé existant entre les outilleurs et les utilisateurs finaux (applications métier) doit être comblé Les influences marquantes et significatives de l’IDM doivent être sans cesse rappelées (POO, Méta. + POO, MOO, Méta. + MOO, Méta.-Méta., Objet, Composant, Service, Modèle modulaire tissable/composable/transformable/versionnable/configurable…) La phase actuelle de diversification des environnements IDM va probablement libérer (rassurer) la demande Le rapprochement modèle - langage est aujourd’hui une réalité observée et sous-tend une complexification des langages de programmation. Alternativement, l’argument en faveur de langages épurés accessibles à tous reprend du poids : D, Ruby… Que ces deux journées et en particulier celle d’aujourd’hui soient fructueuses pour ceux d’entre vous acteurs de, ou utilisateurs bien engagés ou s’engageant dans l’IDM ! 10