UNIVERSITE du 7 NOVEMBRE à CARTHAGE Institut National de Sciences Appliquées et de Technologie CONCEPTION DES BASES DE DONNEES PROJECT ADMIN 4éme Année Génie Logiciel REALISE PAR: ADOUANI NABIL LOUKIL BRAHIM Année universitaire 2004-2005
SOMMAIRE SOMMAIRE... 2 INTRODUCTION... 3 PPRESENTATION... 3 OBJECTIFS... 3 CONCEPTION ET CHOIX DES SOLUTIONS... 4 HYPOTHESES ET REGLES DE GESTION... 4 MODELE CONCEPTUEL DE DONNEES... 5 MODELE LOGIQUE DE DONNES... 7 LA BASE DE DONNEES : PROJECTADMIN... 7 REALISATION... 12 HYPOTHESES... 12 FONCTIONNALITES DE L APPLICATION... 12 GESTION DES ENTITES... 13 LA GESTION D ACCES PAR SESSION... 13 GESTION DES MENUS... 14 DIAGRAMME DE GANTT... 14 DIAGRAMME DE PLANNING... 16 SUIVI DES BUDGETS DES PROJETS... 17 GESTION DE TEMPS... 18 STATISTIQUE... 20 MODULE DE MESSAGERIE... 21 PROCEDURE D INSTALLATION... 22 CONCLUSION... 24 2
INTRODUCTION PPRESENTATION Selon le Project Management Institute (Clevland, 1990) : «La gestion de projets est l'art de diriger et de coordonner des ressources humaines et matérielles tout au long de la vie d'un projet en utilisant des techniques de gestion modernes pour atteindre des objectifs prédéfinis d'envergure, de coût, de temps, de qualité et de satisfaction des participants.» Il est possible de compléter cette définition en mentionnant aussi les ressources financières et les ressources informationnelles. Il faut signaler aussi la différence entre la gestion par projets et la gestion de projets: La gestion de projets privilégie davantage l'objet sur lequel porte le projet, tandis que la gestion par projets utilise le projet comme méthodologie appropriée pour introduire dans la gestion d'un ensemble organisationnel les changements souhaités. OBJECTIFS Notre objectif au niveau de ce projet est de développez un outil de gestion de projets, autrement dit, un outil de planification et de suivi de projets. Il permettra aussi la gestion des employés, des équipes, des tâches, des clients 3
CONCEPTION ET CHOIX DES SOLUTIONS HYPOTHESES ET REGLES DE GESTION L entité principale des cette application est l entité projet. Un projet est constitué de tâches, rassemblées si possible dans des groupes de tâches. Il correspond à un client, est exécuté par plusieurs employés regroupés dans des équipes, a un manager Toutes ces entités sont doivent être gérées par l application. Certaines fonctionnalités ne sont accessibles que par des utilisateurs spécifiques, d où la nécessité de définir des niveaux de sécurité (ou rôles). Le suivi des projets doit être effectué sur trois dimensions : La dimension temps : diagrammes de Gantt La dimension coût : calcul des dépenses La dimension technique : suivi du rendement des employés 4
Figure 1 : Les trois dimensions d un projet Ces hypothèses constituant le point de départ de notre conception, nous mène à formuler quelques règles de gestion : Un projet est relatif à un client, il a un manager (chef de projet) et à un statuts. Un employé fait partie d une équipe, il peut devenir manager à partir d une certaine date, il a un salaire, un niveau de sécurité Un projet est composé de tâches, effectués par des employés dans une certaine période Un client a plusieurs projets possibles A partir de ces règles de gestion parmi d autre, on a construit un le squelette de notre système d information. MODELE CONCEPTUEL DE DONNEES Le système d information de cette application est constitué de plusieurs entités : Client Employé 5
Projet Equipe Tâche Groupe de tâches Manager Salaire Niveau de sécurité Région (origine du client) Statuts projet Boîte de messages Le modèle conceptuel de données correspondant est représenté dans la figure ci-dessus : Figure 2 : Modèle conceptuel de données 6
suivant : MODELE LOGIQUE DE DONNES A partir de ce modèle conceptuel de données, on a déduit ce modèle logique Employee (userid, password, lastname, firstname, email, tel, startdate, enddate) Team (id, name, description, #managerid) Rate (id, name, description, wage, charged) Manager (#userid, startdate) Region (id, name) Client (id, name, abbreviation, contact, email, tel, fax, #region) Project (id, name, status, startdate, enddate, description, #managerid, #clientid) Status (id, name) Securitylevel (id, name) Menu (id, menu, rubrique, subrubrique, link) Securitylevel_menu (#securitylevelid, #menuid) Assignement (date, starttime, endtime, #employeeid, #taskid, #projectid) Plannig (id, date, #employeeid, #taskid, #projectid, limitdate) Task (id, name, description, prorating, #taskgroupid) Taskgroup (id, name, description) Mailbox (account,#userid,password,activated) LA BASE DE DONNEES : PROJECTADMIN Notre base de données sera implémentée sous le SGBG transactionnel PostgresQL. Le script SQL de création des tables est le suivant : --Liste des niveaux de sécurité CREATE TABLE securitylevel( id int default nextval('seq_securitylevel') PRIMARY KEY, name varchar(20) NOT NULL 7
--Liste des menus accessibles via l interface utilisateur CREATE TABLE menu( id varchar(100) PRIMARY KEY, menu varchar(100) NOT NULL, rubrique varchar(100) NOT NULL, subrubrique varchar(100), link varchar(100) --Association entre les niveaux de sécurité et les menus accessibles --par le niveau en question CREATE TABLE securitylevel_menu( securitylevelid int NOT NULL references securitylevel, menuid varchar(100) NOT NULL references menu, PRIMARY KEY(securitylevelid,menuid) --Liste des types de salaire CREATE TABLE rate( id int default nextval('seq_rate') PRIMARY KEY, name varchar(30) NOT NULL, description varchar(255), wage float NOT NULL, charged float NOT NULL --Liste des régions (origine des clients) CREATE TABLE region( id int default nextval('seq_region') PRIMARY KEY, name varchar(30) NOT NULL --Liste des clients CREATE TABLE client( id int default nextval('seq_client') PRIMARY KEY, name varchar(100) NOT NULL, abbreviation varchar(10) NOT NULL, 8
contact varchar(30) NOT NULL, email varchar(30), tel varchar(30) NOT NULL, fax varchar(30), region int REFERENCES region --Liste des groupes de tâches CREATE TABLE taskgroup( id int default nextval('seq_taskgroup') PRIMARY KEY, name varchar(30) NOT NULL, description varchar(255) --Liste des tâches CREATE TABLE task( id int default nextval('seq_task') PRIMARY KEY, name varchar(30) NOT NULL, description varchar(255), prorating float NOT NULL, taskgroupid int REFERENCES taskgroup --liste des employés CREATE TABLE employee( userid varchar(30) PRIMARY KEY, password varchar(30) NOT NULL, lastname varchar(30) NOT NULL, firstname varchar(30) NOT NULL, email varchar(30), tel varchar(20) NOT NULL, startdate date NOT NULL, enddate date NOT NULL --Liste des managers CREATE TABLE manager( 9
userid varchar(30) PRIMARY KEY REFERENCES employee, startdate date NOT NULL --Liste des équipes d employés CREATE TABLE team( id int default nextval('seq_team') PRIMARY KEY, name varchar(30) NOT NULL, description varchar(255), managerid varchar(30) REFERENCES manager ALTER TABLE employee ADD teamid int REFERENCES team; ALTER TABLE employee ALTER COLUMN teamid SET NOT NULL; ALTER TABLE employee ADD securitylevelid int REFERENCES securitylevel; ALTER TABLE employee ALTER COLUMN securitylevelid SET NOT NULL; ALTER TABLE employee ADD rateid int REFERENCES rate; ALTER TABLE employee ALTER COLUMN rateid SET NOT NULL; --Liste des statuts des projets CREATE TABLE status( id int default nextval('seq_status') PRIMARY KEY, name varchar(30) NOT NULL --Listes des projets CREATE TABLE project( id int default nextval('seq_project') PRIMARY KEY, name varchar(30) NOT NULL, status int NOT NULL REFERENCES status, startdate date NOT NULL, enddate date NOT NULL, description varchar(255), managerid varchar(30) NOT NULL REFERENCES manager, clientid int NOT NULL REFERENCES client 10
--Liste des déclarations d exécution des tâches CREATE TABLE assignement( date date NOT NULL, starttime time NOT NULL, endtime time NOT NULL, employeeid varchar(30) NOT NULL REFERENCES employee, taskid int NOT NULL REFERENCES task, projectid int NOT NULL REFERENCES project, PRIMARY KEY(date,starttime,endtime,employeeid,taskid) --Liste des plannings CREATE TABLE planning( id int default nextval('seq_planning') PRIMARY KEY, date date NOT NULL, employeeid varchar(30) NOT NULL REFERENCES employee, taskid int NOT NULL REFERENCES task, projectid int NOT NULL REFERENCES project, limitdate date NOT NULL --Liste des boîtes de messages CREATE TABLE mailbox( account varchar(255) PRIMARY KEY, userid varchar(30) NOT NULL references employee, password varchar(255) NOT NULL, activated boolean default 'false' NOT NULL 11
REALISATION HYPOTHESES Notre application sera développée en PHP avec une base de données (comme déclaré ci-dessus) implémentée sous PostgreSQL. Notre source d inspiration est une application commerciale de gestion de projet : Track-it Pro de DOVICO SOFTWARE. Cette solution est une application Windows, qui utilise en tant que fournisseur de données, MS SQL Server ou MSDE. FONCTIONNALITES DE L APPLICATION Les fonctionnalités de l application sont diverses. A part la gestion des différentes entités du système d information en appliquant les quatre primitives de base (ajout, suppression, modification, consultation), on trouve : La gestion d accès par session Gestion des niveaux d accès aux fonctionnalités de l application par l utilisation de menus dynamiques Un module de traçage de diagramme de Gantt Un module de traçage de diagramme de planning Un module de suivi des budgets des projets Un module de gestion du temps Un module de statistique (rendement par employé) Un module de messagerie 12
GESTION DES ENTITES Il s agit d ajouter, de modifier, de supprimer et de consulter des données relatives aux différentes entités en tant que telles. Ces fonctionnalités sont accessibles via des interfaces composées de formulaire HTML et exécutant des ordres SQL de type INSERT, UPDATE, DELETE et SELECT. La validation des entrées est effectuée en PHP Figure 3 : Formulaire de modification d employé LA GESTION D ACCES PAR SESSION L accès à l application commence par une authentification qui se fait par le «userid» et le «password» de l employé. Une fois authentifié, l utilisateur peut accéder seulement aux fonctionnalités permises pour son niveau de sécurité. 13
Si une page autre que est appelée sans passer par la page d authentification, une redirection est effectuée vers cette dernière. Une session peut être terminée soit par un «logout» soit en fermant le navigateur. GESTION DES MENUS Les menus, dans l ensemble représentent des points d accès aux fonctionnalités de l application. Certaines de ces fonctionnalités sont accessibles par un groupe d employés sans le reste. Par exemple, la suppression d employés n est visible que par l administrateur, la création et la modification de projet est visible aussi pour les managers De cette façon, on peut définir des niveaux d accès multiples à partir de 56 menus possibles, exactement 2 56 niveaux soit 72057594037927936 qui représentent le nombre de combinaisons possibles à partir de 56 éléments. Ce concept est inspiré de la gestion des rôles dans ZOPE. DIAGRAMME DE GANTT Les diagrammes de GANTT représentent le déroulement des projets par la présentation du séquencement et de l ordonnancement des tâches. D autres variantes peuvent êtres déduites par exemple pour représenter la participation des employés au niveau d un certain projet. Diagramme de Gantt projet : 14
Figure 4 : Diagramme de Gantt par projet et tâches Diagramme de Gantt employé : Figure 5 : Diagramme de Gantt par projet et employés Diagramme de Gantt détaillé par date : 15
Figure 6 : Diagramme de Gantt de détails par date Ces diagrammes sont dessinés en utilisant le module JPGraph, qui est un outil libre en PHP permettant de construire toute forme de graphe et se basant sur la bibliothèque GD de PHP. DIAGRAMME DE PLANNING Ces diagrammes servent à montrer aux employés, les tâches qu ils ont à faire sous forme d un graphe. Ces tâches sont introduites par les managers des projets et représentent les objectifs à atteindre pendant une période commençant par une date de début à une date limite. 16
Figure 7 : Diagramme de planning SUIVI DES BUDGETS DES PROJETS Cette fonctionnalité permet de calculer les coûts des projets à la charge de l entreprise et à la charge du client. Le premier type est la somme des coûts des tâches effectuées pour un projet et le second type est la somme des coûts des tâches pondérés par un coefficient de prorata par tâche. Elle présente les détails des coûts par date, par employé et par tâche. 17
Figure 8 : Suivi de budgets des projets GESTION DE TEMPS Ce module comporte deux fonctionnalités : Les Project TimeSheet : qui donnent les durées des différentes tâches effectuées par un certain employé par date 18
Figure 9 : Project Timesheet Les Timesheet : qui donnent la somme des durées de travail par date. Les informations sont affichées dans un calendrier navigable, rempli par les durées. 19
Figure 10 : Timesheet employé STATISTIQUE Ce module permet de visualiser le rendement des employés durant une période définie. Le rendement est représenté par le nombre d heures travaillées. 20
Figure 11 : Courbe de rendement par employés MODULE DE MESSAGERIE C est un module qui permet, comme son nom l indique, l envoie de mails à l administrateur du système. On utilise, en effet, un serveur postfix et les deux protocoles SMTP (envoi) et POP3 (réception). L administrateur possède une boîte de réception lui permettant de visualiser les messages reçus, consulter les pièces jointes, supprimer des messages L envoie de message se fait par les différents utilisateurs avec la possibilité d envoyer des pièces jointes. Lors de l insertion de l employé, une fonction s exécute pour ajouter une nouvelle boîte de messages pour cet employé. L administrateur du système peut ainsi créer un compte mail pour cet employé puis activer la boîte de réception. Une fois l activation a eu lieu, l employé peut envoyer et recevoir ces mails. Cette manière de gérer les boîtes de messages, ne dépends pas du serveur de messagerie, d autre méthode permettent de faire travailler postgres et postfix ensemble, en se servant des domaines virtuels. De telles méthodes nous mèneraient à entamer une autre configuration, celle du serveur de messagerie qui est un sujet à part. 21
Figure 12 : Boîte de réception des emails PROCEDURE D INSTALLATION L installation de l application ProjectAdmin se fait de la manière suivante : Créer une base de données ProjectAdmin. Vérifier le fichier de configuration pg_hba.conf de POSTGRESQL pour permettre l accès à la base de données, ainsi que la valeur du paramètre DateStyle du fichier postgresql.conf aui doit être mise à «european». Modifier le fichier $PROJECTADMIN_HOME/main/getConnection.php en spécifiant les valeurs correctes des paramètres de connexion à la base de données. Vérifier les permissions d accès des dossiers $PROJECTADMIN_HOME/upload/ et $PROJECTADMIN_HOME/messagerie/tmp/ et leur donner la valeur 666. Insérer la structure de la base de données ainsi que le jeux d essai via le fichier $PROJECTADMIN_HOME/sql/ProjectAdmin.sql. 22
Copier les fichiers de police du dossier $PROJECTADMIN_HOME/Font/ dans le répertoire qui correspond à la valeur du paramètre «TTF_DIR» du fichier $PROJECTADMIN_HOME/jpgraph/jpgraph.php. 23
CONCLUSION Ce projet nous a permis d apprendre, en premier lieu, à manipuler le SGBD transactionnel PostgreSQL, en second lieu, d interfacer l interrogation d une base de données sous ce même SGBD via un langage script : PHP. On a pu par la suite utiliser nos connaissances au niveau de l installation et la configuration d un serveur de messagerie Postfix en y incluant la notion de Virtual Host Mailbox qui permet de créer des boîtes de réception pour des utilisateurs qui n ont pas de comptes UNIX. Reste à définir nos perspectives : amélioration du module de statistique en y incluant d autres fonctions, ajout d autre diagrammes de Gantt, de planning, ajouter un module de recherche 24