Vous êtes sur la page 1sur 8

Corrigé et Barème Contrôle de connaissances 2012/2013

des étudiants de 2è année (EI2)

CSC4002 : Contrôle continu « Bureau d’Étude noté »

Date : lundi 3 décembre 2012 — Durée : 2H

Coordonnateurs : Christian Bac et Denis Conan

Les seuls documents autorisés sont ceux distribués en cours / BE / TP et mis à disposition
sur le site Web du module, ainsi que vos notes personnelles.

Notes en préambule :
— le travail doit se faire individuellement ;
— n’oubliez pas d’indiquer votre nom sur chaque feuille rendue ;
— soyez concis et précis, et justifiez vos réponses par des commentaires appropriés ;
— soyez rigoureux dans la syntaxe UML ;
— veillez à rendre une copie propre et lisible.
BE noté 2012–2013

1 Sujet
Analysons et concevons un système de gestion du temps (en anglais, time tracker). Un
système de gestion du temps 1 est un logiciel qui permet de gérer une liste de tâches, de
démarrer et d’arrêter un compteur pour mesurer la durée passée sur une tâche.
Dans cette étude, nous considérons que le logiciel est utilisé dans une entreprise. Les
équipes de l’entreprise sont organisées hiérarchiquement avec plusieurs niveaux de hiérarchies
possibles. Le graphe d’équipes ainsi formé est un arbre. Par exemple, l’équipe « secrétariat
général » est composé des équipes « logistique bâtiment », « sécurité et environnement »,
« accueil et événements », « édition et reprographie », et « informatique et système d’infor-
mation ». L’équipe « informatique et système d’information » est elle-même composée des
équipes « infrastructure système et réseau », « ressources multimédias », et « système d’infor-
mation ». L’équipe « système d’information » est composée des équipes « SI comptabilité »,
« SI paie », etc. Chaque équipe est dirigée par un responsable et une personne ne peut être
responsable que d’une équipe. Chaque personne possède un nom et un prénom, et est iden-
tifiée de manière unique par un matricule. Pour un responsable d’équipe, on connaît en plus
la date de début de prise de fonction. Une personne est affectée à une et une seule équipe.
L’affectation est effectuée par un responsable d’équipe qui est responsable de l’équipe de
manière directe ou indirecte (dans le cas d’une équipe « incluse »). Un responsable d’équipe
peut nommer le responsable d’une équipe « incluse ».
Les tâches sont organisées hiérarchiquement avec plusieurs niveaux de tâches imbriquées :
une tâche est décomposée en sous-tâches, elles-mêmes potentiellement décomposables en
sous-tâches, et ainsi de suite. Le logiciel gère un journal par tâche. Lorsqu’une personne
commence à travailler puis arrête de travailler sur une tâche, elle l’indique au logiciel. Cela
crée une entrée dite de journal qui contient les dates et heures de début et de fin de la
période de travail. Le logiciel calcule la durée pour chaque entrée du journal. Le journal de
la tâche, quant à lui, contient les sommes des durées des entrées du journal pour le jour cou-
rant (aujourd’hui), le jour précédent (hier), la semaine courante (cette semaine), la semaine
précédente (la semaine dernière), le mois courant, le mois précédent, et l’année courante. Ces
calculs sont effectués de manière automatique à chaque insertion ou modification d’une entrée
du journal. Pour les tâches composites, les sommes sont calculées en incluant récursivement
les sous-tâches.
Une tâche est affectée par un responsable d’équipe qui précise une date de début et une
date de fin. Un responsable d’équipe peut affecter une tâche à une équipe qu’il dirige de
manière directe ou indirecte (dans le cas d’une équipe « incluse »). Une personne peut
travailler sur une tâche si la tâche a été affectée à son équipe, et si la date du jour est
comprise dans l’intervalle de temps autorisée par la tâche.

1. Si vous êtes intéressés par l’utilisation d’un tel système, vous pouvez installer et essayer par exemple GnoTime pour la
gestion personnelle de votre temps.

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 2


BE noté 2012–2013

2 Questions

Question 1 : 2pt Après avoir réalisé une analyse du texte au brouillon, ce qui vous a permis
de trouver les noms (substantifs) et les verbes correspondant à ce problème, choisir les
classes qui vous semblent devoir faire partie de la modélisation de ce problème. Décrire
textuellement ces classes et les attributs associés à chaque classe : donner le nom des classes
et de leurs principaux attributs (et des explications textuelles uniquement quand cela vous
semble nécessaire).
Réponse :
Les classes et — attributs — obtenus après analyse du texte sont les suivants :
— LogicielGestionDuTemps : classe « interface » du système, patron de conception Façade
— Tâche : — nom, dateDébut, dateFin — ;
— Journal : — duréeJourCourant, duréeJourPrécédent, duréeSemaineCourante, duréeSemainePrécédente, durée-
MoisCourant, duréeMoisPrécédent, duréeAnnée — ;
— EntréJournal : — dateDébut, heureDébut, dateFin, HeureFin, travailEnCours, durée — ;
— Équipe : — nom — ;
— Personne : — matricule, nom, prénom — ;
— Responsable : — dateEntréeEnFonction —, classe enfant de Personne ;
Erreurs fréquemment observées :
— acteur Utilisateur comme classe du système
— attributs d’association mélangés aux autres attributs
— On accepte cependant les attributs d’association avec des « @ »
— pas de distinction entre Journal et EntréeJournal avec les attributs tous mis en attributs d’instance
Variantes possibles :
— pas de classe Journal, mais les durées mises dans la classe Tâche
— Pas de classe Responsable, en considérant que les personnes peuvent tantôt devenir responsable de leur équipe,
tantôt redevenir une personne non responsable d’équipe

