プッシュシステムとプルシステムの違いは、作業単位がその作業単位を実行する人にどのように割り当てられるかです。プッシュとプルの概念は、ソフトウェア開発に固有のものではありません。このアイデアは、物流とサプライチェーン管理に由来します。
プッシュシステムでは、ある種のタスクが作成され、開発者に割り当てられます。タスクは、要件(または要件を実現するために必要なコンポーネント)の実装から、作成するドキュメントのバグ修正まで、何でもかまいません。誰か、通常はある種のマネージャーまたはチームリーダーが、実行する必要のある作業単位を取り、それをチームのメンバーに割り当てて完了させます。単純に、仕事はそれを行う人々に押し付けられます。
プルシステムでは、実行する必要のあるタスクはキュー(多くの場合、並べ替えの優先キュー)に格納されます。例としては、スクラムの製品とスプリントのバックログがあり、これには実行すべきユーザーストーリーが含まれています。現在何も作業していない開発者は、キューに移動し、自分ができる最も優先度の高いストーリーを取り除いて作業します。作業を行っている人々は、リストから作業を引き出して実行します。
プッシュとプルの概念は、反復/インクリメンタル開発とシーケンシャル開発とは関係ありません。反復/増分/アジャイル技術を使用するチームはプッシュシステムを使用できますが、順次開発を使用するチームはプルシステムを使用できます。ただし、通常、アジャイルメソッド(XP、スクラム)は自己組織化チームを支持するため、システムをプルします。
詳細については、スクラムでのプッシュとプルに関するこのブログ投稿に興味があるかもしれません。かんばんにも興味があるかもしれません-かんばんは製造業に由来する方法論ですが、ジャストインタイム開発と労働者の過負荷を軽減するソフトウェア開発に適用できます。カンバンは、ソフトウェア開発に適用できる別の製造コンセプトであるリーンにも関連しており、頻繁に使用されます。