Objectifs

[40 min]

Vous prenez la présidence de l'association "Objectifs", dont l'objet est d'aider ses étudiants membres à mener des projets dans le cadre de leurs études.

Vous constatez en arrivant dans l'association que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets. Vous ne parvenez pas non plus à obtenir une liste exacte des partenaires sur lesquels l'association peut compter. La seule chose sur laquelle vous parvenez à mettre la main est un fichier tableur vaguement à jour.

Vous décidez qu'il est plus que temps de mettre en place une base de données afin d'assurer la bonne gestion des informations les plus importantes pour l'association. Vous vous attachez pour cela à réaliser une analyse des besoins.

Analysez les documents ci-après.

Etat des projets

État des projets de l'association Objectifs

Recueil de besoins

À partir de l'étude du fonctionnement actuel de l'association, vous relevez les choses importantes à gérer suivantes :

  • Les membres de l'association, généralement identifiés par leur prénom.

  • Les projets gérés par l'association, avec des dates de début et de fin précises et un chef de projet.

  • Le détail des tâches de chaque projet, avec leurs dates de début et de fin aussi, et la liste de tous les membres qui y participent.

  • La liste des partenaires des projets, avec leur rôle précis pour chacun des projets auxquels ils participent.

Afin de mieux gérer les attributions des projets, il serait également intéressant de créer une liste des spécialités correspondant à ce qui ce fait dans l'association, et d'affecter une spécialité à chaque membre ainsi qu'une à chaque projet, pour voir si ce sont bien les membres les mieux adaptés qui travaille sur les projets.

Recueil de données

Les discussions avec les anciens membres de l'association vous apprennent les choses suivantes :

  • L'association a terminé de gérer les trois projets, "Comédie Musicale" gérée par Nathalie sur les trois premiers mois du semestre d'automne 1001, "Science en fête" gérée par Pierre sur tout le semestre de printemps 1003. et "Nuit du picolo" gérée par Julien en novembre 1001.

  • Les spécialités recensées pour le moment sont : Ville, Université, Sport, Entreprise, Culture, International

  • Il faut au moins dix membres à l'association (sinon elle ferme), recruter ceux qui manquent.

  • Aidez l'association à diviser ses projets en tâches.

  • Les partenaires suivants aident ou ont aidé l'association : la mairie pour la comédie musicale et la science en fête, qui apporte un soutien financier ; le ministère de la culture qui apporte son soutien logistique à la science en fête ; l'association des commerçants de la ville qui apporte son soutien publicitaire à la comédie musicale ; 1664 qui offre ses bières à moitié prix pour la nuit du Picolo.

Question

Afin de préparer une analyse des besoins sommaire, listez les données que vous devrez gérer à l'aide des documents et recueils de discussion à votre disposition. Faites des hypothèses lorsque les données sont incomplètes ou incohérentes.

Solution

ExempleExemple d'analyse
  • Un projet est défini par un numéro, son nom, sa date de début et sa date de fin.

  • Chaque projet est composé d'une ou plusieurs tâches, et chaque tâche est définie par son numéro, son nom, sa date de début et sa date de fin.

  • Un projet a un chef de projet, membre de l'association, qui peut participer à la réalisation d'une ou plusieurs tâches.

  • Un membre est défini par son prénom, son nom et sa spécialité.

  • Un projet a une spécialité bien définie.

  • La réalisation d'un projet se fait en collaboration avec un ou plusieurs partenaires, chacun de ces partenaires a un rôle.

  • Un partenaire est défini par son nom et sa description.

Question

Réaliser le MCD en UML et en E-A à partir des données préparées dans la question précédente.

Solution

Exemple de modélisation UML et E-A
Modèle UML "gestion de projets"
Modèle E-A "gestion de projets"
Remarque

Le choix du prénom comme clé ici n'est pas un bon choix en général.

Conseil

On préférera la notation {key} plutôt que # pour repérer les clés.

Question

Réaliser le MLD en relationnel en traduisant votre MCD.

Solution

Exemple de schéma relationnel
1
Specialite (#Intitule:string)
2
Membre (#Prenom:string, Nom:string, Specialite=>Specialite(Intitule))
3
Projet (#Num:integer, Nom:string, Debut:date, Fin:date, ChefDeProjet=>Membre(Prenom), Specialite=>Specialite(Intitule)) 
4
  WITH ChefDeProjet, Specialite NOT NULL
5
Tache (#Num:integer, #Projet=>Projet(Num), Nom:string, Debut:date, Fin:date)
6
Partenaire (#Nom:string, Description:string)
7
Participe (#Prenom=>Membre(Prenom), #Tache=>Tache(Num), #Projet=>Tache(Projet), Fonction:string)
8
EstAssocie (#Nom=>Partenaire(Nom), #Projet=>Projet(Num), Role:string)
Fondamental

La clé num de Tâche est locale à la classe composant, donc deux objets de cette classe peuvent avoir le même num. En revanche deux objets de cette classe avec la même clé étrangère vers Projet ne peuvent pas avoir le même num, car (num, Projet) est une clé.

En français :

  • il peut exister deux tâches numéro 1 dans deux projets différents

  • il ne peut pas exister deux tâches numéro 1 au sein du même projet

Complément

Contraintes : PROJ(Projet, Num) IN PROJ(Tache, Projet)