Conception et mise en œuvre d`un système de gestion des temps

Transcription

Conception et mise en œuvre d`un système de gestion des temps
Conception et mise en œuvre d’un système de gestion des temps pour une PME T R AVA I L D E B A C H E L O R ELIRA SHEHU Juin 2010
Supervisé par : Prof. Dr. Jacques P ASQUIER –R OCHA & Minh Tuan N GUYEN
Software Engineering Group
Software Engineering Group
Département d’Informatique
Université de Fribourg
(Suisse)
“Il n’y a que le temps qui ne perde pas son temps.” ‐
ii
Jules Renard Remerciements Remerciements Mes remerciements vont à tous ceux qui m’ont aidée et soutenue dans mon travail, en
particulier à mon superviseur, Prof. Jacques Pasquier-Rocha, pour toute sa gentillesse, pour
ses précieux conseils et pour sa patience, et à Minh Tuan Nguyen, pour sa disponibilité et
pour son soutien.
Je remercie également la société Chronos SA pour leur collaboration et pour toutes les
informations qui m’ont été transmises gracieusement de leur part.
Finalement, toute ma reconnaissance est adressée à mes parents, pour leurs sacrifices et leur
soutien, même à distance, durant ces années d’études. Ce n’est que grâce à eux que tout cela a
été rendu possible.
Ce travail est dédié à Nicolas, source inépuisable d’encouragement.
iii
Résumé Résumé Dans un univers hautement concurrentiel, la gestion des temps dans l’entreprise moderne est
devenue un véritable enjeu stratégique. Afin de créer ou de maintenir ses avantages
concurrentiels, l’entreprise est continuellement menée à améliorer ses performances, ce qui se
traduit souvent par l’optimisation de ses processus et donc par une maitrise de ses ressources,
que celles-ci soient matérielles ou humaines. Or, bien gérer son capital humain passe par un
suivi adéquat de ses activités et donc, de ses temps de travail et de ses absences. La
complexité de cette tâche varie en fonction de l’organisation, de la taille et de la culture de
l’entreprise, mais aussi selon la législation en vigueur. Ce travail fournit un effort d’analyse et
de développement d’un système d’information facilitant le suivi des temps de travail et des
absences des employés dans une PME orientée projet. Il aborde les thèmes de la gestion des
temps dans les entreprises, du cadre légal suisse régissant les relations de travail, de l’analyse
des processus de l’entreprise et du recueil des exigences du futur système à l’aide de
diagrammes UML et Entité-Association, pour terminer avec le développement d’un
prototype programmé en PHP et MySQL.
Mots-clés : gestion des temps, ressources humaines, SIRH, e-RH, UML, RUP, SGBD, base
de données relationnelle, schéma Entité-Association, processus de gestion, PHP, MySQL,
WAMP.
iv
Table des matières Table des matières 1 Introduction 1 1.1 Motivation et Objectifs .............................................................................................. 1 1.2 Organisation ............................................................................................................... 2 2 La gestion des temps dans une PME 3 2.1 Comprendre la problématique ................................................................................... 3 2.1.1 La gestion des temps, pour qui et pourquoi ? ..................................................... 4 2.1.2 Pratiques courantes dans les entreprises............................................................. 4 2.2 Les dispositions légales en Suisse ............................................................................. 7 2.2.1 La durée du travail et du repos ........................................................................... 7 2.2.2 Les vacances ....................................................................................................... 9 2.2.3 Autres absences .................................................................................................. 9 2.2.4 Grossesse et maternité ...................................................................................... 10 3 Le cas de l’entreprise Chronos 11 3.1 Présentation du cas Chronos .................................................................................... 11 3.1.1 Organisation ..................................................................................................... 11 3.1.2 État actuel du système d’information de l’entreprise et vision du futur .......... 12 3.2 Buts et contraintes du nouveau système automatisé ................................................ 14 3.2.1 Principaux flux de travail supportés ................................................................. 14 3.2.2 Règles de gestion internes ................................................................................ 15 3.2.3 Critères non-fonctionnels du futur système ..................................................... 16 4 Spécification des exigences 17 4.1 Explication préalable de la démarche ...................................................................... 17 4.2 Repérage du domaine et des acteurs ........................................................................ 18 4.2.1 Identification des processus ............................................................................. 18 4.2.2 Acteurs ............................................................................................................. 20 4.2.3 Définitions, acronymes et abréviations ............................................................ 21 4.3 Modélisation du point de vue utilisateur ................................................................. 23 4.3.1 Administration des données du personnel ........................................................ 23 4.3.2 Administration des projets ............................................................................... 25 4.3.3 Suivi des Projets ............................................................................................... 26 4.3.4 Gestion des temps............................................................................................. 27 v
Table des matières 5 Analyse et conception 35 5.1 Architecture du futur système .................................................................................. 35 5.2 Modélisation du point de vue logique ..................................................................... 36 5.2.1 Identification des Entités .................................................................................. 36 5.2.2 Le modèle Entité-Association .......................................................................... 36 5.2.3 Le schéma de base de données relationnelle .................................................... 38 6 Implémentation du prototype 42 6.1 Considérations préalables ........................................................................................ 42 6.2 La base de données .................................................................................................. 43 6.2.1 Les tables, les attributs et les contraintes ......................................................... 43 6.2.2 Les requêtes SQL ............................................................................................. 48 6.3 L’interface utilisateur............................................................................................... 49 6.3.1 Organisation des fichiers .................................................................................. 49 6.3.2 Sélection d’une période (calendrier) ................................................................ 52 6.3.3 Affichage des données ..................................................................................... 52 6.3.4 Insertion des données ....................................................................................... 53 6.3.5 Statistiques ....................................................................................................... 55 6.4 Guide d’utilisation et tests ....................................................................................... 55 6.4.1 Connexion / Déconnexion ................................................................................ 55 6.4.2 Consulter ses activités pour une période au choix ........................................... 57 6.4.3 Saisir une nouvelle activité .............................................................................. 58 6.4.4 Visualiser ses absences..................................................................................... 59 6.4.5 Insérer une absence/ demande de congé .......................................................... 60 6.4.6 Consulter son solde horaire .............................................................................. 60 6.4.7 Autres fonctionnalités ...................................................................................... 63 6.4.8 Un cas de discussion : les heures supplémentaires .......................................... 64 7 Conclusion 65 7.1 Rétrospective ........................................................................................................... 65 7.2 Difficultés rencontrées et leçons apprises................................................................ 66 7.3 Améliorations futures .............................................................................................. 66 A CD­ROM 67 Bibliographie 68 vi
Liste des Figures Liste des Figures Figure 1 : Intégration des nouvelles technologies dans la FRH (Baromètre RH 2009) ............. 5 Figure 2: Définir en amont le niveau de suivi requis (Chambet-Weil 2010) ............................. 7 Figure 3: Intervalles de travail (SECO 2009)............................................................................. 8 Figure 4: Durée des pauses (SECO 2009) .................................................................................. 8 Figure 5: Structure de la société Chronos ................................................................................ 12 Figure 6: Utilité d'un système de gestion des temps (source: Chronos) .................................. 13 Figure 7: Découverte d’informations et d’objectifs visés ........................................................ 15 Figure 8: Diagramme de paquetage "Domaines" ..................................................................... 19 Figure 9: Diagramme de cas d'utilisation processus avec les acteurs ...................................... 21 Figure 10: Diagramme d'activités "Administration des Données du Personnel" ..................... 24 Figure 11 - Diagramme de cas d'utilisation "Administration des Données du Personnel" ...... 25 Figure 12: Diagramme de cas d'utilisation "Administration des Projets" ................................ 25 Figure 13: Diagramme de cas d'utilisation "Suivi des Projets" ................................................ 26 Figure 14: Diagramme d’activités "Saisie des Activités" ........................................................ 27 Figure 15: Diagramme d'activités "Gestion des salaires" ........................................................ 28 Figure 16: Diagramme d'activités "Enregistrement des Absences" ......................................... 29 Figure 17: Diagramme d'activités "Validation des demandes de congé"................................. 30 Figure 18: Diagramme de cas d'utilisation "Gestion des Temps Perso" .................................. 33 Figure 19: Diagramme de cas d’utilisation "Gestion des Temps Admin" ............................... 34 Figure 20: Exemple d'association............................................................................................. 37 Figure 21: Modèle de données Entité-Association .................................................................. 38 Figure 22: Fenêtre principale phpMyAdmin ............................................................................ 43 Figure 23: Structure de la Table "Employé" ............................................................................ 45 Figure 24: Structure de la table "Activité" ............................................................................... 46 Figure 25: Structure de la Table "Absence" ............................................................................. 46 Figure 26: Structure de la Table "Projet" ................................................................................. 46 Figure 27: Contenu de la Table "Motif" ................................................................................... 47 Figure 28: Contenu de la Table "Type_Activité" ..................................................................... 47 Figure 29: Contenu de la Table "Jour_Férié" ........................................................................... 47 vii
Liste des Figures Figure 30: Liste des participants à un projet donnée (E-claim) ............................................... 49 Figure 31: L'employé Xavier Hinkel dans la Table "Employé"............................................... 55 Figure 32: Login sur l'interface employé ................................................................................. 56 Figure 33: Page d'accueil employé ........................................................................................... 56 Figure 34: Sélection d'une période ........................................................................................... 57 Figure 35: Liste des activités de l’employé Xavier Hinkel ...................................................... 58 Figure 36: Ajouter une nouvelle activité .................................................................................. 59 Figure 37: Table « Mes activités d'aujourd'hui » ..................................................................... 59 Figure 38: Liste des absences de l'employé ............................................................................. 59 Figure 39 : Insérer une absence /demande de congé ................................................................ 60 Figure 40: Table "jours_feries" ................................................................................................ 61 Figure 41: Statistiques de l'employé pour le mois de mars ...................................................... 61 Figure 42: Détail du tableau "statistiques" 1 ............................................................................ 62 Figure 43: Détail du tableau "statistiques" 2 ............................................................................ 63 Figure 44: Détail du tableau "statistiques" 3 ............................................................................ 63 viii
Liste des Codes Sources Liste des Codes Sources Code 1: Création de la table "Employé" .................................................................................. 44 Code 2: Créer nouvel employé ................................................................................................. 48 Code 3: Participants au Projet E-claim .................................................................................... 48 Code 4: Extrait du fichier db.php ............................................................................................. 49 Code 5: Menu utilisateur employé ........................................................................................... 50 Code 6: La fonction getWorkingDays (cf. get_working_days.php) ........................................ 51 Code 7: Utilisation de la fonction getWorkingDays (cf. daysoff.php) .................................... 52 Code 8: Requête SQL sous PHP (Sélection des activités de l’utilisateur, timesheet.php) ...... 53 Code 9: Code PHP pour saisir une absence (daysoff.php) ....................................................... 54 Code 10: Code PHP pour sauvegarder une absence dans la BD (save_absence.php) ............. 55 ix
1 Introduction Motivation et Objectifs Introduction 1.1 Motivation et Objectifs 1 1.2 Organisation 2 1.1
Motivation et Objectifs Dans le cadre du cours de Bachelor « Introduction à l’Informatique de Gestion I » (Pasquier et Nguyen 2009), l’exemple du « Bureau Sympa SA » a été présenté. Plusieurs exercices (Exercices 7 à 14) avaient pour but le développement d’un modèle de données pour un système de gestion des heures de travail, des jours de congé et d’absence des employés de cette PME fictive. Ce travail a en outre été repris dans le cadre d’un travail de séminaire (Levi‐Mazloum 2009) aboutissant à la réalisation d’un prototype en PHP et MySQL. Le but du présent travail est de revenir sur cet exemple et de présenter un modèle plus réaliste et complété avec les aspects d’analyse de processus et de recueil des exigences d’un futur système d’information (SI), inspiré des principes du Processus Unifié (UP) et à l’aide de diagrammes UML et Entité‐Association. L’étude du futur système a été menée en collaboration avec Chronos SA, une jeune PME informatique basée en Suisse. Cette entreprise se trouve en pleine phase de croissance et emploi à ce jour près de vingt‐cinq collaborateurs. Elle opère selon un mode d’organisation par projets et elle souhaite améliorer la gestion du personnel à l’aide d’un nouveau SI lui permettant un suivi facilité des activités et des absences de ses employés, ainsi que des projets auxquels ils participent. Un prototype basé sur le nouveau modèle et implémentant certaines des fonctionnalités souhaitées, a été programmé en PHP et MySQL à l’aide du service WAMP1 et sera présenté selon les points de vue programmeur et utilisateur final. 1
WAMP : Apache, MySQL & PHP pour Windows
1
1 Introduction 1.2
Organisation Organisation Le deuxième chapitre de ce rapport définit le cadre général de la problématique de la gestion des temps en entreprise, dans laquelle s’inscrit le présent travail. Il y sera traité brièvement des pratiques courantes dans les entreprises d’aujourd’hui et du cadre légal suisse régissant les relations de travail, notamment les obligations des employeurs envers leurs employés et vice‐versa. Dans le troisième chapitre, l’entreprise Chronos SA fera l’objet d’une étude de faisabilité avec une description de son organisation, de l’état actuel de la gestion du personnel et de la vision concernant son futur. Par la suite, un cahier des charges simplifié, regroupant les modèles d’expression des besoins et d’analyse du futur SI, sera présenté dans les chapitres 4 et 5. La modélisation sera menée en gardant à l’esprit le principe de représentation du système en trois niveaux : fonctionnel, logique et technique. La réalisation du prototype fera l’objet du chapitre 6, dans lequel les fonctionnalités du système seront présentées tout d’abord du point de vue du programmeur, puis du point de vue utilisateur final, sous forme d’un mini‐guide d’utilisation. Quelques cas de tests seront donnés pour vérifier le bon fonctionnement du prototype. Finalement, une rétrospective critique et des réflexions d’améliorations futures seront données en guise de conclusion de ce travail. 2
2 La gestion des temps dans une PME Comprendre la problématique La gestion des temps dans une PME 2.1 Comprendre la problématique 3 2.1.1 La gestion des temps, pour qui et pourquoi ? ............................................................ 4 2.1.2 Pratiques courantes dans les entreprises .................................................................... 4 2.2 Les dispositions légales en Suisse 7 2.2.1 La durée du travail et du repos .................................................................................. 7 2.2.2 Les vacances .............................................................................................................. 9 2.2.3 Autres absences ......................................................................................................... 9 2.2.4 Grossesse et maternité ............................................................................................. 10 2.1
Comprendre la problématique Dans un environnement changeant et marqué par une concurrence de plus en plus forte, l’amélioration continue des performances est une des clés du succès de l’entreprise moderne. Faire mieux, avec moins de moyens et en moins de temps, voilà un défi global qui suggère l’augmentation de la valeur ajoutée pour ses clients, tout en réduisant les coûts. Un objectif qui pousse les entreprises à revoir l’utilisation de leurs ressources à travers les différents processus, que celles‐là soient de nature matérielle, logicielle, ou encore temporelle et humaine. C’est ainsi que la gestion du capital humain, principale richesse d’une entreprise, dépasse le statut d’une tâche purement administrative pour devenir un véritable enjeu stratégique. Or, parler de ressources humaines n’aurait aucun sens sans parler du temps que ces personnes accordent à leur entreprise, d’où l’importance de parler d’une gestion des temps. 3
2 La gestion des temps dans une PME Comprendre la problématique 2.1.1 La gestion des temps, pour qui et pourquoi ? La gestion des temps a traditionnellement été rattachée à la fonction des Ressources Humaines (FRH) et a longtemps été appréhendée comme une tâche fastidieuse dont le seul but était la paie. Aujourd’hui, elle ne reste pas moins un sujet RH, mais la réflexion sur son utilité a beaucoup évolué. En effet, elle se trouve au cœur du fonctionnement de l’entreprise et ses synergies avec le reste des fonctions en font un sujet multifonctionnel, multi‐acteurs, multi‐besoins et donc, bien souvent, un sujet politisé voire polémique (Chambet‐Weil 2010). Le processus de la gestion des temps (GDT) et plus généralement la gestion des ressources humaines (GRH) dans les entreprises varie souvent selon leur taille, leur type d’organisation, leurs moyens, le cadre légal du pays où elles opèrent et de la culture d’entreprise. Les différentes contraintes légales (le respect du maximum d’heures de travail hebdomadaires, le suivi des heures supplémentaires, les congés, les assurances sociales), le besoin de mesurer les coûts et la performance (le temps accordé à la production ou aux projets, le coût du travail, le coût de l’absentéisme, les heures payées non productives), l’importance d’une bonne gestion des relations avec les employés (transparence, communication, valorisation de ses compétences, affectation du personnel aux bonnes tâches), ce sont tous des facteurs qui conduisent à considérer la gestion des temps au‐delà du bulletin de salaire. 2.1.2 Pratiques courantes dans les entreprises L’avènement des nouvelles technologies d’information et de communication (NTIC) a depuis déjà quelques dizaines d’année et de manière croissante motivé les entreprises à automatiser une partie ou la totalité de leurs processus GRH. C’est ainsi qu’on voit apparaitre les termes « système d’information des ressources humaines (SIRH) », « gestion électronique des ressources humaines (e‐RH) » ou encore « gestion des relations employés (ERM) ». Les fonctionnalités couvertes par un SIRH sont nombreuses et selon le guide RH du Journal du Net (Journal du Net 2005) on peut les classifier en différentes familles : 
Les services liés aux tâches les plus administratives : gestion des congés/absences, consultation des soldes, gestion des notes de frais, des temps et plannings, des rapports d’activités, des salaires, etc. 4
2 La gestion des temps dans une PME 

