- 1 名前:デフォルトの名無しさん [2007/03/28(水) 15:01:34 ]
- プロダクトライン・アーキテクチャとは
主に量産化可能な製品を扱う組み込み系ソフトウェア開発に適用され、 生産性や成果物の管理で効果を上げている開発手法である。 アーキテクチャの構築という長期的視野を重視し、 長期的に継続される複数回のソフトウェア開発向けに適用される。 最近では、組み込み系ソフトウェアだけでなく、 一般にはアーキテクチャの構築が有効とされる大規模システム、 長期間の利用が前提となる企業システムへの適用が試みられている。 プロダクトライン・アーキテクチャはオブジェクト指向分析設計やその開発プロセスを超えて、 ・アーキテクチャ構築のためのドメイン工学、 ・アーキテクチャ構築を強制する開発プロセス、 ・アーキテクチャを構成するソフトウェア資産 を管理し、 ・コンポーネント・ベース開発 ・モデル駆動型アーキテクチャ と組み合わさって、 最新のソフトウェア工学の開発手法に成長しようとしている注目の技術である。
- 14 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 08:23:40 ]
- こういうことはみんなが考える事じゃないから不要だと思うヤツは考える必要は無い
- 15 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 16:24:22 ]
- >>14
は議論妨害の常連なのでスルー
- 16 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:25:41 ]
- 「サブジェクト指向パラダイム」
ドメインクラスは、OOパラダイムによる機能要求の論理レベル表現である。 分析レベルでトップダウンにより決める「概念の名前」と、ボトムアップにより決める「概念の属性」を持ち、 ユースケースの振る舞いを、論理レベルでのオブジェクト間のシーケンス図の協調パターンを見ながら ドメインクラスの「操作」として割り当てる。いわゆる責務の配置である。 協調パターンはデザインパターンの適用や特定アーキテクチャの利用を前提として決定する。
- 17 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:26:18 ]
- ●ドメインクラスに見られるOOパラダイムの弱点
だがこのドメインクラスは、同時にOOパラダイムの弱点を表している。 システムが外部に提供するサービスや機能であるユースケースは、 複数のドメインクラスを連携して提供される。 また、1つのドメインクラスは、複数のユースケースの実行で共有して使用される 通常、大規模開発チームの構成は、外部サービスであるユースケースの実現を単位とするため、 ドメインクラスのコード共有管理の発生で、開発チーム間での調整が不可避となる。 これが、開発のプロジェクト管理を難しくし、プロジェクトの成功確率を下げてしまうのである。
- 18 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:26:50 ]
- |←責務→|
┏━━━━┓ ┏━━━━┓ ┏━━━━┓ ┃ クラス1 .┃ ┃ クラス2 .┃ ┃ クラス3 .┃ ┠────┨ ┠────┨ ┠────┨ ┃ ┃/┃ ̄ ̄ ̄ ̄┃ ̄┃ ̄ ̄ ̄ ̄┃\ ┃ ┣━┫ ┣━┫ ┃ | ユースケースA ┃ ┃\┃____┃_┃____┃/ ┠────┨ ┠────┨ ┠────┨ /┃ ̄ ̄ ̄ ̄┃ ̄┃ ̄ ̄ ̄ ̄┃ ̄┃ ̄ ̄ ̄ ̄┃\ | ┗━━━━┛ ┗━━━━┛ ┗━━━━┛ | ユースケースB \_______________________/ .↑ 散乱 (scattering) .│もつれ (tangled) ←──────→ ↓ OOパラダイムの弱点:散乱(scattered)ともつれ合い(tangled) システムが外部に提供するサービスや機能であるユースケースは、複 数のドメインクラスを連携して提供される。図では2つのユースケースを例としている。 いずれも複数のクラスのオブジェクトが連携して実現されている。 これを散乱(scattered)という。 また、1つのクラスは、複数のユースケースの実行で共有して使用される。 図のクラス2に相当し、もつれ合い(tangled)という。 OOパラダイムでは、この散乱ともつれ合いがプロジェクト管理を困難とする。
- 19 名前:デフォルトの名無しさん [2007/04/13(金) 15:27:28 ]
- ●OOパラダイムの弱点「散乱」と「もつれ合い」の解決策
この問題を解決するには、プロジェクト管理的側面で対応するか、 ドメインクラスのコード共有による依存性を回避する技術的側面で対応するかしかない。 後者の対応では、ドメインクラスの設計を前提としない開発手法を選択するほかない。 例えば、ユースケースを提供する際のシステムの役割を定義し、 その役割をドメインクラスから分離する手法である。 これが「ロール・モデル」と呼ばれる分析手法で、例えるなら、 映画のシナリオ(サービス内容)では登場人物の演じる役割だけを先行して決定し、 俳優へのキャスティングをシナリオの完成まで遅らせることに似ている。 シナリオとしてのサービス内容の仕様が完全に確認できた後、 その役割を演じる俳優(ドメインクラス)を選択する。 もし俳優に問題があれば置き換え可能とする。 確かに役割を演じることができる俳優には一定の資格が存在する。 しかし、その資格は従来のドメインクラスの持つ操作よりも緩い条件で、 シナリオ(サービス内容)に依存せず役割を持たない 最小限の基本的な属性と操作だけを持つドメインクラスとする。 これにより、従来のロジック・コードを実装するドメインクラスでのコード共有を最小化し、 コード共有をプロジェクトの後半にずらすことができる。
- 20 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:29:14 ]
- ●サブジェクト指向パラダイムの特徴
サブジェクトとドメインクラスを分離して、それぞれに適切な振る舞いを割り当てることで、 ドメインクラスへの操作の割り当てによるコード共有管理の問題を回避する。 サブジェクトはほかのサブジェクトやドメインクラスと独立して開発可能なので、 サブジェクト単位に開発チームを編成して並行開発を行うことが可能である。 また、特定のサブジェクトを開発プロセスの遅い段階に定義し、追加することで、 要求の決定を遅延させることが可能である。 コンポーネント・モデルのインターフェイス定義が、 インターフェイスを実装するクラスの提供する機能(提供インターフェイス)や ほかのクラスを利用する機能(必要インターフェイス)の契約を定義するのと異なり、 サブジェクトはクラスがオブジェクトとして実行される際の ほかのオブジェクトとの関係で決まる役割を示す。 すなわち、1つのクラスが複数の役割を実行し、その役割が動的に変化する場合に、 サブジェクトを適宜実行することで対応可能である。 このようなシステム開発を可能とするパラダイムが「サブジェクト指向」である。
- 21 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:31:27 ]
- このようなシステム開発を可能とするパラダイムが「サブジェクト指向」である。
サブジェクト指向パラダイムは、OOパラダイムのドメインクラスと併存するので、 OOパラダイムと組み合わせて用いられるマルチパラダイム・デザインの一種である。 サブジェクト指向は、クラスと、クラスが持つメソッドを分離管理する発想であり、 DOA(データ中心アプローチ)のエンティティ・タイプとデータ項目の分離管理に類似した、 大規模システムに有効なドメインクラスに対する正規化技術である。 すなわち、同一の意味を持つメソッドを論理的に統合する。 大規模システムでは、同一メソッド定義(=必ずしも実装は同一ではないが、 シグネチャ定義が同一である)を持つ複数のドメインクラスが出現するので、 メソッド定義を論理的に1カ所で定義することで数を減らして管理可能とするのは有効な方法である。 サブジェクト指向はクラスとサブジェクトのウィービングの1技術であるので、 現在はアスペクト指向の一部として発展しているが、厳密には両者が解決を目指す課題は異なる。 サブジェクト指向の開発手法を実現するにはプログラミング・パラダイムとして サブジェクト指向言語が必要であるが、サブジェクト指向言語が利用可能でないときは、 より抽象レベルの高いDSL(ドメインに特化したモデル言語)がコード生成を行い、 サブジェクト相当のコードを提供する。
- 22 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:33:29 ]
- ●ステークホルダーの多次元性の問題
フィーチャ・モデルは、アーキテクチャ要求の可変性に着目したモデル表現でもある。 しかし、アーキテクチャはその規模と適用範囲の大きさから多くのステークホルダーがかかわり、 多くのステークホルダーの視点での表現が必要である。 ステークホルダーごとに異なる関心の表現を、 特定のドメイン分割を前提としたフィーチャ・モデルで表現できるだろうか? 選択的なフィーチャにより可変性の表現ができるにしても、 ステークホルダーごとの異なる視点で「関心の分離」を表現するには 単純化しすぎていると思われる。 個々のステークホルダーの視点での関心の分離の表現は、 短期的視点のユースケースに対して長期的視点のフィーチャ・モデルを分離した 要求定義の解決法とは別問題である。 この視点の問題は、ステークホルダーの多次元性という。 多次元性は現在のソフトウェア開発の要求の多様化に対応するために 取り組まなければならない課題である。 多次元性の問題は多次元的な視点を持っていないフィーチャ・モデルでは残念ながら解決できない。
- 23 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:34:54 ]
- ●問題領域のドメイン分割の決定法の問題
もう1つの問題は、フィーチャ・モデルを作るための問題領域のドメイン分割の決定法である。 先のドメイン分割の例では、業務内容に従った分割を行った。ドメイン分割では、 ・視点やスコープの明確化、 ・粒度(意味のまとまりの単位)の決定、 ・抽象レベルの一貫性、 ・できるだけ分割単位間で依存関係やオーバーラップがない直交関係を持つドメイン間の 整合性や変更追跡性 などを考慮する。 ドメイン分割の決定は、フィーチャ・モデルに適合したアーキテクチャの品質に大きな影響を与える。
- 24 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 18:23:43 ]
- __ ┌<.^ヽ::/:::::/ ̄ ̄ ̄ ̄`ヽ:::::::::::\
. / ヽ. ,.ヘ⊥/:::::/___ マ::::::::::::ヽ / マ´ /::::::::::::::::;ィ::::/::::::::::::: ̄ヽ. |:::::::::::|:::ヘ | ● ト/::::::::::\:/ !::::l::::::::!::::::::::ヽ::\|:::ヽ::/::::::| __ | |′:::::;イ::/ヽ l::::ハ::::::|:::::::::::::|:::::::::::::::}' ̄ ̄ { . ,r1 l::::::::::l |::| ヘ.|:::| l::::::ト:::::::::::ハ::::|:::|:::::| ヽ<二フ /'_コ |、::::::| V ヾ| ヽ:::|_,ゝ‐:T'|:::ル::::::| ヘ` ー-、 i´ ! l ヽ::::| ニミ:.、 ベ _,ゞ'=レ、l:::::::::| _〉ト、 . ノ \ l:::ヽ ` 'f rヘ, ハ.ヽ:::::::{Tマ:::::ヽ ` 鼻クソびーっ r´ ヽ、 |ヽ` 、 ' ヒこソイ'´::::::/}:|. ';:::::::l ! ヘ T _, j ヽ. }、 }'` ー、 `´/:::::::::::/:::::| ヾ::::! ノ ', Y_,-〈 V、:\ 、__ ノ /::::::/::/::::::∧ ヾ!| { _ ヽ ,`-' | lヾ:/ヽ _. - ァ'::::::://::::::/:/:7T゙:| ヽ. \ \__/ | | ' |ヽ、 /::ィ フ:/:::: ィヽイ::/l:j l:| |` - 、>´ !'´ _. --r ’.l. |\.` ー‐/ イ1;r7´/ /¬ /' '′ ヽ、_ ` ーゝ-'rイ ! :l l. |ヽ 二..ア ´{!' / / | ∧  ̄ ´ .ゝ |:| マ / / / // / ヽ ,r'´ | ヽヽ ∨ / / /∠ -' 〉 . _/ ー-、 lヽソ∠二二 ´ -'_/_). ,.〈 ,.- ´ ′ ン' ̄{_フヽ二ネ¨ ,rァ─一´ ヽ----'´ | 〉 ヽ ノ ハ`t.-' Y1 / . 〈 / ` | | ヽ ヽ、 | ヽ / . \ /| | | \ \ 'シラ´ ̄ ̄ ̄
|

|