|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() ![]() |
Bonsoir,
J'entends souvent parler d'«application monolithique» et d'«application modulaire»; je devrais plutôt dire que je lis souvent ces termes, mais là n'est pas le problème. Des nombreuses recherches que j'ai faites sur la toile — parce que ça m'énerve de ne pas comprendre ce que j'entends ou lis — je n'ai pu tirer que des définitions vagues et floues de ces notions qui me restent donc quelque peu absconses — même si j'en ai une petite idée. C'est pourquoi j'aimerais qu'on m'explique enfin ces termes et ce que ça implique concrètement. Merci d'avance pour votre Bis gleesch! PS: J'espère avoir posté ce sujet dans le forum idoine. ![]() PPS: L'adjectif «abscons» est difficile à caser dans une discussion ... «mondaine», vous en conviendrez. Idem pour «idoine».
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
20
|
|
|
#2 |
|
Membre éprouvé
![]() ![]() Développeur en systèmes embarqués Inscription : mars 2009 Messages : 222 ![]() |
Je ne sais pas s'il existe de définition officielle pour ces termes, mais je pense que ce sont des notions assez subjectives et je ne suis donc pas surpris que tu trouves beaucoup de réponses différentes.
D'un point de vue utilisateur, une application donne le sentiment d'être monolithique si toutes les tâches s'effectue dans le même espace de travail. Une application donne le sentiment d'être modulaire si une nouvelle fenêtre s'ouvre à chaque fois qu'on démarre une nouvelle tâche. Mais cela ne préjuge en rien de la façon dont a été développée l'application. Un développeur appellera monolithique une application qui tient entièrement dans un seul exécutable, et la même application deviendra modulaire si elle tient sur 1 éxecutable + des librairies chargées dynamiquement. On appelle aussi modulaire les applications qui utilisent un système de plug-in pour ajouter/enlever dynamiquement certaines fonctionnalités. Enfin voilà quoi, c'est assez flou, je crois! |
|
11
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 585 ![]() |
Effectivement, il y a le point de vue de l'utilisateur, et le point de vue de l'architecte/développeur. Il PEUT y avoir corrélation entre les deux, mais je n'en suis absolument pas sur.
D'un point de vue développeur, une appli modulaire, c'est une appli dont l'architecture est en petits morceaux indépendants - qu'on peut rajouter ou retirer facilement sans rien casser. Une appli monolithique, c'est une appli ou tout retrait ou ajout change absolument tout. D'un point de vue développeur, une appli se doit d'être modulaire. Du point de vue de l'utilisateur, c'est plus complexe. Une appli ou on ne se rend même pas compte qu'on a changé de sous-appli peut être très rassurante et efficace.
__________________
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. |
|
|
20
|
|
|
#4 |
|
Membre éprouvé
![]() ![]() |
Je vois un peu mieux. En revanche, une question subsiste: est-ce qu'une application modulaire, du point de vue des développeurs, implique automatiquement la gestion de greffons ou une pléthore de bibliothèques pour un exécutable ... aussi «minimaliste» que possible?
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 585 ![]() |
Citation:
Par contre, pour l'executable, c'est une question de choix architectural. On peut essayer de tout compiler sous un executable unique, ou au contraire avoir une galaxie d'executables. Je suis partisan de la deuxième solution, et c'est la plus fréquente, mais la première a aussi ses qualités.
__________________
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. |
|
|
|
20
|
|
|
#6 |
|
Membre habitué
![]() Daniel BALLANDRetraité MO Inscription : mai 2008 Messages : 73 ![]() |
On trouve aussi l'organisation de gros systèmes :
J'ai travaillé, il y a quelques temps, sur une appli faisant partie d'un ensemble comptable. Elle n'était composée que d'un ensemble de tâches lancées par un ordonnanceur indépendant ($Universe). Ce dernier pilotant aussi quelques centaines d'autres applications et diverses copies de données d'une machine à l'autre. On a bien alors un lot de modules complètement indépendants, en nombre variable dans le temps, regroupés sous un nom d'application mais complètement autonomes si ce n'est qu'ils exploitent des données communes. Pour éviter les parasites, l'ordonnanceur de tâches doit alors tenir compte de paramètres de lancement : horaire, ou bien exécution réussie d'une autre tâche (traitement après filtrage réussi), ou inversement non exécution (pas d'accès utilisateur pendant les chargement de données), ou lancement manuel à la demande (stats, purges). L'inconvénient ici, c'est que toutes les vérifs doivent être paramétrées dans le module. On ne peut pas compter sur une mémoire quelconque pour servir de référence à une exécution. Hors la base de données accessible partout, aucun programme ne peut revenir sur le précédent. Par exemple, si la base des dates de traitement n'est pas conforme aux dates des données, le module de traitement de ces données ne peut pas corriger. Il doit être interrompu pour relancer le module de gestion des dates, puis relancé à zéro quand l'ordonnanceur (ou l'opérateur) aura reçu le feu vert attendu. Chaque module gère ici un sujet déterminé en totale autonomie, mais pour une même BDD. Voir ensuite l'éventualité de cette organisation dans une petite application ne traitant qu'un sujet limité.
__________________
R.BASILE, 1971 : "Il y a mille et un procédés pour accélérer des particules. Le seul véritablement fondamental restant...le carnet de chèques." |
|
|
10
|
|
|
#7 |
|
Membre éprouvé
![]() ![]() |
Alors une application modulaire peut aussi être un exécutable qui gère tout un ensemble d'exécutables dont la portée de chacun est plus nettement restreinte et ciblée et qui sont indépendants les uns des autres... Ça me donne envie de m'attarder sur ce dernier concept (cf. mon avatar pour voir la belle tête de sadique que je suis en train de faire), mais la complexité de la programmation d'une telle application me semble beaucoup plus relevée qu'en ce qui concerne de «simples» monolithes applicatifs. J'imagine ce que la gestion temporelle des threads, des processus et des sémaphores doit être pour une telle bête; je wanda très mal sur ça, mon frère!
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
|
|
#8 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Pour préciser ta définition, je dirais que dans une application modulaire il n'y a pas d'inter-dépendance fonctionnelle entre 2 composants. Visuellement, on pourrait dire que la chaine fonctionnelle traverse les interfaces sans faire de boucles. La modularité est souvent atteinte en imposant la spécification des interfaces, afin d'éviter de "faire des noeuds" dans l'architecture. On met aussi généralement en oeuvre des bonnes pratiques comme le couplage faible/cohésion forte.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
20
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 585 ![]() |
Merci pseudocode, je m'aperçois que je n'avais pas été parfaitement clair(pour rester poli).
__________________
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. |
|
|
10
|
|
|
#10 |
|
Membre éprouvé
![]() ![]() |
Quand tu dis qu'il n'y a aucune interdépendance entre modules et application modulaire, je ne suis pas tout à fait d'accord. En effet, si j'ai bien compris le concept, les greffons, qui représentent une partie des briques d'une application modulaire, sont normés pour correspondre à une interface application-greffon qui dépend intrinsèquement de l'application concernée. Quand bien même l'interdépendance est infime, on ne peut, par exemple, pas utiliser un greffon de Firefox avec Internet Explorer, Safari ou Google Chrome.
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
|
|
#11 | |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Un cas d'interdépendance serait par exemple un programme avec une IHM et un traitement. L'IHM déclenche le début du traitement, et le traitement à besoin à un moment d'informations provenant de l'utilisateur pour continuer (genre une application web). L'IHM et le traitement se retrouvent dépendant l'un de l'autre. Le résultat c'est un programme qui n'est pas modulaire. Je ne sais pas si je suis bien clair.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
10
|
|
|
#12 |
|
Membre éprouvé
![]() ![]() |
Hum... Pourtant, un greffon peut devoir utiliser des données entrées par l'utilisateur ou les résultats du traitement de ces données pour fonctionner. Est-ce que ce genre de greffon casse la modularité de l'application à cause de cette interdépendance?
PS: Est-ce que IHM veut dire Interface Homme-Machine?
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
|
|
#13 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Évidemment, on a toujours une modularité "technique" car le code de chaque composant est distinct et l'interface est bien définie. Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#14 |
|
Membre éprouvé
![]() ![]() |
Alors, la modularité fonctionnelle implique que les modules puissent travailler en parfaite indépendance vis-à-vis des autres modules et de l'application, pas la modularité technique.
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
|
|
#15 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 577 ![]() |
Citation:
On peut alors se poser la question suivante : Existe-t-il à ce moment d'autres solutions pour une modularité "fonctionnelle" que d'avoir recours au multiprocessing? Soit finir avec des exécutables séparés qui s'appellent par ligne de commande? |
|
|
|
00
|
|
|
#16 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : janvier 2007 Messages : 9 651 ![]() |
Citation:
C'est un très vaste sujet...
__________________
"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 |
|
|
|
00
|
|
|
#17 | |||||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Code :
Code :
Bah heu... oui. Il suffit d'avoir une claire différenciation entre les fonctions qui "produisent" des données, et celles qui en "consomment". Par exemple une archi web 3-tiers, est une architecture modulaire...
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||||
|
00
|
|
|
#18 | |||
|
Membre éprouvé
![]() ![]() |
Citation:
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|||
|
00
|
|
|
#19 | |||||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 837 ![]() |
Citation:
Peut-être que c'est plus compréhensible avec ce genre d'exemple: Code :
Code :
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||||
|
00
|
|
|
#20 |
|
Membre éprouvé
![]() ![]() |
OK. Alors l'architecture applicative pour la modularité fonctionnelle ressemble un peu à une architecture serveur-client, si j'ai bien compris.
__________________
Timbré tatillon invétéré et fier de l'être! Digression du jour: Tiens, comment dit-on «prout» en anglais?
|
|
00
|
Copyright © 2000-2013 - www.developpez.com