La complexité des traitements interdit en général
de maîtriser un
système global. On le découpe donc en applications, exécutées
chacune par un programme. Pour définir ce découpage, on établit le
tableau croisant données d'entrée et résultats puis
on classe ce tableau de façon à lui
donner une structure bloc-diagonale (beaucoup d'échanges à l'intérieur d'un même bloc,
peu d'échanges entre blocs différents). A chaque bloc correspond une application.
Logiciel, application, logiciel système, progiciel
Parmi les logiciels, on a été amené
à distinguer les "logiciels systèmes" qui fournissent des
ressources utilisées par les applications (système d'exploitation, pilotes, BIOS, moniteur
transactionnel, système d'exploitation du réseau, protocoles de communication,
protocole de messagerie etc.)
A l'origine, le mot
"application" a été retenu pour désigner une utilisation
spécifique de l'ordinateur en vue d'automatiser l'une des grandes fonctions de
l'entreprise
comme la gestion des stocks, la paie ou la facturation : l'ordinateur est en
effet alors
"appliqué" à cette fonction.
Parmi les applications, on distingue celles qui nécessitent
un programme spécifique et celles qu'il est plus efficace de faire réaliser
par un logiciel du commerce, appelé "produit logiciel" ou encore "progiciel"
(SGBD, traitement de texte, tableur, logiciel
graphique, messagerie, agenda et annuaire téléphonique, gestion de projet, CAD, production d'images, progiciels
mathématiques et scientifiques, production multimédia, navigateurs Web
etc.)
|
Organisation du système informatique en applications
Le système informatique est alors défini par un
ensemble d'applications à l'intérieur desquelles les échanges
de données sont intenses mais dont les échanges mutuels sont relativement
faibles. Ce découpage, associé à une organisation des
échanges "transverses" et des référentiels,
c'est la tâche de l'urbanisme. Elle se fait en pratique de façon
empirique et approximative, car elle doit tenir compte de contraintes qui résultent de
l'histoire de l'entreprise (de même, quand on organise l'entreprise, il convient en principe de regrouper dans les mêmes unités
les personnes qui ont beaucoup d'informations à partager ou à échanger ;
cette répartition se fait en pratique de façon empirique, la théorie
servant seulement de référence directrice).
Les applications reçoivent chacune un nom propre
("Géode", "Gide", "Sage" etc.). Elles sont
représentées par une icône sur le poste de travail des utilisateurs, ce qui
leur confère une sorte de personnalité. Elles sont définies selon les besoins des utilisateurs
(de même, on construit une maison selon les besoins de ses habitants futurs) ; cependant une fois construites elles ont une existence propre et tout se passe
comme si c'était l'utilisateur qui devait s'adapter aux applications (il en est de même pour
quelqu'un qui emménage dans une maison existante). L'attention se concentre alors
sur les
données et les traitements, sur la partie informatique du système
d'information et sur les contraintes techniques auxquelles elle doit obéir :
cela ne doit pas faire oublier que le système d'information est fait pour
être utilisé, tout comme une maison est faite pour être habitée.
Qualité des applications
Pour construire un programme, il suffit de
définir les données et de programmer les traitements, ou
"algorithmes" (d'où le titre du livre de Niklaus Wirth, créateur
du langage Pascal : Algorithms + Data Structures = Programs,
Prentice-Hall, 1976). Mais sauf dans les cas les plus simples on ne peut pas
plus se lancer directement dans la programmation que l'on ne pourrait construire
une maison sans avoir dessiné son plan.
Le plan d'un programme, c'est un modèle
qui doit répondre aux besoins des utilisateurs tout en tenant compte de l'état
de l'art informatique et des contraintes techniques et économiques de la
réalisation. Les principales qualités sémantiques que doit posséder un modèle sont :
- la pertinence : il faut que le modèle réponde
correctement aux besoins des utilisateurs ;
- puis la sobriété : comme toute représentation du monde réel, celle
que donne le modèle est schématique ; ce schématisme doit non seulement
être accepté, mais assumé de façon positive : il faut s'efforcer de
simplifier le système d'information (voir "Complexité et
complication") ;
- enfin la cohérence : si l'application comportait une incohérence
interne elle serait fausse et il faudrait corriger cette
"bogue" ; elle doit en outre être cohérente avec le système
d'information de l'entreprise : ses identifiants et ses
nomenclatures doivent suivre les évolutions du référentiel.
Historiquement, l'attention des informaticiens
a d'abord été concentrée sur les traitements ; ils ont mis au point des les algorithmes
(cf. Donald E. Knuth, The
Art of Computer Programming, Addison Wesley 1997) qui permettent :
- de calculer (l'approximation des nombres réels par des nombres rationnels pose de redoutables problèmes mathématiques),
- produire des nombres au hasard (nécessaires pour les calculs qui
simulent un comportement aléatoire),
- classer et trier les données etc.
Les informaticiens ont aussi défini des
structures de données, du plus simple (chaîne de caractère, booléen, entier
relatif, rationnel, réel) au plus compliqué (vecteurs, tenseurs, structures
composites).
La connaissance des
structures et algorithmes classiques, ainsi que de leurs conditions
d'utilisation, fait partie du bagage professionnel de l'informaticien. Il doit
maîtriser aussi les procédés de vérification des programmes ("déboguage").
Outre les qualités sémantiques citées
ci-dessus, l'application doit avoir des qualités techniques : elle
doit être construite de sorte qu'une modification introduite en un
endroit du programme ne provoque pas d'erreurs dans d'autres parties du
programme, que la correction des "bogues" soit aisée, enfin qu'il
soit facile d'y introduire des changements pour tenir compte de l'évolution des
besoins des utilisateurs ("évolutivité").
L'évolutivité implique et résume
les autres qualités techniques : pour que l'application soit
évolutive, il faut que les modifications ne provoquent pas d'erreur et qu'il
soit aisé de corriger les erreurs. La sobriété favorise
l'évolutivité : toutes choses égales d'ailleurs, plus une application est
simple, plus il sera facile de la faire évoluer.
Enfin, le système
informatique doit assurer les échanges de données entre l'application et les autres applications
en assurant le synchronisme et les transcodages nécessaires
(voir A propos des EAI).
Une application peut fonctionner
parfaitement et
satisfaire les utilisateurs lors de sa recette sans
pour autant être sobre, ni cohérente, ni évolutive ; ces défauts n'apparaîtront
qu'à la longue et ils entraîneront une obsolescence rapide. Après quelques années il faudra refaire
l'application et, dans l'attente de la réfection, les
utilisateurs auront dû se servir d'un outil inadapté. Le manque d'évolutivité accroît donc le coût
annuel moyen de
l'application tout en altérant sa pertinence.