Real Time Developer Studio - Emmanuel Gaudin

La page est créée Jacqueline Sauvage
 
CONTINUER À LIRE
Real Time Developer Studio - Emmanuel Gaudin
Real Time Developer Studio

       Emmanuel Gaudin
      emmanuel.gaudin@pragmadev.com
Real Time Developer Studio - Emmanuel Gaudin
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
Real Time Developer Studio - Emmanuel Gaudin
Partenaires
Real Time Developer Studio - Emmanuel Gaudin
Références

• Universités : ENST, Polytechnica Bucarest, Telecom Beijing…
• Distributeurs: Amérique, Asie, Europe…
Real Time Developer Studio - Emmanuel Gaudin
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
Real Time Developer Studio - Emmanuel Gaudin
Philosophie

Développer un outil
basé sur les besoins
  des utilisateurs.
Real Time Developer Studio - Emmanuel Gaudin
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
Real Time Developer Studio - Emmanuel Gaudin
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
Real Time Developer Studio - Emmanuel Gaudin
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é.
Real Time Developer Studio - Emmanuel Gaudin
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