Comprendre la problématique Les services liés à la carrière du salarié, qui peut accéder à son dossier personnel, mettre à jour son profil et ses compétences, demander une mobilité interne, gérer ses demandes de formation, etc. Les services ayant trait aux procédures internes : notes de service, entretiens annuels, convocation à la médecine du travail, règlement interne, etc. Le service le plus externalisé semble être la gestion de la paie, due aux procédures complexes qu’elle implique et à l’édition de documents soumis à des réglementations changeantes (Journal du Net 2005). La même constatation a également eu lieu en Suisse par le Baromètre de la FRH de Suisse romande dans son rapport pour l’an 2009 (Baromètre RH 2009). Comme on peut le voir dans la Figure 1, la plupart des entreprises déclarent avoir intégré les nouvelles technologies dans la gestion des salaires, suivie par la gestion des absences et par la gestion administrative. Quant aux outils informatiques consacrés à la GRH, on peut considérer deux grands types d’éditeurs. D’un côté on trouve les éditeurs spécialisés dans la gestion des salaires, le recrutement en ligne, la gestion administrative du personnel ou la gestion des temps. De l’autre, les éditeurs de progiciels de gestion intégrés (ERP), dédiés à la gestion de l’ensemble des ressources de l’entreprise et consacrant un ou deux modules à la GRH et à la paie (Journal du Net 2005). Figure 1 : Intégration des nouvelles technologies dans la FRH (Baromètre RH 2009)
5
2 La gestion des temps dans une PME Comprendre la problématique Concernant la gestion des temps en PME, dans un article du journal électronique « LeMondeInformatique.fr » (Le Monde Informatique 2005), Claire‐Marie de Vulliod, consultante au CXP2 divise les logiciels GDT en six grands domaines fonctionnels : 