Barème de correction sur 2 points :


Répartition :
0,5 classe Équipe
0,5 classe Personne
0,5 classe Tâche
0,5 classe EntréeJournal

Question 2 : 2pt Décrire les acteurs et les fonctionnalités significatives du système par un
diagramme de cas d’utilisation.
Réponse :
La figure suivante présente les acteurs et les cas d’utilisation du système.

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 3


BE noté 2012–2013

Créer une équipe

Retirer une équipe

Ajouter une personne

Retirer une pesonne

Affecter 1 personne à 1 équipe


Affecter une équipe
Responsable à une équipe
d’équipe
Retirer 1 personne d’une équipe
Retirer une équipe
à une équipe
Nommer un responsable
d’équipe
Créer une tâche
ou une sous−tâche
Retirer une tâche
ou une sous−tâche

Affecter une équipe à une tâche


Personne
Commencer à travailler

Consolider les durées d’un journal

Erreurs fréquemment observées :


— oublis de certains cas d’utilisation, notamment sur les créations et suppressions d’entités du système
— oubli de la généralisation spécialisation
Variantes possibles :

Barème de correction sur 2 points :


Répartition :
0,5 respect de la notation UML (délimitation du système, icone de
l’acteur, lien de communication, phrase verbale, cadre ovale autour
des cas d’utilisation)
0,5 des cas d’utilisation pour les équipes, y compris le nommage du responsable
0,5 des cas d’utilisation pour les tâches, y compris l’affectation des équipes
0,5 des cas d’utilisation pour les entrées de journal

Question 3 : 5pt Construire un diagramme de classes qui représente le système. Dans ce


diagramme, prenez soin de préciser les noms des associations, les rôles, les multiplicités et
les sens de navigation des associations lorsque cela s’avère nécessaire. Vous n’avez pas besoin
de remettre les attributs dans les classes du diagramme de classes.
Réponse :
La figure suivante présente le diagramme de classes proposé en guise de corrigé-type.

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 4


BE noté 2012–2013

LogicielGestionDuTemps

est affectée à
* *

possède
Tâche Journal
nom /duréeJourCourant
dateDébut /duréeJourPrécédent
* dateFin /duréeSemaineCourante
*
/duréeSemainePrécédente Équipe
0..1 /duréeMoisCourant * nom
/duréeMoisPrécédent
/duréeAnnée
0..1 0..1

1..*
*
EntréeJournal Personne
est responsable
dateDébut * matricule
heureDébut nom
dateFin prénom
heureFin
/travailEnCours
/durée
Responsable
dateEntréeEnFonction

Erreurs fréquemment observées :


— nombreuses associations redondantes
— trop d’associations
Variantes possibles :
— pas de classe Journal
— possible de mettre une multiplicité * du côté de la classe Équipe de l’association est affecté à
— possible de mettre une multiplicité 1 du côté de la classe Équipe de l’association est responsable

Barème de correction sur 5 points :


Répartition :
1 qualité UML du diagramme
(notation UML: classe, nom association, généralisation spécialisation, agrégation, etc.
pas d’association qui corresponde par erreur à ce qui ressemblerait à un
cas d’utilisation)
1 la plupart des multiplicités sont correctes (-0.25 par erreur)
0,5 la classe du patron Façade LogicielGestionDuTemps
0,5 la classe Équipe et l’agrégation du patron Composite
0,5 la classe Tâche et l’agrégation du patron Composite
0,5 la classe Équipe et deux associations (vers
Personne et Responsable)
0,5 l’association entre Tâche et Équipe
0,5 l’association entre EntréeJournal et Personne

Question 4 : 3pt Construire le diagramme de machines à états de la classe modélisant une


tâche.
Réponse :
La figure suivante présente le diagramme de machine à états de la classe Tâche.

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 5


BE noté 2012–2013

EnConstruction NonDémarrée
entrée : constructeur()

[dateDuJour >= dateDébut]

EnCours

suppression
[dateDuJour > dateFin]

suppression

Fermée
EnDestruction
suppression
entrée : destructeur()

Erreurs fréquemment observées :


