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.
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 information». 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 information». 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 identifié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 courant (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
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). 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 ; 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 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 : 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. 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
Créer une équipe Retirer une équipe Ajouter une personne Retirer une pesonne Responsable d équipe Personne Affecter 1 personne à 1 équipe Affecter une équipe à une é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 Commencer à travailler Consolider les durées d un journal 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 Barème de correction sur 2 points : 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. 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
LogicielGestionDuTemps nom datedébut datefin 0..1 Tâche possède est affectée à Journal /duréejourcourant /duréejourprécédent /duréesemainecourante /duréesemaineprécédente /duréemoiscourant /duréemoisprécédent /duréeannée 0..1 nom Équipe 0..1 EntréeJournal datedébut heuredébut datefin heurefin /travailencours /durée Personne matricule nom prénom 1.. est responsable Responsable dateentréeenfonction nombreuses associations redondantes trop d associations 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 : 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 tâche. Construire le diagramme de machines à états de la classe modélisant une 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
EnConstruction NonDémarrée entrée : constructeur() [datedujour >= datedébut] EnCours suppression [datedujour > datefin] EnDestruction entrée : destructeur() suppression suppression Fermée 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 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 : 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. 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
:LGDT t:tache p:personne :Équipe <<new>> 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 e = commencertravail() : EntréeJournal [okp == true] <<constructeur(p)>> ajoutnouvelleentrée(e) ajoutnouvelleentrée(e) lierajournal(j) 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. diagramme de communications, autre expression selon le diagramme de classes. Barème de correction sur 5 points : 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. 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
- 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 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, selon la réponse à la question 1, selon le diagramme de classes. Barème de correction sur 3 points : 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