DDD / Pluggable Component Framework


Pluggable Component Framework (475ページ)

要約

機会は深く蒸留されたモデルで起きる。アプリケーションがすでに似たドメインで実装された場合、PLUGGABLE COMPONENT FRAMEWORKは動作する。

P475

  • 複数のアプリケーションを相互に運用するとき、すべては同じ抽象を基礎とするが独立して設計され、BOUDED CONTEXTS間の統合は制限がある。SHARED KERNELではチーム間で閉じている場合はうまくいかない。
  • 成功しているプロジェクトでは、コンポーネントの設計を分析する。コンポーネントは中央のハブに差し込まれ、必要でインターフェースを知っているプロトコルは提供される。
  • 技術的なフレームワークはこのパターンをサポートしているが、これは2番目の課題である。配布やコンポーネントの共有に関する技術的な問題を解決するために使われる。基本パターンは、責任の構成概念である。

それゆえ

  • ABSTRACT COREのインターフェースや振る舞いを抜き出し、実装を変えられるようなフレームワークを作りなさい。同じように、ABSTRACT COREのインターフェースで操作するなら、アプリケーションがコンポーネントを利用することを許しなさい。
  • ハイレベルな抽象は識別され、システムの広範囲で共有される。MODULESでは特に発生する。アプリケーションの中央のハブはSHARED KERNEL内のABSTRACT COREである。しかし、複数のBOUNDED CONTEXTはコンポーネントインターフェースをカプセル化してうそをつくことができるが、その構造は、コンポーネントが多くのところから呼ばれたり、コンポーネントがソフトウェアの統合のためにカプセルかする場合に、特に便利になる。

p476

  • これはコンポーネントを分割したモデルにしろといっているのではない。チームがCONTINUOUSLY INTEGRATIONや疎なコンポーネントによる共通部品をSHARED KERNELで定義できる場合、複数のコンポーネントは一つのCONTEXTで開発することができる。すべての構造は、PLUGGABLE COMPONENTSの大きな構造の中で容易に共存できる。他のオプションとして、ハブにプラグインするためのPUBLISHED LANGUAGEを利用するものがある。
  • PLUGGABLE COMPONENT FRAMEWORKの否定的な側面を見てみる。一つはパターンを適用することが難しいということ。インターフェース設計の正確さやABSTRACT COREの振る舞いの忠実なモデル化が求められるため。もう一つの大きな否定的側面として、アプリケーションが制限を受けるということ。もしアプリケーションがCORE DOMAINに対してとても難しいアプローチを取る必要があるならば、構造が邪魔になるだろう。開発者はモデルを特化できるが、ABSTRACT COREのさまざまなコンポーネントの変更なしで変更することはできない。その結果、継続的にCOREの洗練やより不快リファクタリングは、程度の差こそあれ凍結される。
  • FayadとJohnsonはいくつかのドメインにおける野心的なPLUGGABLE COMPONENT FRAMEWORKSを与えてくれた。それはSEMATECH CIMでの議論に含まれている。

Examle:The EMATECH CIM Framework ( http://www.amazon.co.jp/Domain–Specific-Application-Frameworks-Experience-Industry/dp/0471332801 )

  • コンピュータチップを生産する工場では、基盤の追跡、工場の作業員や自動化などを行う。このようなものを管理するソフトウェアを製造実行システム(MES)という。

p477

  • 多くのベンダーのマシンで異なった方法が取られていた。MESは複雑。コンソーシアム、SEMATECHでCIMフレームワークが開発された。
  • CIMフレームワークは大きく複雑で、多くの外見を持っているが、2つほとここには関係がある。一つは、フレームワークは半導体MESの基本的なコンセプトの抽象化されたインターフェースを定義している。言い換えると、ABSTRACT COREの形成の中にCORE DOMAINがある。これらのインターフェースは振る舞いと意味を含んで定義されている。
  • もし、ベンダーが新しいマシンを生産するなら、Process Machineインターフェースを実装を作らなければならない。インターフェースをちゃんと守っていれば、CIMフレームワークに差し込むだけである。
  • インタフェースを定義したので、SEMATECHはアプリケーションに相互作用できる規則を定義した。CIMフレームワークをベースとするアプリケーションは、プロトコルを実装しなければならない。

p478

  • フレームワークにはインフラ要求がある。それよりも面白いのはPLUGGABLE COMPONENT。独立したソフトウェアの開発とその統合ができる。誰も詳細を知らないが、みんな概要は理解している。

どうしたら、何千もの人が40000枚ものキルトを作成する仕事をすることができるのか?

  • AIDS Memorial Quiltのための大規模構造に対して、いくつかの単純なルールがあれば、詳細を貢献者に任せることができる。

キルトのパネルを作る方法

  • パネルの設計
    • 覚えている人の名前、誕生日、なくなった日、故郷を含めること。
  • 材料の選択
    • 素材とサイズに関すること
  • パネルの作成
    • パネル組み立ての際のテクニック。アップリケ、ペイント、ステンシル、コラージュ、写真。

担当者のつぶやき

  • よくあるフレームワークを業務専用に拡張する時の話に思えるのですが・・・
  • チームに分かれて作業をするため、作業をどうすれば進められるかはいつも考えるけど、そのときはこういったことに注意する気がする。

みんなの突っ込み



まとめ (議事録)

  • このフレームワークは、技術的・実装的なフレームワークを指しているのか、それとも概念的なフレームワークのことを指しているのかどちらなのか、という話が出た。
  • この説明からだけでは断定はできないが、例のフレームワークはわりと実装よりの部分を含んでいるようにも見えるよね、という話になった。
  • 実際に半導体工場に関わった人の話も出たが…あまり詳細なところまでは話に出なかった。
  • あまり詳細を覚えていなくてすみません…