web-dev-qa-db-ja.com

プッシュおよびプル開発モデルとの違いは何ですか?

私は Extreme Programming Explained、Second Edition を読んでいて、第11章「Theory of Constraints」で著者たちは古くて時代遅れの「Push」開発モデルについて話しますおよびXP way、 "pull"開発モデルのようになります。非常に重要な概念ですが、「ウォーターフォール」と反復プロセスの単なる実例である非常に小さな段落と2つの画像しか必要とせず、画像のキャプションを除いてこれらのモデルに固有のものはありません。それについては本の残りの部分で説明しましたが、インターネットでそれについてこれ以上の説明や議論を見つけることはできませんでした。

それらに関する唯一の違いは、一方が "waterfall"であり、もう一方がiterative、彼らはなぜプッシュし、なぜプルしますか?

これらの2つの違いが本当に何であるかを理解し、良い例を挙げている人はいますか?

14
michelpm

プッシュシステムとプルシステムの違いは、作業ユニットがその作業ユニットを実行する人にどのように割り当てられるかです。プッシュとプルの概念はソフトウェア開発に固有のものではありません- このアイデアはロジスティクスとサプライチェーン管理に由来します

プッシュシステムでは、ある種のタスクが作成され、開発者に割り当てられます。タスクは、要件(または要件を実現するために必要なコンポーネント)の実装から、ドキュメントへのバグ修正まで、何でもかまいません。誰か、通常はある種のマネージャーまたはチームリーダーが、実行する必要のある作業単位を取り、それをチームのメンバーに割り当てて完了します。簡単に言えば、作業は、それを行う予定の人に押し付けられます。

プルシステムでは、実行する必要のあるタスクは、キュー、多くの場合、優先度の高いキューに格納されます。たとえば、スクラムの製品やスプリントのバックログには、実行するユーザーストーリーが含まれます。現在何も作業していない開発者は、キューに移動して、自分が実行して作業できる最も優先度の高いストーリーを削除します。仕事をしている人々はリストから仕事を引き出してそれを行います。

プッシュおよびプルの概念は、反復的/増分的対逐次的開発とは関係ありません。反復/増分/アジャイル技術を使用するチームは、プッシュシステムを使用できますが、逐次開発を使用するチームは、プルシステムを使用できます。ただし、通常、アジャイルメソッド(XP、スクラム)は自己組織化チームを優先し、システムをプルします。

詳細については、このブログ投稿 Push vs. Pull in Scrum をご覧ください。 かんばん も興味深いかもしれません-かんばんは製造に由来する方法論ですが、 ソフトウェア開発に適用できます は、ジャストインタイムの開発と過負荷の軽減を強調しています労働者。かんばんは Lean にも関連していて、しばしば使用されます ソフトウェア開発に適用できる の別の製造コンセプト。

16
Thomas Owens