====== モデリングの流れ ====== {{page>adsense:ads_content_header&nouser&nodate&nomdate&noeditbtn}} このトピックでは、UMLを利用した情報システムの開発を代表として、ビジネス要件とアーキテクチャとの二つの側面からモデリングの流れを説明します。 ===== ビジネス要件の側面から ===== ビジネス要件を実現するには、以下のモデルを順に作成していきます。 * ドメイン分析モデル * 要求分析モデル * システム分析モデル * システム設計モデル * システム実装モデル ==== ドメイン分析モデル ==== ドメイン分析モデルは問題領域モデルであり、ユーザが「やりたいことのモデル」の中の「現実世界」をモデル化します。 ドメイン分析では、「現実世界」を静的モデルと動的モデルの両面からモデル化します。 * 静的モデル \\ 静的モデルとしてクラス図を用いて、現実世界の静的構造をモデル化します。このモデルでは、ITシステムの操作対象となる「顧客」や「注文」といった概念が定義され、以降の開発のボキャブラリとして使用されます。 * 動的モデル \\ 動的モデルとしてアクティビティ図を用いた業務フローなどを作成します。ただし、業務フローはITシステム化の対象スコープを絞ったり、ITシステムの利用方法を見極めるために作成するものであり、どちらかというと補助的なモデルとなります。 ドメイン分析で重要なのは「現実世界」の静的構造をクラス図としてモデル化することです。ドメイン分析で作成した静的構造のモデルは、要求分析で使用するボキャブラリとなり、続けてシステム分析以降の静的モデルの基盤となります。 ==== 要求分析モデル ==== 要求分析モデルは問題領域モデルであり、ユーザが「やりたいことのモデル」の中の「やりたいこと」をモデル化します。 要求分析では、ユーザの"やりたいこと"をユースケースとしてモデル化します。ユースケースは、システムを使用する人や物の目的を達成するための、人や物とシステムの間のインタラクションをモデル化したモデル要素であり、動的モデルとなります。このユースケースから、システム分析でシステム内の動的モデルを抽出し、このモデルがシステム分析以降の動的モデルの基盤となります。 ==== システム分析モデル ==== システム分析モデルは解決領域モデルであり、ITシステムでの実現方法を、プラットフォームやプログラミング言語に特化しない抽象的な形でモデル化します。 システム分析では、ユーザの"やりたいこと"を実現するためのITシステムの構造と挙動をモデル化します。 * 静的モデル \\ 静的モデルは、主にドメイン分析でモデル化した現実世界の静的構造をITシステム内のモデルとして具体化したものです。さらに後述するユースケースから抽出した動的モデルを実現するための静的構造モデルが追加されます。 * 動的モデル \\ 動的モデルは、ユースケースから抽出したコラボレーションをシーケンス図やコミュニケーション図で記述したものです。 ==== システム設計モデル ==== 設計モデルは解決領域モデルであり、ITシステムでの実現方法を、プラットフォームやプログラミング言語に特化する具体的な形でモデル化します。 * 静的モデル \\ 静的モデルは、システム分析で作成した静的モデルをプラットフォームやプログラミング言語向けに具体化したものです。 * 動的モデル \\ 動的モデルは、システム分析で作成した動的モデルをプラットフォームやプログラミング言語向けに具体化したものです。また、厳密な仕様を作成する場合にはステートマシン図を併用します。 ==== システム実装モデル ==== 設計モデルは解決領域モデルであり、ITシステムでの実現方法を、プログラムや定義ファイルという形で実装したものです。 ドメイン分析から設計までは、静的モデルと動的モデルという形でモデル化を行う観点を分けていました。 しかし、オブジェクト指向による実装では、クラスを軸にモデル化を行います。クラスの静的側面と動的側面としてプログラミングします。 また、ドメイン分析から派生してきた静的モデルは、データベースに格納して管理するための実装も必要になってきます。 ===== アーキテクチャの側面から ===== アーキテクチャは、解決領域のことですので、アーキテクチャの側面から、システム分析、システム設計、システム実装について説明します。 ==== システム分析モデル ==== システム分析では、以下の3種類の分析オブジェクトを使用してモデルを作成します。 * エンティティ \\ エンティティは、現実世界のオブジェクトを抽象化した分析オブジェクトです。ドメイン分析モデルを具体化したモデルです。 * コントロール \\ コントロールは、エンティティの操作を抽象化した分析オブジェクトです。ユースケースで記述した「やりたいこと」から抽出し、具体化します。 * バウンダリ \\ バウンダリは、システムと外界との接点を抽象化した分析オブジェクトです。ユースケースで記述した「やりたいこと」から抽出し、具体化します。 ==== システム設計モデル ==== 設計では、ドメイン層、アプリケーション層、プレゼンテーション層のモデルを作成します。 ドメイン層、アプリケーション層、プレゼンテーション層はそれぞれシステム分析のエンティティ・オブジェクト、コントロール・オブジェクト、バウンダリ・オブジェクトを詳細化したものです。 ==== システム実装モデル ==== 実装では主にオブジェクト指向プログラミングによって、ドメイン層、アプリケーション層、プレゼンテーション層を作成します。また必要に応じて定義ファイルなども作成します。 {{page>adsense:ads_content_footer&nouser&nodate&nomdate&noeditbtn}}