12

明らかに、2つのアプローチを適用することによるチーム、顧客、ROIなどへの影響の違いは非常に大きく、多くの本や終わりのない議論や会議の主題となっています。

しかし、それについてもっと考えると、リリースの頻度である単一のルートの違いに最終的にマッピングされない2つの違いを見つけるのに苦労しています。

Waterfallは、設計、コードの記述、テスト、そして最後にリリースに時間を費やしています。しかし、アジャイルはまったく同じ一連のステップを実行します。つまり、それぞれが小さいというだけです。

アジャイルアプローチの重要な部分は、各リリースから学習し、それを使用して、最初に予測しようとするのではなく、より大きなデザインを出現させることです。

しかし、Waterfallもこれを行います。ウォーターフォールチームは、3週間または4週間ごとに学習するのではなく、6か月または9か月ごとにしか学習しません。しかし、ウォーターフォールのデザインはまだ現れています。つまり、ウォーターフォールリリース2は、リリース1で学習した内容を反映します。したがって、プロセスに違いはなく、実行速度が異なるだけです。

アジャイルは、顧客との緊密なコラボレーションに重点を置いています。しかし、Waterfallもこれを行います。ウォーターフォールの反復時間が長いため、長期間にわたって全員を同じページに維持するには、契約の形式で要件の列挙リストがより必要になります。しかし、繰り返しになりますが、これは単なる周波数のアーティファクトです。配達の頻度が高いほど、契約の必要性は低くなります。

私が見逃している他の原始的な違いはありますか?それとも本当に周波数だけですか?

4

6 に答える 6

8

  • あなたは製品を設計します
  • あなたはそれを構築します
  • あなたはそれをテストします
  • あなたはそれを文書化します
  • すべての要件を作成したら、リリースします

アジャイル

  • 最も価値のある機能(またはuser story)を最初に設計します
  • あなたはそれをテストします(TDD;))
  • あなたはそれを構築しました
  • あなたはそれを文書化します
  • 次に価値のある機能でこのプロセスを繰り返します
  • いつでもリリースできる可能性があります