— dessiner un diagramme d’activité plutôt qu’un diagramme de machine à états
— transition vers l’état final avant la destruction du système,
— état qui ne permet pas d’aller vers l’état final,
— une seule transition avec plusieurs conditions et événements au lieu de plusieurs transitions.
— destruction dès la date de fin passée
Variantes possibles :
— pas d’états « EnConstruction » et « EnDestruction »
— pas d’état « NonDémarrée »
— pas d’état « EnCours »
— pas d’état « Fermée »
— fonctionner par mimétisme avec les études de cas du cours, des BEs ou des annales

Barème de correction sur 3 points :


Répartition :
1 qualité de l’UML (notation = boîte, flèches, événement[condition]/action)
+ respect de la présence état initial et état final, et absence
d’état ne permettant pas d’aller vers l’état final
0,5 présence état EnCours
0,5 présence état Fermée
0,5 transitions avec condition sur dateDuJour
0,5 transitions avec événement de suppression

Question 5 : 5pt Donner le diagramme de communications ou de séquence qui correspond


au cas d’utilisation : « Commencer à travailler sur une tâche ». Les arguments sont le nom
de la tâche et le matricule de la personne.
Nous vous conseillons de détailler les actions correspondant à ce cas d’utilisation sous
forme textuelle avant de réaliser le diagramme.
Réponse :
La figure suivante présente le diagramme de séquence associé au cas d’utilisation. La description informelle du cas
d’utilisation est la suivante :
— chercher la tâche
— vérifier que la tâche est « en cours »
— chercher la personne
— vérifier que la personne peut travailler sur cette tâche
— vérifier que la tâche est affectée à l’équipe
— la personne commence à travailler
— construction de l’entrée de journal
— la tâche possède une nouvelle entrée dans son journal
— le journal possède une nouvelle entrée de journal
— l’entrée de journal est liée au journal

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 6


BE noté 2012–2013

<<new>>
:LGDT t:Tache p:Personne :Équipe e:EntréeJournal j:Journal

commencerTravail(nomT,matricule)

t = chercherTache(nomT):Tache

opt [t != null]

okT = vérifierTacheEnCours():boolean

opt [okT == true]

p = chercherPersonne(matricule):Personne

opt [p != null]

okP = vérifierPersonnePeutTravailler():boolean
okÉ = vérifierÉquipeAffectée():boolean

opt [okP == true]


e = commencerTravail() : EntréeJournal
<<constructeur(p)>>

ajoutNouvelleEntrée(e)
ajoutNouvelleEntrée(e)

lierAJournal(j)

Erreurs fréquemment observées :


— non-respect du séquencement ou des numérotations,
— non-respect de la notation UML : objet, etc.,
— pas de test de valeurs retournées ou pas d’utilisation des valeurs retournées,
— pas de fragment avec condition ou pas de condition sur les messages,
— non respect des liens du diagramme de classes.
Variantes possibles :
— diagramme de communications,
— autre expression selon le diagramme de classes.

Barème de correction sur 5 points :


Répartition :
1 qualité de l’UML (notation = objet, classe, condition, fragment, etc.)
1 logique correcte, même si seulement exprimée dans l’explication
textuelle (partie tests et partie actions du cas d’utilisation)
1 conformité au diagramme de classes (parcours d’associations
existantes et navigabilité possible)
0.5 recherche de la tâche et recherche de la personne
0.5 vérification tâche ouverte
0.5 vérification tâche affectée à l’équipe de la personne
0.5 construction de l’entrée de journal côté personne
bonus 0.5 liaison de l’entrée au journal côté tâche

Question 6 : 3pt Nous nous intéressons à la conception des classes qui permettent de décrire
une tâche et une équipe. Donner les attributs de ces classes avec leur visibilité et leur type.
Réponse :

Pour la classe Tâche


- nom : String
- dateDébut : Date
- dateFin : Date
- sousTâches : Collection de @Tâche

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 7


BE noté 2012–2013

- tâcheParente : Tâche
- journal : @Journal
- systeme : @LogicielGestionDuTemps
Pour la classe Équipe
- nom : String
- ÉquipesInclues : Collection de @Équipe
- équipeParente : @Équipe
- membres : Collection de @Personne
- responsable : @Responsable

Erreurs fréquemment observées :


— non conforme à la liste des attributs donnée à la question 1,
— non conforme au diagramme de classes par rapport aux navigations,
— non conforme au diagramme de classes par rapport aux multiplicités,
Variantes possibles :
— selon la réponse à la question 1,
— selon le diagramme de classes.

Barème de correction sur 3 points :


Répartition :
0,5 conformité avec les attributs donnés dans la question 1
1 conformité avec le bon nombre d’association du diagramme de classes
(moins 0,5 par erreur, jusqu’à 0, négatif quand trop d’erreurs)
1 conformité avec les multiplicités du diagramme de classes
(moins 0,5 par erreur, jusqu’à 0, négatif quand trop d’erreurs)
0,5 visibilité privé

Télécom SudParis — Denis Conan et Christian Bac — 3 Décembre 2012 — CSC4002 8