okuzawatsの日記

Android / Kotlin / GitHub Actions Enthusiast 🤖

巨大な泥団子

profile

書いている人 モバイルアプリケーションアーキテクト(Android)として働いています。モバイルアプリケーションのアーキテクチャ、自動テスト、CI/CDに興味があります。もっと詳しく

巨大な泥団子(Big Ball of Mud) は、Brian Foote、Joseph Yoderによって書かれた1997年の論文のタイトルです。「進化的アーキテクチャ 絶え間ない変化を支える」「ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ」など、多数の書籍でしばしば参照されます。

この論文の中では、論文と同名の「巨大な泥団子」というソフトウェアの状態について語られています。「巨大な泥団子」とは、構造を持たず、要素間が密に結合し、ソフトウェア全体がひとつの大きな塊となっている状態です。すなわち、「認識できるアーキテクチャが不在の状態」(Mark他 (2022))と言えます。ソフトウェアのエントロピーが最大化されている状態といえるかもしれません。

「巨大な泥団子」状態のソフトウェアは、構造がないため、一般に変更が困難です。変更が困難なため、ソフトウェアがスケールしません。「継続的デリバリーのソフトウェア工学」から引用します。

ある箇所を書き換えると、コードのほかの部分に影響が出るような書き換えにくいコードがあります。システムのほとんど全部の仕組みを理解できるほどの頭脳がないと書き替えられないようなコードもあります。これではスケーラブルなアプローチになりません。(David(2022), P.247)

物理的な、泥団子について考えます。泥団子は、構造を持ちません。少なくともマクロな視点から認識できる構造はありません。また、要素同士が結びついており、ひと塊の物体となっています。

ソフトウェアが「巨大な泥団子」となっている時も、まさしくソフトウェアはこの泥団子のような状態になっていると言えます。「巨大な泥団子」という言葉は、このようなソフトウェアの状態を表す的確な比喩であると思います。

Reference

  1. Brian Foote, Joseph Yoder, (1997), Big Ball of Mud, retrieved from http://www.laputan.org/mud/mud.html
  2. Neal Ford, Rebecca Parsons, Patrick Kua, (2018), 進化的アーキテクチャ 絶え間ない変化を支える, オライリー・ジャパン
  3. Mark Richards, Neal Ford, (2022), ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ, オライリー・ジャパン
  4. David Farley, (2022), 継続的デリバリーのソフトウェア工学, 日経BP

Related