École Nationale des Sciences de l'Informatique (ENSI) · Programming, Software Engineering · exam
Voir tous les documents en génie logiciel
Fiche de révisionCorrigé
Rédigée à partir de ce document, puis vérifiée avant publication.
Le problème principal découle de l'augmentation continue du volume des vols. Actuellement, le régulateur (R) gère l'affectation de plus de 500 tâches quotidiennes et les aléas (retards, absences, etc.) à l'aide d'un simple planning au format papier, modifié au crayon. Face à la croissance du trafic, ce système manuel a atteint ses limites : il est devenu trop lent, source d'erreurs, et ne permet plus à R de planifier ou de réagir aux imprévus en temps réel de manière efficace.
En tant qu'utilisateur principal souffrant de cette situation, R doit faire remonter le problème. Il peut alerter sa hiérarchie sur les risques d'erreurs (qui pourraient impacter le fonctionnement de l'aéroport) et exprimer son besoin critique pour un outil automatisé et dynamique qui l'aiderait à visualiser et modifier les plannings instantanément.
U étant le représentant des utilisateurs (R et les agents Aj), son rôle est de centraliser, formaliser et porter la demande de R et des agents auprès de la direction. Il a le pouvoir de déclencher une étude d'opportunité pour justifier le lancement d'un projet informatique (le projet L) visant à résoudre ce goulot d'étranglement.
Ensemble, ils mènent l'étude de faisabilité.
Les acteurs principaux sont U (qui porte la voix des utilisateurs), P (le chef de projet qui rédige les spécifications), et I (pour s'assurer que les besoins sont compatibles avec l'informatique existante). R et certains Aj peuvent être consultés via U.
U est la maîtrise d'ouvrage (MOA) déléguée. Son rôle est d'exprimer clairement, de manière exhaustive et sans ambiguïté les besoins fonctionnels du futur logiciel L. À la fin de cette phase, U devra valider (signer) le cahier des charges.
P représente la maîtrise d'œuvre (MOE). Son rôle est de recueillir les besoins exprimés par U, de les analyser, de lever les ambiguïtés et de les formaliser dans un document contractuel de référence : le document de spécification des besoins (ou cahier des charges).
Généralement, les développeurs (Di) n'interviennent pas ou très peu dans cette phase purement fonctionnelle. Toutefois, P peut faire appel à eux pour évaluer la faisabilité technique d'une fonctionnalité complexe demandée par U, ou pour réaliser un maquettage rapide (prototype) afin d'aider U à mieux visualiser un besoin.
I veille à ce que les spécifications prennent en compte les contraintes d'intégration. Par exemple, le logiciel L doit importer les "plannings prévisionnels" générés un mois à l'avance. I définit comment L va communiquer avec ce système existant (formats de fichiers, bases de données, réseaux).
C'est un point crucial de spécification. Puisque l'on supprime le "papier modifié au crayon", les agents ne pourront plus venir consulter le bureau de R de la même manière. Lors des spécifications, U et P devront définir une nouvelle interface : cela pourrait être des écrans d'affichage répartis dans l'aéroport, des terminaux mobiles fournis aux agents, ou des bornes interactives. Le besoin est "l'accès instantané à l'information mise à jour par R".
Ils suivront l'avancement grâce à des indicateurs de pilotage, des réunions régulières (comités de pilotage ou revues de projet) organisées par P, et par la lecture des rapports d'avancement et des livrables documentaires.
Pour concevoir un bon outil de régulation, P doit interroger U sur les scénarios métier :
En s'appuyant sur le cahier des charges. Ils doivent exiger que les besoins soient testables et définir, dès cette phase, les critères d'acceptation et les jeux d'essai. La validation se fera via des revues de maquettes en cours de route, puis lors de la phase de recette (tests d'acceptation) à la fin du cycle.
Cette phase s'achève par la validation formelle (signature) du cahier des charges / document des spécifications fonctionnelles par les représentants des clients (U et I). Ce document devient la référence stricte pour la suite du développement.
Le principal acteur est le chef de projet P (ou un architecte logiciel sous sa direction). Il doit traduire le cahier des charges en une architecture technique. Il définit les grandes briques du logiciel, l'architecture du système, le modèle de données relationnel, et les interfaces entre les modules.
P va utiliser une approche descendante ou modulaire, en regroupant les fonctionnalités par domaine de cohérence. Par exemple, il pourrait définir :
Ce choix est fait en concertation entre P et I. Il faut définir les serveurs, les postes de travail pour les développeurs, et s'assurer que ce matériel simule correctement l'environnement de production de l'aéroport géré par I.
P choisit les langages de programmation, les environnements de développement intégrés (IDE), les frameworks, et les outils de gestion de version (ex: Git) en fonction de la complexité du projet et des compétences des développeurs (Di) de son équipe.
Elle se clôt par la production et la validation du document de conception architecturale (ou conception préliminaire). Ce document fige l'architecture du système avant de passer aux détails.
Les acteurs sont le chef de projet P (qui supervise) et l'équipe de développeurs Di (D0 à D4).
P distribue les modules définis lors de la conception globale aux différents développeurs (Di). Il coordonne le travail, s'assure que chaque conception détaillée respecte l'architecture globale, et prépare le terrain pour les tests.
Chaque développeur (Di) rédige le dossier de conception détaillée de son module. Cela inclut les algorithmes spécifiques, les structures de données locales, les requêtes SQL complexes, et les diagrammes de classes/séquences précis nécessaires pour écrire le code sans ambiguïté.
P doit rédiger le plan de tests. Il doit prévoir les plans de tests unitaires (pour valider chaque module isolément) et le plan de tests d'intégration (pour valider que les modules communiquent bien ensemble comme prévu dans la conception globale).
D0 et D1 travaillent probablement sur les modules d'interface utilisateur (pour R et pour Aj). Contrairement aux développeurs "back-end", ils doivent spécifier l'Ergonomie et l'Interface Homme-Machine (IHM). Ils écriront les maquettes d'écrans, définiront les flux de navigation (ex: que se passe-t-il quand R clique sur "Affecter"), et rédigeront les règles de validation des formulaires.
Les développeurs Di (D0 à D4) sont les acteurs exclusifs de cette étape technique, toujours sous le contrôle de P.
Ils traduisent les spécifications détaillées en code source dans les langages choisis. Immédiatement après avoir codé, ils exécutent les tests unitaires prévus par P pour vérifier que leurs fonctions ne contiennent pas d'erreurs (bugs), puis ils procèdent aux tests d'intégration pour s'assurer que le module de D0 fonctionne correctement avec le module de D2, par exemple.
Les utilisateurs finaux entrent véritablement en scène : le régulateur R et les agents au sol Aj. (U et I sont également présents pour encadrer le déploiement).
C'est le scénario d'un échec lors de la recette (tests d'acceptation). Si le logiciel s'écarte du cahier des charges, P et son équipe (Di) doivent corriger les anomalies (bugs) pour rendre L conforme. Si le cahier des charges a été respecté mais que le besoin réel a changé (ou était mal exprimé), U devra négocier un avenant au projet pour développer de nouvelles fonctionnalités. Dans l'immédiat, la mise en production peut être suspendue.
L'équipe cliente (U, au nom de R et Aj) signe le procès-verbal de recette définitive. Le logiciel est officiellement accepté et déployé en production dans l'aéroport. L'ancien système papier est abandonné. Le projet passe alors de la phase de "développement" à la phase de "maintenance".
On distingue trois grandes catégories de maintenance informatique :
Face à une étude de cas en Génie Logiciel portant sur le cycle de vie d'un logiciel :