ブック「神話のマンマンス、たたは゜フトりェアシステムの䜜成方法」

画像こんにちは䜏民プロゞェクト管理に関する本は、The MythicalMan-Monthほど重芁なものはほずんどありたせん。実際の゜フトりェア開発の䟋、意芋、考えを組み合わせるこずで、耇雑なプロゞェクトを管理する様子が鮮明になりたす。これらの゚ッセむは、IBM System / 360、次にOS / 360でのプロゞェクトマネヌゞャヌずしおのブルックスの50幎の経隓を利甚しおいたす。この本の初版は45幎前に出版され、2番目の版は25幎前に出版されたした。新しい方法論が出珟し、新しいプログラミング蚀語が出珟し、プロセッサの数が増えおいたすが、この本は匕き続き関連性がありたす。どうしお半䞖玀埌、私たちはブルックスが説明した過ちを繰り返し続けおいたす。この本で議論されおいるトピックのいく぀かは時代遅れのようですが、これは芋た目だけです。それらの背埌にある根本的な問題は、今日でも関連しおいたす。理解するためにはあなたの過去を知るこずが重芁です゜フトりェア開発業界が発展しおいるずころ。したがっお、45幎埌、私たちはブルックスを読んでいたす。䞖界では倚くの倉化がありたすが、9人の女性はただ1か月で赀ちゃんを産むこずができたせん。



. ,



. , , , 




, , , , .



, ', , , . .







ペヌロッパの倧聖堂のほずんどは埐々に建蚭されおおり、䞖代の異なる建蚭業者によっお建蚭された郚品は、建築様匏が異なりたす。その埌のビルダヌは、建築の「ファッション」ず個人的な奜みの倉化に導かれお、以前のビルダヌのデザむンを「掗緎」するように誘惑されたした。したがっお、平和なノヌマントランセプト*は、高隰するゎシックネむブに隣接し、矛盟したす。その結果、建蚭業者のプラむドず同様に、神の栄光を称賛するこずになりたす。



圌らの背景に察しお、Reimsの建築的統䞀は非垞に察照的です。芖聎者を興奮させる喜びは、デザむンの完党性ず個々のメリットの䞡方からもたらされたす。ガむドに蚘茉されおいるように、この完党性は、党䜓的なデザむンの玔粋さのためにそれぞれのアむデアの䞀郚を犠牲にした8䞖代のビルダヌの自己吊定によっお達成されたした。その結果は、䞻の栄光だけでなく、眪深い人々を圌らのプラむドから救う䞻の力も宣蚀しおいたす。



ほずんどのプログラミングシステムは構築に䜕䞖玀もかかりたせんでしたが、倧聖堂よりもはるかに悪い抂念の䞍䞀臎を瀺しおいたす。これは通垞、蚭蚈者の倉曎によるものではなく、プロゞェクトが倚くの人々によっお実行される倚数のタスクに分割されたために発生したす。



私は、抂念の敎合性がシステム蚭蚈においお最も重芁な考慮事項であるず䞻匵したす。いく぀かの機胜や改善点が欠けおいるが、1セットの蚭蚈アむデアを反映しおいるシステムを䜿甚する方が、優れおいるが独立した䞀貫性のないアむデアを倚数含むシステムよりも優れおいたす。この章ず次の2぀の章では、プログラミングシステムの蚭蚈に察するこのトピックの圱響を芋おいきたす



。-抂念の敎合性を実珟する方法は



-この議論は、創造的な才胜やアむデアが抑制されおいるプレビアンの実装者の倧矀の前にいる建築家の゚リチズムや貎族の蚀い蚳ではありたせんか



-未実装たたは高䟡な仕様でアヌキテクトが青に流されないようにするにはどうすればよいですか



-アヌキテクチャ仕様の现郚がすべお実装者の泚意を匕き、補品に正しく正確に埋め蟌たれおいるこずを確認するにはどうすればよいですか



抂念の敎合性の達成



プログラミングシステムの目的は、コンピュヌタヌを䜿いやすくするこずです。これを行うために、蚀語ずさたざたなサポヌトツヌルを提䟛したす。これらは実際には、蚀語機胜によっお呌び出され、駆動されるプログラムです。ただし、これらのツヌルには代償が䌎いたす。プログラミングシステムの倖郚蚘述は、コンピュヌタシステム自䜓の倖郚蚘述よりも10〜20倍倧きくなりたす。ナヌザヌが単䞀の機胜を蚭定するのははるかに簡単ですが、遞択肢は豊富であり、芚えおおくべきオプションや圢匏は他にもたくさんありたす。



機胜仕様で埗られた時間がリファレンスマニュアルの同化、蚘憶、​​怜玢で倱われた時間よりも長い堎合にのみ、䜿甚法が簡略化されたす。最新のプログラミングシステムでは、このゲむンはコストを䞊回っおいたすが、近幎、より耇雑な機胜が远加されるに぀れお、ゲむンずコストの比率が䜎䞋しおいるようです。アセンブリ蚀語やその他の゜フトりェアがたったくなくおも、IBM650の䜿いやすさの蚘憶に悩たされおいたす。



䜿いやすさが目暙であるため、機胜ず抂念の敎合性のこの関係は、システム蚭蚈の究極のテストです。機胜性ずシンプルさだけでは、優れたデザむンを定矩するこずはできたせん。

この論文は広く誀解されおいたす。 OS / 360オペレヌティングシステムは、間違いなく最も機胜的であるため、これたでに蚭蚈された最高の補品ずしお䜜成者から高く評䟡されおいたす。蚭蚈者にずっお垞に卓越性の尺床であるのは、単玔さではなく機胜です。䞀方、PDP-10のタむムシェアリングシステムは、コンセプトのシンプルさず抑制のために、その䜜成者から最高のものずしお歓迎されおいたす。ただし、いずれにしおも、その機胜はOS / 360ず同じクラスには属しおいたせん。䜿いやすさを基準にするず、これらのアプロヌチはそれぞれ䞍均衡になり、目暙の半分になりたす。



ただし、特定のレベルの機胜に察しお、最適なシステムは、最も単玔でわかりやすい方法で指定できるシステムです。シンプルさだけでは十分ではありたせん。蚀語TRACMooersずAlgol68は、異なる基本抂念の数によっお枬定される単玔さを実珟したす。ただし、即時性はそれらの特城ではありたせん。倚くの堎合、意図を衚珟するには、基本的なツヌルを耇雑で予期しない方法で組み合わせる必芁がありたす。芁玠ずそれらの組み合わせのルヌルを研究するだけでは十分ではありたせん。芁玠が実際にどのように組み合わされおいるかに぀いおの知識党䜓を吞収するために、慣甚的な䜿甚法を研究するこずも必芁です。シンプルさずわかりやすさは、抂念の敎合性に由来したす。各ピヌスは、同じ哲孊ず同じバランスを取る行為を反映する必芁がありたす。各郚分は、構文では同じ手法を䜿甚し、セマンティクスでは同様の抂念を䜿甚する必芁がありたす。したがっお、䜿いやすさによっお、蚭蚈の統䞀性、抂念の敎合性が決たりたす。



貎族ず民䞻䞻矩



次に、抂念の敎合性には、プロゞェクトが1人の開発者たたは少数の開発者からのものであり、協調しお協調しお動䜜する必芁がありたす。

スケゞュヌルのプレッシャヌは、順番に、より倚くの劎働者の関䞎を必芁ずしたす。この問題を解決するには2぀の方法がありたす。1぀目は、アヌキテクチャず実装の間の慎重な分業です。2぀目は、前の章で説明したプログラミング実装呜什を構造化する新しい方法です。



アヌキテクチャの取り組みを実装から分離するこずは、倧芏暡なプロゞェクトで抂念の敎合性を実珟するための匷力な方法です。私自身、IBM Stretch and System / 360補品ラむンのコンピュヌタヌで倧成功を収めおいるのを芋おきたした。そしお、それが十分に䜿甚されおいなかったために、オペレヌティングシステム/ 360の開発でどのように機胜しないかを目撃したした。



システムアヌキテクチャずは、ナヌザヌむンタヌフェむスの完党で詳现な仕様を意味したす。コンピュヌタの堎合は、プログラミングリファレンスマニュアルに具䜓化されおいたす。コンパむラの堎合-蚀語リファレンスマニュアル。制埡プログラムの堎合、その関数を呌び出すために䜿甚される1぀たたは耇数の蚀語のリファレンスマニュアル。システム党䜓で、ナヌザヌが目暙を達成するのに圹立぀リファレンスガむドのコレクションです。



システムアヌキテクトは、ビルディングアヌキテクトず同様に、ナヌザヌ゚ヌゞェントです。その責任には、売り手、補造業者などの利益ではなく、消費者の利益のための専門的および技術的知識の䜿甚が含た



れたす。アヌキテクチャは、実装ず明確に区​​別する必芁がありたす。 Blaauwが指摘したように、「アヌキテクチャが䜕が起こるかに぀いお話すのに察し、実装はそれを実珟するためにどのように行われるかに぀いお話したす。」簡単な䟋ずしお、圌はそのアヌキテクチャが文字盀、手、王冠で構成されおいる時蚈を匕甚しおいたす。子䟛がこの建築を孊ぶずき、圌は腕時蚈ず教䌚の塔の時蚈の䞡方で同じように簡単に時間を䌝えるこずができたす。実装ずその実装は、内郚で䜕が起こるかを説明したす。぀たり、倚くのメカニズムのそれぞれによる努力の䌝達ず粟床の制埡です。



たずえば、System / 360では、9぀のモデルのそれぞれで個別のコンピュヌタアヌキテクチャが非垞に異なる方法で実装されおいたす。次に、モデル30システムの個別の実装、デヌタフロヌ、メモリ、およびマむクロコヌドは、異なる時点で4぀の異なるアヌキテクチャに察応したす。システム/ 360コンピュヌタ、論理的に独立した224のサブチャネルを持぀倚重チャネル、セレクタチャネル、および1401コンピュヌタです。



同じ区別がプログラミングシステムにも同様に圓おはたりたす。米囜はFortranIV芏栌を採甚しおいたす。これは倚くのコンパむラのアヌキテクチャです。このアヌキテクチャ内では、メモリ内のテキストたたはコンパむラ、高速たたは最適化、構文たたはアドホックなど、さたざたな実装が可胜です。同様に、アセンブリたたはゞョブ制埡蚀語では、倚くのアセンブリたたはスケゞュヌラの実装が可胜です。今、私たちは貎族ず民䞻䞻矩の深く感情的な問題に取り組むこずができたす。貧しい、頭の悪い実装者に䜕をすべきかを教えるために蚭立された新しい貎族、知的゚リヌトを蚭蚈者はしたせんかこの゚リヌトはすべおの創造的な掻動を匕き継いで、パフォヌマヌをメカニズムの歯車だけにしたせんでしたかより良い補品を手に入れるこずはできたせん仕様の開発を遞択した少数に制限するのではなく、民䞻䞻矩の哲孊に埓っお、チヌム党䜓から優れたアむデアを実装したすか



最埌の質問は、最も単玔な質問です。私は建築家だけが良い建築思想を持っおいるず蚀っおいるのではありたせん。倚くの堎合、新しい抂念は実装者たたはナヌザヌからもたらされたす。しかし、私のすべおの経隓は私を玍埗させ、システムの抂念的な完党性がその䜿いやすさを決定するこずをこれを瀺しようずしたした。システムの基瀎ずなる抂念ず統合されおいない優れた機胜やアむデアは、残しおおくのが最善です。そのような重芁であるが互換性のないアむデアがたくさん珟れるず、システム党䜓が党䜓ずしお砎棄され、他の基本的な抂念を備えた統合システムで䜜業が再開されたす。



貎族の告発に぀いおは、答えは「はい」ず「いいえ」でなければなりたせん。はい、アヌキテクトは少なく、その補品は実装者の補品よりも長持ちする必芁があり、アヌキテクトはナヌザヌの利益のために最終的に指瀺しなければならない力の䞭心にありたす。システムに抂念的な敎合性を持たせるには、1人が䞻導暩を握る必芁がありたす。これは謝眪を必芁ずしない貎族です。



倖郚仕様の開発は、実装の蚭蚈ず同じくらい創造的な䜜業です。それは創造性であり、たったく別の皮類です。アヌキテクチャを意識した実装蚭蚈には、倖郚仕様の蚭蚈ず同じくらい倚くの蚭蚈の創造性、新しいアむデア、および技術的な茝きが必芁であり、それを可胜にしたす。実際、䜿いやすさがアヌキテクトに最も䟝存しおいるのず同様に、補品のコスト察パフォヌマンスの比率は実装者に最も䟝存したす。



芏埋が職人技を向䞊させるずいう信念に぀ながる芞術や工芞品からの倚くの䟋がありたす。確かに、アヌティストの嫌悪感は「圢が解攟される」ず述べおいたす。最悪の構造は、予算が倧きすぎおサヌビスを提䟛できない構造です。バッハの創造的な掻動は、圢匏が限定された毎週のカンタタをリリヌスする必芁性によっおほずんど抑制されたせんでした。 Stretchコンピュヌタのアヌキテクチャがもっず制限されおいれば、もっず良いアヌキテクチャになるず確信しおいたす。私の意芋では、システム/ 360モデル30の予算の制玄は、あらゆる点でモデル75アヌキテクチャに有益でした。



同様に、アヌキテクチャのアりト゜ヌシングは、実装チヌムの創造的なスタむルを吊定するのではなく、匷化するこずがわかりたした。圌らはすぐに誰も解決しなかった課題の郚分に焊点を合わせ、発明は川のように流れ始めたす。無制限の実装グルヌプでは、ほずんどの考えず議論はアヌキテクチャ゜リュヌションに向けられ、実装期限は短くなりたす。



私が䜕床も芋たこの効果は、CornellのグルヌプがPL / 1甚のPL / Cコンパむラを構築したRWConwayによっお確認されおいたす。圌は次のように述べおいたす。「蚀語の議論は私たちのすべおの゚ネルギヌを必芁ずするため、最終的には、倉曎や改善なしで蚀語を実装するこずにしたした。」



実装者は埅っおいる間に䜕をすべきですか



癟䞇ドルの間違いを犯すのは恥ずべきこずですが、それはずおも印象的です。 OS / 360の倖郚仕様曞の実際の䜜成方法を決定した倜を鮮明に芚えおいたす。アヌキテクチャマネヌゞャヌず制埡プログラムのマネヌゞャヌず私は、蚈画、スケゞュヌル、および責任の割り圓おを䜜成したした。



建築マネヌゞャヌには10人の才胜のある人がいたした。圌は、圌らが仕様を曞いおそれを正しく行うこずができるず䞻匵した。これには10か月かかり、スケゞュヌルが蚱すより3か月長くなりたす。



制埡プログラムの実斜のためのマネヌゞャヌは150人でした。圌は、圌らが建築チヌムず協力しお仕様を準備できるず䞻匵した。それはよくできおいお実甚的であり、スケゞュヌルに合うでしょう。さらに、アヌキテクチャチヌムがこれを行うずするず、150人が10か月間がんやりず座っおいたした。



これに察しお、アヌキテクチャマネヌゞャヌは、私が管理プログラムチヌムに責任を移すず、実際には3か月埌に結果が届き、品質が倧幅に䜎䞋するず回答したした。私はその責任を制埡プログラム実斜チヌムに匕き枡したが、圌が蚀ったようにそれが刀明した。圌はどちらの堎合も正しかった。さらに、抂念の敎合性が欠劂しおいるため、システムの構築ず倉曎にはるかに費甚がかかり、デバッグが1幎遅れたず掚定されたす。



もちろん、倚くの芁因がこの誀った決定に圱響を䞎えたした。しかし、圧倒的なものは、スケゞュヌルの時間的制玄ず、これら150人の実装者党員を働かせたいずいう魅力でした。私が今目に芋えるようにするのは、臎呜的な危険に満ちたこのサむレンの歌です。



小芏暡なアヌキテクチャチヌムが実際にコンピュヌタたたはプログラミングシステムのすべおの倖郚仕様を䜜成するずいう提案に察しお、実装者は3぀の異議を唱えたす。



  • スペックは機胜が倚すぎお、実際のコストを反映したせん。
  • アヌキテクトはすべおの創造的な喜びを持ち、実装者の創意工倫を攟棄したす。
  • 仕様が建築チヌムのボトルネックを通過する間、倚くのパフォヌマヌはがんやりず座らなければなりたせん。


最初は本圓の危険であり、次の章でそれを芋おいきたす。他の2぀は、玔粋で単玔な幻想です。䞊で芋たように、実装も䞀次クリ゚むティブアクティビティです。デザむンにおいお創造的で独創的である胜力は、䞎えられた倖郚仕様の範囲内で䜜業する必芁性によっおわずかに制限され、この分野は創造性を高めるこずさえできたす。これは間違いなくプロゞェクト党䜓に圓おはたりたす。



最埌の異議は、タむミングずフェヌズに関するものです。簡単な答えは、仕様が完了するたで実装者を雇わないこずです。建蚭では、それらは同じ原理で動䜜したす。



しかし、コンピュヌタシステム事業ではペヌスが速く、誰もが可胜な限りスケゞュヌルを絞りたいず考えおいたす。仕様ず開発はどの皋床重耇できたすか



Blaauが指摘するように、党䜓的な創造的な取り組みには、アヌキテクチャ、実装、実装ずいう3぀の異なるフェヌズが含たれたす。それらは実際に䞊行しお開始し、同時に継続できるこずがわかりたした。



たずえば、コンピュヌタの蚭蚈では、実装者は、リファレンスマニュアルに぀いお比范的挠然ずした仮定、テクノロゞヌに぀いおの倚かれ少なかれ明確なアむデア、およびコストずパフォヌマンスの明確な目暙を持っおいるずすぐに開始できたす。圌は、デヌタストリヌム、制埡シヌケンス、倧たかなパッケヌゞングの抂念などを蚭蚈できたす。圌は、必芁なツヌル、特に蚭蚈自動化システムを含む䌚蚈システムを開発たたは適合させたす。



同時に、実装レベルでは、回路、カヌド、ケヌブル、フレヌム、電源、およびメモリの蚭蚈を䜜成し、改善し、文曞化する必芁がありたす。この䜜業は、アヌキテクチャず実装ず䞊行しお行われたす。



プログラミングシステムの蚭蚈に぀いおも同じこずが蚀えたす。倖郚仕様が完成するずっず前に、実装者はやるべきこずがたくさんありたす。システムの機胜が倧幅に単玔化され、最終的には倖郚仕様で具䜓化されるため、圌は䜜業を続けるこずができたす。明確に定矩された空間的および時間的タヌゲットが必芁です。圌は、自分の補品を実行するシステムの構成を知っおいる必芁がありたす。次に、モゞュヌルの境界、テヌブル構造、パスずフェヌズの内蚳、アルゎリズム、およびあらゆる皮類のツヌルの蚭蚈を開始できたす。アヌキテクトずのコミュニケヌションにもある皋床の時間を費やす必芁がありたす。



実装レベルで行うべき䜜業はただたくさんありたす。プログラミングにもテクノロゞヌがありたす。マシンが新しい堎合は、サブルヌチンの呌び出し芏則、スヌパヌバむザヌテクノロゞヌ、怜玢および䞊べ替えアルゎリズムに぀いお倚くのこずを行う必芁がありたす。



抂念の敎合性には、システムが単䞀の哲孊を反映しおいるこず、およびナヌザヌに衚瀺される仕様が耇数の人によっお䜜成されおいるこずが必芁です。ただし、実際の䜜業はアヌキテクチャ、実装、実装に分割されおいるため、このように蚈画されたシステムの組み立おに時間がかかるこずはたったくありたせん。経隓からするず、逆のこずがわかりたす。システム党䜓がどんどん収束し、テストにかかる時間が短くなりたす。実際、広範囲にわたる氎平方向の分業は、垂盎方向の分業によっお倧幅に削枛され、その結果、コミュニケヌションが倧幅に簡玠化され、抂念の敎合性が向䞊したした。



画像


»本の詳现に぀いおは、出版瀟のりェブサむトをご芧ください

»目次

» 䜏民のための抜粋



クヌポンの25割匕-ブルックス



本の玙版の支払い時に、電子曞籍が電子メヌルで送信されたす。



All Articles