S2T
- TDs
Eléments de Correction
Eléments de Correction
Vous devez les avoir préparé avant la séance de TD qui servira “seulement” à corriger! Vous n'avez qu'une heure trente pour faire ces exercices en situation de contrôle. Dans le cadre du TD nous corrigerons au fur et à mesure. Cela nous prendra donc plus de temps.
RAPPEL : Si vous ne faites pas par vous-même et attendez la correction, vous ne saurez pas faire!
Une entreprise de services du numérique (ESN) (anciennement SSII ou société de services en ingénierie informatique) est une entreprise spécialisée en services numériques répondant aux besoins d'externalisation des expertises, des services et des projets informatiques des directions informatiques des entreprises. L'ESN apporte de la valeur ajoutée à ses clients essentiellement à travers le savoir-faire et l'expertise numérique de ses salariés. Il s'agit donc d'une entreprise de services, financièrement faiblement capitalisée, mais dont la valeur est générée par son capital immatériel. .. l'ESN doit principalement attirer et recruter des compétences spécialisées (par rapport à l'industrie où il faut fabriquer plus de marchandises), ou de façon secondaire, augmenter ses niveaux de prix en faisant croître la valeur ajoutée de sa masse salariale (amélioration des savoir-faire par la formation professionnelle, augmentation de l'ancienneté et de l'expérience, …, recrutement d'experts ou de talents reconnus, développement des marchés plus à plus forte valeur ajoutée, management de la connaissance…). (wikipedia)
Votre rôle est de spécifier un logiciel «interne» à une ESN pour gérer son personnel. Nous nommerons ce logiciel «MonPersonnel».
Une ESN se définit par l’ensemble de ses employés1) et ses projets. MonPersonnel
doit nous permettre de mieux gérer ces deux aspects de la société. Dans MonPersonnel
, les ingénieurs commerciaux enregistrent des projets et associent à chaque projet un responsable de projet. Un projet «client» se définit entre autre par un client et une ou plusieurs «offres d’emplois». Une offre précise la ou les compétences recherchées par exemple ‘java’, «expertise EJB», «conception UML»… Une offre d’emploi est valide entre une date de début et une date de fin de mission.
Un responsable de projets gère plusieurs projets simultanément : affectation du personnel sur des offres, suivi et clôture du projet. Un employé ne peut pas être affecté simultanément à plusieurs offres d’emplois. A une offre d’emploi, un seul employé peut être affecté. Un employé peut cependant être consulté oralement sur un autre projet. Les compétences de l’employé doivent concorder avec les compétences demandées par l’offre sur laquelle il est affecté. On distingue les projets «clients» tels que définis précédemment et les projets «internes» qui sont propres à l’agence. Aucun client n’est évidemment associé à un projet interne. Par contre à un projet interne au moins une offre d’emplois lui est associée. Lors de l’affectation d’un employé en réponse à une offre d’emplois, MonPersonnel propose les employés libres aux dates recherchées et qui présentent les compétences souhaitées. Un outil de gestion des agendas fourni par l’ESN permet de gérer les dates de disponibilités des personnels ainsi que leurs vacances. Un employé non affecté à un projet «client» est affecté à un projet «interne» à l’agence, dans l’attente d’une affectation à un projet client.
Un responsable d’agence doit pouvoir faire tout ce que fait un responsable de projets. Il peut également consulter les différentes offres d’emplois auxquelles un employé a été affecté dans le temps.
Le responsable des ressources humaines a la charge de mémoriser les candidatures jugées intéressantes et d’enrichir la base des employés avec leurs compétences (soit sur la base du CV, soit sur la base d’acquis par formation ou sur le terrain comme par exemple des connaissances du domaine bancaire).
Scénario : En tant que responsable de projets , après avoir sélectionné un projet, pour chaque offre d’emploi sur laquelle aucun employé n’est encore affecté, le responsable de projet sélectionne un employé proposé par le système. Le système propose l’employé parmi ceux qui sont libres aux dates souhaitées par l’offre et qui ont les compétences requises. Si aucun employé idoine2) n’est disponible aux dates de la mission, l’employé est recherché par le système parmi ceux occupés sur des projets internes. Si aucun employé n’a été proposé, le responsable de projets signale un manque de personnel qui pourra être traité ultérieurement par un responsable des ressources humaines. Dans le cas contraire, le responsable du projet sélectionne un des employés proposés par le système et ce dernier est alors affecté à l’offre.
Question 1 : 2,5 pts Représentez acteurs et cas d’utilisation sur un diagramme. Justifiez au besoin votre diagramme en le complétant par des explications sous forme de texte, en particulier si vous êtes amené à ajouter ou fixer du vocabulaire.
Les cas d'utilisation sont spécifiés par un verbe à l'infinitif suivi d'un complément
Seules les fonctionnalités offertes par le système informatique doivent être représentées.
Question 2 : 4 pts Dessiner le diagramme de séquence en conception correspondant à l’affectation du personnel sur un projet, selon la spécification, en vous limitant à la partie scénario.
Question 3 : 6 pts Construire un diagramme de classes qui représente le système en intégrant les informations présentes dans l’ensemble des spécifications.
On attend un niveau conception : type des attributs, rôles dans les associations, navigations éventuelles des associations. Les méthodes ne sont pas spécifiquement attendues, mais si vous en avez identifié vous pouvez les noter. Ne présentez pas les accesseurs aux attributs.
Question 4 : 3 pts Voici un diagramme de classes, donner la définition de la structure des classes correspondantes en java.
Question 5 : 4,5 pts Compléter le diagramme de classe précédent pour prendre en compte le code suivant :
public class Agenda { private String nom; private ArrayList<Activite> rendezVous; public Agenda() { rendezVous = new ArrayList<>(); } public void ajouteActivite(Activite activite) { ... } } public class Person { private String name; } public class Reunion extends Activite{ private Person initiateur; private ArrayList<Person> participants; public Reunion(String but,TrancheHoraire trancheHoraire, String lieu, Person initiateur, ArrayList<Person> participants) { ... } }
A la question 5, l'attribut modeles
est “public” ce qui n'est pas une bonne idée… Une Hashmap est une structure qui permet de gérer des “dictionnaires”… Pour vous cela devient une association comme si vous aviez eu une ArrayList ou un tableau.