-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第7章 マルチパラダイム #7
Comments
設計のための抽象
|
フレームワークとマルチパラダイムデザイン
|
結合度・凝集度とマルチパラダイムデザイン
具体的な手順
再帰的に繰り返されるプロセス
結合度・凝集度のメリット
|
ドメインが組織上の構造に従うことの重要性
単純に技術的な分析から作られるドメインが優れているというわけではないということだろう。
|
システムの複雑さとドメイン
テレコム系のシステムの例:
|
パラダイムの適用ケースとドメイン
|
マルチパラダイムデザインのビルディングブロック
|
設計は分析のアクティビティである
|
パターンをドメインとして考えること
|
経験・直観に基づく分析
これは私たちが実際に日常的に行っていることだと思う。
これは、「PHPがJavaのようなものならJavaを使えばいいじゃないか」といった意見に対する答えとなるだろう。
これも私たちが実際に日常的に行っていることだと思う。 |
マルチパラダイムデザインが効果的に機能するソリューションドメイン
|
マルチパラダイムデザインの肝は変換分析
|
オブジェクトパラダイムの選択が推奨されるとき
|
ドメイン特化言語の作成を検討する
ここでいうアプリケーション指向言語は現在のドメイン特化言語である。 |
ドメイン特化言語の利点
|
マルチパラダイムデザインを適用した開発プロセス
|
理想的なサブドメイン分割
これはサブドメイン分割の際に、そのサブドメインに水平的な性格(主たるドメイン以外のドメインでの利用が可能かどうか)を与えられるかどうかを検討する価値があることを示す。例えば、ORMドメインのサブドメインDBAL(Database Abstraction Layer)を、そのORMドメインのみで利用可能として設計するのか、その他のドメインでの利用も考慮に入れて設計するのか。 |
サブドメイン(分割)の品質向上のための目標
|
ソリューションドメイン上のトレードオフ(フォース)がアプリケーションドメイン分析に影響を与える
以下のステートメントがあり、 typedef int Int; それを処理する以下のような文法を考える。 type_name decl_list; ステートメントにある型識別子 name decl_list; しかし、この文法では |
"糊づけ"ドメイン
|
ドメイン分析と繰り返し
|
ドメインの抽象の導出に設計者の直観を利用する
|
共変とモデルの洗練
共変である可変パラメータ(またはドメイン)はそれらを包含するリーフノードをエントリポイントとするドメインと見なすことで、依存関係を縮退させることができる。これはモデルの洗練のために役立つだろう。 可変性依存図 共通性ドメイン:Name縮退した可変性依存図 共通性ドメイン:Namep.195の図にパッケージ(ドメイン)を加えたもの。 |
設計の実装
私の場合、Coplien氏の提唱する設計(7.4節を参照)は多くの場合コーディングを通して行っている。より正確に言えば、粗い設計は直観的または経験的に頭の中にあり、コーディングを通してそれが洗練・修正されるというものである。この点についてはCoplien氏の見通し以上のものがコーディングという活動に含まれていると考えることもできるだろう。 |
設計されたドメインモデル
マルチパラダイムデザインのアクティビティは、設計者が経験と直観をガイドとして変更がカプセル化されたドメインモデル(ドメインの構造、アーキテクチャ)を設計(デザイン)することである。そのようなドメインモデルはドメイン駆動設計でいうところの深いモデルといえるだろう。 |
Coplien氏のモデル駆動設計
これまで、いろいろな形で表現されてきたCoplien流の(ドメイン駆動設計の)モデル駆動設計ともいえるものが、ここではよりはっきりと表現されている。これは私の感覚を支持してくれるものである。 プログラミング言語は初期設計における関心である
|
ソリューションドメインの構造がアプリケーションドメインの構造に影響を与える
|
モデルのスパイラルアップ
ここでいう「問題」の抽象は、以下のように、マルチパラダイムデザインによって「解決策上の選択を問題に加え」られた結果であって、はじめから存在するものではない。 元の問題: 「これまで考えられてきた設計やプログラミングの便法を可能なかぎり利用して、複雑な関数の導関数を計算する。」 変更された問題: 「自動微分を使用して、複合関数の導関数を計算する」 このような手法は現実世界で頻繁に使われているものだと考える。 |
再利用・拡張しやすい設計を
「再利用と拡張に対するコストを最低限に抑える」ために、「最初の段階から拡張を考慮に入れ」た設計を行うことがドメイン分析の要諦である。 |
再利用の2つのレベル
|
アウトボードパラダイムによるソリューションドメインの拡張
ソリューションドメインにデータベースやパーサジェネレータのようによく知られたパラダイムを加えることができる。
|
オッカムの剃刀
|
パラダイムの使用についての2つの関心
|
漸進的なパラダイムの導入
|
パラダイムやツールを減少させる
|
経験と直観による最適なパラダイムの選択
|
ドメイン分割の基礎は経験、マーケットへの精通、直観
|
正規性を持ったドメインに対してドメイン特化言語を検討する
|
パラダイムに適した記法の使用
|
ソリューションドメインのフリーハンドを持つこと
|
言語とサブドメインを密接に対応づける
|
ドメインに対する経験が最も重要
|
優れた設計
|
システム思考と反復
|
内容を読めていないのですが、Debasish Ghosh さんによるMPDへの言及記事があったので貼っておきます。
|
DDDとの関連
|
|
The text was updated successfully, but these errors were encountered: