泥の倧きな塊、パヌト2

蚘事「泥の倧玉」の継続的な翻蚳。



䜿い捚おコヌド



圌は

QUICK HACK高速ハック

KLEENEX CODEナプキンコヌド

䜿い捚おコヌド䜿い捚おコヌド

スクリプトスクリプト

KILLER DEMOデモキラヌ

氞久プロトタむプ氞久プロトタむプ

BOOMTOWN急成長郜垂



家の所有者は、この構造物を分解し、より氞続的なものず亀換するずいう固い意図で、䞀時的な栌玍庫たたはカヌポヌトを構築できたす。 時間が瀺すように、そのような構造は圓初の蚈画よりもはるかに長く生きるこずができたす。 たぶん、圌はこれらの䞀時的な解決策に取っお代わるお金を持っおいたせん。 たたは、そのような新しい建物が珟れるず、「しばらく」それを䜿甚する誘惑がすぐに生じたす。



システムプロトタむピングでも同じこずが起こりたす。コヌドがどれほど矎しく効率的であるかに぀いお心配する必芁はありたせん。 動䜜するプロトタむプを衚瀺するためのコヌドのみが必芁なこずを知っおいたす。 準備ができ次第、コヌドは砎棄され、より慎重に再登録されたす。 デモンストレヌションの時が来るず、クヌルであるが本質的には圹に立たない機胜をロヌドしたいずいう抵抗できない欲求が生じたす。 そのような戊略が「成功をもたらす」こずもありたす。 クラむアントは、プロゞェクトの次のフェヌズの開発を支揎する代わりに、プロトタむプに満足しおいたす。





軜埮な問題をすぐに修正するか、すぐにプロトタむプを䜜成するか、抂念を蚌明する必芁がありたす。



時間たたはその䞍圚は、倚くの堎合、プログラマに1回限りのコヌドTHROWAWAY CODEの䜜成を匷いる決定的な力です。 優れた、よく考えられた、しっかりしたプログラムは、問題を解決するのに私たちが持っおいるよりも倚くの時間を必芁ずしたす。 倚くの堎合、プログラマヌは最小限の機胜を備えたプログラムを迅速に䜜成し、近い将来、より掗緎された゚レガントなバヌゞョンを䜜成するこずを玄束したす。 同時に、再利甚可胜なコンポヌネントを䜜成するこずで、将来発生する問題の解決がはるかに容易になり、よく開発されたアヌキテクチャにより、簡単に保守および拡匵できるシステムを開発できるこずを十分に認識しおいたす。



ダヌティコヌドの迅速な䜜成は、䞀時的な措眮ず芋なされるこずがよくありたす。 しかし、おそらくもっず頻繁に、この䜜業を続けるのに十分な時間がありたせん。 コヌドに匱点が珟れ、逆にプログラムは急速に成長しおいたす。



したがっお、非垞に倚くの堎合、利甚可胜な手段によっお、問題を解決するのに圹立぀単玔で䟿利な1回限りのコヌドが䜜成されたす。



ワンタむムコヌドは、倚くの堎合、他の誰かのより耇雑なコヌドを再利甚する代わりに䜜成されたす。 プロゞェクトの締め切りが近づいおいる堎合、独自に動䜜する粗雑でずさんなプログラムを䜜成する可胜性は、誰かのラむブラリたたは開発環境を研究および習埗するための未知のコストを䞊回りたす。



通垞、プログラマヌは特定の知識分野の専門家ではありたせん。特にキャリアの最初期は特にそうです。 ナヌスケヌス図たたはCRCカヌド[Beck and Cunningham、1989]は、この知識を孊ぶのに圹立ちたす。 ただし、チヌムがドメむンを把握するのに圹立぀プロトタむピングに勝るものはありたせん。



プロトタむプを䜜成するずきは、必ず「そしお、送信できたす」ず蚀う人が必ずいるはずです。 プロトタむプが実皌働に入るのを防ぐために、そのような蚀語でプロトタむプを䜜成するか、そのようなツヌルを䜿甚しお実皌働バヌゞョンを䜜成できないようにするこずができたす。



極端なプログラミング支持者[Beck、2000]は、倚くの堎合、迅速な1回限りのプロトタむプを急いで䜜成したすスパむク゜リュヌション。 プロトタむプは問題の回避方法を理解するのに圹立ちたすが、プロトタむプを優れた蚭蚈ず混同しないでください[Johnson and Foote、1988]。



すべおのプログラムが宮殿である必芁はありたせん。 単玔な1回限りのプログラムは、テント郜垂や預金の発芋の結果ずしお成長した郜垂のようなものであり、そのような郜垂は、5幎埌にはいずれにしおもゎヌストタりンになるため、50幎先の問題を解決する必芁はありたせん。



ワンタむムコヌドの実際の問題は、このコヌドが再利甚可胜になったずきに珟れたす。



ワンタむムコヌドTHROWAWAY CODEの䜜成は、ほが普遍的な方法です。 あらゆるレベルの経隓ずスキルを持぀すべおの゜フトりェア開発者は、少なくずも䞀床は゜フトりェア開発にこのアプロヌチを採甚しおいたす。 たずえば、パタヌンコミュニティには、「クむックコヌドずダヌティコヌド」の2぀の䟋がありたすが、これらは長期間保存されおいたす。 これは、PloPオンラむン登録コヌドおよびWiki-Wiki Webペヌゞです。



実際、EuroPLoP / PloP / UPの元のオンラむン登録コヌドは、2倧陞の4぀の異なるマシンで実行される分散Webベヌスのアプリケヌションでした。 䌚議情報はセントルむスの車で管理され、登録情報はむリノむ州ずドむツの車で保存されたした。 システムは登録レポヌトを生成し、蚪問者のオンラむンリストを即座に曎新するこずさえできたす。 1995幎に「高速でダヌティな」HTMLコレクション、Cデモコヌド、およびcshスクリプトが䜜成されたずきにすべおが始たりたした。 抂しお、これは実隓になるず予想されおいたしたが、実際には、プロゞェクトは䜜成者の期埅を超えたした。 今日では、同じHTMLコレクション、同じCデモコヌド、およびcshスクリプトです。 これは、「高速で汚い」コヌドが独自の生掻をどのように始められるかを瀺す良い䟋です。



元のCコヌドずスクリプトには、おそらく30行未満の元のコヌド行が含たれおいたした。 倚くの行は単玔にコピヌしお貌り付けられ、生成したテキストたたはチェックしたフィヌルドのみが異なりたす。



出垭レポヌトを生成したスクリプトの1぀の䟋を次に瀺したす。



echo "<H2>Registrations: <B>" `ls | wc -l` "</B></H2>" echo "<CODE>" echo "Authors: <B>" `grep 'Author = Yes' * | wc -l` "</B>" echo " " echo "Non-Authors: <B>" `grep 'Author = No' * | wc -l` "</B>" echo " "
      
      





このスクリプトは、特に登録数が増えた堎合に遅く、非効率的でしたが、その利点は機胜するこずです。 蚪問者の数が100を超えた堎合、スクリプトは非垞に䞍十分で䞍安定に動䜜したした。 ただし、䌚議䌚堎は100人の蚪問者を収容できなかったため、登録が長期間制限され、スクリプトに問題があるずは予想しおいたせんでした。 䞀般に、これは問題に察する無胜なアプロヌチでしたが、倚くを満足させ、それが曞かれた機胜を実行したした。 このような実際的な制限は高速コヌドの兞型であり、ほずんどの堎合文曞化されおいたせん。 抂しお、高速コヌドではほずんど文曞化されおいたせん。 ドキュメントが存圚する堎合、通垞は無関係であり、正確ではありたせん。



www.c2.comのWiki-Webコヌドも、Ward Cunninghamが率いるCGI実隓ずしお始たり、予想を超えおいたす。 「wiki」ずいう名前は、カニンガムの個人的なゞョヌクの1぀です。 圌はハワむで䌑暇䞭に空枯の゚プロンバスでそれを芋぀けたずき、ハワむ語からこの蚀葉を借りたした。 翻蚳するず、この蚀葉は「速い」ずいう意味です。 ワヌドはその埌、この蚀葉を「迅速で汚いプロゞェクト」に䜿甚し始めたした。 Wiki Webは、蚪問者が自分の前に誰かが曞いたすべおを倉曎できるずいう点でナニヌクです。 䞀芋、これはある皮の砎壊行為ですが、実際にはすべおが悪くないこずが刀明したした。 このシステムの成功を螏たえお、䜜者はプロゞェクトを完成させるための远加の詊みを行いたしたが、Perlの高速で汚いコヌドはシステム党䜓の基瀎のたたでした。



䞡方のシステムが端にあり、小さな汚れの塊から倧きな汚れの塊に倉わりそうだず思うかもしれたせん。 登録システムのCコヌドは、1぀のNCSA HTTPDサヌバヌから広がりたしたが、ゟンビコヌドがただ含たれおいたす。 KEEPING IT WORKING戊略は、システムを拡匵するか改善するかを決定するずきに最初に頭に浮かぶものです。 䞡方のシステムは、リ゜ヌス、関心、聎衆がいる限り、再構築RECONSTRUCTIONの悪い候補ではありたせん。 それたでの間、これらのシステムは、開発された゜リュヌションのために、䟝然ずしおタスクを非垞に満足に実行しおいたすが、そのたた残りたす。 それらを維持するこずは、それらを完党に曞き換えるために必芁ずされるよりもはるかに少ない力ず゚ネルギヌしか必芁ずしたせん。 それらは段階的にPIECEMEALゆっくりず発展し続けたす。



「高速でダヌティな」コヌドによっお匕き起こされたアヌキテクチャの劣化を修正し、システムの他の郚分から隔離し、独自のオブゞェクト、パッケヌゞ、およびモゞュヌルを保存するこずができたす。 そのようなコヌドが隔離されおいる限り、システムの健党な郚分の敎合性に圱響を䞎える機胜は最小限に抑えられたす。 このアプロヌチは、パタヌン「ラグの䞋でスワップ」のフレヌムワヌクで議論されおいたすSWUGING IT UNDER THE RUG。 1回限りのアヌティファクトがしばらく存圚するこずが明らかになったら、段階的な成長の反埩プロセスPIECEMEAL GROWTH、たたは「再構成」パタヌンで説明されおいる新しいドラフトプロゞェクトのいずれかを䜿甚しお、構造の改善に泚意を向けるこずができたす再構築。



ステヌゞ成長



圌は

自然な成長

反埩的か぀挞進的な開発



ロシアの宇宙耇合斜蚭ミヌルは、構成を倉曎しおモゞュヌルをビルドするために䜜成されたした。 基本モゞュヌルは1986幎に発売され、モゞュヌル「Quantum」ず「Quantum-2」はそれぞれ1987幎ず1989幎に耇合斜蚭に加わりたした。 Crystalモゞュヌルは1990幎に远加されたした。1995幎には、Spectrumモゞュヌルずドッキングコンパヌトメントが接続されたした1986幎には、このコンパヌトメントに぀いおも考えたせんでした。 最埌に、最埌のモゞュヌル「Nature」が1996幎に発売されたした。耇数のモゞュヌルを䜿甚しおこのような操䜜を行うこずで、耇雑な建物を数回再構築するこずができたした。



郜垂蚈画は安定した成功物語を誇るこずはできたせん。 たずえば、米囜の銖郜ワシントン垂は、フランスの建築家ピ゚ヌルランファンのマスタヌプランに埓っお建蚭されたした。 ブラゞルブラゞルずナむゞェリアアブゞャの銖郜も最初の玙の郜垂でした。 ヒュヌストンなどの他の郜垂は、サポヌトプランなしで成長したした。 各アプロヌチには欠点がありたす。 たずえば、道路が䞭心からさらに遠くなり始めるずすぐに、廊坊蚈画の攟射状の道路システムは倱敗したした。 䞀方、蚈画がなかったため、ランダムに配眮された䜏宅、商業、工業地域で構成されるパッチワヌクキルトが出珟したした。



ほずんどの郜垂は、アブゞャよりもヒュヌストンのように芋えたす。 郜垂は、入怍地、土地、ドック、たたは鉄道駅ずしお始たりたす。 これらの人々の堎所には、金や森、亀通網ぞのアクセス、誰にも属さない土地が描かれた可胜性がありたす。 時間が経぀に぀れお、䞀郚の集萜では、人数が重倧なレベルに達し、その埌、肯定的なフィヌドバックを䌎うサむクルが始たりたした。 街の成功は職人、商人、医者、叞祭を匕き付けたした。 人口の増加は、むンフラストラクチャ、政府機関、および譊察の保護をサポヌトできたす。 そしお、これはさらに倚くの人々を匕き付けたす。 いく぀かの䟋倖を陀いお私はすぐに゜ルトレヌクシティの街を思い出したす、そのような入怍地の創蚭者は、倧郜垂の基瀎を築くずは考えたせんでした。 圌らの野心は非垞に控えめで、瞬間的でした。



過去数幎にわたっお、゜フトりェア開発プロセスの「䌝統的な」カスケヌドモデルを批刀するこずが流行になっおきたした。 読者には、そのような攻撃は死んだ銬をキルティングするこずに䌌おいるように芋えるかもしれたせん。 しかし、もしそうなら、銬は死んだ動物には匷すぎたす。 このアプロヌチは長い間信甚を倱っおいるず倚くの人が信じおいたすが、プロセスや方法論の遺産を生み出し、今日たでさたざたな仮面の䞋で生き残っおきたした。



カスケヌドモデルが登堎する前の期間、プログラミングの先駆者は、゜フトりェア開発の「コンパむルず修正」コヌドず修正に、単玔で、䞍泚意で、比范的混乱したアプロヌチを䜿甚しおいたした。 圓時の問題は原始性の危機にthatしおいたこずを考えるず、このアプロヌチはほずんどの堎合報われたした。 しかし、組織の欠劂の結果は、ほずんど垞に倧きな汚れの塊になりたした。



この湿地に応じおカスケヌドモデルが登堎したした。 たた、「コンパむルず修正」モデルが小芏暡なプロゞェクトに適しおいる堎合、より倧きなタスクに察凊できたせんでした。 ゜フトりェアがたすたす耇雑になるに぀れお、オフィスでプログラマヌのグルヌプを集めおコヌドを曞くよう指瀺するだけでは䞍十分になりたした。 倧芏暡プロゞェクトでは、チヌム党䜓の適切な蚈画ず調敎が必芁でした。 なぜ疑問に思うのは、問題を培底的に分析し、詳现か぀事前に考え抜かれた蚭蚈で、車や橋を開発するのず同じ方法で゜フトりェアを開発できないこずです。 実際、゜フトりェア開発コストの調査では、プログラムのサポヌト䞭に問題を解決するこずは、ほずんど垞に蚭蚈開発䞭よりも費甚がかかるこずが瀺されたした。 もちろん、゜フトりェアサポヌト䞭のコストを回避するために、すべおのリ゜ヌスずすべおの専門家を動員する方が適切でした。 疑いもなく、たず䞋氎システム党䜓を敷蚭しおから壁を構築し、次にそれらに穎を開ける方が賢明です。 7回枬定し、1回切りたす。



カスケヌドモデルが1䞖代前に繁栄を達成できた理由の1぀は、コンピュヌタヌずビゞネスの芁件がかなり遅いペヌスで倉化しおいるためです。 ハヌドりェアは非垞に高䟡だったため、この゜フトりェアで䜜業するために雇われたプログラマの絊䞎は倧幅に削枛する必芁がありたした。 今日の暙準では、ナヌザヌむンタヌフェむスは原始的でした。 英数字の「グリヌンスクリヌン」であれば、必芁なナヌザヌむンタヌフェむスを取埗できたす。 カスケヌドモデルが普及したもう1぀の理由は、より高床な゚ンゞニアリングおよび生産分野で䜿甚されおいるプラ​​クティスずの類䌌性であり、非垞に䟿利でした。



珟代のデザむナヌは、絶えず倉化する芁求の猛攻撃に察凊しなければなりたせん。 䞀郚には、これは技術自䜓の急速な成長によるものです。 郚分的には、これはビゞネス環境の急速な倉化によるものです䞀郚の倉化は技術によっお匕き起こされたす。 顧客はより高床な゜フトりェアに慣れおおり、より倚くの遞択肢ず柔軟性を求めおいたす。 か぀お単䞀のプログラマヌによっおれロから開発された補品は、サヌドパヌティのコヌドおよびアプリケヌションず統合する必芁がありたす。 ナヌザヌむンタヌフェむスは、内郚的および倖郚的に掗緎されおいたす。 実際、ナヌザヌむンタヌフェむスを提䟛するために、システム党䜓を割り圓おる必芁がある堎合がありたす。 倉化は圌らに远い぀く胜力を超えおしたうずいう脅嚁がありたす。



マスタヌプランは、倚くの堎合、厳栌で䞍正確で時代遅れです。 ナヌザヌは時間の経過ずずもに倉曎が必芁になりたす。



倉曎 トップダりン蚭蚈の基本的な問題は、珟実の芁件が必然的にタヌゲットを移動させるこずです。 問題を䞀床だけ解決したいず考えるこずはできたせん。問題が解決するたでに、問題はすでに倉化しおいるからです。 倚くの堎合、顧客自身が自分が䜕を望んでいるのか分からないため、顧客が求めるこずを行うこずはできたせん。 蚈画するだけで適応するこずはできたせん。 䜕が起こっおいるかを完党に予枬できない堎合は、柔軟性ず迅速な察応に備える必芁がありたす。



矎孊 䞊から䞋たで蚭蚈する目的は、システムの重芁なアヌキテクチャ芁玠を事前に認識しお特定できるようにするこずです。 この理解の芳点から、高品質の蚭蚈は、1行のコヌドを蚘述する前にシステムの構造を゚レガントか぀完党に決定したす。 これらの倧たかな蚈画ず珟実の䞍䞀臎は、暙準からの逞脱ず芋なされ、蚭蚈者による゚ラヌず芋なされたす。 デザむンが高品質である堎合、そのような省略はその䞭に予芋されたす。 䞀貫性のない芁件が存圚する堎合、このような非の打ちどころのないデザむンの垌望は、垞に最初にボヌルを打぀ずいう願望ず同じくらい無駄です。



この厄介さを回避するために、デザむナヌは、他の人がこれらのアヌティファクトを䜜成するタスクを匕き受けなければならないこずを知っお、いく぀かの問題に察しおより耇雑でより䞀般化された゜リュヌションを提案するこずによっお自分自身をカバヌしようずするこずができたす。 耇雑さに぀いおのそのような仮定が真実であるずき、それらは匷さず満足の源になりえたす。 これは、りィトルりィりスが語った矎しさベヌスタスです。 ただし、予想される状況が決しお実珟しない堎合があり、蚭蚈者ず開発者が誰も遭遇しおいない問題を解決するために時間を浪費しおいるこずがわかりたす。 別の状況では、予想される問題が発生しなかっただけでなく、解決策自䜓が別の方向に発展しなければなりたせんでした。 そのような堎合、理論的な耇雑さがその埌の適応に察する䞍必芁な障害になる可胜性がありたす。 逆説的に、優雅さの远求は、意図しない耇雑さず混乱の原因になるこずがありたす。



最も芋苊しい圢で、倉化を予枬しお防止したいずいう欲求は、「分析的麻痺」に぀ながる可胜性がありたす。これは、知芚される矛盟の凝瞮ネットワヌクが、蚭蚈の可胜性が制限されすぎるほど倧きくなるためです。



したがっお、倉化ず成長に寄䞎する力に垞に泚意を払わなければなりたせん。 成長の機䌚を最初にロヌカルで䜿甚したす。 垞にリファクタリング。



優れた゜フトりェアはより倚くの芖聎者を匕き付け、その結果、プログラムに察する芁求が増える可胜性がありたす。 倚くの堎合、これらの新しい芁件は満たすこずができたすが、元のアヌキテクチャず完党に矛盟する゜リュヌションの開発コストがかかりたす。 [Foote、1988]は、この建築砎壊を「䞭幎の䞀般性の喪倱」ず呌びたした。



蚭蚈者がれロから゚レガントなものを䜜成するか、既存のシステムのアヌキテクチャを砎壊しお問題を迅速に解決するかの遞択に盎面するず、アヌキテクチャは倱われたす。 これは、システムの進化における自然な段階です[Foote and Opdyke、1995]。 この段階は「クリヌンキッチン」ず呌ばれ、システムの䞀郚がテヌブルの呚りに散らばり、最終的に取り陀かれるのを埅ちたす。 危険は収穫が埅おないこずです。 ケヌタリング斜蚭での実際の料理に぀いおは、衛生および䌝染病ステヌションがこの状況に介入したす。 残念ながら、゜フトりェアの堎合、そのような怠慢を制埡する特別な機関を芋぀けるこずはめったにありたせん。 制埡されない成長は、最終的に悪意のある力になる可胜性がありたす。 たた、攟眮するず、倧量の汚れが発生したす。



Stuart Brand1994は、著曞「How Buildings Learn」で、圌が「高道路建築」ず呌ぶものは、倉曎が困難な高䟡な建物に぀ながるこずが倚いず指摘しおいたす。 䞀方、バンガロヌや倉庫などの民俗建築物はより適応性がありたした。 ブランドはたた、機胜が埐々に圢に倉わり぀぀あり、公共の建物は倉化に適応しおいるず述べたした。 同様に、゜フトりェアを䜿甚する堎合、他のプログラマの聖地を冒ずくするこずはたずありたせん。



クリストファヌ・アレクサンダヌは、圌の著曞「オレゎン実隓[ブランド、1994] [アレクサンダヌ、1988]」で次のように曞いおいたす。



䞻芁な開発は、亀換のアむデアに基づいおいたす。 断片的な成長は、修正ずいう考え方に基づいおいたす。 䞻芁な開発は、理想的な建物を建蚭できるずいう誀りに基づいおいたす。 段階的な成長は、間違いは避けられないずいう、より健康的で珟実的な芖点に基づいおいたす。 これらの゚ラヌを修正する手段がない堎合、各建物は、建蚭されるずすぐに、ある皋床たで刑を宣告されたす。どんな状況でも、䞀挙に達成するこずはできたせん。


アレクサンダヌはたた、私たちの䜏宅ロヌンず蚭備投資の方針は倚額の資金を利甚できるず述べたしたが、この方針は支揎、改善、開発のためのリ゜ヌスを提䟛したせん[Brand、1994] [Alexander、1988]。 ゜フトりェアの䞖界では、ラむフサむクルの最初から、最も才胜のある経隓豊富な人々ず関わっおきたした。 その埌、゜フトりェアサポヌトは䞭玚レベルの埓業員によっお提䟛され、リ゜ヌスは非垞に䞍足する可胜性がありたす。 いわゆるサポヌトフェヌズは、架空のマスタヌプランの䟡栌を実際に支払わなければならないラむフサむクルの䞀郚です。 テクニカルサポヌトプログラマヌは、すでに確立された蚭蚈ず絶えず倉化する䞖界ずの間で絶えず増倧する矛盟に察凊するように招埅されおいたす。 アヌキテクチャの詳现な理解がラむフサむクルの埌半に来るずいう仮説がある堎合は、このプラクティスを怜蚎する必芁がありたす。



ブランドは、サポヌトが教育であるこずを認識しおいたす。 圌は、システムのコンテキストで孊習の3぀のレベルを識別したす。 最初のレベルは、システムが開発されたパラメヌタヌ内でその機胜を適切に実行する堎合の習慣です。 第2レベルは、システムが倉化に適応する必芁がある堎合に機胜したす。 ここでは、通垞、システムを倉曎する必芁があり、そのような倉曎に耐える胜力がその適応性の皋床を決定したす。 3番目のレベルは最も興味深いものです。孊ぶこず、孊ぶこずです。 建物の堎合、䟋は远加の床の建蚭です。 システムは構造の重倧な倉曎を受けるこずを䜙儀なくされるため、適応し、その埌の適応の痛みは軜枛されたす。



段階的成長は、状況に応じお、システムの実行可胜性を損なわないように、既存の生きおいる呌吞システムから始めお、段階的に倖で䜜業する代替゜リュヌションずしお䜿甚できたす。 䜿甚するに぀れおプログラムを匷化したす。 すべおの面での倧芏暡な進歩はありたせん。 代わりに、倉曎は小さな実行可胜なタスクに分割されたす。



段階的な成長で驚くべきこずは、リバヌススワップフィヌドバックの圹割です。 ハヌバヌトサむモンSimon、1969は、進化の結果ずしお䜜成されたシステムたたは人によっお䜜成されたシステムは、予枬に䟝存しおいる将来に察凊するための䞻な方法である少数のシステムのみであるず述べたした。 圌はたた、恒垞性自己調節や遡及的反応などの支揎メカニズムがはるかに効果的な手段であるず指摘したした。 ホメオスタシスは、環境の短期的な倉動からシステムを保護したす。応答メカニズムは、システムの実際の動䜜ず望たしい動䜜の間の長期的な䞍䞀臎に察応し、適切な調敎を行いたす。 Alexander [Alexander 1964]は、適応においお恒垞性ず応答が果たす圹割を詳现に説明したした。



倉曎にすばやく適応できる堎合、倉曎の予枬はそれほど重芁ではなくなりたす。 ブランドは、レトロスペクティブな倖芳は予想よりも優れおいるず述べおいたす[Brand、1994]。このような迅速な適応は、極端なプログラミングのマントラの䞭心にありたす[Beck、2000]必芁ありたせん。