la gestion des pointages la gestion des absences la gestion des activités la gestion des accès la gestion des planifications manuelles la gestion de la planification par optimisation Parmi les fournisseurs, elle distingue aussi les éditeurs généralistes (ERP, gestion de la paie, GRH) et les éditeurs spécialisés. Ces derniers, au départ axés sur les temps et les activités ou bien sur la planification optimisée, chercheraient maintenant à couvrir l’ensemble de ces fonctions. À titre d’exemple : l’éditeur Holy‐Dis3 avec ses deux produits Planexa® et Tempsia™, l’un permettant d’établir les emplois du temps prévisionnels et l’autre de recenser les heures effectives. « La différence entre les heures planifiées et les heures effectuées peut être utilisée dans un logiciel de gestion de la paie ou réinsérée dans une nouvelle planification » (Le Monde Informatique 2005). Une autre approche, observée surtout dans les services, est la gestion analytique par projet, où les activités journalières se décomposent en tâches. Les éditeurs Horoquartz4 et Bodet5 confirment et expliquent que c’est « induit par la pression économique qui exige d'ajuster au mieux ses ressources » (Le Monde Informatique 2005). Le dernier souligne aussi le développement des demandes spécifiques en prenant l’exemple des collectivités locales (où l’objectif est de gérer les compétences pour l’accueil au public), des milieux hospitaliers (où priment la transmission entre infirmières et la répartition équitable des jours de repos), de la distribution (où les plannings se font à la demi‐
journée) et de l’industrie (où l’on demande le suivi des temps de production). Enfin, différentes tailles d’entreprises font la cible de différentes solutions GDT et dans le marché d’aujourd’hui il existe l’embarras du choix. Les coûts d’investissement n’étant pas négligeables, il est important pour chaque entreprise de choisir la solution optimale : facile à utiliser et adaptée à ses besoins propres. Quelques questions à se poser pour définir ses besoins de suivi (voir Figure 2) sont proposées par le spécialiste S. Chambet‐Weil dans le blog RH BearingPoint (Chambet‐Weil 2010). 2
Centre d’expertise des progiciels, France (www.cxp.fr)
Holy-Dis (www.holydis.com)
4
Horoquartz (www.horoquartz.fr)
5
Bodet Software (www.bodet.fr)
3
6
2 La gestion des temps dans une PME Les dispositions légales en Suisse Figure 2: Définir en amont le niveau de suivi requis (Chambet-Weil 2010)
2.2
Les dispositions légales en Suisse En Suisse, le droit du travail est réglé dans plusieurs lois dont les principales sont le Code des obligations – CO (contrat de travail individuel, convention collective de travail, contrat‐type de travail), la loi sur le travail (protection générale des travailleurs, durée du travail et du repos, jeunes travailleurs, femmes enceintes et mères allaitantes) et la loi sur l’assurance‐accidents (sécurité au travail) (SECO 2010a). Quelques points essentiels en relation avec le sujet de ce travail seront présentés ci‐
dessous : 2.2.1 La durée du travail et du repos La durée maximale du travail hebdomadaire est de 45 heures pour les travailleurs occupés dans les entreprises industrielles ainsi que pour le personnel de bureau, le personnel technique et les autres employés, y compris le personnel de vente des grandes entreprises de commerce de détail. Pour tous les autres travailleurs, elle est de 50 heures (LTr, art. 9). Le travail du jour (entre 6 heures et 20 heures) et le travail du soir (entre 20 heures et 23 heures) ne sont pas soumis à autorisation. L’employeur peut introduire le travail du soir après consultation avec les travailleurs concernés et il peut fixer l’horaire de travail différemment dans un espace de dix‐sept heures entre 5 heures et 24 heures. Le travail du jour et du soir de chaque travailleur doit être compris dans un espace de quatorze heures, pauses et heures supplémentaires incluses (LTr, art. 10). 7
2 La gestion des temps dans une PME Les dispositions légales en Suisse Le travail de nuit est interdit et les dérogations sont soumises à autorisation (LTr, art. 16‐17). Figure 3: Intervalles de travail (SECO 2009) Le travail supplémentaire est autorisé à titre exceptionnel, mais il ne peut pas dépasser deux heures par travailleur et par jour, sauf les jours chômés ou en cas de nécessité. Il ne doit pas non plus dépasser 170 heures par année civile pour les travailleurs de 45 heures hebdomadaires et 140 heures pour les autres travailleurs. Les heures supplémentaires sont rémunérées par un supplément de salaire d’au moins 25% à partir de la 61ème heure accomplie, à moins qu’il ne soit convenu dans le contrat de les compenser par un congé de la même durée (LTr, art. 12‐13). Le travail doit être interrompu par des pauses d’au moins : ¼ h (si la journée de travail dure plus de cinq heures), ½ h (si la journée dure plus de sept heures) et 1h (si la journée dure plus de neuf heures). Le travailleur doit pouvoir quitter sa place de travail (LTr, art. 15). Figure 4: Durée des pauses (SECO 2009)
Le dimanche doit être un jour de repos. Les dérogations sont soumises à autorisation et le travail dominical doit être compensé par du temps libre (LTr, art.18‐20). Les jours fériés sont assimilés au dimanche et incluent la fête nationale et huit autres jours au plus, décidés par les cantons. Les travailleurs peuvent prendre des congés pour
8
2 La gestion des temps dans une PME Les dispositions légales en Suisse assister à des fêtes religieuses autre que les jours prévus, avec l’autorisation de l’employeur (LTr, art. 20a).
Demi­journée de congé hebdomadaire : Lorsque le travail est réparti sur plus de cinq jours, le travailleur a droit à une demi‐journée de congé par semaine (LTr, art. 21). Les temps de repos ne peuvent être remplacés par d’autres prestations (LTr, art. 22). 2.2.2 Les vacances Au moins 5 semaines de vacances payées par an sont octroyées aux travailleurs jusqu’à l’âge de 20 ans révolus et au moins 4 semaines de vacances par an sont octroyées aux autres travailleurs (CO, art. 329a, al. 1). La durée des vacances peut être réduite d’un douzième par mois complet, lorsque le travailleur est, par sa propre faute, empêché de travailler pendant plus d’un mois (CO, art. 329b). Les vacances doivent être accordées pendant l’année de service correspondante et elles doivent comprendre au moins deux semaines consécutives (CO, art. 329c, al. 3). Les vacances ne peuvent pas être remplacées par d’autres prestations ou avantages, pendant la durée du contrat de travail (CO, art 329d, al. 1). 2.2.3 Autres absences D’après le Secrétariat d’Etat à l’Economie (SECO 2010b) : En cas d’empêchement du travailleur sans faute de sa part, comme en cas de maladie, d’accident, lors de l’accomplissement du service militaire, etc., la loi prévoit toutefois que le salaire doit continuer à être versé. Le salaire doit être maintenu pendant trois semaines la première année, puis pendant une période plus longue dans la suite des rapports de travail. La durée exacte [de celle‐ci] varie en fonction du canton […] et en fonction de la pratique des différents tribunaux. Des congés payés sont également prévus par la loi en cas d’empêchement pour des raisons familiales, telles que mariage, naissance d’un enfant propre, décès, etc. Le nombre de jours accordés varie selon le motif. 9
2 La gestion des temps dans une PME Les dispositions légales en Suisse 2.2.4 Grossesse et maternité Il est interdit, durant les 8 semaines avant l’accouchement, d’occuper une travailleuse enceinte entre 20 heures et 6 heures (LTr, art. 35a, al. 4). La travailleuse enceinte ne doit pas dépasser 9 heures de travail par jour (OLT 1, art. 324a, al. 3). Si la travailleuse n’a pas pu travailler pendant plus de 2 mois à cause de sa grossesse, l’employeur peut réduire la durée de ses vacances payées. La travailleuse a droit, après l’accouchement, à un congé maternité d’au moins 14 semaines (ou 98 jours). Si elle le désire, elle peut reprendre son travail avant l’écoulement des 14 semaines, mais en aucun cas avant la fin de 8 semaines (CO, art. 329f). Pendant le congé maternité, elle a droit à 80% de son salaire, sous forme d’indemnités journalières (LAPG, art. 16e). Pendant la première année de la vie de l’enfant, l’allaitement compte comme temps de travail. Si l’allaitement a lieu dans l’entreprise, la totalité du temps compte comme temps de travail et sinon, seulement la moitié du temps compte (OLT 1, art. 60, al. 2). 10
3 Le cas de l’entreprise Chronos Présentation du cas Chronos Le cas de l’entreprise Chronos 3.1 Présentation du cas Chronos 11 3.1.1 Organisation ............................................................................................................. 11 3.1.2 État actuel du système d’information de l’entreprise et vision du futur .................. 12 3.2 Buts et contraintes du nouveau système automatisé 14 3.2.1 Principaux flux de travail supportés ........................................................................ 14 3.2.2 Règles de gestion internes ....................................................................................... 15 3.2.3 Critères non-fonctionnels du futur système ............................................................. 16 3.1
Présentation du cas Chronos Le travail dans ce chapitre est basé sur des renseignements obtenus auprès de Chronos SA6, une PME suisse basée à Fribourg. Les informations présentées viennent principalement du manuel du personnel de l’entreprise, ainsi que de quelques entretiens avec ses représentants. 3.1.1 Organisation La société Chronos a comme activité le développement, la commercialisation et l’entretien d’applications informatiques. Fondée en 2003, elle s’est développée graduellement et harmonieusement et a toujours privilégié la qualité de ses produits à la productivité. Aujourd’hui elle emploie près de vingt‐cinq personnes : entre autre, des programmeurs, des gestionnaires de projet, des webdesigners, des développeurs métier, etc. Concernant l’organisation, on remarque l’affectation du personnel par projet, au lieu d’un rattachement à un département. Ainsi, plusieurs collaborateurs peuvent participer à divers projets de développement simultanément. La fonction des ressources humaines, 6
Nom d’emprunt. L’entreprise a exprimé le souhait de garder l’anonymat.
11
3 Le cas de l’entreprise Chronos Présentation du cas Chronos quant à elle, est assimilée à une seule personne, le responsable RH, qui assume la quasi‐
totalité des tâches liées à ce domaine. De même, pour les fonctions de comptabilité et de facturation. La Figure 5 montre la structure de la société avec ses fonctions de Direction, RH, Comptabilité, Facturation, et Production. Cette dernière regroupe tous les autres collaborateurs. Direction
Ressources Humaines
Comptabilité
Facturation
Projet (Production)
Figure 5: Structure de la société Chronos
3.1.2 État actuel du système d’information de l’entreprise et vision du futur Du point de vue informatique, la société possède des outils développés en interne pour gérer ses activités liées à la comptabilité et à la facturation. La tenue de la base des clients/projets et la gestion du personnel, par contre, se font à l’aide de feuilles de tableur (Excel). Dans le souci d’améliorer certains de ses processus de gestion, la société souhaite établir un système d’information en intranet, qui lui permettrait de recenser plus facilement le temps de travail et les activités de ses collaborateurs. Plusieurs avantages sont envisagés : 


Simplifier les procédures liées au traitement des fiches des heures (timesheet), des absences et des demandes de congé. Décentraliser la fonction des ressources humaines et donner aux employés un moyen d’autocontrôle, par un système self‐service7. Réduire les risques en matière de conformité avec la loi ou le règlement interne. 7
Système permettant aux employés de se servir soi-même, par exemple pour la modification de ses données
personnelles, la déclaration des activités, les demandes de congé, etc.
12
3 Le cas de l’entreprise Chronos 
Présentation du cas Chronos Contrôler les coûts du travail : - Visibilité en temps réel des activités des employés permettant de mieux gérer leur potentiel. - Visibilité en temps réel du temps de travail consacré à différents projets pour simplifier le calcul du montant facturé pour des projets T&M8. - Mesurer la productivité/ l’efficience du travail. - Suivre l’absentéisme, etc. En résumé, d’après la société, une meilleure gestion des temps profiterait en même temps : à l’entreprise (et à ses clients), à la FRH et aux employés. Elle serait la base de l’efficience opérationnelle et de la transparence en entreprise (voir Figure 6). Figure 6: Utilité d'un système de gestion des temps (source: Chronos)9
Néanmoins, il faut aussi garder à l’esprit que comme pour tout projet informatique, certains risques existent, comme par exemple : 8
9

Le risque de rejet du système par les employés : ceux‐ci peuvent avoir le sentiment d’être sous contrôle permanent. 
Les risques techniques : le système ne fonctionne pas selon les attentes, etc. Time & Material : Terme utilisé pour désigner les projets facturés d’après les ressources employées.
Extrait d’une carte heuristique (mind map) réalisée durant un entretien avec la société.
13
3 Le cas de l’entreprise Chronos 3.2
Buts et contraintes du nouveau système automatisé Buts et contraintes du nouveau système automatisé 3.2.1 Principaux flux de travail supportés Après un entretien avec les représentants de la société, il en ressort que le nouveau système de gestion des temps de travail (SGTT) devra, entre autre, permettre : 


Le rapport des activités: o Pour chaque collaborateur, le responsable doit pouvoir consulter ses heures de travail et ses activités pour une période donnée. Le collaborateur doit aussi pouvoir consulter lui‐même ses propres activités. o Chaque collaborateur doit pouvoir saisir par lui‐même ses activités. o Les temps de début et de fin d’activité doivent être indiqués à cinq minutes près. o Les activités sont distinguées par type : travail sur projets T&M, travail de garantie, temps de voyage, etc. o Chaque activité doit être décrite de manière adéquate et attribuée au bon projet. o Les temps de pauses (café, repas, etc.) doivent être notés. o La saisie des heures doit se faire le jour même ou au plus tard, le lendemain matin. o Le collaborateur et son responsable doivent pouvoir consulter son solde horaire à tout moment donné (par ex. : heures prévues vs. heures effectuées). La déclaration des absences des collaborateurs : o Pour chaque collaborateur, les absences doivent pouvoir être notées par le collaborateur lui‐même (sous forme de demande de congé) ou par son responsable (en cas d’empêchement imprévu). o Les demandes de congé doivent être validées (autorisées) par le responsable du collaborateur. o Pour chaque absence, les dates de début et de fin doivent être indiquées, ainsi que le motif. o Chaque collaborateur doit pouvoir consulter ses absences à tout moment et son responsable doit pouvoir faire de même. La gestion des données des collaborateurs : o Ajout/modification des données personnelles, par le collaborateur lui‐
même ou par son responsable. 14
3 Le cas de l’entreprise Chronos 


Buts et contraintes du nouveau système automatisé o Ajout/modification des données concernant son contrat de travail (taux d’engagement, salaire, etc.) par un responsable. La gestion des projets : o Création/modification d’un projet par la direction. o Consultation, par projet, des personnes impliqués et des heures de travail prestées. La saisie (par le responsable) et la consultation (par tous) des jours fériés légaux. La gestion des autorisations : authentification, accès des données par les utilisateurs autorisés uniquement. Legal Holidays
Absence Types
Absences
Employees
Timesheet entry types (activities)
HR reporting Timesheet
Projects
Tasks
Project reporting Figure 7: Découverte d’informations et d’objectifs visés 3.2.2 Règles de gestion internes Concernant la gestion des temps des collaborateurs, les règles suivantes sont observées : 
Heures de présences : o Le travail doit être effectué entre 6 heures et 20 heures (travail du jour, voir 2.2.1). o L’entreprise n’a pas d’autorisation pour le travail de nuit. (voir 2.2.1) o Un taux d’engagement à 100% correspond à 41 heures hebdomadaires. o Le nombre exact d'heures de travail à effectuer au cours d'une année est calculé par rapport aux jours ouvrables de l'année civile ainsi que par rapport au taux d'occupation convenu. 15
3 Le cas de l’entreprise Chronos 

Buts et contraintes du nouveau système automatisé Solde horaire flexible : o Les collaborateurs ont la possibilité d’organiser librement leur travail dans une plage de ‐10 et +40 heures. o Le solde est établi chaque année le 31 décembre. o Les heures excédentaires dépassant les 40 heures, sont supprimées. o Les déficits horaires supérieurs à 10 heures (heures ayant dû être effectuées et dont la responsabilité incombe au collaborateur) sont soustraits du nombre de jours de vacances de l’année écoulée, ou sont comptabilisés (déduits) avec le salaire du mois de janvier. o En cas de départ, le collaborateur doit s’efforcer d’atteindre un solde horaire raisonnable. Les heures excédentaires sont rémunérées pour autant qu’elles ne dépassent pas 15 heures. o Les heures supplémentaires : le collaborateur peut être demandé exceptionnellement d’en effectuer. Elles sont compensées par des congés de la même durée. Absences : la comptabilisation se fait en principe de la manière suivante: o jour complet d'absence (sauf voyages d'affaires) = 8.2 heures o ½‐jour d'absence = 4.1 heures. 3.2.3 Critères non­fonctionnels du futur système Le nouveau SGTT doit également remplir certains critères en dehors de ses fonctionnalités, notamment en matière de : 
disponibilité : le système doit être accessible à tout moment de la journée 
fiabilité : les informations fournies par le système doivent être pertinentes et fiables. 
ergonomie : le système doit être facile à utiliser, etc. 16
4 Spécification des exigences Explication préalable de la démarche Spécification des exigences 4.1 Explication préalable de la démarche 17 4.2 Repérage du domaine et des acteurs 18 4.2.1 Identification des processus ..................................................................................... 18 4.2.2 Acteurs ..................................................................................................................... 20 4.2.3 Définitions, acronymes et abréviations.................................................................... 21 4.3 Modélisation du point de vue utilisateur 23 4.3.1 Administration des données du personnel ............................................................... 23 4.3.2 Administration des projets ....................................................................................... 25 4.3.3 Suivi des Projets ...................................................................................................... 26 4.3.4 Gestion des temps .................................................................................................... 27 4.1
Explication préalable de la démarche Dans le Chapitre 3 de ce rapport, le cas de l’entreprise Chronos a été présenté et une collecte d’informations sur les attentes des utilisateurs finaux du nouveau système de gestion des temps a été effectuée. Le but du présent chapitre est de revenir sur cette étape d’expression des besoins et d’élaborer une spécification des exigences logicielles, en s’inspirant de la discipline Requirements (Recueil des Exigences) de la méthodologie RUP10. Une description détaillée du RUP dépasserait le cadre de ce travail. Néanmoins, il convient de préciser qu’il s’agit d’une méthodologie célèbre de gestion de projets informatiques et qui, comme il a été défini par Kruchten (2001, cité par Martenet, 2009) : […] fournit une approche disciplinée pour assigner des tâches et des responsabilités à l’intérieur d’une organisation de développement. Son but est d’assurer la 10
Rational Unified Process
17
4 Spécification des exigences Repérage du domaine et des acteurs production de logiciels de qualité qui satisfassent les besoins des utilisateurs […]. RUP a été conçu et documenté en utilisant le langage de modélisation UML (p. 29). La discipline Recueil des Exigences a pour but de décrire ce que le système doit faire et il est central pour un projet de développement. C’est la raison pour laquelle, avec RUP, on se sert des cas d’utilisation11 comme fil conducteur, tout au long du projet de développement, afin de garantir que le résultat sera à la hauteur des espérances des utilisateurs. Les diagrammes qui seront présentés dans ce chapitre ont été réalisés à l’aide du logiciel MagicDraw UML12. 4.2
Repérage du domaine et des acteurs 4.2.1 Identification des processus Afin d’avoir une meilleure idée de ce qui doit être automatisé dans le cadre du projet, il a été procédé par un repérage des domaines d’activité et par une identification des cas d’utilisation processus13 pour chacun d’entre eux. Dans ce cas, un domaine correspond à une fonction précise de l’entreprise ayant une pertinence pour la modélisation du futur système. La Figure 8: Diagramme de paquetage "Domaines"représente les deux domaines principaux: RH et Projet, sous forme de paquetage de haut niveau. Chacun des deux contient sous forme de paquetage de plus bas niveau, les processus ou les flux de travail qu’ils supportent. Ainsi, le domaine RH contient les processus Administration des Données du Personnel, Gestion des Temps, etc. En d’autres termes, cela veut dire que la fonction des ressources humaines s’occupe d’administrer les données du personnel, ainsi que de la gestion des temps, etc. 11
En anglais : use cases. Un cas d’utilisation décrit une manière précise d’utiliser le système, une fonctionnalité
de celui-ci.
12
http://www.magicdraw.com/
13
Cas d’utilisation processus : ceux que l’on peut diviser en plus petits cas d’utilisation.
18
4 Spécification des exigences Repérage du domaine et des acteurs Figure 8: Diagramme de paquetage "Domaines"
De l’observation de ce diagramme, on comprend que le domaine Projet dépend, en quelque sorte, ou communique avec le domaine RH. Cela indique que certains produits de sortie des processus de ce dernier fournissent des éléments d’entrées au premier. Ainsi, par ex. : pour le suivi des projets, il y a besoin de connaître les heures de travail des employés, information fournie par le processus de gestion des temps. Les cas d’utilisation processus qui seront concernés par le nouveau système sont, donc : 1.
2.
3.
4.
Administration des données du personnel Administration des projets Suivi des projets Gestion des temps La gestion des salaires et des assurances sociales et fortement liée avec les processus 1 et 2 : le calcul de la paye, à titre d’exemple, dépend du décompte horaire du salarié. Néanmoins, cette fonction ne sera pas prise en compte directement, dans le cadre de ce projet. Elle pourra faire objet d’une extension future du système. Les deux autres domaines figurant dans le diagramme de paquetages, notamment la Comptabilité et la Facturation, ne feront pas l’objet d’automatisation, mais elles seront 19
4 Spécification des exigences Repérage du domaine et des acteurs concernées par les données de sortie des deux autres domaines. À titre d’exemple, le processus Gestion des Factures utilise des données concernant les projets facturables (T&M) et fournies par le processus Suivi des Projets.
4.2.2 Acteurs Les acteurs sont les entités (personnes ou machines) qui vont interagir avec le nouveau système. En d’autres termes, ce sont les futurs utilisateurs de celui‐ci. Un acteur humain ne représente pas forcément un individu. Il se réfère plutôt à un rôle distinct, lequel peut être assumé par une ou plusieurs personnes. Il représente une façon distincte d’utiliser le système. La Figure 8 montre les acteurs ayant été identifiés dans le cadre du nouveau SGTT (baptisé ChronoSys), notamment : Employé, Responsable RH, Directeur Général et les cas d’utilisation processus par lesquels ils sont directement concernés, en tant qu’usagers. Comme il peut être constaté, il existe des relations d’héritage entre les acteurs. Ainsi, on peut dire que le Directeur Général a aussi les privilèges du Responsable RH, en plus de la liaison aux flux de travail qui lui sont propres (Suivi de Projets et Administration des Projets). Le Responsable RH, quant à lui, est logiquement lui‐même un Employé. Il sera impliqué en tant que tel, dans les mêmes cas d’utilisation que ce dernier. Bien évidemment, il aura des privilèges supplémentaires qui lui seront propres, mais ces derniers ne sont pas visibles pour l’instant. Ils ressortiront durant l’élaboration d’un modèle détaillé de cas d’utilisations. 20
4 Spécification des exigences Repérage du domaine et des acteurs Figure 9: Diagramme de cas d'utilisation processus avec les acteurs14
4.2.3 Définitions, acronymes et abréviations Établir un vocabulaire commun entre les utilisateurs et les réalisateurs d’un projet est une tâche importante de la discipline Recueil des exigences (Martenet 2009). En effet, cela contribue à éviter certains malentendus : Absence : une période (en jours ou demi‐jours ouvrables) de défaut de présence d’un Employé au travail. Activité : une période (en heures) pendant laquelle l’Employé effectue son travail, ou prend une pause, à l’intérieur d’une journée. Activité (Type d’) : correspond au genre de travail (ou de pause) effectué par l’Employé (travail sur projet facturable, travail de garantie, voyage d’affaires, pause‐repas, pause‐café, etc.). Administrer les données du personnel : gérer (créer/modifier/supprimer) les données concernant un Employé. Authentifier (s’) : se connecter à l’aide de son Login et Password ChronoSys : le futur système de gestion des temps ou SGTT. 14
L’acteur Comptable n’est pas directement concerné par le SGTT, raison pour laquelle il n’a été lié à aucun cas
d’utilisation processus.
21
4 Spécification des exigences Repérage du domaine et des acteurs ChronoSys Admin : l’interface utilisateur vu par un administrateur (le DG ou le Responsable RH). ChronoSys (Mon) : l’interface utilisateur vu par un Employé. Employé: toute personne ayant signé un contrat de travail avec la société Chronos. Jours fériés : jours légaux assimilés au dimanche. Jours ouvrables : jours pendant lesquels la société reste ouverte (du lundi au vendredi). Login : le nom d’utilisateur . Motif : raison d’une Absence. Menu « Mes Activités » : Liste des Activités et des heures d’un Employé et saisie des activités. (Timesheet) Menu « Mes Absences » : Liste des périodes d’absence d’un Employé et saisie des absences. Menu « Mes Statistiques » : Tableau de bord de l’Employé avec ses soldes horaires. Password : mot de passe de l’utilisateur. Projet : un projet de développement mené par la société. Prestation théorique : nombre d’heures que l’Employé est sensé travailler durant une période donnée, en tenant compte des week‐ends, des jours fériés et des absences justifiées. Prestation effective : nombre d’heures de travail que l’Employé a effectué durant une période donnée. Solde horaire : différence entre Prestation théorique et Prestation effective. SGTT : système de gestion des temps de travail (voir également ChronoSys). User : utilisateur de type Employé. Manager : utilisateur de type Responsable RH ou Directeur Général. Vacances : une période d’Absence accordée par année à un Employé et payée. Valider une Absence (par un responsable) : Justifier / prendre acte / donner son accord pour une absence de l’Employé. Visée : (pour une absence) non encore validée 22
4 Spécification des exigences 4.3
Modélisation du point de vue utilisateur Modélisation du point de vue utilisateur Nous allons maintenant reprendre chacun des quatre processus identifiés dans la section 4.2.1 et les étudier à l’aide de diagrammes UML d’activités. Cette étape permettra par la suite d’identifier les différents cas d’utilisation, pour arriver à un Modèle de Cas d’Utilisation (Use Case Model), répondant de manière plus détaillée à la question que va faire le système et qui l’utilisera. 4.3.1 Administration des données du personnel Le diagramme d’activités présenté dans la Figure 10, montre un déroulement imaginable des activités, pour le processus d’administration des données. Les deux acteurs concernés sont représentés par des swimlanes : 1. Le processus est déclenché au moment où un employé se fait engager. 2. Il se suit par la création d’une nouvelle entrée de type Employé dans le système (nouveau compte Employé). 3. L’employé reçoit, par la suite son Login et Password et se connecte au système. 4. Il vérifie ses données personnelles (par ex. : nom, prénom, adresse, etc.) et décide si elles sont correctes ou pas. 5. Si oui, il n’a rien à faire et se déconnecte du système. Si non, il fait des corrections. 6. La modification est sauvegardée dans le système et le responsable peut la consulter à tout moment. Il accepte la modification et peut en informer l’employé. Des déroulements alternatifs peuvent exister. Par exemple : 1. Le processus est déclenché au moment où il y a nécessité de la part du responsable de modifier certaines données concernant un employé (ou un groupe d’employés). 2. Le responsable apporte par lui‐même les modifications souhaitées. Une analyse de cette description nous permet d’identifier les cas d’utilisation suivants : 





UC1 : S’authentifier UC2 : Créer un nouvel Employé UC3 : Consulter les données d’un Employé UC4 : Consulter ses données personnelles UC5 : Modifier/supprimer les données d’un Employé UC6 : Fermer session (se déconnecter) 23
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 10: Diagramme d'activités "Administration des Données du Personnel"
Pour faciliter la tâche de leur représentation, nous allons considérer les deux sous‐
systèmes Mon ChronoSys et ChronoSys Admin séparément. Ce dernier regroupe les cas UC1, UC2, UC3, UC5 dans le diagramme des cas d’utilisation « Administration des Données du Personnel » (voir Figure 11 - Diagramme de cas d'utilisation "Administration
des Données du Personnel") et les mets en relation avec leur acteur : le Responsable RH. 24
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 11 - Diagramme de cas d'utilisation "Administration des Données du Personnel"
4.3.2 Administration des projets Comme il a déjà été énoncé, cette tâche appartient au Directeur Général. Un diagramme d’activité n’a pas été jugé nécessaire pour identifier les cas d’utilisation suivants : Figure 12: Diagramme de cas d'utilisation "Administration des Projets"
25
4 Spécification des exigences Modélisation du point de vue utilisateur  UC7 : Créer un Projet  UC8 : Modifier/supprimer les données d’un Projet L’authentification du Directeur est également demandée, mais comme il s’agit d’un cas d’utilisation commun pour tous les acteurs, elle ne sera pas répétée. La mise en relation de ces cas avec leur acteur est montrée par la Figure 12: Diagramme
de cas d'utilisation "Administration des Projets". 4.3.3 Suivi des Projets Alors que l’Administration des Projets est un processus secondaire, dans le sens où l’accomplissement de son but n’est pas la mission du domaine, mais le résultat produit est nécessaire aux processus métiers (Morley, Hugues et Leblanc 2006, p. 37), le Suivi des Projets peut, quant à lui être considéré comme un processus de pilotage, dans le sens où il traite des informations utiles à la prise de décisions. Pour cette raison, les deux ont été traités séparément. Les cas d’utilisation identifiés dans le Suivi des Projets sont (voir Figure 13) : Figure 13: Diagramme de cas d'utilisation "Suivi des Projets"
26
4 Spécification des exigences 



Modélisation du point de vue utilisateur UC9 : Consulter les Heures de Travail effectués pour un Projet UC10 : Consulter les Participants d’un Projet UC11 : Consulter l’Etat d’Avancement du Projet UC12 : Consulter le Coût du Temps du Projet On remarque que le cas UC12 inclut les cas UC9 et UC10. En effet, on pourrait dire que pour calculer le coût des heures de travail passées sur un projet, il faut des informations sur qui a participé au projet et combien de temps il a consacré à ce dernier. 4.3.4
Gestion des temps Nous venons maintenant au processus le plus important du projet, concernant la gestion des temps. Les diagrammes d’activités suivants ont été élaborés pour décrire les flux de travails principaux : Saisie des Activités, Gestion des Salaires, Traitement des Absences, Validation des Demandes de Congé (Figure 14, Figure 15, Figure 16 et Figure 17). Figure 14: Diagramme d’activités "Saisie des Activités" 27
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 15: Diagramme d'activités "Gestion des salaires"
Le diagramme « Saisie des Activités » montre le déroulement normal de la procédure souhaitée de la saisie des activités par un employé, en fin de journée (l’événement Fin de journée de travail apparait à titre d’exemple seulement, car l’employé doit pouvoir saisir une activité à n’importe quel moment de la journée, même si cette dernière n’est pas terminée). Le diagramme « Gestion des Salaires » montre un processus de la FRH qui ne fait pas entièrement l’objet du SGTT. Néanmoins, son déroulement requiert des étapes de consultation d’informations que le SGTT fournit, comme les heures de travail et les absences. 28
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 16: Diagramme d'activités "Enregistrement des Absences"
Le diagramme ci‐dessus montre un enchainement imaginable des étapes pour l’enregistrement des absences. Il distingue entre deux cas principaux : absences prévisibles (enregistrées sous forme de demande de congé) et absences non‐prévisibles (où l’employé a un empêchement imprévu). Dans le premier cas de figure, l’employé remplit lui‐même le formulaire en intranet et annonce son intention de s’absenter. Dans 29
4 Spécification des exigences Modélisation du point de vue utilisateur le deuxième cas, il informe son responsable, qui se charge d’enregistrer l’absence de l’employé. Dans les deux cas, l’absence doit être validée par un responsable. Notons, tout de même, que l’employé a aussi la possibilité d’enregistrer une absence ayant déjà eu lieu (par ex. : dans le cas où son responsable aurait oublié de le faire). Figure 17: Diagramme d'activités "Validation des demandes de congé"
30
4 Spécification des exigences Modélisation du point de vue utilisateur La Figure 17 montre la procédure pour valider les demandes de congé : le directeur général voit une liste de demandes de congé en attente sur son « tableau de bord » et il choisit de les refuser et ou de les valider. À partir de ces diagrammes d’activités, il est possible d’identifier les cas d’utilisation suivants : 
Acteur Employé :  UC13 : Consulter ses Activités  UC14 : Ajouter une Nouvelle Activité  UC15 : Consulter ses Absences  UC16 : Enregistrer une Absence Employé  UC17 (extends UC16) : Enregistrer une Demande de Congé  UC18 : Consulter ses statistiques o UC 18.1 : Consulter son solde horaire o UC 18.2 : Consulter son solde vacances o UC 18.3 : Consulter les jours fériés 
Acteur Responsable RH :  UC 19 : Enregistrer une Absence Employé  UC 20 : Valider une Absence  UC21 : Consulter le plan des présences des collaborateurs 
Acteur Directeur Général :  UC22 : Consulter les demandes de congé  UC23 : Traiter les demandes de congé o UC23.1: Valider congé o UC23.2 : Refuser congé  UC24 : Consulter les statistiques o UC24.1 : Consulter les Activités des Employés o UC24.2 : Consulter les Soldes Horaires des Employés o UC24.3 : Consulter les temps de pause des Employés o UC24.4 : Consulter le taux d’absentéisme o UC24.5 : Consulter les temps passés en voyage o UC24.6 : Consulter les Soldes Vacances des Employés 31
4 Spécification des exigences Modélisation du point de vue utilisateur Les FiguresFigure 18 18Figure 1919 montrent les deux diagrammes de cas d’utilisation : « Gestion des Temps Perso » et « Gestion des Temps Admin », représentant les fonctionnalités des interfaces utilisateur user (employé) et manager (responsable RH ou directeur) respectivement. Elles correspondent aux deux sous‐systèmes : Mon ChronoSys et ChronoSys Admin. Les diagrammes correspondants de cas d’utilisation sont affichés ci‐dessous (Figure 18 et Diagramme de cas d’utilisation "Gestion des Temps
Admin19) : 32
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 18: Diagramme de cas d'utilisation "Gestion des Temps Perso"
On remarque que pour l’acteur Employé, le cas d’utilisation Enregistrer une Demande de
Congé (UC17) est une extension du cas Enregistrer une Absence Employé (UC16). En effet,
les deux sont des entrées comportant une date de début et une date de fin, ainsi qu’un motif.
La demande de congé se différencie par sa saisie d’avance.
33
4 Spécification des exigences Modélisation du point de vue utilisateur Figure 19: Diagramme de cas d’utilisation "Gestion des Temps Admin"
Le cas « Traiter les Demandes de Congé » peut, lui aussi, être considéré comme une extension du cas « Enregistrer une Absence Employé », dans le sens où le traitement d’une demande consiste à modifier un ou plusieurs attributs d’une entrée existante de type absence (les types de données et leurs attributs seront discutés dans la section 5.2). 34
5 Analyse et conception Architecture du futur système Analyse et conception 5.1 Architecture du futur système 35 5.2 Modélisation du point de vue logique 36 5.2.1 Identification des Entités ......................................................................................... 36 5.2.2 Le modèle Entité-Association.................................................................................. 36 5.2.3 Le schéma de base de données relationnelle ........................................................... 38 Dans la section précédente, nous avons modélisé ce que le système doit faire, sans pour autant aborder la question du comment il le fera. Le but de cette partie du travail est de se pencher sur l’aspect logique du futur système. Encore une fois, nous allons nous inspirer des pratiques du processus unifié (RUP, voir 4.1), dont la discipline Analysis and Design (Analyse et Conception) a pour but de décrire comment le système sera implémenté (RSCorp 1998, cité par Martenet 2009, p. 37). Parmi les multiples tâches de cette discipline, sont l’analyse architecturale et la conception de la base de données. 5.1
Architecture du futur système L’architecture décrit les composantes du futur système d’information. Dans le cadre de ce
travail, le futur système sera implémenté sur une architecture en trois couches :
1) Une couche de présentation, qui sert d’interface entre le système et ses utilisateurs : un
site web tournant sur un serveur local Apache.
2) Une couche de logique métier, qui implémente les règles de gestion et effectue les
calculs : des pages programmées en PHP
3) Une couche d’accès aux données, qui communique avec la base de données à l’aide
d’un langage de requêtes : MySQL
La base de données sera créée selon les principes d’une base de donnée relationnelle,
décrites par Meier (2002)
35
5 Analyse et conception 5.2
Modélisation du point de vue logique Modélisation du point de vue logique Cette section traite de la conception de la base de données (BD).
5.2.1 Identification des Entités D’après Meier (2002, p.18) : Une entité est un objet spécifique (c’est‐à‐dire, qui peut être identifié distinctement parmi d’autres objets) dans le monde réel ou dans notre pensée. […] Les entités du même type forment un ensemble d’entités caractérisées par un certain nombre d’attributs. […] Pour chaque ensemble d’entités, nous définissons une clé d’identification, c’est‐à‐dire un attribut ou un ensemble d’attributs qui permet de distinguer sans ambiguïté les entités dans l’ensemble considéré. Les entités qui ont été repérées pour le cas Chronos et leurs principaux attributs : 
EMPLOYE (ID, Nom, Adresse,…) 







CATEGORIE D’EMPLOYE (ID, Catégorie, Description) POSTE (ID, Poste) ACTIVITE (ID, Employé, Type d’actvité, Projet, Date, Début, Fin, Description) TYPE D’ACTIVITE (ID, Description) PROJET (ID, Nom, Client, Début, Délais, Livré, Description, T&M ,…) ABSENCE (ID, Début, Fin, Employé, Motif) MOTIF (ID, Catégorie, Détails, Jours_accordés) JOURS FERIES (ID, Occasion, Date) 5.2.2 Le modèle Entité­Association Les associations sont des liens orientés d’une entité à une autre. Elles décrivent des relations entre les entités et on peut les classifier en quatre catégories : 