(完了した各機能の後、またはタイムボックス化された期間の後(通常はまたはと呼ばれますsprintiteration

違いは私にはかなり明らかです。

アジャイルを使用すると、ソフトウェアの小さなチャンクを頻繁に配信することで、構築するものを適応させることができます。十分になったら停止できます。

于 2010-08-21T17:17:36.183 に答える
6

より高速なフィードバック-リリースだけでなく、すべてのスケールで、確かに多くのアジャイルプラクティスの1つの一般的な要因です。しかし、それがアジャイルとウォーターフォールの主な違いだとは思いません。例えば:

  • ウォーターフォールチームは、狭い専門分野のグループを中心に構築される傾向があります。アナリスト/アーキテクト/デザイナー/コーダー/テスターは、一人で作業する人々の別々のグループになる傾向があります。アジャイルチームは協力します。

  • ウォーターフォールプロセスは、多くのドキュメントと引き継ぎに依存しています。アジャイルチームは、作業コード/製品を中心にしています。

  • ウォーターフォールが顧客のコラボレーションに焦点を合わせていることに同意しません。多くの場合、プロセスの開始時にのみ、開発チーム全体の小グループとの単一の連絡先があります。アジャイルは、開発プロセス全体を通して継続的なコラボレーションを中心に構築されています。とても違う。

  • ウォーターフォールプロセスは、開発を開始する前に製品とアーキテクチャを完全に定義できるという考えに基づいて構築されています。アジャイルプロセスは、製品/アーキテクチャを見つけていくという考えに基づいて構築されています。

于 2010-08-21T17:26:29.860 に答える
3

Waterfallは、設計、コードの記述、テスト、そして最後にリリースに時間を費やしています。しかし、アジャイルはまったく同じ一連のステップを実行します。つまり、それぞれが小さいというだけです。

アジャイルは単一のエンティティではありませんが、さまざまな方法論の傘です。

他の人が指摘しているように、少なくともそれらのいくつかでは、これらの「フェーズ」ははるかに重なり合い、通常の順序が多少異なります。

実際、XPでは、順序は多かれ少なかれ次のとおりです。

  • テスト(TDD /テストファースト)
  • コード
  • デザイン(リファクタリング)
  • 繰り返して最終的にリリース

これは、シーケンスの大部分を反転させます。

また、テスト、コード、および設計は、リリースよりも細かいグレードで行われます。

アジャイルアプローチの重要な部分は、各リリースから学習し、それを使用して、最初に予測しようとするのではなく、より大きなデザインを出現させることです。

しかし、Waterfallもこれを行います。ウォーターフォールチームは、3週間または4週間ごとに学習するのではなく、6か月または9か月ごとにしか学習しません。しかし、ウォーターフォールのデザインはまだ現れています。つまり、ウォーターフォールリリース2は、リリース1で学習した内容を反映します。したがって、プロセスに違いはなく、実行速度が異なるだけです。

これは練習に大きく依存します。DOD-STD-2167A (セクション4.1.1)で説明されているように、ウォーターフォールモデルでは、開発プロセスのフェーズをオーバーラップさせて反復することができます(つまり、ある程度アジャイルにすることができます)。しかし、ほとんどの実際の実践はそれを見逃し、プロジェクトが終了するまで学習はありませんでした。

アジャイルは、顧客との緊密なコラボレーションに重点を置いています。しかし、Waterfallもこれを行います。ウォーターフォールの反復時間が長いため、長期間にわたって全員を同じページに維持するには、契約の形式で要件の列挙リストがより必要になります。しかし、繰り返しになりますが、これは単なる周波数のアーティファクトです。配達の頻度が高いほど、契約の必要性は低くなります。

再び練習に依存します。上記の仕様には、継続的に言うまでもなく、顧客の責任についての多くの言及はまったくありません。

Jerry Coffinがコメントで述べたように、Waterfallは確かにアジャイルを支持して議論するために使用されるストローマンです(実際に私は今それを使用しています...)が、このドキュメントを見て、それが何を意味し、どのようになっているのかを考える価値があります適用されました。

この仕様が示しているのは、契約、計画とドキュメントの配信と保守、および計画の順守に重点を置いていることです。そして、それは実際に引き継がれたと私は信じています。

アジャイルとの対比は、タイムボックスではなく、値の変化です。

アジャイルマニフェストが宣言しているように:

私たちは、ソフトウェアを開発し、他の人がそれを行うのを助けることによって、ソフトウェアを開発するより良い方法を発見しています。この作業を通じて、私たちは価値を得るようになりました。

プロセスとツールを介した個人と相互作用

包括的なドキュメントで動作するソフトウェア

契約交渉を通じた顧客のコラボレーション

計画に従った切り替えへの対応

つまり、右側のアイテムには価値がありますが、左側のアイテムにはもっと価値があります。

不思議なことに、この値のステートメントは、配信の頻度については何も述べていません(ただし、次の「原則」セクションでは説明しています)。ただし、実際に機能するソフトウェアを提供することで、価値システムを計画、文書、契約から離れ、元の場所に戻すことはできません。

頻繁なリリースは、これらの値を満たすためのメカニズムです。

「ミニウォーターフォール」で作業した場合、ストローマンBDUFウォーターフォールよりも少し機敏になります。しかし、配達の頻度は確かにすべてではありません。

于 2010-08-21T19:34:55.733 に答える
2

1つの違いは透明性です。開発サイクル中に、開発チームの外部の人々がプロセス、進捗状況、障害、および最終結果がどのようになるかを可視化できるかどうかです。

滝は透明性を意味するものではありません。多くの場合(必ずしもそうとは限りませんが)、「プログラマーは洞窟に入り、n週間/月後に「完成した」製品で登場する」として実装されます。ビジネスの専門家は事前に仕様を作成しますが、これで彼らの関与は終了する可能性があります。プログラマーが実装中に質問をした場合、仕様は利用できなくなる可能性があります。プログラマーは、サイクルが終了するまで、成果物を誰にも表示しない可能性があります。

アジャイルには透明性が必要です-それは基本的なファブリックの一部です。チーム外の人々は、チームが何をしているかを見ることができます(または少なくとも見ることができます)。(そうでない場合、チームはアジャイルであることについて嘘をついています。)これは、スクラムの毎日のスタンドアップミーティング、またはBig Visible Chartsと情報ラジエーター、または反復の最後のデモである可能性があります。要件が明確でない場合、プログラマーに頭を悩ませてオプションを盲目的に選択させるのではなく、顧客がすべてのビジネス上の決定を行うことがXPの要件である可能性があります。テスター(および顧客)は、別々のチームではなく、チームの一部と見なされるという事実かもしれません。

あなたは確かに透明性を持ってウォーターフォールを運営することができます、そしてよく運営されているウォーターフォールショップではおそらくそうするでしょう。しかし、アジャイルでは、それは当然のことです。

于 2010-08-21T17:25:32.970 に答える
1

マーク、

ご指摘のとおり、どちらのアプローチも、すべての優れたプロジェクトに含まれるべき「優れたもの」を共有しています。たとえば、初期のフィードバックと透明性の2つを取り上げます。アジャイルがこれを促進する構造を持っていることは事実ですが、これら2つの「良いこと」は、どのウォーターフォールプロジェクトにも含まれる可能性があります(また、そうあるべきです)。

しかし、私は(敬意を表して!)リリース頻度が唯一の違いであるという考えに反対する傾向があります。1つの大きな違いは次のとおりです。

Waterfallは、設計、コードの記述、テスト、そして最後にリリースに時間を費やしています。しかし、アジャイルはまったく同じ一連のステップを実行します。つまり、それぞれが小さいというだけです。

私はそうは思わない。アジャイルでは、学際的なチームを使用して、これらすべてのことを同時に実行しようとします。簡単にできることではないので、私は「試みる」と言います...しかし、少なくとも試みることは助けになります。

それどころか、従来のウォーターフォールでは、別々のチーム(調査/分析、QA、設計、マーケティングなど)があり、それらの間で引き継ぎが行われることが期待されます。例外的な場合、または複雑なプロジェクトで探索的研究やリスク分析を行う必要がある場合にのみ、分野を組み合わせて特別なチームを編成します。

ちょうど私の2セント...

于 2010-08-25T14:26:02.957 に答える
0

私はこの質問が本当に好きです。

私は大規模なウォーターフォールプロジェクトの悪い例でメンテナンスを行ってきました。初期の開発者向けの成果物は、複数のドキュメントセットと1つのコードベースでした。高レベルの設計ドキュメントが完成すると、それが配信され、二度と更新されることはありません。同上SRS、詳細設計など。ドキュメントがありますが、それらはすべて信頼性が低く、疑わしいものです。

アジャイルにはコードがあります。古くからの開発者は、プロジェクトが作成された時点でプロジェクトに精通していたため、自己文書化であると考えていました。(あなたはあなた自身のメモを校正したことがありますか?それらは常に作者にとって意味があります。)私は1500-2000モジュールを見ることからアーキテクチャを識別しようとします。同様に、高レベルの設計を理解しようとしています。たくさんメモを取ります。たぶんバインダーもいっぱいです。「自己文書化」コードを見ると、(そのモジュールで)何が行われているのかがわかりますが、その理由はわかりません。そうそう、開発者と協力していたスタッフは昇進(または怖がり)し、もう利用できなくなりました。

悪いアジャイルは悪い滝よりも優れているわけではありません。実際、悪いアジャイルは悪い滝よりも悪いかもしれません。優れたアジャイルは優れたウォーターフォールよりも優れていますか?

マニフェストはドキュメンテーションについて何も述べていません。ここでの本当の危険は、「アジャイル」とは、多くの開発者やクライアントにとって、迅速で安価な英雄的モデルの正当化を意味するということです。顧客は、高レベルのデザインの3つの厚い3つのリングバインダーを読んで楽しんだと思いますか?Computer Science 100で、ソフトウェアのコストの大部分は開発ではなく保守であると聞いたことがあります。この議論ではメンテナンスの側面が完全に無視されていると考えるのは間違っていますか?

違いは、現代のクライアントは、後ろ向きに考えられることを恐れているため、「アジャイル」を指定しないわけにはいかないということかもしれません。

于 2010-10-05T13:49:37.537 に答える