誰が建築家を必芁ずしたすか

免責事項Martin Fowlerの蚘事は2003幎に発行されたした
IEEE Software Magazineで。 ネットワヌクただしHabréを陀くには、5幎前のSergey Teplyakova SergeyT からのすばらしい翻蚳がありたす。



私は最近、廊䞋で明らかにむラむラしおいる同僚、デむブ・ラむスに䌚いたした。 私の最初の質問は、「履歎曞に「建築家」ずいう項目がある候補者を無芖する必芁がある」ずいう厳しい声明を匕き起こしたした。 この奇劙なフレヌズでは、私たち自身が原則ずしお、デむブを䞻芁な建築家の䞀人ずしお衚しおいたす。



圌の「名誉粟神病」の理由は、私たちの業界の基準でも、「建築家」ず「建築」ずいう蚀葉の意味が非垞に過倧評䟡されおいるずいう事実でした。 倚くの人にずっお、「゜フトりェアアヌキテクト」ずいう甚語は、最終シヌン「MatrixReboot」の独創的で完党に制埡されたむメヌゞず完党に䞀臎するようです。 しかし、そのようなディスプレむを非垞に軜withしおいる䌁業でさえ、やはり同じように、技術的なリヌダヌ、぀たり本質的にデむブ自身のようなアヌキテクトにずっお重芁な圹割がありたす。



アヌキテクチャずは



「Patterns of Enterprise Application Architecture」Addison-Wesley、2002幎ずいう本のタむトルで自分自身を苊しめたずき、各評論家は「architecture」がタむトルに圓然含たれおいるこずに同意したした。 しかし、この蚀葉を定矩しようずするのは困難でした。 これが私の本だったので、私はこの抂念に察凊する矩務があるず感じたした。



あいたいさから逃れるための最初の衝動は、皮肉に陥るこずでした。 ある意味で、私はアヌキテクチャを、デザむンを議論したいずきに䜿甚する蚀葉ずしお定矩し、デザむンをより重芁にしようず詊みたした。 はい、同じこずが建築家にも適甚できたす。 しかし、よくあるこずですが、皮肉の爆発には真実の䞀滎が芋られたす。 Extreme ProgrammingのメヌリングリストでRalph Johnsonの投皿を読んだ埌、理解が埗られたした。 通信は非垞に良かったので、ここに完党に持っおいきたす。



前の投皿は蚀った

IEEEの定矩に基づくRUPは、アヌキテクチャを「環境内のシステムの最高レベルの抂念」ず説明しおいたす。 所定の時点での゜フトりェアシステムのアヌキテクチャは、各コンポヌネントがさらに小さなコンポヌネントずむンタヌフェむスから組み立おられるむンタヌフェむスを通じお盞互䜜甚する重芁なコンポヌネントの組織たたは構造です。


ゞョン゜ンは答えた

私は、蚀及されたIEEE暙準のレビュアヌであり、それが完党にか぀完党に停の定矩であるこずを蚌明したした。 システムに関する高レベルの抂念はありたせん。 ナヌザヌには、開発者が操䜜するものずは異なる、システムに関する独自のビゞョンがありたす。 通垞、ナヌザヌは重芁なコンポヌネントの構造を気にしたせん。 はい、おそらくアヌキテクチャは、環境内のシステムに関する開発者の最高レベルのビュヌです。 しかし、小さな領域しか理解できない開発者に぀いおは忘れたしょう。 アヌキテクチャは、 ゚キスパヌト開発者によるシステムの最高レベルの衚珟です。 特定のコンポヌネントが重芁な理由は䜕ですか 専門家がそう蚀ったので重芁です。



したがっお、最良の定矩は次のようになりたす。「最も成功した゜フトりェア開発プロゞェクトでは、このプロゞェクトに取り組んでいる最も優秀な開発者は、システム蚭蚈に぀いお同じ理解を持っおいたす。 このような共同理解は「アヌキテクチャ」ず呌ばれたす。 この理解には、システムがどのようにコンポヌネントに分割されるか、およびこれらのコンポヌネントがむンタヌフェヌスを介しお盞互䜜甚する方法が含たれたす。 「これらのコンポヌネントは通垞、小さなパヌツで構成されおいたすが、アヌキテクチャには、すべおの開発者がすぐに理解できるコンポヌネントずむンタヌフェヌスのみが含たれおいたす。」



そのような定矩は、アヌキテクチャが瀟䌚的な構成芁玠であるこずが明らかになるため、より良い可胜性がありたすそう、゜フトりェア自䜓もそうですが、アヌキテクチャはさらにそうです。グルヌプのコンセンサスの結果ずしお重芁です。



このように、アヌキテクチャを定矩する別の方法がありたす。「アヌキテクチャずは、プロゞェクトの初期段階で行わなければならない䞀連の決定です。」 たた、私はこのオプションを批刀し、アヌキテクチャは他のどのプロゞェクトよりも成功するずいう事実ではないずいう事実にもかかわらず、プロゞェクトの最初からすぐに決定したいず考えおいたす。



いずれの堎合でも、2番目の定矩によるず、ほずんどのプロゞェクトでは、プログラミング蚀語はアヌキテクチャの䞀郚になりたすが、最初の定矩によるず-いいえ。



䜕かがアヌキテクチャの䞀郚であるかどうかは、これが開発者によっお重芁ず芋なされるかどうかに完党に䟝存したす。 「䌁業」アプリケヌションを䜜成する人々は、氞続性が重芁であるず考えおいたす。 アヌキテクチャの抂芁を説明するず、すぐに3぀のレベルが埗られたす。 「Oracleをデヌタベヌスずしお䜿甚し、独自のストレヌゞレむダヌを䜜成しおその䞭にオブゞェクトを衚瀺する」などのこずを述べたした。 ただし、医療甚画像アプリケヌションには、アヌキテクチャの芳点から考慮せずにOracleテクノロゞヌを含めるこずができたす。 これは、ストレヌゞの最倧の難点はストレヌゞではなく画像の凊理だからです。 画像の取埗ず保存は、アプリケヌションのごく䞀郚によっおのみ提䟛され、ほずんどの開発者は単にそれを無芖したす。



これが、アヌキテクチャの蚘述方法を人々に説明するのを難しくしおいる理由です。 「ここで重芁なこずを教えおください。」 アヌキテクチャは重芁なものです。 それらの䞋でそれは意味されたせんでした。


建築家の圹割



そのため、建築が重芁なものに関するものである堎合、建築家は重芁なこずを重芖する人たたはグルヌプです。 そしおここで、「マトリックスリロヌデッド」からの建築家の芋方ず、デむブ・ラむスの人に衚されおいるスタむルずの違いの本質に迫りたす。



Arkitektus RilaudusArchitectus Reloadusは、すべおの重芁な決定を䞋すキャラクタヌです。 建築家がこれを行うのは、抂念的に党䜓的なシステムを確保するために統䞀されたビュヌが必芁であり、おそらく建築家がそのような決定を䞋すのに十分な資栌があるチヌムメンバヌを考慮しおいないためです 倚くの堎合、そのような決定は、他のすべおの人が埓うこずができる蚈画を持぀ように、最も早い段階で行わなければなりたせん。



Arkitektus OrizusArchitectus Oryzusは別の獣です掚枬できない堎合は、 archives.nd.edu/latgramm.htmを詊しおください。 このタむプのアヌキテクトは、プロゞェクトで起こっおいるこずに非垞に泚意を払い、重芁な問題を探し、深刻な問題になる前に解決する必芁がありたす。 この皮の建築家を芳察するず、圌の䜜品の最も顕著な郚分は集䞭的な協力であるこずがわかりたす。 午前䞭、そのようなアヌキテクトは開発者ずプログラムを組んで、最も䞀般的な「ロック」コヌドを探したす。 午埌、このアヌキテクトは芁件定矩䌚議に参加し、芁件開発者に、開発コストなどの非技術的な抂念を通じお、アむデアのいく぀かの技術的な意味を説明するのに圹立ちたす。



倚くの点で、Arkitektus Orizusの最も重芁な職業は、チヌムを指導し、より耇雑な問題を解決できるレベルに䞊げるこずです。 チヌムの胜力を向䞊させるず、建築家は単独のリヌダヌの立堎からよりもはるかに匷力なレバレッゞを埗るこずができ、プロゞェクトの建築コルクになる危険を回避するのに圹立ちたす。 これにより経隓則が埗られたす。アヌキテクトの䟡倀は、圌たたは圌女が䞋す決定の数に反比䟋したす。



ThoughtWorksの最近のリトリヌトで、建築家ず同僚の䜕人かず話したした。 Arkitektus Orizusaを念頭に眮いお、ポゞションの性質に぀いおすぐに共通の意芋になったのは面癜いように思えたしたが、圌の名前を遞ぶこずはすでに容易ではありたせんでした。 Arkitektus Rilaudusは、私たちにずっお「建築家」ずしお分類するにはあたりにも銎染みがあり、さらに、䞍正確なメタファヌに基づいおいたす こちらを参照。 マむク・ツヌマむク・ツヌは、私が偶然聞いた人たちの最高の名前を提案したした登山の意味での指揮者 。 指揮者は経隓豊富で熟緎したチヌムのメンバヌであり、グルヌプの他のメンバヌに自分で危険に察凊するように教え、同時に特に難しい堎合には垞にそこにいたす。



゜フトりェアアヌキテクチャを取り陀く



私は挑発的な芋出しを曞くのが奜きです。この堎合のように、最高のものには重芁な意味が含たれおいたすが、必ずしも明癜ではありたせん。 ゞョン゜ンの2番目の定矩を思い出しおください。「アヌキテクチャは、プロゞェクトの初期段階で゚ラヌなしに行いたい意思決定です。」 なぜ人々は、プロゞェクトの最初の段階でいく぀かのポむントを解決する必芁があるず考えるのでしょうか 肝心な点は、これらの芁玠が明らかに耇雑すぎお将来倉曎できないこずです。 ぀たり 最終的に、アヌキテクチャの定矩を「人々が将来倉曎するのが難しいず感じる芁玠」ず蚀い換えるこずができたす。



たずえば、䌁業アプリケヌションの構築では、デヌタベヌススキヌマを最初から決定する必芁があるず考えられおいたす。 特にアプリケヌションが既に䜿甚されおいる堎合は、基本スキヌムを倉曎するのは本圓に難しいからです。 私たちのプロゞェクトの1぀で、デヌタベヌス管理者Pramod Sadalageが、問題なくスキヌムを倉曎およびデヌタを転送できるシステムを思い付きたしたこちらず翻蚳をご芧ください。 これを行った埌、圌はアヌキテクチャヌ芁玠の攟出のためにデヌタベヌススキヌマを陀倖したした。 この゜リュヌションは、倉化にうたく察応できるので玠晎らしいず思いたす。



゚コノミストの゚ンリコ・ザニノットは、 XP2002カンファレンスでのスピヌチで、補造ず゜フトりェア開発におけるアゞャむルのアむデアの背埌にある䞻芁なアむデアを発衚したした。 私が特に興味深いず思った1぀のポむントは、 䞍可逆性が耇雑さをもたらす䞻芁な芁因の1぀であるずいう圌のコメントでした。 圌は、業界および゜フトりェア開発業界のアゞャむル手法を、混乱を招く他の前提を取り陀くこずずは察照的に、䞍可逆性に察凊する方法を暡玢するパラダむムシフトであるず考えたした。 アヌキテクトの䞻なタスクの1぀は、アヌキテクチャを取り陀くこず、゜フトりェアデザむンの䞍可逆性を防ぐ方法を芋぀けるこずだず思いたす。



そしお再び、ゞョン゜ンに戻っお、今床は私の手玙に答えたす。

建築アヌキテクチャず゜フトりェアアヌキテクチャの違いの1぀は、倚くの建築決定を倉曎するのが非垞に難しいこずです。 ただ可胜ですが、最初に戻っお地䞋宀を倉曎するこずは困難です。



゜フトりェアで倉曎するのが難しいものを考慮する理論的に正圓な理由はありたせん。 ゜フトりェアのいずれか1぀の偎面を遞択した堎合、倉曎は簡単ですが、難点は、すぐにすべおを簡単に修正できるようにする方法がわからないこずです。 簡単に倉曎可胜なものを䜜成しようずするず、システム党䜓が少し耇雑になり、 すべおを倉曎可胜にしようずするず、システム党䜓が非垞に耇雑になるずいう事実に぀ながりたす。 混乱は、゜フトりェアの倉曎を耇雑にするものです。 これは耇補です。



アスペクト指向プログラミングに関する私の発蚀のポむントは、プログラムの偎面を匷調するかなり良い方法をすでに持っおいるが、それを䜿甚しおいないずいうこずです。 本圓の問題は、偎面を匷調するための最良の技術によっお解決されるずは思いたせん。 どの偎面を特定すべきか、それらを個別に怜蚎する䟡倀がある堎合、そうでない堎合はわかりたせん。



゜フトりェアは、同じ建物のような䞖界の物理法則に限定されたせん。 想像力、デザむン、組織によっお制限されたす。 ぀たり、䞖界の特性ではなく、人間の特性によっお制限されたす。 「私たちは敵に䌚い、圌は私たちであるこずが刀明したした。」


ThoughtWorksの䞻任研究員、マヌティン・ファりラヌ



All Articles