La différence entre un système de poussée et un système de traction réside dans la façon dont les unités de travail sont attribuées à la personne qui exécutera cette unité de travail. Le concept de push and pull n'est pas unique au développement de logiciels - l'idée provient de la logistique et de la gestion de la chaîne d'approvisionnement .
Dans un système push, une sorte de tâche est créée puis attribuée à un développeur. Une tâche peut être n'importe quoi, de l'implémentation d'une exigence (ou d'un composant nécessaire pour réaliser une exigence) à une correction de bogue en passant par un document à écrire. Quelqu'un, généralement une sorte de gestionnaire ou de chef d'équipe, prend les unités de travail à effectuer, puis les attribue aux membres de l'équipe. Simplement, le travail est imposé aux personnes qui le feront.
Dans un système d'extraction, les tâches à effectuer sont stockées dans une file d'attente, souvent une sorte de file d'attente prioritaire. Un exemple pourrait être les backlogs de produits et de sprint de Scrum, qui contiennent des user stories à faire. Un développeur qui ne travaille actuellement sur rien ira dans la file d'attente et retirera l'histoire de la plus haute priorité qu'il pourra faire et y travailler. Les gens qui font le travail retirent le travail d'une liste et le font.
Le concept de push and pull n'est pas lié au développement itératif / incrémentiel versus séquentiel. Une équipe utilisant des techniques itératives / incrémentielles / agiles pourrait utiliser un système push, tandis qu'une équipe utilisant un développement séquentiel pourrait utiliser un système pull. Cependant, généralement, les méthodes agiles (XP, Scrum) favorisent les équipes auto-organisées et donc les systèmes pull.
Pour plus d'informations, vous pourriez être intéressé par cet article de blog sur Push vs Pull in Scrum . Kanban pourrait également être intéressant - Kanban est une méthodologie qui vient de la fabrication, mais peut être appliquée au développement de logiciels , qui met l'accent sur le développement juste à temps et la réduction de la surcharge des travailleurs. Kanban est également lié à et souvent utilisé avec Lean , un autre concept de fabrication qui peut être appliqué au développement de logiciels .