1: simple (« un et un seul ») c : conditionnelle (« aucun ou un ») m: multiple (« plusieurs ») mc : multiple conditionnelle (« aucun, un ou plusieurs ») (Meier 2002). 36
5 Analyse et conception Modélisation du point de vue logique Ainsi, par exemple, on pourrait dire qu’un EMPLOYE occupe un et un seul POSTE au sein de l’entreprise, mais que le même POSTE peut être assigné à plusieurs EMPLOYES. On observe, dans ce cas, une relation simple‐multiple (Figure 20). Figure 20: Exemple d'association
La Figure 21 montre le modèle complet des données du cas Chronos, sous forme d’un diagramme Entité‐Association. Les différentes entités y apparaissent avec leurs principaux attributs, dont les clés primaires soulignées. Les associations sont représentées par des losanges : Appartenance : Un EMPLOYE appartient à une et une seule CATEGORIE_EMPLOYE, mais une CATEGORIE_EMPLOYE peut correspondre à plusieurs EMPLOYES Réalisation : Un EMPLOYE réalise aucune, une ou plusieurs ACTIVITES, mais une ACTIVITE est associée à un seul EMPLOYE Attribution : Une ACTIVITE est attribuée à un seul PROJET, mais un PROJET regroupe plusieurs ACTIVITES Caractérisation : Une ACTIVITE est caractérisée par un seul TYPE_ACTIVITE, mais un TYPE_ACTIVITE a plusieurs instances d’ACTIVITE Effectuation : Un EMPLOYE peut effectuer aucune, une ou plusieurs ABSENCES, mais une ABSENCE désigne une période unique d’empêchement d’un seul EMPLOYE. Justification : Une ABSENCE se justifie par un seul MOTIF15, mais le même MOTIF peut être à la base de plusieurs ABSENCES. Participation : Un EMPLOYE peut participer à aucun, un ou plusieurs projets, mais un PROJET est mené à bien par un ou plusieurs EMPLOYES. 15
On pourrait également imaginer une période d’absence due à plus d’un motif, par exemple : un employé
malade qui entretemps déménage ou dont la femme vient de mettre son enfant au monde. Néanmoins, pour une
raison de simplicité, nous allons considérer trois entrées de type ABSENCE au lieu d’une, chacune avec son
propre motif.
37
5 Analyse et conception Modélisation du point de vue logique Figure 21: Modèle de données Entité-Association 5.2.3 Le schéma de base de données relationnelle Le modèle entité‐association donne un aperçu global des données et de leurs relations. Cependant, sa finalité ne s’arrêtant pas là, il doit être traduit en un schéma de base de données relationnelle. Celui­ci contient la description d’une base de données, plus précisément, la spécification de la structure des données et de leurs contraintes d’intégrité. […][Il] contient la définition des tables, des attributs et des clés primaires. Les contraintes d’intégrité imposent des limites aux domaines des attributs et définissent les dépendances entre les tables (Meier 2002, p. 27). Pendant la transformation du modèle, il a été veillé au respect d’un certain nombre de règles de passages, telles que définies par Meier (2002, p. 27‐38) : [1] Chaque ensemble d’entités doit être traduit en une table distincte, avec une clé primaire unique. 38
5 Analyse et conception Modélisation du point de vue logique [2] Chaque ensemble de liens peut être traduit en une table distincte. Elle doit contenir les clés d’identification des ensembles d’entités participantes comme clés étrangères. [3] Chaque ensemble de liens complexe‐complexe ((m,m); (m, mc); (mc, mc)) doit être transformé en une table distincte. [4] Un ensemble de liens simple‐complexe peut s’exprimer dans les deux tables des ensembles d’entités participantes, sans avoir besoin de créer une table distincte. [5] Un ensemble de liens simple‐simple peut s’exprimer également selon [4]. Une des clés d’indentification de la table référencée est choisie comme clé étrangère dans la seconde table. Ainsi, les tables suivantes doivent être créées : EMPLOYE
ID
Nom Prénom
Adresse
NPA
Lieu
Catégorie Date de Taux
Naissance d’Occupation
…
CATEGORIE_EMPLOYE
ID
Catégorie
Description
ACTIVITE
ID
EmpID
TypeActivitéID
ProjetID
Date
Début
Fin
Description
Update
Description
T&M
TYPE_ACTIVITE
ID
Description
PROJET
ID
Nom Projet
Client
Début
Délais
39
Livré
5 Analyse et conception Modélisation du point de vue logique ABSENCE
ID
EmpID
Début
Fin
MotifID
Remarque
Statut
Date
d’inscription
Update
MOTIF
ID
Catégorie
Détail
Jours Accordés par année
POSTE
ID
Poste
En plus, selon les règles de transformation, le lien Participation devrait être traduit en une table distincte : PARTICIPATION
ID
EmpID
ProjetID
Taux de participation
Cependant, l’attribut « Taux de participation » d’un employé à un projet donné, serait redondant puisqu’il s’agit d’une donnée calculable qui peut être dérivée des données sur les activités. Cette table serait nécessaire uniquement dans le cas où le « Taux de participation » serait un taux prévu (par exemple, au début du projet). Alors il servirait de point de référence pour vérifier si le taux effectif équivaut celui prévu. Un autre principe à observer durant la transformation du modèle en schéma de base de données relationnelle est que celui‐ci soit normalisé selon les cinq Formes Normales (FN). Les dernières permettent d’éliminer les anomalies, et par la même occasion les redondances qui en sont la cause. Dans la pratique, on se limite généralement aux trois premières FN (Meier 2002, p. 41): 1FN : Les domaines des attributs de la table sont constitués de valeurs atomiques 2FN : Il existe une dépendance fonctionnelle totale reliant la clé à chaque attribut non­clé. 40
5 Analyse et conception Modélisation du point de vue logique 3FN : Aucun attribut non­clé ne dépend d’une clé quelconque par transitivité. Ainsi, par exemple, nous pouvons constater dans la table EMPLOYE, que l’attribut NPA dépend de l’attribut ID, et que l’attribut Lieu dépend de NPA. Cette table ne se trouve pas dans la troisième forme normale. La solution est simple : les données de la colonne Lieu peuvent être supprimées et recréées dans une table à part, avec sa propre clé d’identification. Dans la table EMPLOYE, uniquement le LieuID apparaitra, en tant que clé étrangère, et pas le nom du Lieu lui‐même. 41
6 Implémentation du prototype Considérations préalables Implémentation du prototype 6.1 Considérations préalables 42 6.2 La base de données 43 6.2.1 Les tables, les attributs et les contraintes ................................................................. 43 6.2.2 Les requêtes SQL ..................................................................................................... 48 6.3 L’interface utilisateur 49 6.3.1 Organisation des fichiers ......................................................................................... 49 6.3.2 Sélection d’une période (calendrier) ........................................................................ 52 6.3.3 Affichage des données ............................................................................................. 52 6.3.4 Insertion des données ............................................................................................... 53 6.3.5 Statistiques ............................................................................................................... 55 6.4 Guide d’utilisation et tests 55 6.4.1 Connexion / Déconnexion ....................................................................................... 55 6.4.2 Consulter ses activités pour une période au choix ................................................... 57 6.4.3 Saisir une nouvelle activité ...................................................................................... 58 6.4.4 Visualiser ses absences ............................................................................................ 59 6.4.5 Insérer une absence/ demande de congé .................................................................. 60 6.4.6 Consulter son solde horaire ..................................................................................... 60 6.4.7 Autres fonctionnalités .............................................................................................. 63 6.4.8 Un cas de discussion : les heures supplémentaires .................................................. 64 6.1
Considérations préalables Après les phases d’analyse et de conception, un prototype du système de gestion des temps de travail a été implémenté. L’environnement de développement a été le service WAMP, pour plusieurs raisons : 
Facilité de mise en œuvre et architecture en trois couches: ce service peut être téléchargé gracieusement depuis son site web (WampServeur 2009) et il installe 42
6 Implémentation du prototype La base de données à la fois un serveur web en local (Apache), un système de gestion de bases de données ou SGBD (MySQL) et des librairies PHP. 
PHP est un langage de script relativement facile à assimiler par un débutant. 
Portabilité : le service est indépendant du système d’exploitation (OS) et il peut être installé sur un Macintosh (MAMP) ou sur Unix (XAMP). Ses composantes peuvent être installées sur une seule ou sur plusieurs machines, selon les besoins. 
Compatibilité de MySQL avec d’autres SGBDs. Un bon éditeur de texte, Notepad++, a été utilisé pour l’édition des pages PHP. 6.2
La base de données 6.2.1 Les tables, les attributs et les contraintes La première étape de l’implémentation est la construction de la base de données. Celle‐ci sera appelée « SGTT » et elle a été créée à l’aide de l’interface phpMyAdmin sous WAMP. Figure 22: Fenêtre principale phpMyAdmin
43
6 Implémentation du prototype La base de données Les tables créées correspondent aux entités ayant été identifiées dans la partie d’analyse. L’association EMPLOYE – Participation – PROJET n’a pas été jugée utile dans un premier lieu et n’a pas été reprise dans une table distincte. La création d’une table se fait facilement en exécutant une requête SQL sur phpMyAdmin (voir Code 1: Création de la table "Employé"). De manière visuelle, cela donne ce qui est affiché dans la Figure 23. Le même principe s’applique à toutes les autres tables. Le choix du « type de données » pour chaque attribut à été fait en gardant à l’esprit les besoins de l’entreprise et les évolutions futures possibles, tout en essayant de limiter les espaces de stockage inutiles. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CREATE TABLE IF NOT EXISTS `employe` (
`ID` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
`Nom` varchar(25) NOT NULL,
`Prenom` varchar(25) NOT NULL,
`Adresse` varchar(50) NOT NULL,
`NPA` varchar(4) NOT NULL,
`Lieu` varchar(25) NOT NULL,
`Canton` char(2) NOT NULL,
`DateNaissance` date NOT NULL,
`Sexe` enum('m','f') NOT NULL,
`Nationalite` varchar(3) DEFAULT NULL,
`Permis` enum('B','C','L','autre','aucun') NOT NULL,
`DateEmbauche` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`TauxOccupation` tinyint(4) NOT NULL DEFAULT '100',
`DateFinContrat`
datetime
NOT
NULL
DEFAULT
'0000-00-00
00:00:00',
`Role` enum('user','manager') NOT NULL DEFAULT 'user',
`Categorie` varchar(3) NOT NULL,
`Poste` tinyint(4) NOT NULL,
`Remuneration` enum('horaire','mensuelle') NOT NULL DEFAULT
'mensuelle',
`Salaire` decimal(7,2) unsigned NOT NULL,
`Vacances` int(10) unsigned DEFAULT '20' COMMENT 'jours de
vacances accordés par année',
`SoldeVacances` int(10) unsigned DEFAULT '20' COMMENT 'Jours de
vacances restantes pour l''année en cours',
`Email` varchar(40) NOT NULL,
`Login` char(4) NOT NULL,
`Password` varchar(50) NOT NULL DEFAULT '000000',
PRIMARY KEY (`ID`),
UNIQUE KEY `Email` (`Email`),
UNIQUE KEY `Login` (`Login`),
KEY `Nationalite` (`Nationalite`),
KEY `Categorie` (`Categorie`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=29 ;
Code 1: Création de la table "Employé"
44
6 Implémentation du prototype La base de données Dans les lignes 26 à 30 du Code 1 on observe la définition de la clef primaire (ID), les attributs devant prendre des valeurs distinctes (example : Email – deux personnes ne devraint pas avoir la même adresse e‐mail) et les clés étrangères (Nationalité, Catégorie) faisant référence aux clés d’identifiaction des tables correspondantes. En un deuxième temps, la BD a été peuplée de données fictives. 16 Figure 23: Structure de la Table "Employé"
Concernant les employés, toute correspondance avec une personne réelle, serait le pur résultat du hasard.
16
45
6 Implémentation du prototype Figure 24: Structure de la table "Activité"
Figure 25: Structure de la Table "Absence"
Figure 26: Structure de la Table "Projet"
46
La base de données 6 Implémentation du prototype Figure 27: Contenu de la Table "Motif"
Figure 28: Contenu de la Table "Type_Activité"
Figure 29: Contenu de la Table "Jour_Férié"
47
La base de données 6 Implémentation du prototype La base de données 6.2.2 Les requêtes SQL Une fois la base de données construite et peuplée, elle peut déjà être utilisée pour avoir des réponses à des questions exprimées sous forme de besoin des utilisateurs. En d’autres termes, elle fournit déjà une partie des fonctionnalitées souhaitées, grâce au langage de requêtes SQL. Prenons par exemple le cas d’utilisation « UC2 : Créer un nouvel Employé » (cf. p23). Un nouvel Employé peut être créé grâce à la commande Insert : 1
INSERT INTO `employe` (`ID`, `Nom`, `Prenom`, `Adresse`, `NPA`,
`Lieu`,
`Canton`,
`DateNaissance`,
`Sexe`,
`Nationalite`,
`Permis`, `DateEmbauche`, `TauxOccupation`, `DateFinContrat`,
`Role`,
`Categorie`,
`Poste`,
`Remuneration`,
`Salaire`,
`Vacances`,
`SoldeVacances`,
`Email`,
`Login`,
`Password`)
VALUES(10, 'Ancion', 'Nicolas', 'Rue de Lausanne 56', '1700',
'Fribourg', 'FR', '1972-02-07', 'm', 'CH', 'aucun', '2002-09-02
08:00:00',
100,
'0000-00-00
00:00:00',
'user',
'CD',
10,
'mensuelle', '11000.00', 20, 20, '[email protected]',
'nica', '*032197AE5731D4664921A6CCAC7CFCE6A0698693')
Code 2: Créer nouvel employé
Un autre exemple : « UC10 : Consulter les Participants à un Projet ». On voudrait savoir qui a travaillé pour le projet E‐claim (dont le numéro d’identification dans la table « Projet » et 7). Pour trouver la réponse, on doit effectuer une jointure entre les tables « employé », « activité » et « projet » (voir Code 3). 1
2
3
4
5
6
7
SELECT employe.id, employe.nom, employe.prenom FROM employe, activite , projet WHERE projet.id = '7' AND employe.id = activite.empid AND activite.projetid = projet.id GROUP BY employe.id LIMIT 0 , 30 Code 3: Participants au Projet E-claim
Le résultat donne la table ci-dessous (Figure 30):
48
6 Implémentation du prototype L’interface utilisateur Figure 30: Liste des participants à un projet donnée (E-claim)
Les employés Hinkel, Salzmann, Riza et Lombard ont travaillé sur E-claim.
6.3
L’interface utilisateur Comme il a déjà été dit plus haut, l’interface utilisateur du prototype a été programmé en
PHP. Dans le cadre de ce travail, uniquement l’interface utilisateur employé (Mon Chronosys)
a été implémenté. L’interface administrateur (Chronosys Admin) a été réservé à un
développement futur. Pour l’instant, une partie des fonctionnalités « administrateur » peuvent
être remplies par phpMyAdmin à l’aide de requêtes SQL vers la base de données en MySQL.
6.3.1 Organisation des fichiers Les fichiers se trouvent dans le répertoire www du serveur local wamp (C:\wamp\www) et le site web dynamique est accessible en local depuis le port 80 (http://localhost/). Le fichier db.php contient des données générales, entre autre la base de données, le nom d’utilisateur et le mot de passe pour MySQL : 1
2
3
4
5
6
<?php
$server = "localhost:3306";
$db = "sgtt";
$user = "root";
$pass = "lila";
$time_option
="<option
value=\"06:00\">06:00</option><option
value=\"06:05\">06:05</option><option
value=\"06:10\">06:10</option><option
value=\"06:15\">06:15</option><option
value=\"06:20\">06:20</option><option …
Code 4: Extrait du fichier db.php
La variable $time_option est utilisée ailleurs, dans l’implémentation du formulaire pour la saisie des activités (des heures de début et de fin). Elle contient des options de tranches 49
6 Implémentation du prototype L’interface utilisateur de temps de cinq minutes, pour répondre à l’exigence de saisir les activités à cinq minutes près. Les fichiers index.php, login.php et logout.php contiennent les instructions pour l’affichage de la page de garde, l’authentification et la déconnection de l’utilisateur. Le fichier toc_user.php contient le menu de l’interface « Mon Chronosys » (Code 5): 


1
2
3
4
5
6
7
8
9
10
11
Mes Activités (timesheet.php) Mes Absences (daysoff.php) Mes Statistiques (stat.php) <div id=toc>
<table cellpadding=5 cellspacing=0 style=" border-bottom:2;
border-left:2;border-bottom-style:solid;border-bottomcolor:#A5B8C5;border-left-style:solid;border-leftcolor:#A5B8C5;">
<tr>
<td style="background-color:white">
<div class="toc_entry"><a href="timesheet.php">Mes Activités
>></a></div>
<div class="toc_entry"><a href="daysoff.php">Mes Absences
>></a></div>
<div class="toc_entry"><a href="stat.php">Mes Statistiques
>></a></div>
</td>
</table>
</div>
Code 5: Menu utilisateur employé
Le fichier get_working_days.php contient une fonction permettant de calculer le nombre de jours ouvrables à partir de deux dates (début et fin) et d’une liste de jours fériés. Il évite donc, les weekends et les jours fériés (Code 6). Cette fonction est utilisée, par exemple, pour calculer le nombre de jours d’absence d’un employé (Code 7). 50
6 Implémentation du prototype 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
L’interface utilisateur <?php
//The function returns the no. of business days between two dates
and it skips the holidays
function
getWorkingDays($start_date,
$end_date,
$holidays
=
array())
{
$start_ts = strtotime($start_date);
$end_ts = strtotime($end_date);
foreach ($holidays as & $holiday) {
$holiday = strtotime($holiday);
}
$working_days = 0;
$tmp_ts = $start_ts;
while ($tmp_ts <= $end_ts) {
$tmp_day = date('D', $tmp_ts);
if (!($tmp_day == 'Sun') && !($tmp_day == 'Sat') &&
!in_array($tmp_ts, $holidays)) {
$working_days++;
}
$tmp_ts = strtotime('+1 day', $tmp_ts);
}
return $working_days;
}
?>
Code 6: La fonction getWorkingDays (cf. get_working_days.php)
51
6 Implémentation du prototype 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
L’interface utilisateur //Les requêtes SQL:
$sql = "SELECT absence.ID as No, absence.EmpID, absence.Debut,
absence.Fin, absence.MotifID, absence.Remarque, absence.Statut,
motif.ID, motif.Categorie FROM absence, motif WHERE EmpID = '".
$_SESSION['EmpID'] ."' AND MotifID = motif.ID";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
$sql2= "SELECT Date FROM jours_feries";
$holidays = mysql_query($sql2) or die ('Erreur SQL: br/>'.$sql2);
//Les variables:
$jour_ferie=array ();
$total_of_hours = 0;
for ($i=0 ; $i < mysql_num_rows($holidays);$i++) {
$data = mysql_fetch_assoc($holidays);
$ferier = $data['Date'];
array_push ($jour_ferie, "$ferier");
}
// On vérifie que l'utilisateur existe bien:
if (mysql_num_rows($req) > 0) {
for ($i=0 ; $i < mysql_num_rows($req);$i++) {
$data = mysql_fetch_assoc($req);
[…]
$days = getWorkingDays($data['Debut'], $data['Fin'],$jour_ferie);
Code 7: Utilisation de la fonction getWorkingDays (cf. daysoff.php)
6.3.2 Sélection d’une période (calendrier) Une question un peu délicate au début de la conception du prototype était comment implémenter et gérer le calendrier. Stocker les données d’une année sous forme d’une table avec comme attributs les mois (voire les semaines ou les jours) semblait tout sauf élégant. Éviter d’utiliser un calendrier laissait certaines fonctionnalités dehors. La meilleure solution a été d’inclure un datepicker (sélectionneur de date) sous forme de code PHP (TriConsole 2009). 6.3.3 Affichage des données Les fichiers timesheet.php, daysoff.php et stat.php représentent les trois sections “Mes Activités”, “Mes Absences”, “Mes Statistiques”. 52
6 Implémentation du prototype L’interface utilisateur L’affichage des activités se fait grace à des requêtes SQL lancés par PHP (Code 8): 1
2
3
4
5
6
7
8
<?php
$co = mysql_connect($server, $user, $pass);
mysql_select_db('sgtt',$co) or die ('db innexistante');
$sql = "SELECT activite.ID, activite.EmpID, TypeActiviteID,
projet.Nom
AS
projetNom,
activite.Date,
activite.Debut,
activite.Fin, activite.Description, activite.Remarques\n"
. "FROM activite, projet\n"
. "WHERE projet.ID = activite.ProjetID AND EmpID = '".
$_SESSION['EmpID'] ."' AND Date between \"" . $start_date . "\"
AND \"" . $end_date . "\"
ORDER BY activite.ID";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
Code 8: Requête SQL sous PHP (Sélection des activités de l’utilisateur, timesheet.php)
6.3.4 Insertion des données L’insertion des données, se fait également à l’aide des requêtes SQL et du datepicker sous forme de code PHP (Code 8‐9): 1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql2 = "SELECT motif.ID, motif.Categorie FROM motif";
$req2 = mysql_query($sql2) or die('Erreur SQL : <br />'.$sql2);
$motif ="<select name=\"MotifID\" size=\"1\">";
for ($i=0 ; $i < mysql_num_rows($req2);$i++) {
$data = mysql_fetch_assoc($req2);
$motif.= "<option value='".$data['ID']. "'>".
$data['Categorie'].
"</option>";
}
$motif.="</select>";
?>
53
6 Implémentation du prototype 14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
L’interface utilisateur </tr>
<tr><td style="background-color:#CBDBE0;"></td><td>Inscrire une
nouvelle absence, ci-dessous:</td></tr>
<tr><td style="background-color:#CBDBE0;"></td>
<td colspan=2><table border=0 style=backgroundcolor:#FFC72E; width="100%">
<tr><td>Début:</td><td>Fin:</td><td>Motif:</td><td>Remarques:</td
><td>Statut:</td></tr>
<tr><form method="GET" id="input_time" action="">
<td><?php
$myStartCalendar = new tc_calendar("start_time", true,
false);
$myStartCalendar->setIcon("images/iconCalendar.gif");
$myStartCalendar->setDate(date('d'), date('m'), date('Y'));
$myStartCalendar->setPath("/kronosys/");
$myStartCalendar->setYearInterval(2000, 2015);
$myStartCalendar->dateAllow('2008-05-13', '2015-03-01');
$myStartCalendar->setDateFormat('j F Y');
$myStartCalendar->writeScript();
?>
</td>
<td><?php
$myStartCalendar = new tc_calendar("end_time", true, false);
$myStartCalendar->setIcon("images/iconCalendar.gif");
$myStartCalendar->setDate(date('d'), date('m'), date('Y'));
$myStartCalendar->setPath("/kronosys/");
$myStartCalendar->setYearInterval(2000, 2015);
$myStartCalendar->dateAllow('2008-05-13', '2015-03-01');
$myStartCalendar->setDateFormat('j F Y');
$myStartCalendar->writeScript();
?>
</td>
<td>
<?php echo $motif;
?>
</td>
<td><input class="input" type="text" name="Remarques" size="50"
value=""></td>
<td><select name="statut"><?php echo $statut_option;
?></select></td>
<td><input type="submit" name="submit" value="Add"></td>
</form></tr>
Code 9: Code PHP pour saisir une absence (daysoff.php)
54
6 Implémentation du prototype 1
2
3
4
5
6
7
8
9
10
Guide d’utilisation et tests if ( isset($_GET)) {
if (!empty($_GET['submit']) && $_GET['submit']=="Add"){
extract($_GET);
$co = mysql_connect($server, $user, $pass);
mysql_select_db('sgtt',$co) or die ('db innexistante');
$sql = "INSERT INTO absence (`ID` ,`EmpID` ,`Debut`
,`Fin` ,`MotifID` ,`Remarque` ,`Statut`) VALUES
(NULL,'".$_SESSION['EmpID']."','".$start_time."','".$end_time."',
'".$MotifID."','".mysql_real_escape_string($Remarques)."','".$sta
tut."');";
$req = mysql_query($sql) or die('Erreur SQL : <br
/>'.$sql);
mysql_close($co);
}
}
Code 10: Code PHP pour sauvegarder une absence dans la BD (save_absence.php)
6.3.5 Statistiques Le menu « Statistiques » devrait donner à l’utilisateur la possibilité de consulter les données pour une période de son choix, tel que : le nombre de jours ouvrables pour la période, le nombre d’heures qu’il aurait dû effectuer (tenant compte des absences et des jours fériés), ainsi que le nombre d’heures effectives. Cela lui permet connaître son solde horaire et de décider de travailler plus (ou moins) pour balancer et être dans les règles du solde horaire flexible (voir 3.2.2 Règles de gestion interne). 6.4
Guide d’utilisation et tests Dans cette section nous allons voir comment marche le prototype, du point de vue utilisateur. Nous allons prendre le cas d’un employé nommé Xavier Hinkel et nous allons prendre des cas d’utilisation et tester la fonctionnalité pour chaque cas. Figure 31: L'employé Xavier Hinkel dans la Table "Employé" 6.4.1 Connexion / Déconnexion 1) L’employé visite le système intranet à l’aide de son browser sur (ex : http://localhost/kronosys/) 2) Il entre son Login et son Password personnels : xavh , xavh (Figure 32). 55
6 Implémentation du prototype Guide d’utilisation et tests 3) La page d’accueil s’affiche (Figure 33). Par défaut, le site montre le menu « Mes Activités ». La table centrale affiche les activités de la journée en cours, s’il y en a eue. 4) L’employé peut se déconnecter en appuyant sur le bouton logoff. Figure 32: Login sur l'interface employé
Figure 33: Page d'accueil employé
56
6 Implémentation du prototype Guide d’utilisation et tests 6.4.2 Consulter ses activités pour une période au choix L’employé clique sur les petites icones « calendrier » en haut de page et sélectionne la période pour laquelle il veut afficher ses activités, par exemple : du 1 mars au 7 mars (Figure 34). Figure 34: Sélection d'une période
Le résultat est une liste de ses activités (Figure 35) avec la date, les heures de début et de fin, le projet concerné, la description, d’éventuelles remarques et surtout le temps consacré, en heures et minutes. Le total des heures pour la période choisie est également donné, en fin de liste. 57
6 Implémentation du prototype Guide d’utilisation et tests Figure 35: Liste des activités de l’employé Xavier Hinkel
6.4.3 Saisir une nouvelle activité L’employé sélectionne le type d’activité depuis la liste (cette liste obtient les données depuis la base de données et se met à jour automatiquement si de nouveaux types devaient apparaitres). Il choisit le bon projet, la date, l’heure de début et de fin et écrit une Description. Il clique sur le bouton add : voir Figure 36. Disons que M. Hinkel a eu un rendez‐vous de 8h30 à 11h45 avec un client. Ensuite il a fait une pause pour manger. Le résultat est maintenant visible sur la table « Activités d’aujourd’hui » (Figure 37). 58
6 Implémentation du prototype Guide d’utilisation et tests Figure 36: Ajouter une nouvelle activité
Figure 37: Table « Mes activités d'aujourd'hui »
6.4.4 Visualiser ses absences Sous le menu « Mes absences » à gauche, se trouve la page des absences de l’employé. Par défaut, les absences de l’année en cours sont affichées. M. Hinkel a été malade du 10 mars au 12 mars, ce qui fait 3 jours ouvrables et 24,6 heures d’absence (8,2 heures de travail par jour). En plus il a été à l’armée entre le 14 et le 16 mars (Figure 37). Figure 38: Liste des absences de l'employé
59
6 Implémentation du prototype Guide d’utilisation et tests 6.4.5 Insérer une absence/ demande de congé L’employé peut lui‐même enregistrer une absence qu’il aurait effectuée auparavant ou alors il peut annoncer une absence prévue pour le futur (demande de congé). Le formulaire orange en bas de page sert à cela. Le « statut » de l’absence est par défaut « visée », car toute absence doit être validée par un responsable, plus tard. Figure 39 : Insérer une absence /demande de congé
6.4.6 Consulter son solde horaire Sous le menu « Mes Statistiques », l’employé peut visualiser son solde horaire et d’autres données relatives, pour une période de son choix. Reprenons le cas de M. Hinkel : Il veut voir son avancement pour le mois de Mars (du 1er au 31). Rappelons qu’il a été malade du 10 au 12 du mois, et qu’il a été à l’armée du 14 au 16 mars. Durant ce mois, il y a eu un jour férié, la fête du canton (le 11 mars)17. La table des jours fériés dans la base de données se présente sur la Figure 40. Dans le rapport des activités de M. Hinkel, on trouve des données saisies entre le 1er mars et le 9 mars. Il n’a pas saisi d’autres activités les autres jours. Les statistiques de M. Hinkel se présentent comme à la Figure 41. 17
Il s’agit d’une fête fictive, insérée ici pour l’effet de test
60
6 Implémentation du prototype Guide d’utilisation et tests Figure 40: Table "jours_feries"
Figure 41: Statistiques de l'employé pour le mois de mars
Quelques explications : Le tableau est composé de sept colonnes de données, chacune exprimée en nombre de jours, en nombre d’heures, en nombre de minutes ou alors en heures et minutes, selon le besoin. 



Total de : nombre total de jours dans la période (31 pour mars) Fériés : nombre total de jours fériés dans la période (1 jour ou 8,2 heures ouvrables, ou encore 8 heures et 12 minutes) Ouvrables : nombre de jours ouvrables pour la période. Sont considérés comme tels tous les jours sauf les fériés et les samedis/dimanches (22 jours en mars) Mes absences : nombre de jours d’absence pendant la période (4 jours). 61
6 Implémentation du prototype Guide d’utilisation et tests Rappelons que M. Hinkel avait été malade pendant 3 jours et avait été à l’armée pendant 2 jours. Cependant, le calcul montre 4 jours d’absences, puisqu’il y a eu un jour férié (le 11 mars) pendant sa période de grippe (du 10 au 12). 


Ma prestation théorique : nombre de jours ouvrables où l’employé n’a pas été inscrit comme absent (18 jours). Cela correspond à 22 jours ouvrables – 4 jours d’absence. Ma prestation effective : nombre de jours que l’employé Hinkel a travaillé (ou du moins pour lesquels il a saisi ses activités) (env. 7.4 jours ou plus précisément 60 heures et 25 minutes.) Mon solde horaire : différence entre la prestation théorique et la prestation effective (‐ 10.6 jours ou env. – 87 heures et 11 mintues). En d’autres termes, l’employé aurait dû travailler (ou doit travailler) encore 10 jours pendant le mois de mars pour arriver à un solde horaire équilibré. Deux petits tableaux : Détail des jours fériés et Détail de mes absences sont donnés comme note explicative pour l’employé, en bas du tableau des statistiques. Dés détails plus lisibles du tableau des statistiques sont affichés ci‐dessous (Figures 42, 43, 44). Figure 42: Détail du tableau "statistiques" 1
62
6 Implémentation du prototype Guide d’utilisation et tests Figure 43: Détail du tableau "statistiques" 2
Figure 44: Détail du tableau "statistiques" 3
6.4.7 Autres fonctionnalités D’autres fonctionnalités, comme Ajout/Modification d’un Employé ou d’un Projet, visualisation de données de l’Employé, etc. n’ont pas été implémentées sur l’interface web. Néanmoins, elles peuvent être satisfaites par l’interface phpMyAdmin qui permet de manipuler la base de données directement. Cette implémentation représentant seulement un prototype, l’effort est de montrer que le modèle de conception est utilisable et qu’il est possible de l’exploiter de manière satisfaisante. 63
6 Implémentation du prototype Guide d’utilisation et tests 6.4.8 Un cas de discussion : les heures supplémentaires Dans l’entreprise Chronos, les employés ont des soldes horaires flexibles, ce qui les permet de gérer eux‐mêmes leur travail (avec certaines limites, évidemment). Néanmoins, il ne faut pas confondre des heures excédentaires (travaillé plus que nécessaire) avec des heures supplémentaires (heures demandées par la direction et rémunérées plus). Pour gérer les heures supplémentaires, une façon serait d’introduire un nouveau type d’activité : Travail Supplémentaire, au même titre que les Pauses / Voyages, etc. 64
7 Conclusion Rétrospective Conclusion 7.1 Rétrospective 65 7.2 Difficultés rencontrées et leçons apprises 66 7.3 Améliorations futures 66 7.1
Rétrospective Le but de ce projet était de concevoir et d’implémenter un prototype d’un système de gestion des temps pour une entreprise, en prenant à la fois le rôle de l’informaticien de gestion et celui du programmeur. En un premier temps, la problématique des systèmes de gestion de ressources humaines et des systèmes de gestion des temps dans les entreprises d’aujourd’hui a été traitée, afin de donner un cadre à ce travail et d’expliciter les motivations. Deuxièmement, des recherches ont été effectuées pour comprendre les dispositions légales suisses qui régissent les relations de travail et donc, les règles auxquels un système de gestion des temps doit se conformer. Dans un troisième temps, le cas d’une PME suisse orientée projet souhaitant améliorer sa gestion des temps de travail des employés a été présenté. Elle a été contactée à quelques reprises pour avoir des renseignements sur son fonctionnement et sur ses besoins en matière de gestion des temps. Ensuite, le projet a été mené en prenant le rôle de l’analyste du métier et en analysant les besoins des clients (utilisateurs finaux) à l’aide du processus unifié (RUP) et des diagrammes UML d’activités et de cas d’utilisation. Ce recensement des besoins a été, par après, utilisé pour concevoir le système du point de vue logique, en prenant le rôle de l’architecte du système. 65
7 Conclusion Difficultés rencontrées et leçons apprises Finalement, un prototype contenant une base de données et un site web programmé en PHP a été proposé et quelques cas de tests ont été effectués sur celui‐ci. Ce prototype permet de gérer les employés, de saisir des activités/ des absences et de consulter des soldes horaires, entre autres. 7.2
Difficultés rencontrées et leçons apprises Quelques difficultés ont certainement été rencontrées, notamment : 
Le vaste champ de la problématique de la gestion des temps a nécessité un travail de réflexion pour délimiter le projet. 
Le manque d’expérience en programmation PHP a nécessité une période intense d’auto‐apprentissage Le monde du projet informatique est un monde plein de prévus, et une majorité des projets dans le monde échouent par rapport à l’un des trois critères (qualité, coût, temps). En effet, il faut de la persévérance et un effort considérable pour gérer les délais. 7.3
Améliorations futures Le prototype, par définition n’est qu’une version limitée et imparfait d’un système d’information final. Des améliorations sont donc, naturellement possibles : 






L’interface Chronosys Admin peut être implémentée Des restrictions pour empêcher la saisie des activités à une date ultérieure à 24 heures, ou la sélection comme heure de fin une heure antérieure à celle du début, peuvent être programmées. Le système pourrait être complémenté par un module d’emploi des temps prévisionnels. Le système peut être relié à un système de comptabilité pour générer une fiche de salaire employé ou alors une facture pour des projets T&M. La base de données peut être optimisée : les dates pourraient être stockées de manière plus atomique, par exemple, au lieu de AAAA :MM :DD hh :mm :ss, etc. L’entité CLIENT peut être inclus. Etc. 66
CD­ROM CD­ROM Ci-dessous vous trouvez le CD-ROM contenant le code source du projet SGTT.
67
Bibliographie Bibliographie Baromètre RH. «Baromètre de la Fonction Ressources Humaines en Suisse Romande.» www.barometrerh.ch. 2009. http://www.barometrerh.ch/images/BRH_2009.pdf (accès le 27 Mai 2009). Bréaud, A., C. Desaulles, A. Gilet, P. Perrenoud, V. Schoeb, et M. Serex. Guide pour la présentation des citations, des listes de références bibliographiques et des listes bibliographiques [Document Word]. 2004. http://biblio.hecvsante.ch/Documents/guide%20bibliographie/bibliographie_he
cvs_brochure.doc (accès le 4 Juin 2010). Chambet‐Weil, Stéphane. «Comment réconcilier la gestion des temps avec les contraintes opérationnelles et fonctionnelles de l'entreprise?» Le blog RH BearingPoint. 15 Février 2010. http://blogrh.bearingpoint.fr/2010/02/15/comment‐reconcilier‐la‐gestion‐des‐
temps‐avec‐les‐contraintes‐operationnelles‐et‐fonctionnelles‐de‐
l%E2%80%99entreprise/#more‐161 (accès le 27 Mai 2010). CO, Code des obligations du 30 Mars 1911. RS 220. Berne: Assemblée Fédérale de la Confédération Suisse, 1 Janvier 2010. Developpez.com. «F.A.Q. PHP ‐ Dates.» Developpez.com. 2010. http://php.developpez.com/faq/?page=dates (accès le 27 Mai, 2010). Journal du Net. «Comprendre les SIRH.» Le Journal du Net. 27 Juillet 2005. http://www.journaldunet.com/solutions/dossiers/pratique/sirh.shtml (accès le 27 Mai 2010). Kruchten, Philippe. The rational unified process: an introduction (The Addison­Wesley object technology series). Boston: Addison‐Wesley, 2nd, 5th print., 2001. 68
Bibliographie LAPG, Loi fédérale du 25 septembre 1952 sur les allocations pour perte de gain. RS 834.1. Berne: Chancellerie Fédérale, 1 Juin 2009. Le Monde Informatique. «Quand les gestion des temps de travail se complexifie.» LeMondeInformatique.fr. 06 Juin 2005. http://solutionspme.lemondeinformatique.fr/panoramas/lire‐quand‐la‐gestion‐
des‐temps‐de‐travail‐se‐complexifie‐4.html (accès le 28 Mai 2010). Levi‐Mazloum, Dan. Gestion des absences d'une entreprise. Fribourg: Département d'Informatique de l'Université de Fribourg, 2009. LTr, Loi fédérale du 13 mars 1964 sur le travail dans l'industrie l'artisanat et le commerce. RS 822.11. Berne: Chancellerie Fédérale, 1964. Martenet, Hélène. Analyse des exigences d'un jeu boursier en ligne et implémentation d'un prototype d'amélioration (Travail de Master). Février: Université de Fribourg, Département d'Informatique, 2009. Master MRH Lille. «Les self services Ressources Humaines.» e­rh.org. 30 Novembre 1999. http://www.e‐rh.org/doc_dess/selfserve.pdf (accès le 28 Mai 2010). Meier, Andreas. Introduction pratique aux bases de données relationnelles. Paris: Springer, 2002. Morley, Chantal, Jean Hugues, et Bernard Leblanc. UML 2: Pour l'analyse d'un système d'information, 3ème éd. Dunod, 2006. OLT 1, Ordonnance 1 du 10 mai 2000 relative à la loi sur le travail. RS 822.111. Berne: Chancellerie Fédérale, 1 Juin 2009. OMG. «MDA Guide Version 1.0.1.» site Web OMG. 2003. http://www.omg.org/cgi‐
bin/doc?omg/03‐06‐01 (accès le 27 Mai 2010). ORACLE. MySQL Developper Zone. 2010. http://dev.mysql.com (accès le 12 Avril 2010). Pasquier, Jacques, et Minh Tuan Nguyen. Introduction à l'Informatique de Gestion I. Université de Fribourg, 2009. Roques, Pascal. UML 2 par la pratique. 5è. Paris: Eyrolles, 2006. 69
Bibliographie RSCorp. «Rational Software White Paper TP‐026A Rev 11/98.» Rational Unified Process ­ Best Practices for Software Development Teams. Novembre 1998. SECO, Secrétariat d'Etat à l'Economie. Travail et Santé ­ Durée du travail et du repos (L'essentiel en bref). Berne: SECO/Conditions de travail, 2009. —. SECO ­ Droit du travail. 2010a. http://www.seco.admin.ch/themen/00385/00420/index.html?lang=fr (accès le 15 Mai 2010). —. SECO ­ Versemet du salaire en cas de maladie. 2010b. http://www.seco.admin.ch/themen/00385/00420/00423/00426/index.html?la
ng=fr (accès le 15 Mai 2010). Simple IT. Concevez votre site web avec PHP et MySQL. 3 Avril 2010. http://www.siteduzero.com/tutoriel‐3‐14668‐concevez‐votre‐site‐web‐avec‐
php‐et‐mysql.html (accès le 30 Avril 2010). TriConsole. «PHP Calendar Date Picker.» TriConsole. 2009. http://www.triconsole.com/php/calendar_datepicker.php (accès le 27 Mai 2010). WampServeur. Apache, MySQL, PHP pour Windows. 2009. http://www.wampserver.com (accès le 23 Décembre 2009). 70

Documents pareils