エンタープライズシステム開発のアンチパターン「スーパーセット地獄」
「スーパーセット地獄」というのは、ドイツの企業AOK Systemsのアーキテクト Thorsten Franz氏が、ブログ「Notes from the Ivory Tower Part 5: Enterprise Software Anti-Pattern "Superset Hell"」で示している、やってはいけないエンタープライズシステム開発としてのアンチパターンの1つ。
このスーパーセット地獄に堕ちると、ソースコードはIF文のジャングルとなり、構造は複雑になりすぎて説明できなくなり、なぜそうなっているのかと関係者に聞くと「歴史的経緯によってこうなっている」という答えが返ってきて、メンテナンスが困難になる。という恐ろしいものだと、Franz氏は解説しています。
こういう状況、いろんなところで発生してはいませんか?
Franz氏のブログを参考に、なぜスーパーセット地獄への不幸な道のりが始まるのか、簡単に紹介しましょう。
ビジネスパートナーを管理するための業務アプリケーションを設計することになりました。このアプリケーションを中心として、他のさまざまなアプリケーションが連携する可能性があります。それらの要件をまとめたところ、次のような要件が寄せられました。
- 人事部からはパートナーの「名前」「収入」「登録日」のデータが必要
- CRMからは「名前」「営業担当」「担当地区」」のデータが必要
- 財務部からは「名前」「債務状況」のデータが必要
この要件を、中心となる業務アプリケーションでアプリケーションですべて満たそう、というアーキテクチャを採用したときに、「スーパーセット地獄」が始まるというのです。実際には、アプリケーション横断的なコアコンポーネントは共通部分だけを提供するサブセットで設計すべきだと、Franz氏は説いています。
そしてスーパーセット地獄に進まないためのアドバイスとして、アプリケーション横断的なコンポーネントでは、各アプリケーションの要求が重なる部分の機能を提供することをいちばんに挙げており、続いて技術的な純粋さを追求する、といったことを挙げています。