---
title: "Conduite de projet: les tâches"
date: 2024-09-23
tags: ["tâche", "scum", "agile"]
categories: ["Conduite de projet", "Cours"]
mathjax: true
---

Maintenant que les besoins sont définis, nous allons les décomposer en tâches
pour les passer à l'équipe. Là encore il est question de bonnes pratiques,
d'abord concernant leurs rédactions:

 * il faut limiter le travail;
 * et aussi le préciser;
 * il faut lier les tâches aux besoins.

 Mais aussi concernant l'organisation:

  * Organiser les tâches;
  * suivre leurs avancements.

## Rédaction

La granularité d'une tâches doit être la plus fine possible et représenter un
élément atomique du projet. Une tache doit se tenir dans un périmètre donné, par
exemple:

 > Écrire du code et documenter sont deux choses.

Une tâche doit en général monopoliser un dévelloppeur pendant un/deux jours
maximum. Si elle demande plusieurs dévellopeur sur plusieurs jours alors **nous
avons un problème de granularité**.

Elle doit être écrite pas l'équipe qui va la réaliser. Il faut définir
précisément ses objectifs en définissant le **DoD* -- *Definition of done* qui
représente la ligne d'arrivée. une tâche est **obligatoirement** être
**rattachée à un besoin**.

Le **niveau de précision** d'une tâche doit permettre à n;importe quel
dévellopeur de l'équipe de savoir **exactement quoi faire**.

## Plannification

Une fois les tâches rédigée, nous pouvons passer à la plannification. Il est
toujours question de composer avec le facteur *humain*. Il s'agit ici de
disposer les tâche sur *un calendrier* et d'affecter les resources nécessaires.

Nous pouvons utiliser des diagrammes de *Gantt* pour cette étape

## Suivi

Pour le suivi est tâches, nous pouvons utiliser la méthode Kanban. Il sera
alors question de "changer" les tâches de colonnes aux fur et à mesure de leurs
avancement.

## Scrum / agilité

Alors que le le projet avance, les besoins peuvent changer. Si dans un cycle de
production classique comme celui en V, les besoin sont figé tout au long du
project, *SCRUM* permet d'ajuster les besoins tout au long du cycle.

C'est alors le propriétaire -- appelé ici *Product Owner* -- qui est repsonsable
des changements. L'équipe de dévellopement comporte aussi un *scrum master*, qui
anime l'équipe. Le *product owner* détermine les priorité.

L'équipe itère lors de *sprints* d'une durée définie  (en général entre deux et
quatre semaines). Une nouvelle version du logiciel est livrée à la fin du
*sprint*.

Deux *backlogs* coexistent: le backlog **produit** et celui du **sprint**

### Le backlog

Il est orienté *user stories*, mais nous pouvons y ajouter des *US* non
fonctionnelles comme les temps de réponses ou les tolérances aux pannes

#### Chiffrage du backlog

Chaque tâche a un coût, il faut l'estimer. On utilise un chiffrage abstrait
relatif à la difficulté et défini par comparaison.

### Conception et suivi des tâches

Les choix architecturaux impactent les sprints.

Pour organiser les tâches et gérer leurs avancement, des réunions quotidienne --
les *daily* -- sont organisés. Il est question de savoir **qui fait quoi**.

En fait de *sprint*, une réunion bilan est organisée pur faire le point de ce
qui est a été réalisé, les points dur, les amélioration à effectuées que se soit
le produit lui même ou l'organisation du travail. Lors de cette réunion, on
calcule la **vélocité** : la sommes des coûts des tâches réalisées sur le
*sprint*.

Deux méthodes existent pou gèrer le suivi des tâches : *GANTT* et *PERT*.
