Real Time Developer Studio - Emmanuel Gaudin
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
PragmaDev Dédiée au développement d’un outil de modélisation pour le développement des systèmes communicants. • TPE Française • Bénéficiaire depuis 2006
Références • Universités : ENST, Polytechnica Bucarest, Telecom Beijing… • Distributeurs: Amérique, Asie, Europe…
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
Segment cible • Architecture en Systèmes communicants modules (Event driven) s’exécutant en Historiquement embarqué & temps réel parallèle • Communication • Synchronisation Application Module 1 Module 2 Module 3 Message queue Sémaphore OS-RTOS-scheduler driver driver hardware
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.
Les langages existants Specification and Description Language est un standard de l’ITU-T. SDL • 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. UML • 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 AADL SDL Matlab URN SysML UML Vérification statique MARTE Requirements Architecture Analysis Vérification dynamique Specification Design Generic Generic HW/SW HW/SW Async SW Sync SW La vérification dynamique est essentielle car les exigences sont dynamiques.
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. Analyse UML • Conserver les niveaux d ’abstraction graphiques du SDL (architecture, communication, comportement). Spécification SDL SDL-RT • Utiliser la syntaxe et les types de données du langage C à la place de ceux du SDL. Conception C • Supprimer les concepts SDL sans C++ réalité technique d ’implémentation. • Compléter les concepts SDL pour Temps coller à la réalité (interruptions, 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
Vues: Librairie de composants Relations entre les classes statiques (C++) et dynamiques (SDL)
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 Le sémaphore est libéré Etat intermédiaire
Vues: Systèmes distribués Vue déploiement physique
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-RT TTCN-3 SDL Z.100 C Conception 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ématique 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 Generated generator C code compiler External C/C++ Binary socket RTOS Model editor cible MSC Model debugger C debugger tracer socket / COM / pipe • MinGW Text • Tornado editor • Tasking Real Time Developer Studio tools • gdb Third party tools • XRAY Source code • Multi Binary code
Le débogueur S’appuie sur la sémantique d’exécution du processeur ou du RTOS. • 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 Simulation Tests de Spécification Validation Simulation Tests Conception Exécution d’intégration Implémentation Exécution Test unitaires
Vérification de propriétés • Partenariat avec Verimag sur la technologie IF. • Simulation exhaustive, • Observateurs: • Vérification de propriétés, • Génération de tests. • Fonctionnalité RTDS • Export IF, • Exécute un script, • Trace MSC, • Case de test TTCN.
Mise en oeuvre translate to file Modèle SDL IF Propriétés Observateur IF compiler executable executes Transition State file Error file file Python script Cas de test TTCN socket Resulting Analyse MSC scenario
Des tests de référence Besoin Cas d’utilisation Scénarios de référence Tests de Spécification Validation Propriétés Simulation Tests Conception Exécution d’intégration Implémentation Exécution Test unitaires
Autres sujets de réflexion • Labo commun avec le CEA: • Technologie Diversity. • Génération d’un minimum de tests couvrant toutes les transitions. • SDL -> XLIA -> TTCN-3 • Export FIACRE: • CADP. • TINA.
Property Sequence Chart • Projet Européen PRESTO: • Vérification de propriétés fonctionnelles. • Vérification de propriétés non- fonctionnelles. • Outil gratuit: PragmaDev Tracer
Intégration dans le framework de l’ESA ASN.1 AADL ASN.1 ASN.1 Encodeurs / Décodeurs Encodeurs / Décodeurs Matlab RTDS Scade Encodeurs / Décodeurs Ada Loi de Système Loi de Générique contrôle réactif contrôle
Génération de modèle /* _PRAGMADEV_START*/ /* _PRAGMADEV_TASK_START */ i = 0; j = 0; /* _PRAGMADEV_TASK_END */ • A partir de commentaires dans le code existant /* _PRAGMADEV_NEXTSTATE Idle*/ • Génération d’architecture possible /* _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*/
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.
Vous pouvez aussi lire