web-dev-qa-db-ja.com

反復のあるウォーターフォールモデルと進化的ソフトウェア開発モデルの違いは何ですか?

これらの2つの違いを知っている人はいますか?

どちらも反復的なアプローチで作成されます-各反復後に逐次改訂を行います。どちらにも、最初のアイデア->分析->(アウトライン)設計フェーズがあります。

7
Patryk

定義はさまざまであるため、この質問に対する決定的な答えが得られるとは思いません。

そうは言っても、私が目にする最も明白な潜在的な違いは、反復が高レベルの設計/アーキテクチャとどのように関連しているかです。

  • 反復ウォーターフォールモデルでは、[詳細設計/ビルド/テスト]の複数のフェーズで設計全体の要素の精緻化/詳細化の反復をさらに使用できます。理論的には、ほとんどの反復を事前に計画できます。
  • 真の進化モデルでは、全体的なデザインはありません-あなたはただすでに構築したものに追加する次に行うことが最も価値のあるものの概念に基づいており、通常は集中的なユーザーによって得られますフィードバック。将来の反復のための固定計画はありません(ただし、優先順位付けされたバックログまたは類似のものを保持する可能性があります)。
6
mikera

「進化的設計」は一般的な用語であり、ある種の変異/選択メカニズム(つまり、変更-テスト-拒否/受け入れサイクル)を使用するすべての設計方法を網羅しています。 「反復を伴うウォーターフォール」は、ウォーターフォールモデルを反復的に適用する開発プロセスを具体的に説明しています。

すべての開発が1台のマシンで行われ、変更が必要に応じて随時行われ、「準備ができている」と見なされるたびに展開される非公式の単一開発者プロセスは、確かに進化的な設計モデルですが、ウォーターフォールの定義にほとんど適合せず、その最もリラックスした解釈で。

2
tdammers

私が経験したことから、人々は主に「反復によるウォーターフォール」を、実用的方法論としてではなく、貧弱な、または中途半端なアジャイル実装の冒とく的な用語として使用しています。

とにかく私は偶然出会った この記事 「反復的な滝」という言葉の適切な説明があります。

1
DPD

反復ウォーターフォールは、大規模プロジェクトをマイルストーンに単純に分割し、各マイルストーンを「反復」と呼ぶこともできます。

もちろん、これを行うことは、前の反復から次の反復へのレビューやフィードバックのすべての可能性を取り除くため、罪です。それでも私はそれが適用されるのを見ました、その後、彼らの分度器が彼らがそうするために彼らが今アジャイルであると高声で大声で宣言しました!!

反復滝のもう1つの定義は、次の滝が前の滝から供給される連続した滝を持つことです。繰り返しになりますが、設計から納品までのサイクル自体にはフィードバックはありませんが、納品と設計の間のフィードバックのみが許可されます。この定義は、DPDによって提供されるリンクと一致しているようです。

私の「ウォーターフォール」スタイルと「アジャイル」スタイルのプロセスの個人的な定義は、プロジェクトの表示方法と分解方法にあります。どちらもほぼ同じフェーズとプロセスをカバーしていますが、かなり異なる方法でそれらに取り組んでいます。ソフトウェアの生成をスタックとして表示します。上部がインセプション、下部が展開とサポートです。

ウォーターフォールは、ソフトウェア作成プロセスを水平方向に分解し、各レイヤーを順番にトラバースします。ウォーターフォール奏者にとって(そのようなことが言える場合)、次のレイヤーに進むことは、上のレイヤーを完全に解決しなければ不可能であり、その考えられないことです。典型的な議論は、基礎の前に家の屋根を建てることは決してなく、「2回測定して1回カットする」のと同様のことを言うことになるでしょう。

一方、アジャイルは、時間の経過とともに製品に追加される機能のスライスを垂直方向に生成する作成プロセスを分解します。ただし、各スライスでは、スタックを上から下に進めず、一度にすべてに取り組みます。彼らは目標結果の範囲を喜んで減らしたので、彼らはこれを行うことができます。彼らにとって、最初にテストをせずに先に進んで、そのアイデアが意味をなすかどうかを確認することは考えられません。反復ごとに、一連の機能を追加し、アイデアとシステムの他の部分に対してテストします。

ウォーターフォールは、ターゲットが具体的な現実の製品であり、エラーが許容されないエンジニアリングに根ざしています。彼らはソフトウェアを鋼鉄とコンクリートの固い断片と見なし、それを構造に組み立てる必要があります。したがって、彼らはすべてを完璧の祭壇で細かくリソースを浪費するすべてを計画することに慎重になる傾向があるでしょう。ウォーターフォールが機能するには、非常に強力な経験豊富なプレイヤーとそれらへの完全な信頼が必要です。

アジャイルは、知識が一度に1つずつ収集され、継続的にテストされる科学的プロセスに根ざしています。彼らはソフトウェアが可鍛性であり、自由に曲げたり形を変えたりできることを完全に理解しています。彼らは、研究者が理論を扱うのと同じようにアイデアを扱います。つまり、テストに同意する限り、それは有効です。したがって、新しい変数に合わせるために少しずつひねりを加えて毎回同じものを繰り返し作成することにより、リソースを浪費しているシステムを継続的に再形成する傾向があります。アジャイルが機能するためには、システム全体を継続的に評価し、それを新しい現実に照らして配置する必要があります。測定と自動化は、現在の可能な限り正確な画像を取得するために不可欠であり、次のステップを理想的なパスへの修正措置としてとることができます。理想的なパスであっても、それが実際に理想的なターゲットに向いていることを確認するには、再評価する必要があります。

ウォーターフォールビルドソフトウェアは、現状のまま、静的で、具体的に設定されています。

アジャイルは、ソフトウェアを成長させ、注意を払い、絶えず変化する世界にその傾向をもたらします。

ソフトウェアは早い段階で順応性があることは事実ですが、サイズと古さを増すにつれて、変化に対抗する剛性もますます高まります。私の意見では、特効薬はなく、合理的な反省を損なうことに多くの宗教的献身が行われる傾向があります。とはいえ、アジャイルはソフトウェアのソフトを考慮に入れているもののようです。

1
Newtopian