560 likes | 692 Views
IDM & Passage à l’Echelle . Xavier Blanc Université Pierre & Marie Curie. CIM, PIM, PSM, Méta-modèle, modèle, etc. RAppels. Modèle d’exigences: représente l’application dans son environnement. Modèle d’analyse et de conception abstraite: représente l’architecture de l’application.
E N D
IDM & Passage à l’Echelle Xavier Blanc Université Pierre & Marie Curie
Modèle d’exigences: représente l’application dans son environnement. Modèle d’analyse et de conception abstraite: représente l’architecture de l’application. Modèle de code: représente la construction de l’application. Code de l’application et fichier de configuration. L’approche Architecture MDA
Code CIM PIM PSM Architecture Architecture MDA MOF M2 QVT M2 Application Informatique
Formalisation simple mais précise Formalisation & Illustration
Principes • L’IDM consiste à utiliser les modèles dans toutes les taches du cycle de vie d’un système informatique (ex: exigence, conception, production) • Dans l’IDM, le processus contrôlant le cycle de vie est lui-même un modèle ! • Grâce au support des modèles, l’objectif est d’automatiser massivement les taches pouvant l’être
Méta-modèle de processus • Objectifs: Standard, Expressivité, Formalisation, Exécutabilité • Références : SPEM (OMG), LittleJil (Osterweil), UML4SPM (Bendraou)
Un modèle de processus • Objectif: Capitalisation des savoirs-faires, Suivi du processus • Références: Sommerville, SWEBOOK, CMMI
Un méta-modèle d’exigence • Objectif: Formalisation • Référence: Doors?
Un modèle d’exigences • Objectif: Tracabilité
Un méta-modèle de design • Objectif: Standard, Formaliser, Vérification, Automatisation. • Références: UML, ….
Un modèle de Design • Objectifs: Communication, Vérification, Guider la production • Références: Gamma, Larman,
Un méta-modèle de production • Objectifs: ?, tracabilité • Références: ? • Remarque: La grammaire Java n’est pas suffisante, il faut prendre en compte les artefacts de déploiement
Synthèse • Même si en théorie il est possible de définir un méta-modèle pour chaque activité et même un méta-modèle pour le processus, en pratique cela s’avère très complexe • Considérons que nous sommes un monde idéal nous disposons donc • D’un processus modélisé • Des méta-modèles de tous les modèles à construire • Des automatisations exploitables (vérification, génération)
Gestion du contrôle • Chaque développeur a ses responsabilités. Il doit intervenir à un certain moment pour réaliser son activité. => Comment réguler et organiser (contrôler) les différents travaux que peuvent/doivent effectuer les développeurs • Comment gérer les actions de chaque développeur ? • Comment assurer la synchronisation de l’équipe? => Ces problèmes sont-ils propres à l’IDM ?
Gestion des données • Chaque tache dispose de modèles en entrée et en sortie, ces modèles font partie du modèle global • Chaque développeur durant la réalisation d’une tache va lire des modèles et/ou les modifier => Comment assurer l’accès aux modèles? => Comment garantir l’intégrité des modèles?
Environnement de développement Réparti Dynamique Hétérogène Mme Design Mr Code Mr Exigence
Un peu de concret • Mr Exigence veut construire son modèle d’exigences et prévenir Mme Design. Le modèle d’exigence peut être validé (pas d’exigences contradictoires). • Mme Design veut lire le modèle d’exigences et construire son modèle de design. Le modèle de design doit couvrir toutes les exigences. • Mr Exigence veut rajouter une exigence et modifier une exigence qui existait, puis il veut informer Mme Design • Mr Code veut lire le modèle de design et construire son modèle de code. • …
Un peu de concret (2ème lecture) • Tant que Mr Exigence n’a pas terminé, Mme Design n’a pas le droit de lire le modèle d’exigence. L’opération de vérification d’un modèle d’exigence est automatisée. • Mr Exigence n’a pas le droit de modifier son modèle pendant que Mme Design travaille. Mme Design doit pouvoir vérifier que son modèle couvre bien toutes les exigences (opération automatisée). • Mr Exigence a le droit de modifier son modèle après que Mme Design ait terminé son travail. • Mr Code n’a pas le droit de lire le modèle de design tant que Mme Design n’a pas terminé de travailler. • …
Et le passage à l’échelle alors ? • Taille des modèles • La taille globale se mesure maintenant en Go • Les modèles sont partagés entre les différents développeurs • Taille des équipes et fréquence des interventions • Les équipes sont composées de plusieurs développeurs (10 -> 1000) • Les équipes sont répartie sur plusieurs sites (5-10) • Les modifications sont fréquentes et peuvent avoir des impacts importants • Taille des projets et partage des ressources • Certains modèles sont utilisés dans plusieurs projets
Référentiel • Problématique: Stockage des modèles et gestion des accès
Référentiel • On sait • Stocker un modèle dans un fichier • Grace à XMI • Assurer une gestion de version sur un fichier • Utiliser les systèmes de gestion de version • Donner des droits d’accès sur un fichier • Utiliser les systèmes d’authentification • On sait moins • Stocker des morceaux de modèles • Plusieurs fichiers XMI ? Quelle granularité ? • Assurer un accès à une sous partie d’un modèle • Un modèle étant un graphe d’éléments de modèle il est délicat de limiter le parcours du graphe • Assurer la cohérence des données • Verrous ou diff/merge
Moteur de Workflow • Problème: Assurer que les développeurs respectent le processus
Moteur de Workflow • On sait • Exécuter automatiquement un workflow • Assurer les interactions avec les développeurs • Offrir une visibilité sur l’état d’avancement • On sait moins • Exécuter un processus de génie logiciel tout en assurant la souplesse (CMMi) • Coupler le suivi du processus avec le référentiel
Exercice • Mise en œuvre du scénario concret • Comment stocker les 3 modèles ? • Comment assurer les droits d’accès ? • Comment mettre en œuvre les opérations automatisées ? • Comment assurer la coordination des développeurs ? • Comment assurer la cohérence des modèles ? • Imaginer le passage à l’échelle
Synthèse • L’approche centralisée est envisageable • Référentiel CVS pour les modèles + moteur de workflow • Reste des problèmes majeurs à régler • Comment passer du modèle au fichier ? • Faut-il changer les référentiel CVS? • Comment assurer un suivi flexible du processus • Adaptation du processus pendant l’exécution! • Comment assurer le lien CVS + Workflow
Bus de modèles Approche ModelBus
Vision Services UML Repository get check OCL Checker get transform Q/V/T Engine
Problématique Connecter les services: • Nécessité de définir un système de typage pour les modèles • Qu’est-ce qu’un type de modèle (conformance)? • Nécessité de définir les accès aux services • Est-ce similaire à un accès WS ou Java? • Encoder les modèles, XMI est-il l’unique solution?
Ex: diagramme de classes Système de typage pour les modèles Doit-on accepter un package qui contient un acteur ?
Système de typage pour les modèles conformance conformance Model ModelType • Qu’est-ce qu’un modèle? • Extent (MOF2.0 Life Cycle) • Qu’est-ce qu’un méta-modèle? • Qu’est-ce qu’un type de modèle? • Un meta-model? • Qu’est ce que la conformité ?
L’accès check Web Service Access + XMI Java Access + JMI • Comment échanger les modèles? • XMI, Java, CORBA • Quelle sémantique d’appel? • Error, Exception, Reference
Role de l’adapter L’adapter assure les échanges réseaux / outil et s’occupe de l’accès aux modèles ModelBus supporte 2 modes d’accès au modèles Le consommateur récupère ses modèles et les transmet au service Le consommateur transmet la référence du modèle et le service récupère les modèles
Son concepteur doit élaborer la description de l’outil (en élaborant un modèle) L’adapter est généré L’adapter s’enregistre dans l’annuaire des services disponibles Les Adapters dans ModelBus Cet outil propose un service permettant de vérifier des contraintes OCL sur un modèle UML
Exercice • Mise en œuvre du scénario concret • Comment stocker les 3 modèles ? • Comment assurer les droits d’accès ? • Comment mettre en œuvre les opérations automatisées ? • Comment assurer la coordination des développeurs ? • Comment assurer la cohérence des modèles ? • Imaginer le passage à l’échelle
Synthèse • L’approche ModelBus a été prototypée dans deux projets Européens de recherche • Difficulté de convaincre les clients (grand groupe) • Reste des problèmes majeurs à régler • Comment assurer un suivi du processus • Recherche effectuée pour brancher un moteur de workflow sur ModelBus • Comment assurer la gestion de version
Une approche décentralisée Approche Praxis
Opération de construction • Operations nécessaire à la construction • Createa model element • SetPropertyassign a property value to a model element • SetReferenceassign a reference value to a model element • Deletea model element • Un modèle est représenté par une séquence de construction
01. create(c1,Class) 02. setProperty(c1,name, {‘PetStore’}) 03. create(uc1,UseCase) 04. setProperty(uc1,name, {‘Buy eBasket’})) 05. create(uc2,UseCase) 06. setProperty(uc2,name,{‘Create eBasket’}) 07. create(uc3,UseCase) 08. setProperty(uc3,name,{‘Cancel eBasket’}) 09. setReference(c1,ownedUseCase,{uc1,uc2,uc3}) 10. create(a1,Actor) 11. setProperty(a1,name, {‘Customer’}) 12. setReference(a1, usecase, {uc1,uc2,uc3})
Répartition des séquences 01. create(c1,Class) 02. setProperty(c1,name, {‘PetStore’}) 03. create(uc1,UseCase) 04. setProperty(uc1,name, {‘Buy eBasket’})) 05. 06. 07. 08. 09. setReference(c1,ownedUseCase,{uc1}) 10. create(a1,Actor) 11. setProperty(a1,name, {‘Customer’}) 12. setReference(a1, usecase, {uc1}) 01. create(c1,Class) 02. setProperty(c1,name, {‘PetStore’}) 03. 04. 05. create(uc2,UseCase) 06. setProperty(uc2,name,{‘Create eBasket’}) 07. create(uc3,UseCase) 08. setProperty(uc3,name,{‘Cancel eBasket’}) 09. setReference(c1,ownedUseCase,{uc2,uc3}) 10. create(a1,Actor) 11. setProperty(a1,name, {‘Customer’}) 12. setReference(a1, usecase, {uc2,uc3}) Comment Echanger ? Comment assurer la cohérence ?
Comment Echanger • Un groupe = Un projet (une séquence) • Ordre total des opérations (horloge de Lamport) • Possibilité de regarder la séquence d’un membre • S’abonner aux éléments du modèle • Réception des opérations les concernant • Filtrage à la réception (pour les références)
Comment assurer la cohérence ? Principe: Détecter les incohérences • Incohérence structurelle: • Propriété structurelle observable sur le modèle (similarité avec les contraintes OCL) • Incohérence méthodologique: • Propriété observable sur la façon dont on a construit le modèle
Incohérence structurelle • Définies par des prédicatssur la séquence. • Préfix ‘last’ pour identifier les actions qui ont un impact sur le résultat (create sans delete) EX: a use case should not own a use case if a = lastCreate (me, UseCase) then ! o uc, o = lastSetReference(me,ownedUseCase, R) and R ≠.
Incohérence méthodologique • Définies par des prédicatssur la séquence. • “ < ” pour spécifierl’ordre des opérations EX: Assign its name just after the creation of a use case ∀ a ∈ σ, if a = create(me,UseCase) then ∃ c ∈ σ, c = setProperty(me,name, NameVal) and !∃ b ∈ σ, a < b < c
Mise en œuvre Praxis • Uneopération de construction est un fait Prolog • Uneséquenceestune base de faits • Les incohérencessont les requêtes Prolog • Qui cherche les opérations source d’incohérence • Leurs variables servent au diagnostic analysis(X,Y) :- lastCreate(X,usecase), lastSetReference(X,ownedusecase,Y).