Real Time Developer Studio Emmanuel Gaudin emmanuel.gaudin@pragmadev.com
TPE Française PragmaDev Dédiée au développement d un outil de modélisation pour le développement des systèmes communicants. Bénéficiaire depuis 2006
Partenaires
Références Aéro/Défense Automobile Télécoms Semi-conducteur Universités : ENST, ENSEEIHT, Polytechnica Bucarest, Telecom Beijing Distributeurs: Amérique, Asie, Europe
Projets
Pérennité Droit d accès au code source en cas de défaillance: Economique Technique Stratégique Audit du code source Possibilité de reprise par un tiers Intégration continue
Philosophie Développer un outil basé sur les besoins des utilisateurs.
Segment cible Systèmes communicants (Event driven) Historiquement embarqué & temps réel Application Architecture en modules s exécutant en parallèle Communication Synchronisation Module 1 Module 2 Module 3 Message queue Sémaphore driver OS-RTOS-scheduler hardware driver
Un réel besoin Le logiciel double tous les deux ans. Le volume final rend extrêmement difficile de garantir le niveau de qualité et de test avec les process et les outils traditionnels. Wind River Market Survey of Device Software Testing Trends and Quality Concerns in the Embedded Industry - Juin 2010. Ne pas oublier la règle des 1:10:100 Le coût de développement n est qu une partie du coût total de possession d un logiciel. Cependant le process de développement a un impact significatif sur ce coût total. Total Cost of Ownership: Development is (only) Job One by Daniel D. Galorath - Juin 2008. Source: James Martin study
Un réel besoin de modélisation Se concentrer sur le Quoi plutôt que sur le Comment, Modéliser c est communiquer et documenter, La lisibilité des systèmes complexes devient critique: qui construirait une maison sans dessiner le moindre plan? Maîtrise de la productivité, Amélioration de la qualité.
Caractéristiques d un bon langage de modélisation Le modèle abstrait doit être indépendant de la plateforme d implémentation, Le modèle abstrait doit pouvoir être traduit sur une plateforme d implémentation, Pour cela on s appuie généralement sur une machine virtuelle qui offre: un certain nombre de services, une sémantique d action.
SDL UML Les langages existants Specification and Description Language est un standard de l ITU-T. Evènementiel, Utilisé par l ETSI pour standardiser les protocoles de télécommunications, Formel (complete et non-ambigu). Unified Modeling Language est un standard de l OMG. Peut être utilisé pour représenter tous types de systèmes, Informel. SysML System Modelling Language AADL Architecture Analysis Description Language MARTE profile Modeling and Analysis of Real-Time and Embedded systems Z.109 Profil UML basé sur SDL Lustre / Esterel Synchronous programming languages for the development of complex reactive systems MATLAB MAtrix LABoratory Autosar AUTomotive Open System Architecture SART Structured Analysis for Real Time (obsolete)
Positionnement des langages Requirements Architecture Analysis URN AADL SysML UML SDL MARTE Matlab Vérification statique Specification Design Generic Generic HW/SW HW/SW Async SW Sync SW La vérification dynamique est essentielle car les exigences sont dynamiques. Vérification dynamique
Pas de spécificité temps réel UML UML1.x est trop générique pour décrire la dynamique du modèle. UML 2.x a introduit des profils spécifiques par domaine: Les outils ont implémenté des profils propriétaires, Les utilisateurs passent plus de temps à définir leur profil que leur système, Il existe un profil standard basé sur le SDL: Z.109. Tendance à la baisse: UBM 2013 Embedded Market Study: -27%, 2013 modeling technologies and habits on-line survey: -15%.
Intérêts du SDL Les niveaux d abstraction graphiques du SDL (architecture, communication, comportement, services) correspondent au besoin. Le SDL étant formel il est possible de simuler le modèle. Le SDL étant formel on peut générer tout ou partie du code. Le SDL est orienté objet et permet donc une réutilisation aisée de composants logiciels existants. Les systèmes étant globalement asynchrones (GALS), le SDL peut être utilisé au niveau système. SDL a les caractéristiques pour décrire un bon PIM. SDL est reconnu par les autorités de certification (European Aviation Safety Agency Certification Memorandum, ETSI, ESA)
Gains du SDL Des années de pratique ont permis de mesurer quantitativement les gains apportés par l utilisation du SDL Code C: 35 à 50 fautes par 1000 lignes Code SDL: 8 fautes par 1000 lignes Réduction globale du cycle de développement de l ordre de 35% Réduction de près de 50% dans la branche gauche du cycle en V Réduction moindre dans la branche droite du fait du décalage avec la réalité technique
Les problèmes d implémentation du SDL Tous les modules logiciels (RTOS, drivers) disponibles proposent des interfaces C ainsi que les modules existants au sein de l entreprise, Des concepts classiques dans le temps réel ne sont pas présents dans le SDL, La syntaxe SDL n est pas adaptée au codage. La réutilisation de composants logiciels existants est difficile, L interfaçage avec le C n est pas direct (driver ou RTOS), Les développeurs sont perdus, Le code généré est illisible,
La solution d implémentation: SDL-RT Utiliser les concepts UML à très haut niveau: analyse / expression des besoins. Conserver les niveaux d abstraction Analyse UML graphiques du SDL (architecture, communication, comportement). Utiliser la syntaxe et les types de Spécification SDL SDL-RT données du langage C à la place de ceux du SDL. Supprimer les concepts SDL sans réalité technique d implémentation. Conception C C++ Compléter les concepts SDL pour coller à la réalité (interruptions, Temps réel sémaphores).
SDL-RT SDL-RT : Permet de généraliser l utilisation de SDL à toutes les applications temps réel s appuyant sur un RTOS, Standard de l ITU-T depuis décembre 2012 dans la Z.104 de SDL 2010, Est un profil UML pour les applications temps réel, Téléchargeable gratuitement sur http://www.sdl-rt.org.
SDL Specification and Description Language, standard de l ITU-T pour décrire les spécifications détaillées des protocoles afin d assurer l inter opérabilité des implémentations. Mis à jour majeure tous les 4 ans depuis 1976. Version majeures: SDL 1988: Version de maturité SDL 1992: Introduction de l orientation objet SDL 2000: Alignement UML SDL 2010: Support des types C dans la Z.104 Conférence annuelle SDL Forum (http://www.sdl-forum.org/) SAM workshop (satellite event of Models conference) 11 outils commerciaux, 10 outils dans le domaine public. Technologie intégrée dans le framework TASTE de l ESA
Relations entre les classes statiques (C++) et dynamiques (SDL) Vues: Librairie de composants
Vues: Architecture et Communication
Vues: Comportement et Données Types de données abstraits en SDL. Types C/C++ en SDL-RT. Process A
Vues: Services du système d exploitation Prise de sémaphore Le timer «claque» Démarrage d un timer Etat intermédiaire Le sémaphore est libéré
Vue déploiement physique Vues: Systèmes distribués
Modèle Librairie de composants Architecture du système Interfaces Déploiement de l application Concepts temps réel Points clés du code
MSC: une vue dynamique Message Sequence Chart Les lignes verticales représentent une tâche, l environnement ou un sémaphore, Les flèches représentent des échanges de messages, une manipulation de sémaphore ou de timer. Utilisations en amont et en aval: Spécification dynamique sous forme de scénario Trace d exécution
RTDS: les langages supportés Analyse UML Spécification SDL Z.100 SDL-RT TTCN-3 Conception C C++ Informel Formel Semi formel Testing
RTDS: les langages supportés Modélisation informelle pour l expressions des besoins en UML Edition Génération de squelettes C++ Modélisation semi-formelle pour la conception en SDL-RT Edition Vérification syntaxique et sémantique Génération de code Débogue graphique Modélisation formelle pour la spécification en SDL Z.100 Edition Vérification syntaxique et sémantique Simulation Verification Génération de code Débogue graphique
Simulateur Véritable débogueur des modèles formels basé sur la sémantique du langage Points d arrêts et pas à pas dans les modèles, Opérateurs externes ou interactifs, Traces dynamiques MSC, Connexion d une IHM ou d un outil externe par socket.
La génération de code Classes statiques en squelette C++. Classes dynamique en C ou C++. Le code est lisible. Profils de génération avec wizard Le code généré à partir du modèle: intègre l adaptation des RTOS: FreeRTOS, VxWorks, OSE, OSE Epsilon, CMX RTX, Nucleus, Posix, Win32, ThreadX, ou uitron, propose un scheduler, est libre d utilisation, documenté pour personnalisation.
Architecture de débogue S appuie sur un débogueur C hôte ou sur cible pour débogue graphique. Model C code generator Generated C code compiler External C/C++ Model editor socket Binary RTOS cible MSC tracer Text editor Model debugger Real Time Developer Studio tools Third party tools Source code Binary code socket / COM / pipe C debugger MinGW Tornado Tasking gdb XRAY Multi
S appuie sur la sémantique d exécution du processeur ou du RTOS. Le débogueur Points d arrêts et pas à pas sur les diagrammes et/ou dans les fichiers C, Traces dynamiques MSC, Interface de prototypage, Connexion d un outil externe par socket.
Garder le lien avec le modèle Switch entre Modèle source Code généré
Outil: les traces MSC Traces d exécutions: Etats, Evènements, Sémaphores, Timers. Filtrage du niveau de trace Affichage du temps système MSC Diff permet de vérifier: La conformité, La non-régression.
Couverture du modèle Vue graphique de la couverture du modèle Possibilité de merge
Interface de prototypage Widgets de base et possibilité d insérer une image. Connait les entrées et les sorties du modèle. Se connecte automatiquement au simulateur ou au débogueur.
La génération de documentation Publications logiques (état, transition, partition, diagramme) Commentaires précédent et suivant la publication Styles de paragraphes Styles de caractères Formats d exportation RTF OpenDocument HTML SGML Elements exportés Publications avec textes Entrées d index Entrée de table des matières
La génération de documentation Un document La documentation générée Une publication
Test Basé sur le standard international TTCN-3: Definition des types de données, Définition de Templates, Cas de Test, Control d Execution. Connection automatique au Simulateur: Points d arrêt dans le modèle ou la suite de test, Verdict apparait dans la trace d exécution.
Support TTCN-3 Langage textuel Simulateur avec Test manager Générateur de code C++ Génération de MSC à partir de TTCN-3 Génération de TTCN-3 à partir de MSC Génération de TTCN-3 à partir d une propriété (via Verimag) sur un modèle Génération de TTCN-3 pour couvrir toutes les transitions d un modèle (à venir)
Intégration continue Spécification Simulation Tests de Validation Conception Simulation Exécution Tests d intégration Implémentation Exécution Test unitaires
Vérification de propriétés Partenariat avec des laboratoires spécialisé: Simulation exhaustive, Résolution symbolique. Propriétés: Couverture fonctionnelle, Propriétés statiques ou dynamiques, Vérification de propriétés, Objectif de tests. Fonctionnalité RTDS: Export, Exécute un script, Récupération des résultats.
Mise en oeuvre Modèle SDL translate to file Langage pivot Propriétés Observateur executes Résolution Exploration Cas de test Analyse TTCN MSC socket Scénarios résultat
Génération de test Requirements Simulation Exécution Traces Modèle Objectifs de test Tests Couverture
Property Sequence Chart Projet Européen PRESTO: Vérification de propriétés fonctionnelles. Vérification de propriétés nonfonctionnelles. Outil gratuit: PragmaDev Tracer
Intégration dans le framework de l ESA ASN.1 AADL ASN.1 ASN.1 Matlab Encodeurs / Décodeurs RTDS Encodeurs / Décodeurs Scade Encodeurs / Décodeurs Ada Loi de contrôle Système réactif Loi de contrôle Générique
/* _PRAGMADEV_START*/ /* _PRAGMADEV_TASK_START */ i = 0; j = 0; /* _PRAGMADEV_TASK_END */ /* _PRAGMADEV_NEXTSTATE Idle*/ /* _PRAGMADEV_STATE Idle*/ /* _PRAGMADEV_INPUT Error(); */ /* _PRAGMADEV_NEXTSTATE ErrorState*/ /* _PRAGMADEV_INPUT Valueof(coor); */ /* _PRAGMADEV_DECISION coor == 3 */ if ( coor == 3 ) /* _PRAGMADEV_BRANCH true */ /* _PRAGMADEV_TASK_START */ {x = 5;} /* _PRAGMADEV_TASK_END */ /* _PRAGMADEV_NEXTSTATE Idle*/ /* _PRAGMADEV_BRANCH false */ else /* _PRAGMADEV_TASK_START */ {x = 7;} /* _PRAGMADEV_TASK_END */ /* _PRAGMADEV_NEXTSTATE Idle*/ /* _PRAGMADEV_ENDDECISION */ /* _PRAGMADEV_ENDSTATE*/ /* _PRAGMADEV_STATE ErrorState*/ /* _PRAGMADEV_INPUT End(); */ /* _PRAGMADEV_STOP */ /* _PRAGMADEV_ENDSTATE*/ Génération de modèle A partir de commentaires dans le code existant Génération d architecture possible
La gestion de projet Format de stockage textuel en XML permet une gestion de configuration aisée Exportation des diagrammes au format PNG, JPEG, PS, HTML, Publish and subscribe et génération de documentation RTF, OpenDocument, HTML, et SGML Informations de traçabilité et intégration de Reqtify Support des plateformes: Solaris, Windows, Linux. Licences flottantes
Conclusion Trois niveaux de modélisation: Informel, Semi-formel, Formel. Outils pour: Documenter, Simuler, Valider, Tester. Basé sur des standards internationaux.
Roadmap Court terme: PragmaList: use case de validation. Version MacOS X. Moyen terme: Support de nouveaux outils tiers (debug, RTOS). Verticalisation (ferroviaire, IoT, M2M). Long terme: Support de la Z.104. Nouvelle ergonomie.