Architecture logicielle

Certaines applications simples sont constituées d'un élément auto-suffisant. Il peut s'agir d'éditeur de texte ou d'accessoire tel qu'une calculette. D'autres s'appuient sur plusieurs éléments en relation qui interagissent pour fournir à l'utilisateur le service attendu. Il peut s'agir d'applications de bureau qui sont connectées à un ou plusieurs serveurs ou d'applications web.

L’architecture logicielle décrit d’une manière symbolique et schématique les différents éléments d’un ou de plusieurs systèmes informatiques, leurs interrelations et leurs interactions. Contrairement aux spécifications produites par l’analyse fonctionnelle, le modèle d'architecture (…) ne décrit pas ce que doit réaliser un système informatique mais plutôt comment il doit être conçu de manière à répondre aux spécifications. (…) Les deux objectifs principaux de toute architecture logicielle sont la réduction des coûts et l'augmentation de la qualité du logiciel ; la réduction des coûts est principalement réalisée par la réutilisation de composants logiciels (…). wikipedia

architecture client-serveur

Une architecture client-serveur est constituée de deux types d'éléments. Les clients utilisent des services fournis par les serveurs. Les clients envoient des requêtes aux serveurs qui en retour leur envoient des réponses. Les serveurs attendent des requêtes et y répondent.

Du point de vue d'un utilisateur, l'application utilisée est un client qui assure la présentation de données obtenues auprès d'un serveur.

Le serveur peut être un SGBD et le client lui envoie des requêtes SQL. Le serveur peut être une application spécifique qui répond à des requêtes exprimées dans un langage qui lui est propre (par exemple un serveur de calcul qui répond à des opérations). On parle alors d'architecture à 2 niveaux ou 2-tiers.


Si le serveur est une application avec son propre langage de requêtes et que ce serveur interroge un autre serveur pour pouvoir répondre à son client, on parle d'architecture à 3 niveaux ou 3-tiers.

Au delà de 3 niveaux, on parle d'architecture n-tiers.

architecture d'une application

Une application (web ou de bureau) est constituée de différents éléments ou composants logiciels. Ils se distinguent par leur rôle et la séparation des rôles permet une meilleure compréhension et une maintenance facilitée. Pour les applications avec une interface graphique, on retrouve l'architecture Modèle-Vue-Contrôleur (vue en IHM).

C'est un patron d'architecture et il en existe d'autres.

On peut aussi concevoir une application en sous-ensembles de sous-programmes s'appuyant les uns sur les autres. On parle alors d'architecture en couches. Ce principe est très utilisé dans les systèmes d'exploitation (structure en couches) et dans les communications dans les réseaux informatiques (modèle OSI).

Certains composants d'une application sont parfois partagés avec d'autres applications (traitement de texte et application de présentation peuvent partager le même correcteur orthographique par exemple). Les éléments constituant une application sont stockés sous forme de fichiers distincts et contiennent des sous-programmes susceptibles d'être utilisés dans l'application. Une bibliothèque logicielle est un ensemble de sous-programmes ou routines, généralement autour du même sujet, stockés dans un fichier. La bibliothèque utilisée par une application y est référencée mais elle n'est pas contenue dans le(s) fichier(s) du programme. Par cette technique,
- une modification d'une des routines de la bibliothèque nécessite de la re-créer, sans imposer de re-créer l'application ;
- différentes applications peuvent utiliser la même bibliothèque.

Le projet

Il s'agit de développer une application utilisant une base de données. L'architecture retenue est de type client-serveur mais l'accès à la base de données se fera via un composant logiciel assurant l'interface entre l'application de bureau (le client) et le SGBD (le serveur). Ce composant pourra être développé en sollicitant le SGBD par des requêtes SQL ou en utilisant une bibliothèque disponible sur le marché (ici LINQconnect Express qui met en oeuvre Language INtegrated Query). L'intérêt d'un tel composant d'interface est de rendre le client indépendant du support de données (voir le patron de conception procuration - proxy).

sujet
exemples de fenêtres

Travail à réaliser

/!\ Attention : l'évaluation impose de réaliser le travail en respectant les attendus de chaque séance.

Séance 1 :

Création de la base de données (1pt)
Création de la solution et des projets (1pt)
Ajout de l’outil LinQ (1pt)
Création de la vue principale (vue de consultation) (3pts)
Création de la vue de configuration des paramètres de la base de données (1pt)
Connexion à la base de données (settings) (3pts)

Séance 2 :

Affichage de la liste des sports (1pt)
La sélection d’un sport permet d’afficher les tournois associés à ce sport (2pts)
La sélection d’un tournoi permet d’afficher la liste des noms des participants. (2pts)
Un menu recherche participant permet d’ouvrir une fenêtre pour afficher tous les participants avec l’ensemble des informations dans un DataGrid. On peut alors trier par ordre alphabétique des noms ou rechercher par tout ou partie du nom. (5pts)

Séance 3 :

Création de la vue d’authentification du gestionnaire (1pt)
Test de l’authentification (menus du gestionnaire activés) (1pt)
Création de la vue de gestion d’un tournoi (1pt)
Création de la vue de gestion d’un sport (1pt)
Ajout d’un tournoi et d’un sport (2pts)
Création de la vue gestion des participants (1pt)
Ajout d’un participant (3pts)

Séance 4 :

Vues complétées de gestion des tournois, sports ou participants afin de pouvoir modifier ou supprimer un tournoi, un sport ou un participant à l’aide d’un ContextMenu (2pts)
Création de la fenêtre de gestion des gestionnaires de l’application (1pt)
Ajout d’un gestionnaire (2pts)
Modification ou suppression d’un gestionnaire à l’aide d’un ContextMenu (2pts)
Compte-rendu

Le travail réalisé au cours des 4 séances fera l'objet d'un compte-rendu écrit unique comportant les points suivants :