Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 1 Génie Logiciel (d'après A.-M. Hugues) Gestion de Projet Renaud Marlet LaBRI / INRIA http://www.labri.fr/~marlet màj 19/04/2007 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Est-ce bien nécessaire ? ● Principes de gestion = beaucoup d'évidences ● Pourtant beaucoup de projets sont mal gérés – dépassement du temps – objectifs non atteints – mécontentements divers – ... 2 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Objectif de ce cours ● Donner des éléments structurants – ● sans rentrer dans les détails (sort du cadre de ce cours) Intérêt : – pour celui qui va géré – pour celui qui va « être géré » → comprendre un réseau d'interactions complexes ● Plus général qu'appliqué au seul génie logiciel 3 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 4 Gestion Projet → Estimation des tâches à effectuer ● Ordonnancement et dépendances de tâches ● Répartition des activités ● Plan projet ● Organisation du travail Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Processus d'estimation 1) Estimer la taille du produit – nombre de lignes de code (LOC) – ex. points de fonctions, feature points, ... 2) Estimer l'effort (hommes-mois) – ex. : COCOMO (COnstructive COst Model) 3) Estimer la durée – mois ou semaines calendaires 5 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Importance / qualité des méthodes d'estimation Marge d'erreur – LOC (par analogie / « au pif ») : facteur 9 – points de fonctions : facteur 3 6 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Processus d'estimation Sort du cadre de ce cours → juste quelques principes ici → pas de méthode effective 7 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 8 Estimation En faire une tâche raisonnée – allouer du temps pour réfléchir – étudier la situation sereinement (pas sous la pression) – planifier l'estimation (!) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 9 Estimation ● ● ● Prendre l'avis de ceux qui vont réaliser le travail – développeurs, etc. – estimer par consensus Prendre en compte – les niveaux de difficultés (facile, moyen, difficile) – l'expérience / la compétence des développeurs – les risques (y compris de gestion de projet) Utiliser des données des projets précédents – importance de l'expérience Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Estimation : Ne pas oublier les tâches récurrentes ● documentation ● préparation des démonstrations utilisateurs ● formation des utilisateurs et développeurs ● intégration à l'existant ● récupération des données existantes ● revues ● réunions ● maintenance de l'existant pendant le développement nouveau ● gestion qualité ● absences (congés, maladie, RTT, absentéisme, ...) ● ... 10 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 11 Gestion Projet ● Estimation des tâches à effectuer → Ordonnancement et dépendances de tâches ● Répartition des activités ● Plan projet ● Organisation du travail Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Ordonnancement et dépendances : Graphe PERT ● PERT (Project Evaluation & Review Technique) ● Graphe exprimant : – les tâches élémentaires – les dépendance entre tâches – la durée des tâches – les dates ● de début et de fin ● au plus tôt et au plus tard 12 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Graphe PERT : Définition de tâches élémentaires C A début H F D B G E Tâche fin 13 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 14 Graphe PERT : Dépendances entre tâches C A début H F D B G E Tâche fin Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 15 Graphe PERT : Durée des tâches élémentaires C 4 A 3 H 2 F 4 D 2 début B 2 Tâche durée fin G 4 E 6 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Ordonnancement et dépendances : Graphe PERT Détermination d'un chemin critique : = le plus long, au sens de la somme des durées → détermine la durée minimale du projet 16 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 17 Exercice : quel est le chemin critique et la durée minimale ? C 4 A 3 H 2 F 4 D 2 début B 2 Tâche durée fin G 4 E 6 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Graphe PERT : Chemin critique et durée minimale C 4 A 3 H 2 F 4 D 2 début B 2 Tâche durée 18 fin G 4 E 6 durée minimale = 15 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Ordonnancement et dépendances : Graphe PERT Dates de début et de fin au plus tôt : – partir du nœud « début », aller vers le nœud « fin » – pour tout nœud : ● date de début = max(dates de fin des tâches entrantes) ● date de fin = date de début + durée 19 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 20 Exercice : quelles sont les dates de début et de fin au plus tôt ? C 4 A 3 H 2 (15,15) (0,0) F 4 D 2 début fin (0,2) B 2 (début au plus tôt, fin au plus tôt) Tâche durée G 4 E 6 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Graphe PERT : Dates de début et de fin au plus tôt C 4 A 3 (0,0) (7,9) (3,7) (0,3) H 2 (7,11) (3,5) (0,2) Tâche durée fin (11,15) B 2 (début au plus tôt, fin au plus tôt) (15,15) F 4 D 2 début 21 (2,8) E 6 G 4 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Ordonnancement et dépendances : Graphe PERT Dates de début et de fin au plus tard : – partir du nœud « fin », aller vers le nœud « début » – pour tout nœud : ● date de fin = min(dates de début des tâches sortantes) ● date de début = date de fin - durée 22 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 23 Exercice : quelles sont les dates de début et de fin au plus tard ? C 4 A 3 H 2 (13,15) F 4 D 2 début fin (15,15) (0,0) B 2 Tâche durée (début au plus tard, fin au plus tard) G 4 E 6 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Graphe PERT : Dates de début et de fin au plus tard C 4 A 3 H 2 (3,7) (0,3) (13,15) F 4 D 2 début B 2 (3,5) Tâche durée (début au plus tard, fin au plus tard) fin (7,11) (9,11) (0,0) 24 (15,15) G 4 E 6 (5,11) (11,15) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 25 Graphe PERT complet (0,3) C 4 A 3 H 2 (3,7) (0,3) (0,0) (7,9) (3,7) (7,11) (3,5) F 4 D 2 début (0,2) (début au plus tôt, fin au plus tôt) Tâche durée (début au plus tard, fin au plus tard) (3,5) (15,15) (11,15) B 2 (2,8) E 6 (5,11) (15,15) fin (7,11) (9,11) (0,0) (13,15) G 4 (11,15) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Ordonnancement et dépendances : Graphe PERT ● 26 Si plusieurs équipes, projet complexe, ... → graphe PERT à plusieurs niveaux (c.-à.-d. emboîtés) : un noeud complexe est lui-même découpé en un graphe ● Pas spécifique au génie logiciel → utilisé dans le BTP, ... Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 27 Gestion Projet ● Estimation des tâches à effectuer ● Ordonnancement et dépendances de tâches → Répartition des activités ● Plan projet ● Organisation du travail Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Répartition des activités : diagramme de Gantt ● ● Fait apparaître : – répartition des activités dans le temps – affectation des individus Détaille : – les coûts en hommes-mois (ou h-semaine, h-jour) – dates de début et de fin pour chaque tâche 28 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 29 Exemple de diagramme de Gannt \ Mois Tâche \ mois 1 mois 2 Tâche 1 A A,B Tâche 2.1 mois 3 mois 1 4 mois 5 mois 6 mois 7 mois 1 8 mois Cumul 10 (en h-m) 3 2 A,B Tâche 2.2 4 A,C Tâche 2.3 B 5 B,D Tâche 2.4 A,C 3 C Tâche 2.5 2 C,D Tâche 3 Total mensuel Cumul (en h-m) mois 9 C,D D 3 22 1 2 2 3 4 4 1 2 2 1 1 3 5 8 12 16 17 19 21 22 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Répartition des activités : diagramme de Gantt Gestion de projet pratique : – à chaque tâche on associe un objectif → permet de repérer la terminaison de la tâche → contrôle des dérives (+ se souvenir que les hommes ne sont pas interchangeables) 30 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 31 Gestion Projet ● Estimation des tâches à effectuer ● Ordonnancement et dépendances de tâches ● Répartition des activités → Plan projet ● Organisation du travail Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 32 Plan projet ● Document ● Élément de base de la planification ● Responsable = chef de projet du développement Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Contenu du plan projet (1) ● ● Nature de l'application – objectifs – principales fonctionnalités – autres caractéristiques : limites, performances, ... Scénario de développement – classification des priorités et contraintes – brève description de chaque composant 33 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Contenu du plan projet (2) ● Ressources – humaines – matérielles – logicielles ● Coût ● Calendrier ☛ Il existe des modèles standards de document (IEEE, ...) 34 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 35 Plan projet ● Élaboré dès la phase de planification ● Actualisations successives et raffinements → Suivi de projet (→) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 36 Suivi de projet ● Analyse (régulière) de l'écart au plan projet ● Par le responsable de projet – ● utilise : fiches de suivi, rapports d'activité Actualisation de : – graphe(s) PERT – diagramme(s) de Gantt – diagramme(s) à 45° (perception visuelle de la dérive par rapport aux objectifs) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 37 Gestion Projet ● Estimation des tâches à effectuer ● Ordonnancement et dépendances de tâches ● Répartition des activités ● Plan projet → Organisation du travail Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Organisation du travail ● Partage du travail ● Communication dans un projet ● Profil des membres du projet ● Facteurs humains 38 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Partage du travail ● Partage du travail pas toujours facile à réaliser ● Dépend du type de tâche à effectuer 39 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Partage du travail : cas d'une tâche bien partitionnée durée 40 Exemple : codage et tests unitaires personnel Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Partage du travail : cas d'une tâche non partitionnable durée 41 Exemple : analyse et conception globale personnel Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Partage du travail : tâche exigeant une interaction complexe durée personnel 42 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 43 Le dilemme de la communication ● ● Positif : – améliore la compréhension du projet – permet une plus grande mobilité dans le projet Négatif : – fait perdre du temps (cf. ↑) + la communication orale peut nuire à la documentation (mémoire à long terme du projet) qui devient moins nécessaire... à court terme Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Structurer la communication ● Eviter que tout le monde communique avec tout le monde – ● croissance suivant une loi carrée : N(N-1)/2 Faire des niveaux – groupes et responsables 44 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Rôles principaux dans un projet (1) Définition de rôles : – chef de projet – responsable qualité – responsable de l'intégration – responsable de la qualification – responsable de la maintenance – responsable de la documentation – ... ☛ Une même personne peut avoir plusieurs rôles 45 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Rôles dans un projet (2) Avantages : – responsabilisation → motivation – permet de trouver des (bons) compromis ● – chacun défend son activité il y a plus de chances que les choses soient faites ● sinon, « pente » naturelle = on compte sur les autres 46 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Rôles dans un projet (3) Importance d'une bonne définition des rôles – check-list des tâches et objectifs – périmètres disjoints ● ● mais tensions possibles entre missions « incompatibles » ex. compromis qualité / temps (responsable qualité contre responsable du développement) 47 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Profil des membres du projet (1) ● Définition et analyse des besoins – ● Spécifications fonctionnelles – ● clarté, précision, cohérence, rigueur Conception – ● savoir anticiper, analyser les stratégies capacité à communiquer, formaliser, abstraire Programmation et tests unitaires – discipline de programmation (style), rigueur, communication, sens du groupe 48 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Profil des membres du projet (2) ● Intégration – ● Qualification – ● compétence ~ ingénieur système ingénieur d'application, proche du domaine du produit Maintenance – rigueur, analyse, expertise 49 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet Facteurs humains ● Motivations individuelles et collectives ● Relations entre les membres et avec l'extérieur ● Dynamique du chef de projet ● Formation et apprentissage ● Éviter : – trop ou pas assez de niveaux (structuration) – déresponsabilisation – spécialisation excessive (cf. XP) : déplacer les gens 50 Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 51 À propos de motivation Si tu veux construire un bateau, inutile de battre le tambour pour rassembler les gens, inutile de se procurer du bois, préparer les outils, distribuer les tâches et répartir le travail ; c'est d'abord la nostalgie du large et de l'infini de la mer qu'il faut éveiller dans les cœurs. Antoine de St-Expéry (Citadelle) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 52 Facteurs humains (d'après A.-M. Hugues) ● ● Grandes variations – temps de codage : rapport de 1 à 25 – temps de mise au point : 1 à 26 – temps d'exécution du code : 1 à 13 – nombre d'erreurs restantes : 1 à 10 Peuvent être – réduits : méthodologies, standards, normes, outils – jamais annulés (☹) Génie logiciel – Gestion de projet © 2005-2007 Renaud Marlet 53 À retenir ● ● ● Estimation : – planifier sereinement – converger par consensus – se baser sur des données précédentes (expérience...) Découpage en tâches : – peser le besoin d'interaction, de communication – définir un objectif pour chaque tâche (→ mesure) Il existe des « outils », des méthodologies : – ● ordonnancer (PERT), répartir les activités (Gantt), ... Gestion de projet : responsabiliser