Ø CASE France Ø Services et prestations Ø Evénements & Presse Ø Demande d'information Ø Contact Ø Recherche
 

 

Note d'application: "Producer - Consumer"

Génération automatique des algorithmes d'un couple de diagrammes états-transitions/UML, concourants  (multi threads) et à accès mutuels

Note d'application basée sur le travail de M. Ankur Agarwal à
Computer Science and Engineering Florida Atlantic University
- Boca Raton - FL-33486
  USA

Généré avec Envision
UML C++

Avant propos

Cette note d'application montre comment on peut générer automatiquement à partir de diagrammes UML, une application Windows contenant deux machines d'états concourantes multi threads (diagrammes états/transitions UML) avec accès mutuels aux variables.

Cette note d'application comprend une démonstration sur l'utilisation des threads avec Windows. L'application a été générée avec le générateur de code UML-C++ 5.0 à partir de diagrammes UML 1.4 (voir diagrammes ci-dessous). Le code source obtenu a été compilé avec l'environnement Borland C++ 4.5 et la bibliothèque Windows OWL.

Pour étudier les fichiers source et pour exécuter le code, télécharger (voir ci-dessous) et décompresser le fichier CppProduceur.zip dans un répertoire temporaire puis double cliquer sur producer.exe. Cliquer sur le bouton pour démarrer la démonstration. Observer l'exécution des threads et attendre leur arrêt complet avant de fermer la fenêtre. Si vous avez des difficultés, contacter: mailto:jean-claude.jacquiot@case-france.com

Paramètres de génération

Conclusion

  • L'exécution montre fidèlement le respect des hypothèses définies dans les diagrammes UML
  • Le code généré a été compilé sans erreur et s'exécute normalement sur Windows XP ou 2K.
  • L'algorithme du thread "Producer" peut accéder aux données de "Consumer" et réciproquement. Respect des exigences
  • Aucune difficulté n'a été constatée lors de la génération, qui prend moins d'une seconde
  • Cette note d'application théorique, montre clairement la faisabilité de cette technologie qui pourrait s'appliquer à une grande diversité de besoins: 
    • IHM
    • Automate et Contrôleur
    • Web
    • Prototypage et Simulation...

Vue des composants et Vue logique


Cliquer sur les images pour agrandir

Une conception physique a été choisie, basée sur la vue composants. Cette conception implique la génération de trois fichiers de définition (cpp) associés à trois fichiers de déclaration (.h). Toutes les classes sont regroupées dans un seul fichier cpp avec son fichier en-tête associé.

Diagrammes états-transitions

Thread 1 classe Producer  - Thread 2 classe Consumer

Cliquer sur les images pour agrandir

Les classes "Producer" et "Consumer" contiennent chacune un diagramme états/transitions concourant dans les opérations updateC() et updateP() respectivement.

Structure des fichiers générés

  • Le répertoire Produce0 a été généré et comprend:
    • Borland2.cpp et .h
    • Produce1.cpp et .h
    • Provide3. cpp et .h
  • Produce0.log Rapport de génération
  • Attachés à cette présentation, les fichiers source C++, le rapport de génération, le fichier exécutable "Producer.exe" ainsi que les DLL Borland nécessaires à l'interface utilisateur intégrée Windows.

Code généré

  • Un répertoire comprenant trois fichiers de définition (.cpp) avec les trois fichiers de déclaration (.h) associés ont été générés en accord avec la vue composants.
  • Un fichier de rapport "log" contenant les étapes de la génération et le détail sur les avertissements a aussi été généré.

Solutions de gestion et de valorisation de l'information
adaptées à chaque entreprise et à ses projets.
En France depuis 1989

Hit Counter

UML  C++ / Java génère

  • Les déclarations de tous les objets UML nécessaires au codage
  • Le code de la fonction main() (C++) avec ses arguments système, pour le lancement de l'application
  • Le code des activités, des états et des transitions
  • Les algorithmes des diagrammes états - transitions, simples ou concourants
  • L'initialisation et le contrôle des opérations et actions concourantes multi threads des classes

UML C++ / Java produit

  • Un document (log file) très détaillé sur les étapes de la génération, les erreurs et les avertissements permettant de déboguer en UML
  • La structure des fichiers .cpp et .h ou java
  • L'appel de votre environnement de développement favori avec le bon fichier "projet/solution" et affiche les fichiers sources C++ ou Java générés.

CASE France copyright - 01/03/2009