310 likes | 451 Views
Sébastien Gérard Sebastien.Gerard@cea.fr 00 33 (0)1 69 08 90 57 Directeur de Thèse : François Terrier. profil UML pour les systèmes embarqués de l’automobile. Contexte et besoins Contraintes imposées par le partenaire industriel Choix définissant le cadre de travail
E N D
Sébastien Gérard Sebastien.Gerard@cea.fr 00 33 (0)1 69 08 90 57 Directeur de Thèse : François Terrier profil UML pour les systèmes embarqués de l’automobile
Contexte et besoins Contraintes imposées par le partenaire industriel Choix définissant le cadre de travail Présentation de la notion de profil UML Le profil ACCORD/UML Plan de la présentation
Le système que nous voulons construire doit …. Spécification Produit Donneur d’ordre Fournisseurs Contexte de travail avec PSA ? Automobile : Électricité et électronique 1993 : 12% 2005 : 25%
Mobilité Sécurité Confort Traction Passive Commandes Contrôle moteur Transmission Système d'airbags Prétensionneurs Equipements Véhicule Tenue de route Active Communication Instruments Audio, Téléphone Aide à la navigation Suspension Contrôle de stabilité Freinage Anticollision Direction Intrusions Environnement Direction assistée Condamnations Climatisation Bruit Quelques fonctions pilotées
Capteurs -Partage d'informations -Interactions -Concurrence... ECM BVA BSI Passerelle ABS/CDS SUSP Capteurs Complexité des systèmes
Exprimer des besoins non-ambigus Compréhension entre donneur d ’ordre et fournisseurs Maîtriser toute la chaîne de développement Spécification du système Implémentation sur cibles embarquées Validation des modèles produits Définition des besoins et objectifs • Diminuer les erreurs (ou oublis) • Évaluer les coûts de réalisation • Évaluer les coûts de modification
Contexte et besoins Contraintes imposées par le partenaire industriel Choix définissant le cadre de travail Présentation de la notion de profil UML Définition des extensions de UML Organisation de ces extensions Le profil ACCORD/UML Plan de la présentation
Stéréotypes (Stereotype) Mécanismes d’extension de UML • Ajout indirect d’éléments au méta-modèle • « thread » ou « process » sur Classifier • Valeurs marquées (Tagged value) • Ajout de propriétés à une méta classe • {documentation = “ … ” } sur Element • Contraintes (Constraint) • Ajout ou modification de « Well-Formedness Rules » • {destroyed}, {new} ou {transient} sur Instance Besoin de structuration notion de profil dans UML 1.3
Objectif Un profil peut contenir… les éléments sélectionnés du méta modèle référence, des mécanismes d’extension (ajouts ou spécialisations), des descriptions sémantiques du profil, des notations supplémentaires, des règles de transformation, de validation ou de présentation. Système e.g.: Mr Dupont Mr Dupont « conducteur » ? e.g.: Train Circuit Control Définition d’un profil UML Méta classes fondamentales sur lesquelles repose le profil Spécialiser un méta modèle standard (comme UML) servant de référence en un méta modèle spécifique dédié à un domaine d’application particulier. Stéréotypes, tagged values et contraintes introduits dans le profil « Semantics Variation Points » et ambiguïtés sémantiques de UML
instanceDe Méta Méta Modèle (M3) Méta Méta Modèle (M3) instanceDe MOF MOF Entité instanceDe instanceDe Méta Modèle (M2) Méta Modèle (M2) Classe UML UML Autres standards Autres standards . . . . . . instanceDe instanceDe Voiture Modèle (M1) Modèle (M1) instanceDe instanceDe Objets (M0) Objets (M0) Un modèle à quatre couches une106
MOF . . . UML SPE . . . Real Time ActionLanguage Profils standard (M2) Profils spécifiques utilisateur (M2) Modèle (M1) Objets (M0) Organisation de UML Méta Méta Modèle (M3) Méta Modèle (M2) ACCORD/UML
Exemples issus du profil ACCORD/UML • Règles de présentation • Choix des diagrammes utilisés dans le contexte du processus de développement ACCORD/UML • Extensions introduites • Le stéréotype « Real Time Object » • La valeur marquée {RTC=(dl(x,ms), …)} • Le concept de Signal • Aspects sémantiques • Notations spécifiques introduites • Génération automatique d’un patron de conception • Génération automatique du code temps-réel
Système Système Analyse préliminaire Besoins Cas d’utilisation Dictionnaire Système Analyse détaillée Train Circuit Control Diagrammes de classe Diagrammes de séquence Statecharts Prototype Train Circuit Control Diagrammes de classe Diagrammes de séquence Statecharts Processus de développement de ACCORD/UML
Messages methode_1 • Caractéristiques principales de l’objet actif de UML • « mono thread » • comportement ? La notion d’objet actif de UML anActiveObject ? ? ? ? ? Code Méthode Attributs Messages
aRealTimeObject Message processing &attribute access control Messages Interface externe methode_1 methode_1 m e t h o de_1 m e t h o de_2 . . . Code Méthode Attributs methode_2 Messages « Real-Time objects » • Différences majeures avec l’objet actif de UML • « multi threadé » et « temps-réel » • comportement clairement et complètement défini
Définition Un message = une action + un événement Appel d’opération (CallAction + CallEvent) Communication synchrone ou asynchrone de type point à point Un signal (SendAction + SignalEvent) Communication asynchrone, … Le concept de message de UML Un message définit une communication particulière entre deux instances participant à la réalisation d’une tâche précise. ?
Les signaux dans ACCORD/UML • Communication de type diffusion • diffusés à tous les objets déclarés sensibles • envoi è destinataire inconnu • réception è émetteur inconnu • La réaction à un signal = exécution d’une méthode • Peut posséder une contrainte de temps • à l’émission è TV {RTF} sur l’action générant le signal • à la réception è TV {RTF} sur un événement Real Time Feature: {RTF = (dl(xxx, ms), rd(xxx, ms), p(xxx, ms), nbPeriod(xxx), endOfPeriod, outOfTime)}
? Ajout de « Well-Formedness Rules » SignalEvent [1]Un événement signal ne possède que des paramètres en entrée. self.parameter forAll ( p | p.kind = # in) [2] Un événement de type signal possède autant de paramètre que le signal lui même possède d’attributs. self.parameter size = self.signal.allAttributes size
:Regulator OffCar OffCar OffCar Regulator CarStarter :CarStarter OffCar {RTC=(dl(100, ms)} /sendOffCar() {RTC=(dl(100, ms)} Etat1 Etat2 Spécialisation de la notation pour les signaux
Contexte et besoins Présentation de la notion de profil UML Le profil ACCORD/UML Aspects liés à la modélisation Transformation automatique de modèle Génération automatique de code Plan de la présentation
CarStarter <<signal>> <<signal>> OffCar OffCar OffCar Regulator + Recepteur () + ~Recepteur () + handleSignals() CarStarter OffCar Regulator - sendSignal() Transformation de modèle, pattern des signaux _OffCar « derive » + _Signal() + addToListOfTarget () + removeFromListOfTarget () + broadcast() Target {isAbstarct = true} listOfTargets handleSignals() + 0..* «use» «use»
create() :Regulator _OffCar addToListOfTargets(this) delete() removeFromListOfTargets(this) :Regulator :Target sendOffCar() create() :_OffCar handleSignals(sig) i=1..listOfTargets.size delete() Dynamique du pattern des signaux
Passage du modèle à sa mise en œuvre multitâche Regulateur calculer acquérir loiDeReg Vitesse Modèles Génération automatique du code Temps-Réel calculer acquerir Exécution
Regulateur maintenir «RTO» Regulateur maintenirtacheMaintenir Lock createtakerelease Compteur acquerir «RTO» Task createstart Regulateur maintenir «thread» «thread» Compteur acquerirtacheAcquerir Compteur acquerir InterfaceBoutonMA emettreAppuiBoutonMA «RTO» InterfaceBoutonMA emettreAppuiBoutonMAtacheEmettreAppuiBoutonMA InterfaceBoutonMA gererAppuiBoutonMA «thread» Signal ReplyBox MailBox Un même modèle pour plusieurs implantations TR Real-Time Objects Multitasking Loop Main Specific Code Generation ACCORD Virtual Machine ACCORD Kernel
Class PanneauAffichage { public : PortPA *portPA; void InitAffichage(EI infoEI) { //### code user for InitAffichage ### majInfoInitVitesse(infoEI.vit) ; majInfoInitSyst(infoEI.syst); //############# end ############# } }; Description du modèle utilisateur «RealTimeObjects» PanneauAffichage «PublicWriter» InitAffichage(<infoEI) 1-1 portPA PortPA OnOff / InitAffichage(dl=50ms) horsLigne enLigne
Class PanneauAffichage : public RTO { public : void initAffichage(RTC c, EI infoEI) { Request r (iniTask_initAffichage, this, c); r << pos; allocateTask( r); } void iniTask_initAffichage (Request *pr) { PanneauAffichage *this = pr->This; control(pr); int arg; (*pr) >> arg; codeTask_InitAffichage(arg);} void codeTask_initAffichage(EI infoEI) { majInfoInitTrain(infoEI.train) ; majInfoInitSyst(infoEI.syst);} «RealTimeObjects» PanneauAffichage «PublicWriter» intiAffichage(<pos) Génération automatique du code temps-réel 1/2
void handleSignal (OnOff &ev) { if (state == horsLigne) { RTC c (50); InitAffichage( c, ev.infoEI);} } }; Génération automatique du code temps-réel 2/2 horsLigne OnOff / InitAffichage(dl=50ms) enLigne
Guider Contrôler le développement des modèles Automatiser Amélioration de la maîtrise de développement d’un produit Gain en qualité, sûreté et en fiabilité des produits issus d’un tel développement Intérêt de cette démarche par profil UML
Rédaction d’un profil UML pour le développement de systèmes temps-réel embarqués dans le domaine automobile Thèse Projet européen WOODDES CEA, PSA, IntraCom, MECEL, I-Logix, Verilog, UPSALA et OFFIS Travaux sur la validation des modèles issus de ce profil Génération automatique de tests Travaux en cours…
Modèle ACCORD/UML Modèle Statemate reformulation Train Circuit Agatha Produit (Vit < 100 ) ( dist < 200) (Reg = true) (Vit 50) … J1 = (Vit=120, dist=150) J2 = (Reg=true, Vit=55) … Control Environnement ACCORD/UML Tests