Sujet session 2026-2027 (1h30 machine)

Questions de cours [/10]

Analyse [/2]

  1. Qu'est-ce que l'analyse ? En quoi est-ce une étape importante d'un projet ?
  2. Expliquez ce qu'est un cas d'utilisation (et ce qu'il n'est pas).

Conception [/4]

  1. Qu'est-ce qu'une dette technique ? En quoi leur accumulation est-il un danger pour le projet ?
  2. Expliquez en quoi découper un projet en composants indépendant est intéressant.
  3. Qu'est-ce que l'architecture 3-tiers ? Quel est son intérêt ?
  4. Expliquez le principe KISS.

Implémentation [/4]

  1. Qu'est-ce que la composition ? En quoi peut-elle être plus intéressante que l'héritage ?
  2. Qu'est-ce qu'une responsabilité latente ?
  3. Qu'est-ce que le principe Open/Close ? En quoi est-il important ?
  4. Quelle est la distinction entre détails et politiques ?

Modélisation UML [/10]

Vous trouverez les bibliothèques de formes Draw.io dans le dossier .
Moodle est une plateforme de cours en ligne permettant aux étudiants de consulter leurs ressources de cours, ainsi que de déposer leurs rendus de TP. L'enseignant qui administre le cours peut ensuite corriger les rendus.

Lors d'un devoir, chaque étudiant peut effectuer des dépôts. Un dépôt est enregistré pour évaluation seulement si le dépôt est ouvert. Une fois la date de rendu dépassée, le dépôt est fermé. L'enseignant peut alors soit rouvrir le dépôt (en fixant une nouvelle date de rendu), soit corriger le rendu puis déposer un corrigé.

L'architecture de Moodle est modulaire. Un module a la responsabilité de la gestion des utilisateurs, notamment leur authentification (via le serveur CAS de l'université). Un autre module gère l'affichage des cours, ainsi que leur administration. , quant à elle, regroupe un ensemble d'activités qu'on peut ensuite associer à un cours. est un exemple d'activité. Enfin, un module gère les ressources persistantes (e.g. upload, download, etc).

Le processus de rendu s'effectue alors comme suit. Lors de la demande de dépôt d'un utilisateur, le module vérifie auprès du cours si l'utilisateur est bien un étudiant, puis auprès du module si l'utilisateur est toujours connecté. Si l'utilisateur n'est plus connecté, la procédure est utilisée. Enfin, le rendu est uploadé via le module qui retourne un identifiant correspondant au fichier.

En soit, un devoir est une activité disposant d'une date de rendu, ainsi que d'une propriété permettant de savoir si l'activité est fermée ou ouverte (i.e. si la date de rendu est dépassée ou non). Elle est aussi composée d'un ensemble d'artefacts (rendus), qui ont une date, un identifiant, ainsi qu'un utilisateur propriétaire.
Bien évidemment, l'activité connaît le cours qui le possède. Le cours est administré par un unique utilisateur, et possède une liste d'utilisateurs inscripts en tant qu'étudiants. À noter que la classe possède une méthode permettant de s'assurer qu'un utilisateur est bien connecté.

Diagramme de cas d'utilisations

Dessinez le diagramme de cas d'utilisations :

Diagramme d'activité

Dessinez le diagramme d'activité d'un devoir, du dépôt du rendu au dépôt de sa correction :

Diagramme de déploiement

Dessinez le diagramme de déploiement de l'architecture :

Diagramme de séquence

Dessinez le diagramme de séquence représentant le processus de rendu :

Diagramme de classes

Dessinez le diagramme de classe permettant de représenter un devoir :