"" - " ".

参考のために、 Kent Beckが本の著者です。
「極端なプログラミング。 テストによる開発 ''
およびEPの分野からのその他。 説明された講義
crazysage.diary.ru/p66324356.htmに公開
およびcrazysage.habrahabr.ru/blog/95906で、 約1年前に読んでください。
( ベックの言葉(講義ノートから)は引用でさらに強調され、彼のノートは 異なる色の 引用で強調されて います 。)
プロジェクトの元のデザイン。
それは理想的な設計ではありませんが、それでも顧客が必要とする機能を実行し、現時点では高度な機能がないために需要があります。
ええ、大丈夫、言葉を残して、例を見てみましょう。 できる限り、出てきた有料の顧客にデバイスをひざまずかせたとします。 たとえば、これは重い荷物を遠くまで運ぶための基本的なデバイスです( 要するに「カート」 )。( ), ( , ) ( , .. " ").

デザインはまあまあですが、これまで誰もそのようなものを見たことがないということを覚えておいてください、それは石器時代です! 最終設計が異なることは誰もが理解しています。 これでうまくいくはずです。十分な知識、技術、材料があり、デバイスはすべての重要なテストに合格しました-山から降りて川に落ち、タンバリンとシャーマニックダンスで神の像を運びました。 (極端なプログラミングの重要なコンポーネントはテスト駆動開発であることを思い出してください。)
今、あなたは外出先でそれを変更する必要があります。 作業エンジンの小さな変更から、新しい作業原理に基づいた2番目のインスタンスの完全な製造まで、いくつかの改良戦略があります。 それはすべて、顧客のニーズと開発に対する支払い能力に依存します。 しかし、顧客が第2の開発のために支払うことができ、その中に宇宙技術を実装することができるほど多くのお金を持っている極端な退化したケースを考慮しません-これは別の世紀からの仕事です。 ただし、このように見えるはずだと思います(開発プロセスでは、主にお金を最初に与えることが重要です)。また、顧客の技術仕様を正当化し、設計部門を雇うことができます。 しかし、NASAでない限り、誰もそんなにお金を払うことはありません。法廷占星術師はいません。- ( , ) ( , ) .

それでも、1つのプロジェクトの代わりに別のプロジェクトが発生した場合の縮退ケースは、「 サポートストーン 」と呼ばれる4つの作業戦略の1つであり、そのための「 サポート 」を構築することで全体の作業をサポートおよび加速することが理にかなっています。
サブプロジェクトのサポートの例: 釘の鍛造、ホイールの発明 。:
* , ( );
* , , ( - ).
:
* , ( ).
( ): , ( , );
( ): ( , );
( ): ( - ? ).
背景
同じタイプのすべての操作が行われます。 体の化学はタンパク質の合成に基づいており、コンピューターは論理回路に基づいています。 したがって、異なるレベルの責任で同じロープを使用しなければならないとき、あまり恥ずかしくないでください。 フラクタル性を覚えておいてください。: ( ) ( ).

ここでのコメントは不必要です。私たちの戦略がプロジェクトの崩壊につながる場合、最初からやり直す前に、顧客は近隣諸国のアウトソーシング業者を考えて採用します。— .

このモデルの疑いのない利点は、ヘリコプターが構築されているように効率的ではない場合でも、顧客が自分のお金が部品に費やされているものを見るということであり、鳥が持っているように、翼ではなくねじを入れる理由が完全には明らかではないことです そしてそう-今日は別のログを追加しました。 ただし、サーバーの負荷は増加しているため、明日はホスティングのために分岐する必要があります。, -, , . — .
言い換えれば、システムを分解して組み立て、理解するために、アーキテクチャ的に有能に行うのが簡単でした。, , .
, . :
* , - ( , );
* , ( , , );
* , , ( , " " , " " ).
, :
* ( );
* ( );
* ( (, ) );
* ( ).
戦略
ジャンプ
結論は、パスが明らかな場合、設計段階を1つにまとめることです。 この方法は、実証済みの施設( 狩猟用の穴、洞窟 )の建設には適していますが、開発にはリスクがあります。
要件が変更されたり、計画エラーが発生したりする可能性があるため、リスクはより大きくなります(「方法を知っている」を参照)。 しかし、1回の反復で、このようなことが起こる可能性があります。:
* , ;
* , .
:
* .
( ): ;
( ): .

並列処理
慎重な戦略。 次の段落との違いは、「サポートする石」-こことここ-は並行開発ですが、ここでは機能を複製して部分的に転送し、「ビッグジャンプ」のようなものが構築され、機能が再開されます。
たとえば、新しいホイール設計を発明した場合、交換の信頼性がわからないため、急いで実装することはありません。:
* ;
* , .
:
* , .
( ): ;
( ): .

さて、正方形の車輪が三角形よりも悪くないと確信している場合(これは事実とは程遠い)、三角形を慎重に削除し、プロジェクトで廃止された関数のままにして、正方形を使用します。
参考石
( 上記の例-ヘリコプターを考慮しました。戦略の本質は、非常に「支えとなる石」-プロジェクト部分のツール(ライブラリ)、型枠(フレームワーク)、結合材料(インターフェース) を生成することです。別のプロジェクトについて話す価値があるときに、プロジェクトを別のプロジェクトに置き換える。 )
単純化
そして時々、新たに発明されたものよりも重い重量を運ぶ自然な方法を使用する方が安価です。:
* , ( );
* ( , , );
:
* , ( , , - , , );
* ( , , , ).
( ): ( );
( ): ( );
( ): ( , ).

または、最新の例:WiFiまたはLAN接続を確立するよりも、フラッシュドライブ上のコンピューター間でデータを転送する方が簡単な場合があります。 または、プロジェクトの設計について話す場合、ここでの単純化とは、プロジェクトアーキテクチャの有能な構築を指します。これは、以前のソリューションのヒープを整理して、やり直しがより便利な場合があります。
補足説明
顧客の世話をします。 お金を払わないカートを作ると、明日飢えてしまい、カートを開発する人がいなくなり、枯れてしまい、fireのために引っ張られ、宇宙船に変わることはありません。[ , ] :
* , ;
* ( , - ) ;
( , , , . .. "" "". )
, , .