Étudiants en génie logiciel collaborant sur un projet de code en RDC.

Génie Logiciel

Application des méthodes de l'ingénierie logicielle.

Édition 2026 – Réforme LMD – Enseignement supérieur et universitaire en RDC.

  • Code Officiel : GLO1471
  • Domaine : Sciences et Technologie
  • Filière : SCIENCES INFORMATIQUES
  • Mention : SCIENCES INFORMATIQUES (LSI) – Mention : Génie Logiciel
  • Année d’étude : LICENCE 4
  • Semestre : Semestre 7
Consulter les Modalités, Compétences et Débouchés

Cette Unité d’Enseignement, d’une valeur de 4 crédits ECTS, est conçue comme un bloc de compétences monolithique et intensif. Son architecture pédagogique, volontairement dépourvue d’Éléments Constitutifs distincts, favorise une immersion complète et une compréhension intégrée des enjeux de l’ingénierie logicielle avancée, garantissant que chaque concept est appris en synergie avec les autres pour former un tout cohérent et directement applicable.

L’objectif fondamental est de transformer les étudiants en professionnels capables d’appliquer des méthodes industrielles rigoureuses pour piloter la production de logiciels complexes. Au-delà de la simple programmation, l’accent est mis sur l’implémentation stratégique de patrons de conception qui assurent la scalabilité et la maintenabilité du code sur le long terme. Cette maîtrise technique est complétée par une culture intransigeante de l’assurance qualité et de la traçabilité documentaire, compétences indispensables pour garantir la robustesse des livrables, que le projet suive un cycle en V ou une approche agile.

Cette formation de pointe ouvre la voie à des carrières stratégiques telles qu’Architecte logiciel, Ingénieur en qualité logicielle ou Responsable R&D informatique. Sur le marché de l’emploi en République Démocratique du Congo, en pleine mutation numérique, ces profils sont des acteurs cruciaux. L’Architecte conçoit les fondations des systèmes d’information nationaux, l’Ingénieur qualité en assure la fiabilité et la compétitivité face aux standards internationaux, et le Responsable R&D pilote l’innovation locale. Ensemble, ils constituent le fer de lance pour bâtir une économie numérique souveraine et résiliente, capable de répondre aux défis de développement du pays.

SOMMAIRE NAVIGABLE

PRÉLIMINAIRES

I. Objectifs Pédagogiques et Compétences Visées

Cette Unité d’Enseignement forge des architectes logiciels, pas de simples codeurs. L’objectif est de maîtriser la chaîne de production logicielle industrielle, de la spécification des besoins à la maintenance. L’étudiant apprendra à piloter des projets complexes en appliquant des méthodologies rigoureuses, qu’elles soient prédictives ou agiles. En RDC, cette compétence est vitale pour structurer la digitalisation des banques, des télécoms et des services publics. L’apprenant sera apte à concevoir des systèmes robustes, évolutifs et économiquement viables, répondant aux appels d’offres nationaux et internationaux.

II. Méthodologie et Évaluation

L’approche pédagogique rompt avec l’exposé magistral passif. Elle est fondée sur l’étude de cas concrets issus du tissu économique congolais et sur un projet fil rouge semestriel. Les étudiants, organisés en équipes, simuleront une agence de développement logiciel répondant à un cahier des charges précis. L’évaluation est continue et porte sur la qualité des livrables : documents de spécification, diagrammes UML, revues de code et prototypes fonctionnels. La note finale sanctionne la capacité à défendre une architecture logicielle et à justifier ses choix techniques et économiques.

III. Positionnement de l’UE dans le Cursus LMD

Positionnée en Semestre 7 de la Licence en Sciences Informatiques, cette UE constitue la pierre angulaire de la mention Génie Logiciel. Elle synthétise et met en perspective les savoirs acquis en algorithmique, programmation orientée objet et bases de données. C’est le passage obligé du savoir-faire artisanal au savoir-penser industriel. En fournissant les 4 crédits ECTS, elle valide un bloc de compétences fondamental pour l’insertion professionnelle immédiate aux postes d’ingénieur d’études ou d’architecte junior, ou pour la poursuite en Master de recherche et développement.

PARTIE 1 : FONDATIONS DE L’INGÉNIERIE LOGICIELLE MODERNE

Chapitre I. Du Code Artisanal au Processus Industriel

I.1 Crise du Logiciel et Émergence d’une Discipline

La conférence de l’OTAN de 1968 a marqué une rupture. Face à des projets logiciels systématiquement en retard, hors budget et non fiables, la notion de “crise du logiciel” a imposé la nécessité d’une approche d’ingénierie. Ce chapitre dissèque cette transition historique du codage solitaire à la production systémique. Pour les entreprises de la RDC qui s’informatisent, ignorer ces leçons conduit à l’échec. L’étudiant y forgera une compétence critique : diagnostiquer les risques d’un projet informatique et justifier l’adoption d’un processus industriel.

I.2 Le Cycle de Vie du Logiciel : Modèles Prédictifs (Cascade, V)

Le modèle en cascade, formalisé par Winston W. Royce en 1970, a apporté une première réponse structurante à la complexité. Il impose une séquence linéaire et rigide d’étapes : spécification, conception, codage, test. Ce chapitre en analyse la mécanique et ses dérivés comme le modèle en V, qui systématise la validation. Pour des projets critiques comme la gestion du réseau électrique de la SNEL, cette rigueur est non négociable. L’ingénieur saura rédiger un plan d’assurance qualité et définir les jalons de validation pour un projet à fortes contraintes réglementaires.

I.3 Rupture Agile : Manifeste et Principes Fondamentaux

Face à la rigidité des modèles prédictifs, le Manifeste Agile de 2001 propose une révolution philosophique : valoriser les individus et leurs interactions plus que les processus et les outils. Ce segment analyse les quatre valeurs et douze principes qui en découlent. L’approche est pragmatique. Comment une startup fintech de Kinshasa peut-elle utiliser Scrum pour livrer de la valeur chaque semaine et s’adapter à un marché imprévisible ? L’apprenant maîtrisera l’art de piloter un projet par itérations courtes, en maximisant le feedback client et la réactivité de l’équipe.

I.4 L’Ingénierie des Exigences : Capture et Formalisation

Une connaissance approfondie des techniques de recueil des besoins est le principal facteur de succès d’un projet. Ce sous-chapitre se concentre sur les méthodes de capture (interviews, ateliers, observation) et de formalisation (user stories, cas d’utilisation, spécifications formelles). Le défi est de traduire la vision d’un client, souvent non-technique, en un cahier des charges non ambigu. L’étudiant apprendra à animer une session de brainstorming avec les parties prenantes d’une PME à Lubumbashi et à produire un document de spécification fonctionnelle qui servira de contrat.

Chapitre II. Modélisation et Spécification des Besoins

II.1 Le Langage de Modélisation Unifié (UML) comme Lingua Franca

Standardisé par l’Object Management Group (OMG) en 1997, UML fournit un vocabulaire graphique pour spécifier, visualiser et documenter les systèmes logiciels. Il est la langue commune entre le métier et la technique. Ce module se focalise sur son rôle unificateur dans les projets. En utilisant UML pour modéliser la future plateforme de e-gouvernement de la RDC, on garantit que tous les acteurs, du fonctionnaire au développeur, partagent une compréhension unique du système à construire. L’étudiant saura lire et produire les diagrammes UML essentiels.

II.2 Diagrammes de Comportement : Traduire l’Action en Modèle

Sous l’angle de la dynamique, les diagrammes de comportement UML (séquence, activité, états-transitions) sont cruciaux. Ils décrivent comment le système réagit et évolue dans le temps. Ce segment montre comment modéliser un processus métier complexe, comme la chaîne logistique d’approvisionnement en minerais depuis le Kivu jusqu’au port de Matadi. L’analyse de ces diagrammes permet d’identifier les goulots d’étranglement et les points de défaillance. L’apprenant forgera la compétence d’optimiser un workflow en se basant sur sa modélisation comportementale.

II.3 Diagrammes de Structure : Cartographier l’Anatomie du Système

Face aux défis de la complexité, les diagrammes structurels UML (classes, composants, déploiement) offrent une vision statique et organisée de l’architecture. Ils sont le plan de l’architecte. Ce cours pratique enseigne comment concevoir la structure d’une application de mobile banking pour un opérateur congolais, en définissant les classes métier, les composants logiciels et leur répartition sur les serveurs physiques. L’ingénieur sera capable de concevoir une anatomie logicielle qui garantit la maintenabilité et la scalabilité du système sur le long terme.

II.4 Des Exigences au Modèle : L’Art de la Traduction Formelle

D’origine japonaise, la philosophie de la traçabilité est vitale pour l’assurance qualité. Ce sous-chapitre établit le pont méthodologique entre les exigences textuelles (Chapitre I) et les modèles graphiques (Chapitre II). Il s’agit de démontrer comment chaque “user story” ou exigence formelle se traduit en éléments concrets dans les diagrammes de cas d’utilisation, de classes ou de séquence. L’étudiant apprendra à utiliser des outils pour maintenir ce lien, assurant qu’aucune demande client n’est perdue et que le système livré est conforme au contrat.

Chapitre III. Paradigmes d’Architecture et Patrons de Conception

III.1 Architecture Monolithique vs. Microservices

La controverse entre monolithes et microservices domine aujourd’hui les choix d’architecture. Le monolithe, simple à démarrer, devient un fardeau à maintenir ; les microservices, flexibles, introduisent une complexité opérationnelle. Ce chapitre tranche ce débat par une analyse de coûts/bénéfices. Pour une application de gestion des stocks d’un hôpital à Mbuji-Mayi, quelle approche garantit la meilleure résilience et le coût total de possession le plus bas ? L’étudiant saura mener une analyse de compromis et défendre un choix architectural majeur devant un comité de direction.

III.2 Les Patrons de Conception du GoF (Gang of Four) : Créationnels

La publication en 1994 du livre “Design Patterns” par le Gang of Four (GoF) a fourni un catalogue de solutions éprouvées à des problèmes récurrents. Ce segment se concentre sur les patrons créationnels (Singleton, Factory, Builder) qui contrôlent la création d’objets. L’approche est concrète : comment le patron Singleton garantit-il un accès unique à une ressource partagée, comme le fichier de configuration d’une application déployée sur le territoire national ? L’apprenant implémentera ces patrons pour écrire un code plus flexible, réutilisable et découplé.

III.3 Patrons de Conception Structurels et Comportementaux

Une connaissance approfondie des dynamiques d’interaction entre objets est essentielle. Ce module explore les patrons structurels (Adapter, Façade, Decorator) et comportementaux (Observer, Strategy, Command). Le patron Adapter, par exemple, est crucial en RDC pour faire communiquer des systèmes modernes avec des infrastructures plus anciennes sans tout réécrire. L’étudiant apprendra à utiliser ces patrons pour composer des structures complexes et gérer des algorithmes interchangeables, rendant ses applications robustes face aux changements futurs des exigences métier.

III.4 L’Architecture Orientée Services (SOA) et les API REST

Sous la pression de l’interopérabilité, l’Architecture Orientée Services (SOA) et son implémentation légère via les API REST (Representational State Transfer) se sont imposées. Ce module décortique les principes de REST (adressabilité, sans état, interface uniforme) qui régissent le web moderne. La mission est précise : concevoir l’API REST de la Commission Électorale Nationale Indépendante (CENI) pour la consultation des résultats. L’ingénieur saura définir des ressources, choisir les verbes HTTP et structurer les réponses JSON pour créer des services web sécurisés, performants et publics.

PARTIE 2 : Architectures, Qualité et Déploiement

Chapitre IV. Patrons de Conception et Architecture Logicielle

La publication du “Design Patterns” par le Gang of Four en 1994 a formalisé un lexique pour l’architecture logicielle, montrant que des solutions récurrentes peuvent être standardisées. Ce chapitre applique ces patrons aux défis des fintechs de Kinshasa et des systèmes logistiques du Katanga, où la complexité des transactions exige des structures de code éprouvées. En analysant des cas d’usage concrets, l’étudiant acquiert une compétence d’architecte. Il sera capable de sélectionner et d’implémenter le patron optimal (Singleton, Factory, Observer) pour garantir la robustesse et la maintenabilité d’une application à grande échelle.

IV.1 Fondements des Patrons de Création (Creational Patterns)

Une maîtrise des mécanismes d’instanciation d’objets est fondamentale pour contrôler la création d’artefacts logiciels et découpler le système de ses classes concrètes. Ce module dissèque les patrons Factory Method, Abstract Factory et Singleton, en les appliquant à la gestion des ressources dans des applications destinées au secteur minier congolais. L’objectif est de former l’étudiant à concevoir des systèmes où l’ajout de nouveaux types d’objets se fait sans modifier le code client existant.

IV.2 Patrons de Structuration (Structural Patterns)

Sous l’angle de la composition des objets et des classes, les patrons de structuration organisent les relations pour former des structures plus larges et flexibles. L’étude des patrons Adapter, Decorator et Facade est ici centrale, illustrée par la nécessité d’intégrer des API gouvernementales hétérogènes (DGI, DGDA) dans un système unifié. L’ingénieur apprendra à construire des interfaces simplifiées pour des sous-systèmes complexes, assurant l’interopérabilité et la modularité.

IV.3 Patrons Comportementaux (Behavioral Patterns)

Face à la complexité des interactions entre objets, les patrons comportementaux fournissent des schémas de communication efficaces et réutilisables. Le cours se concentre sur les patrons Strategy, Observer et Command, essentiels pour développer des applications réactives comme les plateformes de e-commerce ou les tableaux de bord en temps réel pour le suivi logistique sur le fleuve Congo. L’étudiant saura implémenter des algorithmes interchangeables et des mécanismes de notification robustes.

IV.4 Architecture N-Tiers et Microservices

L’application des architectures distribuées est une réponse pragmatique aux exigences de scalabilité des services numériques en RDC. Ce sous-chapitre compare l’architecture N-Tiers traditionnelle au paradigme des microservices, en analysant les compromis en termes de complexité de déploiement et de résilience. À travers l’étude de cas d’une application de mobile banking, l’étudiant apprendra à décomposer un monolithe en services indépendants et à orchestrer leur communication.

Chapitre V. Assurance Qualité et Stratégies de Test

L’instabilité des infrastructures réseau et électrique en RDC rend les approches de test classiques, basées sur des environnements stables, largement insuffisantes. Ce chapitre réfute cette vision en introduisant les tests de résilience et de chaos engineering, des techniques qui modélisent des scénarios de défaillance typiques des contextes congolais pour valider la robustesse des applications. L’étudiant forgera une expertise en ingénierie de la qualité logicielle. Il saura concevoir et automatiser des plans de tests exhaustifs garantissant la continuité de service, même en conditions dégradées.

V.1 Planification et Métriques de la Qualité (TDD, BDD)

Une démarche qualité rigoureuse commence par la définition d’objectifs mesurables et l’adoption de méthodologies préventives. Ce module présente le Test-Driven Development (TDD) et le Behavior-Driven Development (BDD) comme des cadres pour écrire du code de meilleure qualité dès le départ. L’étudiant apprendra à définir des indicateurs de performance clés (KPIs) pour la qualité logicielle et à intégrer le cycle de test dans le processus de développement.

V.2 Tests Unitaires, d’Intégration et de Système

La validation pyramidale du code est une stratégie industrielle pour détecter les défauts au plus tôt et au moindre coût. Ce segment détaille la mise en œuvre des tests unitaires avec JUnit/NUnit, des tests d’intégration pour vérifier les interactions entre modules, et des tests de système pour valider le logiciel dans son ensemble. L’application pratique portera sur un système de gestion des stocks pour une PME de Lubumbashi, afin de garantir la fiabilité de chaque composant.

V.3 Tests d’Acceptation Utilisateur (UAT) et de Performance

Pour garantir l’adoption d’un logiciel, sa conformité aux exigences fonctionnelles et sa performance sous charge sont non négociables. Ce cours outille l’étudiant pour organiser des sessions de tests d’acceptation (UAT) avec des utilisateurs finaux et pour mener des tests de charge et de stress simulant des pics de trafic, comme lors d’une campagne de paiement mobile nationale. Il apprendra à utiliser des outils comme JMeter pour identifier les goulots d’étranglement.

V.4 Automatisation des Tests avec Selenium et Jenkins

L’automatisation des pipelines de test est la clé de voûte de la livraison continue et de la réactivité sur le marché. Ce sous-chapitre est un atelier pratique sur l’utilisation de Selenium pour automatiser les tests d’interface utilisateur web et de Jenkins pour orchestrer l’exécution de la suite de tests à chaque modification du code. L’ingénieur sera capable de mettre en place une chaîne d’intégration continue qui réduit drastiquement le temps de mise en production.

Chapitre VI. Gestion de Projet Agile et DevOps

Le Manifeste Agile de 2001 a marqué une rupture paradigmatique, privilégiant les individus et les interactions sur les processus et les outils. Ce chapitre ancre cette philosophie dans la réalité des PME technologiques congolaises, où la flexibilité est une condition de survie. Il démontre comment Scrum ou Kanban permettent de livrer de la valeur rapidement sur des marchés volatiles comme celui des applications mobiles à Goma. L’étudiant développera une compétence de chef de projet technique, capable de piloter un cycle de développement itératif et d’intégrer les pratiques DevOps.

VI.1 Méthodologies Agiles : Scrum et Kanban

D’origine managériale, l’agilité transforme la production logicielle en un processus itératif et incrémental centré sur la valeur client. Ce module détaille les rôles, artefacts et cérémonies du framework Scrum, ainsi que les principes de flux et de limitation du travail en cours de Kanban. L’étudiant apprendra à choisir et à adapter la méthode la plus pertinente pour un projet, qu’il s’agisse d’une startup innovante ou d’un département informatique d’une grande banque.

VI.2 Outils de Suivi de Projet : Jira et Trello

Une connaissance approfondie des plateformes de gestion de projet est indispensable pour assurer la transparence et la traçabilité des tâches. Ce cours pratique forme à la configuration et à l’utilisation de Jira pour la gestion de backlogs complexes et de Trello pour une gestion visuelle de type Kanban. L’étudiant sera opérationnel pour administrer un projet, créer des sprints, suivre la vélocité de l’équipe et générer des rapports d’avancement.

VI.3 Gestion de Code Source avec Git et GitHub/GitLab

Le contrôle de version distribué est le pilier de tout développement logiciel collaboratif moderne. Ce segment offre une maîtrise complète de Git, depuis les commandes de base (commit, push, pull) jusqu’aux stratégies de branches avancées comme GitFlow, essentielles pour gérer le travail en parallèle de plusieurs développeurs. L’utilisation de plateformes comme GitHub/GitLab pour les revues de code (pull requests) et la gestion des issues est également couverte en détail.

VI.4 Principes DevOps : Intégration et Déploiement Continus (CI/CD)

La fusion des équipes de développement (Dev) et d’opérations (Ops) vise à automatiser et à accélérer le cycle de vie du logiciel. Ce module expose les fondements de la culture DevOps et met en œuvre un pipeline CI/CD complet. L’étudiant apprendra à configurer des outils pour compiler, tester et déployer automatiquement une application dans un environnement de production, réduisant les erreurs humaines et le temps de mise sur le marché.

ANNEXES

A. Étude de Cas : Architecture Microservices pour une FinTech à Kinshasa

Face à l’explosion du mobile money en RDC, l’architecture monolithique traditionnelle révèle ses limites en termes de scalabilité et de résilience. Cette annexe dissèque la migration d’une application de paiement vers une architecture microservices, en détaillant les choix techniques pour la gestion des transactions et la sécurité des données. L’ingénieur y trouvera un plan d’action concret pour concevoir des systèmes financiers distribués, capables de supporter des millions d’utilisateurs sur le réseau congolais et de s’interfacer avec les régulateurs bancaires locaux.

B. Catalogue de Patrons de Conception pour la Robustesse Applicative

Formalisés par le “Gang of Four”, les patrons de conception constituent le vocabulaire fondamental de l’architecte logiciel. Ce catalogue va au-delà de la simple énumération en fournissant, pour chaque patron (Singleton, Factory, Observer), un fragment de code Java/Python contextualisé à un problème local, comme la gestion de sessions sur une connexion internet instable. L’étudiant acquiert ici une capacité de discernement technique pour choisir et implémenter la structure la plus maintenable, réduisant ainsi les coûts de maintenance futurs pour les entreprises de services numériques de Goma ou Bukavu.

C. Grille d’Audit Qualité et de Revue de Code (Checklist QA/QC)

Inspirée du principe de “défaut zéro” de l’ingénierie industrielle, la revue de code est le principal rempart contre la dette technique. Cette grille d’audit fournit une méthode systématique pour inspecter la lisibilité, la sécurité et la performance du code, en s’appuyant sur des métriques objectives comme la complexité cyclomatique. En l’utilisant, le développeur transforme une pratique subjective en un processus d’assurance qualité rigoureux, garantissant la conformité du logiciel aux standards exigés par les DSI des entreprises minières du Katanga.

D. Gabarit de Spécifications Techniques et Fonctionnelles (SRS)

Au cœur du débat entre cycles en V et agilité, la spécification des exigences demeure un point de friction majeur. Ce gabarit de SRS propose une synthèse pragmatique : une structure formelle issue de la norme IEEE 830, mais suffisamment flexible pour être utilisée itérativement dans un sprint Scrum, par exemple pour un projet de e-gouvernement en RDC. L’analyste apprend à formaliser sans rigidifier, produisant un document qui sert de contrat clair entre le client et l’équipe de développement, sécurisant ainsi le périmètre du projet.

Paradigmes Avancés en Ingénierie Logicielle : Déconstruction et Applications Critiques
Comment la loi de Conway conditionne-t-elle inéluctablement l’architecture des systèmes, notamment les microservices, au-delà de la simple structure organisationnelle ?
La loi de Conway, formulée par Melvin Conway, postule que les systèmes logiciels reflètent la structure de communication de l’organisation qui les conçoit. Ce principe n’est pas une observation mais une contrainte fondamentale, particulièrement visible dans les architectures microservices. Le paradoxe réside dans la “manœuvre de Conway inverse” : les entreprises restructurent délibérément leurs équipes pour forcer l’émergence d’une architecture cible découplée. Amazon et Netflix appliquent ce principe en créant des “two-pizza teams” autonomes, garantissant que leurs services logiciels restent indépendants et évolutifs.

📚 Source :Travaux de Melvin Conway sur la Loi de Conway via Google Scholar

En quoi le principe de substitution de Liskov (LSP) est-il plus qu’une règle d’héritage et quelles sont ses implications concrètes ?
Le principe de substitution de Liskov, formalisé par Barbara Liskov, exige que les objets d’une classe dérivée puissent remplacer ceux de la classe de base sans altérer la cohérence du programme. Le paradoxe historique du “cercle-ellipse” illustre comment un héritage sémantiquement logique peut violer ce principe, créant des comportements imprévisibles. Dans l’industrie financière, une violation du LSP, où un type de compte spécifique restreint une opération de base, peut corrompre des systèmes transactionnels critiques, menaçant l’intégrité des données.

📚 Source :Travaux de Barbara Liskov sur le Principe de substitution de Liskov via Wikipedia (FR)

Comment la métaphore originelle de la dette technique par Ward Cunningham a-t-elle été déformée et quel est son impact sur les cycles de développement ?
La dette technique, conceptualisée par Ward Cunningham, ne désigne pas le code de mauvaise qualité, mais un compromis délibéré pour accélérer la livraison en échange d’un futur refactoring. La critique porte sur la banalisation du terme, souvent utilisé pour justifier la négligence. L’intention originelle était de “contracter un emprunt” pour apprendre plus vite du marché, avec l’obligation de “rembourser” en améliorant le code. Dans la pratique, les startups l’utilisent pour leurs MVP, mais l’échec du remboursement conduit à des “intérêts” paralysants.

📚 Source :Travaux de Ward Cunningham sur la Dette Technique via Google Books


Discussion (0)

Aucune intervention pour le moment. Soyez le premier à contribuer.

Votre intervention Annuler la réponse

Leave a Reply

Your email address will not be published. Required fields are marked *