okuzawatsの日記

Android / Kotlin / GitHub Actions Enthusiast 🤖

巨大な泥団子

目次

巨大な泥団子(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

#Design

書いている人 😎

profile

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。

👉 もっと詳しく

著書 ✍

Android クリーンアーキテクチャ ヒッチハイク・ガイド 🧳

Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。

販売サイトへ 🏃

Android ユニットテスト ヒッチハイク・ガイド 🧳

Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。

販売サイトへ 🏃

Android MVVMアーキテクチャ入門 🛠

Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。

販売サイトへ 🏃

関連記事 👀

お問い合わせ✉️

Androidアプリ開発、特にレガシープロジェクトに関するご相談はこちらまで📨

お名前

メールアドレス

お問い合わせ内容