このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ
*目次 [#ze97db05]

#contents


*モデリング [#v91db458]

-要求や構造を可視化する手段。
-洗い出したユーザ要求をモデル化することによって、全体像を把握して矛盾を見つけ出したり実現の可能性を確認したりすることができる。
-[[ステークホルダー]]間で共通言語としてモデルを使う。
--ステークホルダーによってモデリングニーズは異なる。
-理解を試みようとしている対象を整理・分類し、特徴を明確化した結果、理解を試みようとしている対象の理解が容易になってくる。
-我々は現実世界の物に対して必ず概念を抱いている。自分自身が持つ概念を通じて、現実世界を認識・理解しているのである。
--これを逆に言うと、人々は知らず知らずのうちに概念によって現実世界を把握しているといえる。
-[[オブジェクト指向開発]]も[[データベース設計]]のデータモデリングも、その中心的な作業と作業の成果物はそれぞれ[[クラス図]]と[[ER図]]である(当然、これ以外にも重要な作業や成果物はある)。
--構築しようとするシステムをクラスやエンティティを用いて表現し、設計作業が進むにつれて、効果的な設計・実装情報をクラス図やER図に書き加えていくこともできる。
-概念、分類、抽象化の理解度に応じてモデリングの各種技法を効果的に使用できるか、できないかに大きな差が出やすいといわれている。
--ここでいう差とは開発対象(ドメイン)から適切なクラスやエンティティのタイプを抽出し、実世界の関係を適切に表現できる能力を指す。
--特に[[上流工程]]でのモデリングに大きな差が出やすいといえる。
---上流工程では[[概念モデリング]]という作業を行う。この概念モデリングの成果物が概念モデルである。
-オブジェクト指向のクラスやデータモデリングのエンティティタイプを用いることで、我々が物事を取り扱うことや説明することを単純化できる。
-分類についての価値を理解しておくことは、「汎化-特化」「多重分類」「動的分類」などの価値を十分に理解して効果的に活用できることにつながる。
-データ中心開発やオブジェクト指向開発であっても、効果的な開発プロセスや効果的な技法を利用しないと限界がある。
-[[C++]]や[[Java]]を用いて開発するシステムを[[UML]]でモデリングするときは明示的に主キーを付与する必要はない。
--1つのクラスから複数のインスタンス(ただし属性値は同じ)を生成したとしても、それらは区別が付く。なぜならばプログラミング言語が[[メモリ]]上にクラスのインスタンスであるオブジェクトを格納する。コンピュータ上でプログラムを動作させるには、その場所を示すためのメモリのアドレスを使う。C++やJavaの場合、各オブジェクトにメモリのアドレスを自動的に付与するため、属性の中に主キーを用意しなくてよいのである。
-作成するモデルは、利用するプロセス(手法・方法論)によって異なる。
-DBシステムやソフトウェアの開発は建築のアーキテクチャ構築と似ている。建築の設計は、ソフトウェア開発の「分析→アーキテクチャ設計→設計」に対応する。
--建築家のアレクサンダーによってパターンという概念が提案された。


*各ステークホルダーと必要とされるモデリングニーズ [#a90ce823]

|ステークホルダー|モデリングニーズ|h
|経営層|業務領域全体を把握でき、戦略や目標に対する達成度が評価できる。|
|業務担当者|業務手順を明確にでき、シミュレーションにより実現性を確保できる。|
|開発者|システムの仕様が把握でき生産性が高く、規模の見積もりもできる。|
|運用者|保守や障害対応がしやすく、外部委託できるよう標準化できる。|
|監査者|監査の効率がよく、漏れのないように様々なビューで検証できる。|


*参考文献 [#e73895c6]

-『ITアーキテクト×コンサルタント』
-『モデルとプロセスをめぐる冒険』