IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

UML et C embarqué (firmware)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut UML et C embarqué (firmware)
    Bonjour et merci à tous,

    Cela fait quelques années que le site developpez.net et ces membres me rendent bien service.
    Gain de temps, apprentissage de nouvelles technologies, gain d'argent....
    Cela me paraît du coup juste de redonner un peu de contenu concernant le domaine de l'embarqué.

    Je souhaite qu'à l'aide de cette rubrique et des autres membres du forum pouvoir faire avancer cette problèmatique.

    Etant professionnellement dans ce secteur depuis quelques temps, il m'est apparu qu'une démarche de "qualité logicielle" était quasi obligatoire:
    Lisibilité, réutilisabilité du code, code multi-cible et multi-language, automatisation de tâches, gestion de la documentation...
    Même si c'est ces points restent communs au domaine de l'applicatif, l'embarqué est un domaine bien à part avec des contraintes spécifiques (ressources limitées, problématiques de timing, d'interruptions, compilateur et environnement, POO...).

    Au delà de ces aspects, le domaine même de la modélisation dans le C embarqué est moins utilisé que pour le C/C++ applicatif.

    Quelques questions que l'on peut se poser durant un développement:
    -Comment écrire une documentation de manière standardisée tout en y ajoutant des spécificités?
    -Comment prendre en compte les spécificités de mon µp (noms des registres, type de périphériques: I2C, CAN, SPI, mapping mémoire) ?
    -Comment prendre en compte les spécificités de mon compilateur (directives de compilation: #pragma)?
    -Comment prendre en compte les spécificités de mon code (temps passé dans une interruption, FSM)?
    -Comment travailler objet avec du C?
    -Comment générer du C/ASM à partir de diagrammes?
    -Existe t'il des languages et des méthodes me permettant de formaliser tout cela? Et part quoi commencer?
    -Puis-je rétro-générer du code C sous la forme de diagrammes?
    -Quels sont les outils dédiés à sa propre problématique?
    -L'UML d'accord, mais comment l'utiliser?

    Il existe globalement des réponses à ces questions mais je pense qu'il serait intéressant d'avoir plusieurs "sons de cloches".
    De même la question des coûts (formations et outils) est importante pour un responsable de projet: dans ce domaine il existe des différences notables!

    Quelques thémes intéressants pour le C embarqué:
    -SDL
    -Temps réel et OS
    -Profile UML (SysML, XTUML)
    -Approche MDA
    -Test unitaire

    Salutations!

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    le sujet m'interresse enormement.
    bien que je ne connaisse actuellement rien en UML ou autre techniques "d'approches de conception".
    il serais interressant pour les neophytes comme moi, que tu developpe un peu la chose. (ou des liens vers des articles se rapprochant du sujet...)

    euh voila ... j'attend de voir les reponses d'autres participants.
    je m'assois, je me tais et je regarde

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Hardware
    -L'UML d'accord, mais comment l'utiliser?
    Si j'ai bien compris, UML (jamais utilisé) concerne une conception 'orientée objet', donc mettant en oeuvre des concepts difficiles à traduire en C qui n'est pas fait pour ça.

    D'une manière générale, ton post soulève de nombreux points interessants, mais tu commets une erreur fondamentale, c'est de croire que la conception est liée à un langage particulier (tu postes sur le forum C, alors qu'il y a des forums dédiés à ce genre de reflexion sur ce site) alors qu'elle est plutôt liée à un 'type' de langage (OO ou non).

    Tu devrais reposter sur un de ces forums, en ne mettant que 2 ou trois questions liées, ce sera plus simple pour répondre...

  4. #4
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Si j'ai bien compris, UML (jamais utilisé) concerne une conception 'orientée objet', donc mettant en oeuvre des concepts difficile à tradiore en C qui n'est pas fait pour ça.
    Bingo.

    UML est un langage de modelisation des donnees et des traitements.

    Il y a les diagrammes de structures, et les diagrammes de fonctionnement.

    Dans les diagrammes de structures on retrouve les diagrammes de classes, les diagrammes d'objets, etc.

    Implementer ca en C... Ca doit etre faisable mais bon... Tailler une haie au coupe-ongle aussi ca l'est.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Réponse
    Je ne pensais pas que vos réponses seraient aussi rapides!

    Tout d'abord merci pour les remarques d'Emmanuel et des autres.

    Concernant le choix du language C (non objet) par rapport à l'UML (language multi-language):
    C'est très simple j'ai voulu de suite être concret et parler du cas "C/ASM" car dans beaucoup de projets embarqués on utilise ces languages.
    Il existe bien sûr Java et d'autres languages Objet mais avec le C, comment faire?
    De plus je ne voulais pas rentrer dans la catégorie Modélisation afin de cibler de suite sur ce language.

    En fait je souhaite que ce forum puisse faire avancer rapidement les personnes sur le sujet car finalement une société demande à sortir un . hex, .rom, ou .out rapidement et même si dessiner des diagrammes est intéressant, ce qui prime c'est le code compilé.
    D'où ce post sur le forum C.
    Au passage il serait intéressant d'avoir des retours sur Extreme Programming et sur Agile.

    Concernant les points que j'ai indiqué, ce sont des questions que je me suis posé et que j'ai en partie résolu (je dis bien en partie...).
    Je suis notamment en train de travailler sur la génération de code C à partir des diagrammes UML.

    Personnellement j'ai avancé sur ces points, du coup j'ai choisi les outils et language adaptés à mes besoins.
    Ca n'est pas une solution générique mais je pense que ça peut répondre à pas mal de questions communes.

    Concernant le lieu du post, Emmanuel, si cela pose vraiment problème dis le moi et je le déposerai dans la partie dédiée à la modélisation (par contre comment le transférer?).

    Jack Serious: C'est vrai que ça peut paraître étrange mais on peut travailler à condition d'avoir un générateur de code customisable.
    Je te donne un exemple, en voulant utiliser des structures comme équivalence aux classes, une méthode consiste à utiliser des pointeurs de fonctions dans les structures -> mon compilateur n'en voulait pas!
    J'ai tout de même pu poursuivre en customisant mon générateur de code.

    Dark Ebola:
    Globalement tu dois travailler sur le language de modélisation puis sur la méthode à utiliser et enfin choisir un outil.
    Ce qui est nécessaire est de tester et s'imprégnier en revenant régulièrement sur chacun de ces trois points.
    Pour la partie UML, jette un premier coup d'oeil sur:
    http://laurent-piechocki.developpez...._fr_cours.html
    http://perso.efrei.fr/~charroux/cour...e_sequence.pdf
    Tu n'auras sûrement pas besoin de tous ces diagrammes donc cherche ce qui t'est utile.
    Une fois trié (la plupart du temps, les state chart, component, class et sequence ou activity diagrams sont suffisants) post tes questions.

    En ce qui me concerne je ne travaille qu'avec UML d'où l'orientation de ce forum mais si certains ont des idées sur d'autres languages (SDL-RT par ex.) n'hésiter pas sur un forum voisin.
    De même je n'ai jusqu'à présent pas travailler sur du Temps réel à l'aide d'un OS. C'est actuellement très présent sur le marché électronique.
    Je pense que ça intéresserait pas mal de monde.

    Hardware.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Concernant la programmation objet en C
    A lire, l'article d'Aymeric Lesert:
    http://c.ftp-developpez.com/downloads/c/cobjet.pdf

    Hardware

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Hardware
    A lire, l'article d'Aymeric Lesert:
    http://c.ftp-developpez.com/downloads/c/cobjet.pdf

    Hardware
    Il y a aussi celui de CGI, plus récent : Programmation orientée objets en C ?

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Hardware
    -Puis-je rétro-générer du code C sous la forme de diagrammes?
    Oui, mais j'ai oublié le nom, et mon ordi principal est en panne...

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Bonjour à tous,

    Citation Envoyé par Hardware
    -Puis-je rétro-générer du code C sous la forme de diagrammes?
    Si tu veux générer un diagramme à partir de ton code, ca s'appelle du reverse Engineering (enfin je crois), et tu peux le faire avec plein d'outils libres. Moi j'utilise Ideogramic UML, c'est tout simple.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Ideogramic
    Merci Violette,

    Je ne connaissais pas ce soft, j'y ai jeté un coup d'oeil.
    Ce qui à l'air intéressant c'est l'aspect pervasif modeling où tu peux tagger des diagrammes avec tes propres annotations ainsi que les différentes plateformes de travail (mobilité).
    Cependant toi qui l'utilise, de qu'elle manière sont taggé ces annotations? Est-ce une simple image qui se superpose au diagramme?
    Ce qui serait intéressant serait d'utiliser la notion UML de "tagged value" afin de tagger une classe (par ex) avec une image et pourquoi pas un fichier son....
    Un ex: Durant l'élaboration du cahier des charges d'un système, on attribue à "la volée" la responsabilité du développement d'un package fonctionnel à la personne concernée...
    Ca doit être possible mais est-ce le cas avec cet outil?

    Autre chose as-tu un retour sur Agile qui semble y être utilisé?

    Hardware

  11. #11
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Hardware
    -Comment travailler objet avec du C?
    -Comment générer du C/ASM à partir de diagrammes?
    -L'UML d'accord, mais comment l'utiliser?
    Pour faire des objets en C, on ne peut qu'avec struct
    Je doute fortement qu'avec des éditeurs UML on puisse faire de la rétro-ingénierie pour source en C

    -SDL
    SDL n'est pas trop destiné pour l'embarqué; cela consomme énormément de ressources matérielles.
    Il faut développer ses propres systèmes de graphismes.
    Tout le monde veut utiliser cette bibliothèque à toutes les sauces.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut
    Citation Envoyé par mat.M
    Pour faire des objets en C, on ne peut qu'avec struct
    Je doute fortement qu'avec des éditeurs UML on puisse faire de la rétro-ingénierie pour source en C
    Lorsqu'une RG C++ existe, elle est souvent figée et scanne les structures en stéréotypant les classes obtenues avec "struct".
    Les relations disparaissent parfois du diagramme obtenu d'ailleurs.
    Actuellement je ne connaîs pas un outil dont la rétro-génération est customisable (je suis preneur sinon!).
    Ce qui me pose problème est qu'on ne connaît pas le résultat final.
    C'est assez sympathique pour ne pas avoir à réécrire certaines parties du code ou pour avoir une vue globale rapidement sur un projet.
    Donc sur la question de la RG C, je suis assez sceptique.
    J'opte pour une démarche descendante où je modifie mon modèle puis je génère mon code à partir de mes règles (ça a ses avantages et ses défauts).

    SDL n'est pas trop destiné pour l'embarqué; cela consomme énormément de ressources matérielles.
    Il faut développer ses propres systèmes de graphismes.
    Tout le monde veut utiliser cette bibliothèque à toutes les sauces.
    Au delà de SDL la question des ressources utilisées est intéressante surtout par rapport à l'objet:
    L'enrobage Objet autour du C est parfois lourd (pour l'embarqué) à gérer et consomme en terme de mémoires Programme et Datas.
    Du coup je stéréotype et je tagge mes classes en customisant mon générateur de code.

    Cette stratégie est notamment adopté par Mentor Graphics et sa suite UML.
    Il me semble vraiment que fournir un générateur non adaptable est une erreur.
    Cela demande un certains temps afin de définir ces règles de génération mais on est gagnant. C'est un peu la même procédure pour la génération de la documentation. Une fois défini son modèle de document (commercial, programmeur, installation , aide...) tout roule pour le mieux.
    Il est de plus tout à fait possible de s'inscrire dans un projet MDA avec un PIM, des PSMs et plusieurs types de générateur.

    Bilan: On modèlise des classes mais comme vous le précisiez, on obtient uniquement des structures.

    En travaillant ainsi, on reste dans UML avec un language non objet.

    Bon après-midi et sinon bonne soirée pour les autres.

    Hardware

  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mat.M
    SDL n'est pas trop destiné pour l'embarqué; cela consomme énormément de ressources matérielles.
    Je pense qu'il ne s'agit pas de SDL au sens "Simple Directmedia Layer", mais du langage de specification et de description SDL (Specification and Description Language, UIT-T Z.100).

    http://www.site.uottawa.ca/~bochmann...me/node31.html

    qui fait partie de ce site :

    http://www.site.uottawa.ca/~bochmann...ome/notes.html

    qui devrait tout entier t'interesser !

  14. #14
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Je pense qu'il ne s'agit pas de SDL au sens "Simple Directmedia Layer", mais du langage de specification et de description SDL (Specification and Description Language, UIT-T Z.100).
    Oopps autant pour moi il y a eu confusion alors

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Par défaut Nouvelle release pour Enterprise architect de Sparx
    Très bonne nouvelle,

    La société Sparx Systems vient de fixer la dernière release de son outil UML 6.5.797: Enterprise architect: http://www.sparxsystems.com.au/
    Une des nouvelles caractéristiques: Ajout d'un "code template" dédié au C.

    Un "code template" représente les règles de génération de code pour un language donné (java, C#...).

    Il est donc possible de générer (nativement) du C à partir de diagramme UML.
    Il est à noter que ce "code template" est customisable et qu'il vous est possible de créer d'autre "code template" pour un language X.

    Son prix: Corporate Edition: 239$US.

    H.

  16. #16
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Hardware
    Son prix: Corporate Edition: 239$US.
    Hum, hum... ça ressemble à du spam ... Dommage...

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2016, 18h20
  2. Les Meilleurs Outils de Modélisation UML ?
    Par Matthieu Brucher dans le forum Outils
    Réponses: 76
    Dernier message: 06/11/2015, 12h48
  3. [Kylix] Kylix embarqué sur PDA ?
    Par Anonymous dans le forum NoSQL
    Réponses: 10
    Dernier message: 29/11/2002, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo