Genie logiciel igl234
Thème :
Junior
2 vues ·17/19 leçons

EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES

Module : IGL234 — Génie Logiciel & Bases de Données
Niveau : Licence en Informatique
Durée : 3 heures | Note totale : 20 points
Année académique : 2025–2026

Consignes générales : Les quatre (4) parties sont indépendantes. Toutes les questions sont obligatoires. Soignez la présentation, justifiez vos réponses et rédigez les algorithmes dans le formalisme pseudo-code vu en cours.



PARTIE I — Techniques de Tris et de Recherche

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous êtes recruté(e) comme développeur(se) junior dans une entreprise de logistique nommée CargoNet Cameroun. Le responsable technique vous confie une mission urgente : optimiser la gestion d’un stock de produits stockés dans un tableau en mémoire. Votre chef de projet vous demande de coder deux modules algorithmiques distincts.


Exercice 1 — Technique de Tri par Sélection (2,5 points)

La base de données interne de CargoNet contient les quantités en stock de 50 produits (exprimées en entiers naturels) stockées dans un tableau Stock[1..50].

Travail demandé :

  1. (0,5 pt) Expliquez brièvement le principe du tri par sélection (3 à 5 lignes maximum).

  2. (1,5 pt) Écrivez une procédure algorithmique TrierStock qui :

    • Prend en entrée le tableau Stock de 50 entiers naturels.
    • Applique le tri par sélection pour trier les quantités dans l’ordre croissant.
    • Affiche ensuite toutes les quantités triées.

    Respectez le formalisme pseudo-code du cours : Var, Début, FinPour, Si, FinSi, instructions terminées par ;.

  3. (0,5 pt) Indiquez la complexité temporelle de votre algorithme (en notation Grand O) et justifiez votre réponse en une phrase.


Exercice 2 — Technique de Recherche Dichotomique (2,5 points)

Après avoir trié le tableau Stock, le responsable veut pouvoir rechercher rapidement une quantité précise (par exemple : savoir si le stock contient exactement 340 unités d’un article et, si oui, à quelle position).

Travail demandé :

  1. (0,5 pt) Expliquez pourquoi la recherche dichotomique n’est applicable que sur un tableau trié (2 à 3 lignes).

  2. (1,5 pt) Écrivez une fonction RechercherDichotomique qui :

    • Prend en paramètres : le tableau Stock[1..50], la taille n, la valeur à chercher val, et une variable pos (entier passé par référence pour mémoriser la position trouvée).
    • Retourne un booléen : Vrai si la valeur est trouvée, Faux sinon.
    • Utilise la méthode dichotomique vue en cours (variables min, max, mil, trouvé).
  3. (0,5 pt) Comparez les complexités temporelles de la recherche séquentielle et de la recherche dichotomique dans le pire des cas. Laquelle recommandez-vous pour ce contexte ? Pourquoi ?



PARTIE II — Concepts de Normalisation (1NF, 2NF, 3NF)

Barème : 5 points | Durée conseillée : 50 min

Contexte professionnel

Vous intégrez la cellule Systèmes d’Information de l’Université des Montagnes. Le responsable de la DSI vous présente une feuille Excel utilisée depuis des années pour gérer les inscriptions pédagogiques des étudiants. Il vous demande d’analyser cette table et de la normaliser correctement afin d’alimenter la nouvelle base de données relationnelle.


Exercice 1 — Passage de la 1NF à la 2NF (2,5 points)

On vous soumet la table brute suivante (extraite de l’Excel) :

Table INSCRIPTION (non normalisée) :

Matricule NomEtudiant Filière CodeUE IntituléUE Crédit NomEnseignant Tel_Enseignant
ETU001 KAMGA Paul INFO-L2 IGL234 Génie Logiciel 4 Dr. NKEMBI +237 690 000 01
ETU001 KAMGA Paul INFO-L2 MAT201 Mathématiques Discrètes 3 Dr. FOUDA +237 690 000 02
ETU002 BELLO Aïcha RS-L2 IGL234 Génie Logiciel 4 Dr. NKEMBI +237 690 000 01
ETU002 BELLO Aïcha RS-L2 SYS301 Systèmes d’Exploitation 4 Mme. SONKENG +237 690 000 03

La clé supposée est composée de (Matricule, CodeUE).

Travail demandé :

  1. (0,5 pt) Vérifiez si cette table respecte la 1NF. Justifiez votre réponse en vérifiant les trois conditions de la 1NF.

  2. (1,0 pt) Identifiez toutes les dépendances fonctionnelles partielles (attributs qui ne dépendent que d’une partie de la clé composée). Présentez vos résultats sous la forme :

    Attribut → Partie de la clé dont il dépend : [raison]
    
  3. (1,0 pt) Décomposez la table INSCRIPTION en tables satisfaisant la 2NF. Donnez le schéma de chaque table obtenue en précisant :

    • Le nom de la table
    • Ses attributs (en soulignant la clé primaire)
    • Les clés étrangères éventuelles

Exercice 2 — Passage de la 2NF à la 3NF (2,5 points)

À l’issue de l’exercice 1, on suppose que vous avez obtenu (entre autres) la table suivante en 2NF :

Table ETUDIANT :

Matricule NomEtudiant CodeFilière NomFilière ResponsableFilière
ETU001 KAMGA Paul INFO-L2 Informatique Dr. TCHAMBA
ETU002 BELLO Aïcha RS-L2 Réseaux Pr. MOFFO
ETU003 TABI Rémi INFO-L2 Informatique Dr. TCHAMBA

La clé primaire est Matricule.

Travail demandé :

  1. (0,5 pt) Vérifiez si la table ETUDIANT est en 2NF (tous les attributs dépendent-ils de la totalité de la clé Matricule ?). Expliquez brièvement.

  2. (1,0 pt) Identifiez la ou les dépendances transitives présentes dans cette table. Représentez-les graphiquement sous la forme :

    Matricule → CodeFilière → NomFilière, ResponsableFilière
    

    Expliquez en quoi cette dépendance constitue un problème (anomalie de suppression, mise à jour, insertion).

  3. (1,0 pt) Décomposez la table ETUDIANT en tables satisfaisant la 3NF. Donnez le schéma complet de chaque table obtenue (nom, attributs, clé primaire soulignée, clés étrangères).



PARTIE III — Tri à Bulles

Barème : 5 points | Durée conseillée : 40 min

Contexte professionnel

Vous êtes ingénieur(e) logiciel dans une société de courtage financier, FinTech Solutions Douala. Le département des opérations vous confie la gestion d’un tableau de cours boursiers journaliers. Vous devez développer deux modules algorithmiques basés sur le tri à bulles pour aider les analystes dans leur travail quotidien.


Exercice 1 — Application du Tri à Bulles et Trace d’Exécution (2,5 points)

Le tableau des cours de clôture (en FCFA) de 6 actions cotées en bourse est le suivant :

Cours = [4500, 1200, 3800, 700, 2950, 150]

Travail demandé :

  1. (1,0 pt) Effectuez manuellement les deux premiers passages du tri à bulles (boucle externe i = 6 puis i = 5) sur ce tableau. Présentez l’état du tableau après chaque échange effectué.

  2. (1,0 pt) Écrivez la procédure algorithmique TrierBourseAscendant qui :

    • Prend en entrée un tableau Cours[1..6] d’entiers naturels.
    • Applique le tri à bulles pour trier les cours en ordre croissant.
    • Affiche le tableau trié après traitement.

    Utilisez les variables : i, j, temp (entiers) comme dans le cours.

  3. (0,5 pt) Quel est le nombre total de comparaisons effectuées par le tri à bulles sur un tableau de taille n = 6 dans le pire des cas ? Donnez la formule générale et appliquez-la numériquement.


Exercice 2 — Tri à Bulles avec Optimisation et Affichage Inverse (2,5 points)

Le chef de service souhaite une deuxième fonctionnalité : afficher les cours boursiers en ordre décroissant (du plus élevé au plus bas) pour identifier rapidement les meilleures performances. Il souhaite également que l’algorithme soit optimisé pour s’arrêter dès que le tableau est trié (sans effectuer des passages inutiles).

Travail demandé :

  1. (0,5 pt) Expliquez le principe de l’optimisation du tri à bulles avec un indicateur d’échange (échangé : booléen). Quel est l’avantage dans le meilleur des cas ?

  2. (1,5 pt) Écrivez la procédure algorithmique TrierBourseDescendant qui :

    • Prend en entrée un tableau Cours[1..n] (taille variable n passée en paramètre).
    • Applique le tri à bulles optimisé (avec le drapeau échangé) pour trier en ordre décroissant.
    • Affiche le tableau résultant.

    Remplacez la condition d’échange : au lieu de Tab[j-1] > Tab[j], utilisez Tab[j-1] < Tab[j] pour l’ordre décroissant.

  3. (0,5 pt) Dans quel cas le tri à bulles optimisé atteint-il sa meilleure complexité ? Donnez la valeur de cette complexité en notation Grand O et expliquez pourquoi.



PARTIE IV — Administration de Bases de Données et SQL

Barème : 5 points | Durée conseillée : 45 min

Contexte professionnel

Vous venez d’être nommé(e) Administrateur(trice) de Bases de Données (DBA) d’une PME camerounaise de vente en ligne, ShopCMR. Votre première mission consiste à créer et sécuriser la base de données de gestion des ventes, puis à rédiger des requêtes SQL pour les différents départements de l’entreprise.


Exercice 1 — Administration et Sécurité de la Base de Données (2,5 points)

Le directeur technique vous demande de concevoir et de sécuriser la base de données de ShopCMR selon les règles suivantes :

  • La base doit contenir une table Produits et une table Commandes.
  • Le département Commercial ne doit avoir que des droits en lecture (SELECT) sur la table Commandes.
  • La base doit être sauvegardée chaque nuit.

Travail demandé :

  1. (1,0 pt) Rédigez les instructions SQL (DDL) pour :

    • Créer la base de données ShopCMR_DB.
    • Créer la table Produits avec les colonnes suivantes : ID_Produit (entier, clé primaire, auto-incrémenté), Nom_Produit (chaîne 100 caractères, non null), Prix_Unitaire (décimal 10,2, valeur positive), Stock_Disponible (entier, valeur ≥ 0).
    • Créer la table Commandes avec les colonnes : ID_Commande (entier, clé primaire, auto-incrémenté), ID_Produit (entier, clé étrangère vers Produits), Quantite_Commandee (entier, non null), Date_Commande (date), Montant_Total (décimal 12,2).
  2. (0,5 pt) Rédigez l’instruction SQL pour accorder uniquement le droit de lecture sur la table Commandes à l’utilisateur commercial_user. Quelle est la commande inverse pour révoquer ce droit ?

  3. (1,0 pt) Le DBA précédent n’avait pas mis en place de système de sauvegarde. Expliquez (sans code) les deux types de sauvegardes vues en cours (logique et physique) et recommandez laquelle adopter pour ShopCMR. Justifiez votre choix en citant au moins deux avantages de celle que vous recommandez.


Exercice 2 — Requêtes SQL d’Interrogation et de Manipulation (2,5 points)

Voici le contenu des tables de ShopCMR après quelques semaines d’activité :

Table Produits :

ID_Produit Nom_Produit Prix_Unitaire Stock_Disponible
1 Téléphone A7 85000.00 42
2 Casque Bluetooth 15000.00 120
3 Chargeur USB-C 5000.00 0
4 Tablette X10 150000.00 8

Table Commandes :

ID_Commande ID_Produit Quantite_Commandee Date_Commande Montant_Total
1001 1 2 2026-03-01 170000.00
1002 2 5 2026-03-01 75000.00
1003 1 1 2026-03-15 85000.00
1004 4 1 2026-03-20 150000.00
1005 2 3 2026-03-25 45000.00

Travail demandé :

  1. (0,5 pt) Rédigez la requête SQL qui affiche le nom du produit et le montant total de toutes les commandes passées pour ce produit, triés par montant total décroissant.

    Utilisez une jointure (JOIN), la fonction d’agrégation SUM() et GROUP BY.

  2. (0,5 pt) Rédigez la requête SQL qui liste les produits en rupture de stock (c’est-à-dire dont le Stock_Disponible est égal à 0). Afficher : ID_Produit, Nom_Produit, Prix_Unitaire.

  3. (0,5 pt) Rédigez la requête SQL qui calcule le montant moyen des commandes passées au mois de mars 2026 ainsi que le nombre total de commandes pour ce mois.

  4. (1,0 pt) Le directeur commercial souhaite mettre à jour le stock : chaque commande passée doit déduire la quantité commandée du stock disponible. Rédigez une instruction SQL UPDATE pour déduire du stock du produit ID_Produit = 1 la somme des quantités commandées pour ce produit.

    Indice : Utilisez une sous-requête SELECT SUM(Quantite_Commandee) ... WHERE ID_Produit = 1 dans votre UPDATE.


— Fin de l’examen — Bon courage à toutes et à tous —


Barème récapitulatif :

Partie Thème Exercice 1 Exercice 2 Total
I Tri par Sélection & Recherche Dichotomique 2,5 pts 2,5 pts 5 pts
II Normalisation 1NF → 2NF → 3NF 2,5 pts 2,5 pts 5 pts
III Tri à Bulles (Application & Optimisation) 2,5 pts 2,5 pts 5 pts
IV Administration BD & SQL 2,5 pts 2,5 pts 5 pts
Total 10 pts 10 pts 20 pts

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur EXAMEN NORMAL — IGL234 : GÉNIE LOGICIEL & BASES DE DONNÉES. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.