RTDS G3 Emmanuel Gaudin emmanuel.gaudin@pragmadev.com
PragmaDev Dédiée au développement d un AGL pour le développement des applications temps réel et embarquées. Réseau de partenaires: Formations, Service, Tests, Produits. Distributeurs: Asie, Europe, Etats Unis.
Partenaires
Références PragmaDev 1 200 200 1 000 000 800 800 Sales Sales K K 600 600 400 400 200 200 -- 2002 2002 2003 2003 2004 2004 Year Year 2005 2005 2006 2006 2007 2007 Ecoles : ENST, Polytechnica Bucarest, Telecom Beijing,
Philosophie Développer un outil basé sur les besoins des utilisateurs.
Segment cible Toutes les applications s appuyant sur un Real Time Operating System (RTOS) Décomposition en tâches s exécutant en parallèle Communication par : échange de messages interruptions appel de fonctions sémaphores Application Module 1 Module 2 Module 3 Message queue driver RTOS hardware driver Sémaphore
Etat de l art Le langage C est prédominant (75%) L assembleur en baisse mais présent (40%) Le C++ fait son apparition (40%) Le Java est anecdotique (moins de 5%) 90% des développements temps réel n utilisent aucun outil graphique
Tendance La lisibilité des systèmes devient critique du fait de la complexité des applications et de la dispersion des équipes, Maîtrise de la productivité, Amélioration de la qualité, Le réutilisation de modules est primordiale, du code existant, du code futur.
Les langages existants Le SDL (Specification and Description Language) et le MSC (Message Sequence Chart) sont des standards de l ITU (International Telecommunication Union). Orienté temps réel événementiel, Utilisé par l ETSI pour décrire les protocoles de télécommunications, Graphique, Formel (complet et non ambigu), i.e. permet de coder et de simuler l exécution du système, Orienté objet (permet la réutilisation de composants logiciels), L UML (Unified Modeling Language) standardisé par l OMG (Object Management Group). Adapté à tous types de systèmes, Graphique, Utilisé à très haut niveau d abstraction, Informel, i.e. nécessite un autre langage pour le codage (C, C++, Java, SDL), Très orienté objet.
Positionnement des langages Analyse UML Spécification SDL Conception C++ Java CC SQL IHM Web Temps réel Temps réel BdD
Pas de spécificité temps réel UML Pas de représentation UML des concepts temps réel classiques: tâches, sémaphore, message, timer UML est très adapté au C++ pour représenter des données statiques. Deployment diagram idéal pour les systèmes distribués. Modèle d analyse est dé-corrélé du modèle de codage.
Quid d UML2.0? L objectif d UML 2.0 est le support du MDA (Model Driven Architecture) MDA a pour objectif de permettre la définition de profils Pas de profil au moment de la standardisation A cause des profils, les modèles UML 2.0 ne sont pas portables entre outils et intègrent des notations spécifiques
La tendance UML 2.0 Le Sequence Diagram d UML 2.0 reprend la plupart des caractéristiques du Message Sequence Chart du SDL Le diagramme de structure UML 2.0 est l équivalent du diagramme d architecture SDL Les nouveautés viennent du SDL, L ITU a standardisé un profil UML 2.0 basé sur le SDL pour les télécommunications (Z.109).
Intérêts du SDL Les niveaux d abstraction graphiques du SDL (architecture, communication, comportement) apportent beaucoup aux équipes de développement pour représenter l aspect dynamique du système. Le SDL étant formel il est possible de simuler le comportement du système sur station de développement avec des outils de débogue graphiques. Le SDL étant formel on peut générer depuis la description SDL le code pour la cible. Le SDL est orienté objet et permet donc une réutilisation aisée de composants logiciels existants (les protocoles de télécommunication sont écrits en objet par l ETSI).
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 graphiques du SDL (architecture, communication, comportement). Utiliser la syntaxe et les types de données du langage C à la place de ceux du SDL. Supprimer les concepts SDL sans réalité technique d implémentation. Compléter les concepts SDL pour coller à la réalité (interruptions, sémaphores). Analyse Spécification Conception UML SDL C C++ Temps réel SDL-RT
SDL-RT SDL-RT est: Permet de généraliser l utilisation de SDL à toutes les applications temps réel s appuyant sur un RTOS, Lisible et basé sur un format de stockage textuel normalisé (XML), Proposé à l ITU pour intégration dans le SDL, Est un profil UML pour les applications temps réel.
Relations entre les classes statiques et dynamiques SDL-RT: 6 vues statiques
SDL-RT: 6 vues statiques Architecture et Communication
SDL-RT: 6 vues statiques Vues Comportement et Données Process A
Autre exemple de comportement SDL-RT: 6 vues statiques Prise de sémaphore Démarrage d un timer Le timer «claque» Le sémaphore est libéré Etat intermédiaire
Vue déploiement physique SDL-RT: 6 vues statiques
SDL-RT: Vue graphique Librairie de composants Architecture du système Interfaces Déploiement de l application Concepts temps réel Points clés du code
Orientation objet Définition de classes dans des packages sur des concepts temps réel pertinents: Block Process Transition Déclaration de données locales Propriétés objets applicables complètes: Héritage Spécialisation Encapsulation des données Classes abstraites
State 1 Orientation objet - exemple mypackage mygate [Input 1, Input 2] mygate [Input 1] State 1 Input 1 Input 2 Input 1 INHERITS MySuperClass; Action 1 Action 2 Action 1 State 1 = State 2 State 3 State 2 Input 2 An instance of MyClass MySuperClass Action 2 mygate [Input 2] State 3 MyClass
State 1 Orientation objet - exemple mypackage INHERITS MySuperClass; mygate [Input 1, Input 2] mygate [Input 1] State 1 Input 1 Input 1 Action 1 State 1 = Action 1 Action 2 Input 1 State 2 State 2 MySuperClass Action 2 An instance of MyClass mygate [Input 2] MyClass
Orientation objet exemple suite L instance de la classe s intègre dans l architecture du système USE mypackage; canal1 canal3 Process B canal4 [Signal3] [Signal1, Signal2] [Signal8] [Input 1, Input 2] mygate Process A: MyClass
SDL-RT MSC: une vue dynamique SDL-RT 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 Conception C C++
RTDS: les langages supportés UML Edition Génération de squelettes C++ SDL Z.100 Edition Vérification syntaxique et sémantique Simulation Génération de code Débogue graphique SDL-RT Edition Vérification syntaxique et sémantique Génération de code Débogue graphique
Real Time Developer Studio
Outil: le Project manager Le «hub» de l outil: Organisation des fichiers (UML, SDL Z.100, SDL-RT, C, C++, H, traces et autres) en packages, Appel des éditeurs, du débogueur, et du générateur de code, Gestion des profils de génération de code.
SDL Z.100: Le simulateur Véritable débogueur SDL Z.100: Points d arrêts et pas à pas sur les diagrammes SDL, Opérateurs externes ou interactifs, Traces dynamiques MSC, Connexion d une IHM ou d un outil externe par socket.
SDL-RT: la génération de code Classes statiques en squelette C++. Classes dynamique en C. Le code est lisible. Profils de génération avec wizard Le code pour supporter les concepts SDL-RT intègre l adaptation des RTOS: VxWorks, OSE, CMX RTX, Nucleus, Posix, Win32, ThreadX, ou uitron est libre d utilisation, documenté pour personnalisation.
SDL-RT: Architecture de débogue S appuie sur un débogueur C hôte ou sur cible pour débogue graphique. SDL-RT C code generator Generated C code compiler External C/C++ Binary SDL-RT editor RTOS cible MSC editor Text editor SDL-RT debugger Real Time Developer Studio tools Third party tools Source code Binary code socket C debugger Tornado Tasking gdb XRAY Multi
Véritable débogueur SDL-RT: SDL-RT: Le débogueur Points d arrêts et pas à pas sur les diagrammes SDL-RT et/ou dans les fichiers C, Traces dynamiques MSC, Connexion d une IHM ou d un outil externe par socket.
SDL-RT: Facilités de débogue Switch entre Source SDL-RT Code C 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 de code Vue graphique de la couverture de code Possibilité de merge
Test Generation de process de test à partir de la spécification (H)MSC
Méthodologie UML MSC req. MSC Diff MSC trace Test generator SDL / SDL-RT specification SDL / SDL-RT Test process : RTDS : modèle SDL-RT design
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
Vérification de modèles SDL Partenariat avec Verimag sur la technologie IF. Simulation exhaustive, Observateurs, Génération de tests. Fonctionnalité RTDS Export IF, Exécute un script, Trace MSC.
Mise en oeuvre SDL translate to file IF Observer file executes IF compiler executable state file transition file error file Python script MSC socket Resulting scenario RTDS Script file
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 Fonctionnalités Langage graphique, Orienté objet, Continuité avec les techniques actuelles, Mise au point de l application plus tôt, Validation grâce à une interface de prototypage, Réduction des temps de développement de 35% à 50%, A un prix compétitif. Meilleure qualité, Valeur ajoutée Code lisible et auto-documenté, Réutilisation de composants logiciels, Prise en main immédiate, Validation des besoins, Réduction du temps de mise sur le marché, Amortissement en 6 mois.
Produit connexe: MSC Tracer Trace on-line ou off-line le comportement de la cible avec une représentation graphique basée sur des standards. Auto-documente les campagnes de test, Vérifie la non-régression, Connexion facile.