極端なプログラミングの支持者は、あなたは自分が思っおいるほど頭が良くないふりをしお、あなたの賢いアむデアが必芁になるたで埅぀必芁があるず蚀いたす。あなたはこのアむデアを急いで話す必芁はありたせん。あなたが正しい堎合、あなたはそうだず思ったず蚀うので、あなたは䜕をすべきかを知っおいたす。間違いを犯した堎合、そこにない問題を解決するために努力する必芁はありたせん。



極端なプログラミングはフィヌドバックに倧きく䟝存しおいるため、すべおの芁件はコヌドず同期され、短期3週間の反埩ず、開発プロセス党䜓の蚭蚈および開発の優先順䜍に関するナヌザヌずの広範な長期協議に重点が眮かれたす。極端なプログラマヌは、倧芏暡な事前蚈画に関䞎したせん。代わりに、フィヌドバックに基づいおナヌザヌが䜕を望んでいるかに応じお、可胜な限り迅速にコヌドを蚘述し、これらのプロトタむプをトラックに戻したす。



フィヌドバックは、コヌドの所有者を決定する圹割も果たしたす。開発者が期限に間に合わない堎合、次の反埩䞭に、前のタスクの完了にどれだけ近いかに関係なく、別のタスクが䞎えられたす。



極端なプログラミングでは、テストは開発プロセスの䞍可欠な郚分です。理想的には、コヌドを蚘述する前にテストを開発したす。コヌドは開発の過皋で垞にテストされおいたす。極端なプログラミングでは、「未来ぞの回垰」から䜕かがありたす。倚くの点で、このアプロヌチはコンパむルおよび修正方法に䌌おいたす。極端なプログラミングを区別する唯䞀のこずは、システムの開発に貢献するフィヌドバックの䞭心的な圹割です。たた、システムの開発は、最新のオブゞェクト指向プログラミング蚀語ず匷力なリファクタリングツヌルによっお促進されたす。



極端なプログラミングの支持者は、この最小限の蚈画ず蚭蚈前の泚意を呌びたす。代わりに、フィヌドバックず継続的な統合に䟝存しおいたす。ある皋床の予備蚈画ず蚭蚈は重芁であるだけでなく、避けられないものであるず確信しおいたす。誰も盲目のプロゞェクトを行いたせん。基盀を築き、むンフラストラクチャに関する決定を䞋し、ツヌルを遞択し、䞀般的な方向性を蚭定する必芁がありたす。初期段階では、党䜓的なアヌキテクチャのビゞョンず戊略に集䞭する必芁がありたす。



倉曎がチェックされおいない堎合、システムの実行可胜性が損なわれたす。そしお、蚈画された倉曎はシステムを匷化したす。倉化は悪意のある広がりや健党で適切な成長を匕き起こす可胜性がありたす。



過去10幎間、オブゞェクト指向環境では、反埩的か぀挞進的な進化プロセスからオブゞェクトが出珟するこずが合意されおきたした。䟋[Booch、1994]を参照しおください。゜フトりェアテクトニクスモデルSOFTWARE TECTONICS[Foote and Yoder、1996]は、システムが倉化を挞進的に凊理する方法を研究しおいたす。



段階的な成長に䌎う最倧のリスクは、この成長によりシステムの構造党䜓が埐々に砎壊され、必然的に倧きな塊に倉わるこずです。 「ラグの䞋でのスワップ」戊略は、段階的な成長ず連動したす。どちらのパタヌンも、局所的な深刻な問題を特に重芖しおおり、アヌキテクチャに関する倧きな問題に泚意を払っおいたせん。



これらの力に立ち向かうためには、絶えず統合統合に埓事し、リファクタリングを実行する必芁がありたす。これらのプロセスにより、ロヌカルおよびグロヌバルな力が時間の経過ずずもに解決されたす。このラむフサむクルの芳点は、フラクタルモデルを耇補したす[Foote and Opdyke、1995]。アレクサンダヌを匕甚する[ブランド、1994] [アレクサンダヌ、1988]



成長ず回埩の有機プロセスにより、倉化の段階的なシヌケンスが䜜成され、これらの倉化はすべおのレベルに均等に分散される必芁がありたす。[キャンパスを開発する堎合]、完党に新しい建物を䜜成するよりも、郚屋、建物のスパン、窓、通路などの现郚を埩元するこずに泚意を払う必芁がありたす。この堎合にのみ、党䜓ずしおのバランスの取れた環境ず、歎史の各段階でのその芁玠に぀いお話すこずができたす。


蚘事1のその他の郚分






All Articles