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

Architecture Discussion :

Architecture d'une couche d'abstraction ?


Sujet :

Architecture

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Architecture d'une couche d'abstraction ?
    Bonjour à tous,

    Je suis actuellement sur un projet qui vise à concevoir une couche d'abstraction matérielle.
    Je m'explique. J'ai aujourd'hui un programme applicatif qui tourne sur une plateforme PIC18. Cette applicatif dans son fonctionnel comporte des communications avec un autre PIC par liaison SPI, il comporte aussi une communication en RS232. L'architecture actuelle en permet pas d'évolutivité, si par exemple on veut changer de type de communication (de SPI à I2C par exemple) on doit modifier directement la partie applicatif du code.

    Mon objectif est donc de créer une nouvelle couche entre mon fonctionnel et mes drivers afin qu'en cas de changement de matériel je n'ai plus à changer mon fonctionnel. Cela doit rendre donc la fonctionnel plus générique et plus lisible.
    Je veut suivre une démarche de conception plutot rigoureuse et penser a tout mon architecture avant de coder.

    J'aimerai donc savoir si je m'engage dans la bonne direction avec mes choix.
    Je pensais faire comme suit :

    ---------- Applicatif : Utilisation de fonction générique de base ------------
    ----------------- Init(nom_du_périphérique_utilisé) -------------
    ----------------- Lecture(nom_du_périphérique_utilisé, ...) ------
    ----------------- Ecrire(nom_du_périphérique_utilisé, ...) --------
    ----------------- Stop(nom_du_périphérique_utilisé) ------------

    ---------- Ma couche : Contient les fonctions génériques de base, celles-ci renseignent les éléments utiles, et appellent les fonctions des driver ---------------


    ---------- Mes drivers : Contiennent les routines d'utilisation des liaisons --------------

    Le tout avec un fichier de configuration qui comportera les informations liées au projet, du style quelles sont les types de liaisons utilisées, les noms des périphériques associés, etc...

    Ce que je me dis c'est que c'est trop simple
    Le but serai par la suite de pouvoir externaliser cette nouvelle couche pour l'utiliser comme une bibliothèque. Elle comportera les appels pour plein de liaison différentes.

    Donc voila j'aimerai avoir votre avis sur ce que j'ai marqué là , mais aussi savoir si j'ai une bonne démarche, si je ne loupe pas des étapes pour faire une conception propre ??? Et si j'ai tout faux dite moi comment je dois m'y prendre, quelles sont les étapes!?

    Merci d'avance JL

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Bonjour

    ton applicatif pourrait-il (devrait-il) gérer plusieurs drivers en parallèle ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Qu'entend tu par gérer plusieurs driver en parallèle??
    Je pense pouvoir répondre OUI ! Le système comporte plusieurs types de communication. Par exemple il communique avec un périphérique par SPI, et avec un autre par RS232. les communications s’exécute les unes après les autres, il n'y en aura pas 2 en même temps.

    J'ai revu un peu ma solution :

    ---------------
    mon applicatif //ici on a des appel de fonction générique
    ---------------

    ---------------
    ma couche // ici on a des appels de fonction spécifique
    ---------------

    --------------- -------------- --------------- --------------
    -----driver1 ------- driver2 -------- driver3 ------- driver_N
    --------------- -------------- --------------- --------------

    ensuite je pensais mettre un couche "transverse" à l'applicatif et a la couche d'abstraction qui sera spécifique au projet et qui permettra de regrouper les fonctions d'un même genre. Par exemple on pourra trouver dedans une fonction init_PIC() qui contiendra les appels des fonctions d'initialisation des PIC. Par exemple set_générique_PIC() qui elle sera implémenté dans la couche d'abstraction, et qui permettra de lancer la routine d'init pour le PIC spécifié en argument !

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    moi je ferais :

    applicatif

    couche fonctionnelle

    couche driver générique


    couche driver générique :

    à base de fonctions enregistrées (comme les "OnClick" pour des boutons dans une IHM)


    Pour fabriquer/ajouter un driver, remplir les 4 fonctions spécifiques, avec une API standard (générique)

    Dans la couche fonctionnelle :

    if ( Driver_Is_Registered ( READ ) )
    Call_Registered_Driver ( READ, ....)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/07/2014, 08h18
  2. Réponses: 4
    Dernier message: 18/07/2012, 11h21
  3. [Prototype] Une couche d'abstraction de l'objet XMLHTTPRequest
    Par Tanhys dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 31/03/2007, 15h12
  4. Les Threads... J'en remet une couche :)
    Par Higestromm dans le forum C++
    Réponses: 5
    Dernier message: 17/11/2004, 12h19
  5. [FLASH MX2004] Architecture d'une classe
    Par matN59 dans le forum Flash
    Réponses: 6
    Dernier message: 13/05/2004, 08h11

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