Université de la Manouba
École Nationale des Sciences de l’Informatique
Examen
Classe : II2
Module : Génie Logiciel
Enseignantes : N. BELLAMINE, R. DRIRA, N. BEN YAHIA, F. OUAMANI Date : 07 Janvier 2016
Durée : 2 heures
Documents : non autorisés
Ce sujet porte sur le développement d’un système de gestion de « Questionnaires à Choix Multiples » (QCM).
Il se décompose en 3 parties quasi-indépendantes.
besoins ((((7777 pts)pts)pts)pts)
Spécification des besoins
1111.... Spécification des
besoins
besoins
Spécification des
Spécification des
L’université de La Manouba vise à développer un système de gestion de QCM (que nous appellerons UmaQCM)
destiné à une utilisation personnalisée par les enseignants (chacun dans ses cours), de manière collaborative
entre les enseignants d’une même matière, avec la possibilité de réponses en ligne ou papier par les étudiants.
Une prospection a été menée auprès d’un groupe représentatif des futurs acteurs potentiels du système qui
sont : le responsable de la scolarité (K), une enseignante de cours magistraux (A), un étudiant (O), un
enseignant de travaux dirigés (P), un administrateur système (M) et un responsable pédagogique (T).
Ces personnes ont exprimé leurs besoins en des termes informels. Nous les avons compilés dans la liste
suivante :
1) P : « Je veux que les corrections soient faites automatiquement. »
2) A : « Le système doit permettre la constitution collaborative de base de questions-réponses. »
3) A : « La notation doit être sure : si le système a le moindre doute, il doit demander son avis au responsable
du questionnaire. »
4) A : «Pour moi, un questionnaire, c’est un formulaire présentant une collection de questions dont les
réponses sont à choisir parmi un ensemble fini. »
5) T : « Aucune note incertaine et non validée ne doit être divulguée à un étudiant. »
6) A : « On doit pouvoir associer un questionnaire à un étudiant. »
7) P : « La triche doit être impossible. »
8) A : « Si un enseignant organise plusieurs séances de QCM, on ne veut pas qu’une question soit reposée à
un même étudiant. »
9) K : « Le travail de distribution et de ramassage des copies doit être minimal. »
10) A : « Les règles de notation doivent être redéfinissables (Même a posteriori, une fois que la correction a
été faite, on doit pouvoir la refaire avec de nouveaux critères d’évaluation.) »
Publicité
11) A : « Je dois pouvoir écrire les énoncés des questions à l’aide du générateur de documents de mon choix
(LATEX, OpenOffice, Microsoft Office Word, MathML, …) »
12) T : « Les étudiants ne doivent pas pouvoir accéder à la base de questions-réponses. »
13) O : « Je veux recevoir mes notes de QCM par SMS. »
14) K : « Une copie de QCM, c’est un questionnaire rempli par un étudiant, il faut d’ailleurs veiller à ce que
l’étudiant n’ait pas oublié de noter son numéro d’étudiant sur cette copie. »
15) T : « Pour constituer un ensemble de questionnaires, on doit pouvoir spécifier des critères de sélection de
questions (suivant la matière, le thème, des notions abordées et le niveau du public). »
16) A : « Les étudiants et moi-même devons pouvoir accéder à des statistiques de réussite aux questions. »
17) T : « Les questionnaires doivent être anonymisés. »
18) T : « On peut attendre quelques heures pour obtenir les résultats d’interrogation mais pas quelques
jours. »
19) A : « En fonction d’un planning des interrogations et les thèmes à aborder, j’aimerais savoir si il y a
suffisamment de questions dans la base ou si je dois en inventer des nouvelles. »
1/3
20) A : « Je ne veux pas que les redoublants s’ennuient. »
21) P : « On doit pouvoir associer une correction à une question, cette correction peut contenir des
informations complémentaires et des pointeurs vers les sections du cours associées. »
22) A : « Un processus de validation croisée doit être possible : si je soumets un couple question-réponse, je
peux demander à ce qu’il ne soit intégré à la base qu’une fois validé par un collègue. »
23) T : « Les notes des QCM sont automatiquement intégrées dans la base de données de notes des
étudiants. »
24) T : « Je veux pouvoir transmettre aux étudiants le planning des sessions de QCM et les thèmes sur
lesquels ils portent. Avant chaque session, je veux également pouvoir leur envoyer un rappel. »
25) M : « Le gestionnaire de QCM doit s’intégrer facilement au système d’information de l’université. »
26) A : « Ce serait intéressant d’avoir des questionnaires portant sur plusieurs cours à la fois. »
27) P : « Si jamais la machine à corriger les copies est en panne, je dois pouvoir corriger à la main. »
28) P : « Suite à une session de QCM, j’aimerais connaitre les points incompris par les étudiants de mon
groupe de travaux dirigés. »
En analysant la liste des propos recueillis ci-dessus,
a. Identifier tous les besoins du système UmaQCM . La réponse doit être structurée dans un tableau
comme suit :
i. Chaque besoin doit correspondre à une ligne du tableau (Dans le cas où plusieurs besoins sont
exprimés ensemble dans la liste ci-dessus, proposer une décomposition).
ii. Associer à chaque besoin, une ou plusieurs des propositions suivantes : (BF : besoin
fonctionnel ; BNF : besoin non fonctionnel ; MAL : besoin mal exprimé donc non
vérifiable). Justifier vos choix.
iii. Dans le cas des besoins non vérifiables, reformuler tout besoin mal exprimé afin de le rendre
vérifiable ou bien donner une question à poser au « client » pour lever l’ambiguïté.
Publicité
Besoins du système
UmaQCM
Type
Oui
Non
BF
BNF
MAL
Le système doit corriger
automatiquement chaque QCM
……………………………………………………………………………………..………………………
………………………………………………………………………………..…………………………….
………………………………………………………………………………..…………………………….
………………………………………………………………………………..…………………………….
b. Identifier les acteurs de UmaQCM.
c. Élaborer le diagramme de contexte de UmaQCM.
Conception ((((8888 pts)pts)pts)pts)
2222. . . . Conception
Conception
Conception
a. Structurer (hiéarchiser) les services du système UmaQCM suivant les problèmes qu’ils adressent.
b. Proposer une architecture générale pour le système en exhibant les modules et les sous-modules ainsi
que leur interdépendance. Justifier vos choix.
c. Soient les styles d’architectures : Pipe and Filter, MVC, en couche.
En discutant l’applicabilité de chaque style, préciser quel(s) style(s) d’architectures (parmi ces 3)
seraient le(s) plus adéquat(s) à votre futur système ? Justifier votre réponse.
2/3
d. Définir les deux principes de conception liés au couplage et à la cohésion. En se référant au système
UmaQCM, donner un exemple de diagramme de classes (entre 3 et 4 classes) qui présente des
problèmes de couplage et de cohésion. Proposer une correction de votre diagramme.
3. 3. 3. 3. TTTTestsestsestsests ((((5 5 5 5 pts)pts)pts)pts)
3.1 Soit la spécification suivante pour la fonction/méthode qui calcule la note d’une question dans une copie
QCM :
Int CalculNote(ReponseSeq quest, int n, BoolSeq rep)
/** Calcule la note pour la question quest en utilisant le barème total n et la sélection des réponses rep.
*@param quest
*@param n
*@param rep
**@return
Publicité
*Pré-condition
*Post-condition
*/
séquence de réponses possibles avec leur pourcentage sur le barème
entier représentant le barème total
séquence de booléens représentant le choix des réponses dans la copie
un entier si le calcul peut être fait, NaN sinon
n>0 et size(quest) = size (rep)
le calcul peut être fait et on renvoie la note, sinon on renvoie NaN
a. Ecrire des jeux de test pour la validation de cette méthode en partant de sa spécification. Justifier pour
chaque jeu de test, l’intérêt par rapport à la spécification donnée.
b. Préciser de quel type de test s’agit-il et expliquer pourquoi ?
3.2. Considérer l’implémentation suivante de la fonction CalculNote spécifiée ci-dessus (on utilise un
pseudo-java)
1: Int CalculNote(ReponseSeq quest, int n, BoolSeq rep) {
2: if (n<=0 || (quest.length () != rep.length()))
3: return NaN;
4: int note=0;
5: int I =0;
6: while(i<quest.length() && note !=NaN) {
7:
8: note +=quest.getAt(i).getPourcentage()*n;
9:
10: }
11: return note;
12: }
if (rep.getAt(i))
i++;
a. Donner le graphe de contrôle correspondant
b. Ecrire une suite de tests pour la vérification de cette fonction en utilisant les critères de couverture de
i. toutes les instructions,
ii. de tous les arcs,
iii. des 1-chemins : On appelle critère de couverture des i-chemins, le critère qui garantit que l’on
passe sur tous les chemins possibles en répétant de 0 à i fois chaque boucle
c. Préciser de quel type de test s’agit-il et expliquer pourquoi ?
Bon courage !
3/3