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

Langages de programmation Discussion :

[Techniques et Conseils] Creer un logiciel extensible ( avec des modules )


Sujet :

Langages de programmation

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut [Techniques et Conseils] Creer un logiciel extensible ( avec des modules )
    Salut tout le monde,
    Je sais pas si je suis sur la bonne section ou non, alors je vous prie de m'excuser
    Je suis entrain de réaliser une application desktop, on peut dire une initiation a la création d'un petit ERP. Mon grand soucis est comment dois je me procéder à sa réalisation.
    Voici donc mes questions :

    L'application doit être composée de modules : Quels sont les techniques valables dans le cas ou le programme doit permettre d'ajouter ou d'enlever de nouveaux modules sans pour autant modifier les modules existant ?

    [EDIT] Exemple :

    je vous donne un exemple :

    un module M1 pour la gestion du personnel d'un organisme... et un autre M2 pour la gestion équipements informatiques
    au Niveau de la base de données y'aurai une liaison entre les informations provenant des deux modules...

    Si on suppose qu'un organisme n'utilisera que le module M1 il n'aura pas besoin qu'on lui livre le module M2. Mais si par la suite il décide d'etendre le soft, je suppose qu'on devrai uniquement ajouter le M2 sans pour autant réinventer toute la roue ou bien de modifier tout le soft pour une extension des services de l'organisme.
    Existe il des méthodes pour cela ?

    Où puisse je trouver la documentation pour comprendre ?

    Est ce que chaque module doit avoir sa propre Base de données ou bien une seule base de données pour tous les modules ?


    Merci d'avance pour vos précieuses réponses.

  2. #2
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Bonjour. La question étant assez vague et non-spécifique à un seul langage, voici quelques éléments de réponse :
    * Typiquement les modules ont chacun leur propre dll et on découvre celles-ci par une inscription ou en scannant un répertoire. Avec des langages dans lesquels la réflexion est disponible, on exploite cette dernière pour détecter les types implémentant une certaine interface. Par exemple un "IPlugin", en héritant depuis une dll commune aux modules et à l'application.

    * On utilise ce qu'on nomme l'injection de dépendances : le programme principal offre aux modules un moyen d'injecter des dépendances dans les points d'extension définis. Cherche "injection de dépendance", "inversion de contrôle", les motifs "factory", "abstract factory", "service locator" ou encore "facade". Note que tous les langages ont leurs frameworks dédiés à l'injection de dépendances, autant ne pas réinventer la roue.

    * Je n'ai jamais eu à traiter le cas de modules ajoutant des données à une table mais j'imagine qu'il faut de facto partager une même DB pour éviter la redondance des données, préserver les qualités ACID et obtenir des performances décentes sur les jointures et compagnie. Bien que l'idée soit séduisante il me semble difficile d'avoir plusieurs bases de données.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    D'abord merci pour les précieuses informations : je vais commencer de me documenter sur les points que vous m'avez dit.
    J'ai d'autres questions : D'après vous, quel sera le/les meilleur/s langage/s a prendre en considération permettant ainsi d'utiliser les points cités ?

    Y'a t'il des cours une documentation permettant de bien assimiler les principes de base ?
    Pourriez vous m'orienter par des liens ?

    Merci

  4. #4
    Expert éminent sénior

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

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


    Concernant la question initiale, qui est trop vague, plusieurs pistes sont utilisées, suivant les cas....


    • Tout d'abord, sur le "créer".. Cette appellation recouvre la conception, qui est indépendante du langage. Pour avoir un logiciel extensible, il faut :


      • analyser les points où il y aura potentiellement extension (données, fonctionalités, etc)

      • définir suivant les cas des "protocoles" de communication (API si un seul exéctuable et des biblothèques, vrais protocoles si plusieurs exécutables communiquent, etc)

      • prévoir les fonctionalités - ou structures - pour pouvoir accueillir différent types de choses (potentiellement inconnues)




    • Ensuite vient le temps de la programmation, de l'implémentation. Là encore, cela dépend des cas et des options choisies...


      • ça peut être des fonctionalités, stockées dans divers modules... Qu'ils soient dépendant des compilations (via des bibliothèques), du run-time (DLL : cas particulier), des appels à des logiciels externes (plugins, serveurs externes), etc...

      • ça peut être des données

      • ça peut être des services (fonctionalités "inconnues") renfermées dans d'autres exécutables fournis en liste de config ou en paramètres d'appels, ou en liste dynamique (de répertoire ou autres). ou des séries de serveurs (grappes)

      • Divers moyens d'y accéder/de les appeler peuvent être utilisés : le nom de la fonction est connu (biblothèques ou DLL), inconnu (appel à un autre exécutable, ou un plugin) (dans les outils d'IHM par exemple une fonctionalité de base d'un bouton est le changement des bordures "3D", mais on peut y ajouter (enregsitrer) des "callbacks" sur les "onclick" par exemple... Dans certains softs, on associé une extension d'un type de fichiers avec un "soft" dont juste le nom est donné (par exemple "mpeg = > player"), mais les fonctionalités sont inconnues etc etc....

      • Enfin, suivant le langage choisi, diverses options existent là aussi : arguments "void" en C, surcharges, classes, créations dynamiques, arrays ou listes dynamiques dans d'autres langages, etc etc...






    Citation Envoyé par DonQuiche Voir le message
    :
    * Typiquement les modules ont chacun leur propre dll
    Tu me sembles bien trop spécifique...
    "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

  5. #5
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 485
    Points
    5 485
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Tu me sembles bien trop spécifique...
    "Typiquement" veut dire "typiquement", ni plus ni moins.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Merci d'avoir répondu a mes questions :

    En effet, étendre la base de données est possible... j'ai pris cette condition en considération. et pour vos explications je les ai noté.

    Mon soucis majeur n'est pas dans la réalisation de l'application, mais plutôt sur la manière dont laquelle elle sera réalisée, c'est d'ailleurs la raison qui m'a poussé a ouvrir cette discussion.

    j'aimerai donc si c'est possible savoir si je devrai choisir JAVA comme langage a coder mon application, quelles seront les bonnes pratiques que je devrai respecter afin de réaliser un soft que nous pouvons l'étendre :

    je vous donne un exemple :

    un module M1 pour la gestion du personnel d'un organisme... et un autre M2 pour la gestion équipements informatiques
    au Niveau de la base de données y'aurai une liaison entre les informations provenant des deux modules...

    Si on suppose qu'un organisme n'utilisera que le module M1 il n'aura pas besoin qu'on lui livre le module M2. Mais si par la suite il décide d'étendre le soft, je suppose qu'on devrai uniquement ajouter le M2 sans pour autant réinventer toute la roue ou bien de modifier tout le soft pour une extension des services de l'organisme.

    quels seront les moyens que je devrai employer afin d'arriver a un résultat similaire de cette exemple ?

    et si des technises existent, j'aimerai avoir des pistes pour assimiler les principes de base

    Merci encore une fois.

  7. #7
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par handsome01 Voir le message
    et si des technises existent, j'aimerai avoir des pistes pour assimiler les principes de base
    Principes de base :

    • séparer les choses n'ayant pas de rapports entre elles....
    • concevoir les rapports comme des relations éphémères, modulables



    Donc dans ton cas :

    • Une base équipement
    • Une base personnel
    • Eventuellement une base organisme


    Il serait pour le moins étrange qu'un organisme n'ait NI personnel NI équipement, non ???

    Il serait non moins étrange qu'un individu du personnel, si il change de bureau au cours de sa vie, garde le même équipement, non ?

    De même, il serait tout aussi étrange que si un équipement est défaillant, ou remplacé, il faille modifier la base du personnel....

    Ou que si un nouvel employé arrive, et que il y a un stock d'équipements inutilisés, il faille recréer une entrée dans la base des équipements....
    "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

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Merci d'avoir repondu :

    vos suggestions sont logiques, mon exemple n'était qu'à titre informatif... ce que je cherche ce n'est pas ce qu'il faut avoir mais plutôt comment utiliser les bonnes pratiques afin de réaliser le bon soft.

    Merci

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    D'autres suggestions SVP ?

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Principes de base :

    • séparer les choses n'ayant pas de rapports entre elles....
    • concevoir les rapports comme des relations éphémères, modulables



    On peut ajouter :

    éviter au maximum ce qui dépend des langages et paradigmes et outils (que ce soit dans l'architecture logicielle, répertoire, la dexription fonctionelle, etc)...

    En gros, cela revient à faire une analyse fonctionnelle PROPRE....
    "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

  11. #11
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 068
    Points
    32 068
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    (.../...)
    En gros, cela revient à faire une analyse fonctionnelle PROPRE....
    ...mais pas gravée dans le marbre. Une erreur est si vite arrivée...
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  12. #12
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    ...mais pas gravée dans le marbre. Une erreur est si vite arrivée...


    oui, mais vu le titre du fil, ce que j'appelle "propre" est "propre intellectuellement", c'est à dire prévoyant des "futurs", des "branches", des "instances", non précis.... Pour moi c'est ça, propre...Et donc forcément c'est "souple"...
    "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: 2
    Dernier message: 30/11/2007, 17h57
  2. Problème pour faire des box extensibles avec des images)
    Par dream_of_australia dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 17/11/2007, 10h58
  3. Réponses: 6
    Dernier message: 21/07/2006, 13h42
  4. Créer un type matrice avec des templates
    Par souading3000 dans le forum C++
    Réponses: 2
    Dernier message: 15/06/2006, 11h24
  5. Comment creer un choix multiple avec des cases a cocher ??
    Par pedrosystem dans le forum Access
    Réponses: 5
    Dernier message: 09/03/2006, 10h36

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