1.2 Architecture
logicielle
1.2.1 Description d'une
architecture logicielle
Les concepts d'architecture logicielle et de programmation
structurée sont difficiles à mettre en oeuvre pour des
applications complexes. La première étape dans la construction
d'une application complexe consiste à ne pas la concevoir comme un tout,
mais comme une multitude de composants qui sont liées dans un
environnement donné, il s'agit de l'approche modulaire .Notons que la
conception d'une architecture logicielle, bien que d'une importance capitale
pour la réussite d'un projet informatique, est encore trop souvent
liée au savoir-faire d'une personne (ou d'un groupe de personnes)
spécialiste(s) d'un domaine précis. L'architecture est donc
étudiée selon un point de vue particulier (aussi, appelée
une facette)
Le rôle principal d'une architecture est
d'entraîner une démarche de conception, à la fois formelle
(permettant par le calcul mathématique de valider ses
propriétés) et opérationnelle (lors de sa conception, de
sa mise au point et de sa maintenance). La définition d'une
architecture logicielle passe donc par la réponse à la question
suivante : Quelles règles doit-on suivre pour réussir à
développer des systèmes qui répondent à toutes les
exigences fonctionnelles (les services à rendre) et non fonctionnelles
(performance et extensibilité du système par exemple)
?
1.2.2 Le client-serveur et
l'architecture logicielle
Originellement, le terme client-serveur décrivait les
interactions entre deux programmes d'une architecture logicielle, les
programmes résidaient alors sur la même machine hôte. La
signification du terme client-serveur a complètement changé lors
de l'apparition d'outils de distribution des traitements en fonction des
ressources Logicielles et matérielles. Désormais, une
architecture client-serveur s'appuie sur des architectures matérielles
et logicielles qui interagissent.
L'architecture client-serveur est un modèle de
fonctionnement logiciel qui peut se réaliser sur tout type
d'architecture matérielle (petites ou grosses machines) à partir
du moment où ces architectures peuvent être
interconnectées.
Les architectures logicielles de type client-serveur actuelles
nécessitent la recherche du meilleur découpage d'une application
en composants logiciels, ainsi que la répartition efficace de ces
composants.
1.2.3 Utilisation d'une
application basée sur l'architecture client-serveur
L'architecture client-serveur peut être utilisée
dans beaucoup d'applications, son utilisation dépend des besoins ainsi
que du savoir-faire de la part du programmeur.
Prenons un exemple clair et précis :
Un vendeur possédant plusieurs boutiques, on souhaite
mettre en place un système informatique composé des
éléments suivants :
- Un serveur central situé dans une zone non accessible
au public ;
- Des postes clients répartis dans chacune des
boutiques.
Les postes clients doivent permettre, grâce à une
interface homme-machine appropriée (qui sera simulée ici sous
forme d'une zone de saisie en mode caractères), de réaliser les
différentes opérations prévues.
Figure 1.3 : Application basée sur
l'architecture client serveur
Le fonctionnement sera le suivant :
1. Selon la saisie de l'utilisateur, le client
préparera une requête à envoyer au serveur.
2. La requête sera envoyée au serveur et le
client se mettra en attente de la réponse.
3. Le serveur réceptionnera la requête et la
traitera pour comprendre la demande du client.
4. Il effectuera ensuite le traitement associé,
5. et enverra le résultat de ce traitement au
client.
6. Le client réceptionnera le résultat et pourra
enchaîner sur une nouvelle requête.
La gestion des données au niveau du serveur
Le serveur central a la charge de l'ensemble des
données de la boutique (stock et facturation). Les données
manipulées par le serveur sont de nature persistante,
c'est-à-dire qu'elles doivent survivre à l'exécution de
l'application. Pour assurer la persistance de ces données, nous les
stockerons dans un fichier. Le principe consiste alors à charger ce
fichier en mémoire pour traiter chaque requête client, puis de
sauvegarder ce fichier après chaque mise à jour. Un
mécanisme de synchronisation devra donc être utilisé pour
gérer la concurrence d'accès au fichier.
|