Object-oriented-analysis-design-ooad-functional-modeling
OOAD-機能モデリング
機能モデリングは、オブジェクト指向分析モデルのプロセスの観点と、システムが行うべきことの概要を提供します。 データフロー図(DFD)を使用して、システムの内部プロセスの機能を定義します。 計算時にデータ値がどのように導出されるか、または計算する必要がある理由を示すことなく、データ値の機能的導出を示します。
データフロー図
機能モデリングは、DFDの階層を通じて表されます。 DFDは、システムへの入力、入力に対する処理、システムの出力、および内部データストアを示すシステムのグラフィカルな表現です。 DFDは、オブジェクトまたはシステムで実行される一連の変換または計算、および変換に影響する外部コントロールとオブジェクトを示します。
ルンボー等。 DFDを「データフロー図は、オブジェクトのソースから他のオブジェクトの宛先に変換するプロセスを介したオブジェクトのデータ値のフローを示すグラフです」と定義しています。
DFDの4つの主要な部分は-
- プロセス、
- データフロー、
- 俳優、そして
- データストア。
DFDの他の部分は-
- 制約、および
- 制御フロー。
DFDの機能
プロセス
プロセスは、データ値を変換する計算アクティビティです。 システム全体を高レベルのプロセスとして視覚化できます。 プロセスはさらに小さなコンポーネントに分割できます。 最下位レベルのプロセスは、単純な機能です。
- DFDでの表現*-プロセスは、名前が内部に記述された楕円として表され、一定数の入力および出力データ値を含みます。
例-次の図は、入力として2つの整数を受け入れ、それらのHCF(最大公約数)およびLCM(最小公倍数)を出力するプロセスCompute_HCF_LCMを示しています。
データフロー
データフローは、2つのプロセス間のデータの流れを表します。 アクターとプロセスの間、またはデータストアとプロセスの間である可能性があります。 データフローは、計算のある時点でのデータ項目の値を示します。 この値は、データフローによって変更されません。
- DFDでの表現*-データフローは、それが運ぶデータ項目の名前でラベル付けされた有向弧または矢印によって表されます。
上の図では、Integer_aとInteger_bはプロセスへの入力データフローを表し、L.C.M。 およびH.C.F. 出力データフローです。
データフローは、次の場合に分岐することがあります-
- 次の図に示すように、出力値は複数の場所に送信されます。 ここでは、出力矢印は同じ値を示すためラベル付けされていません。
- データフローには集計値が含まれており、次の図に示すように、各コンポーネントは異なる場所に送信されます。 ここでは、分岐した各コンポーネントにラベルが付けられています。
俳優
アクターは、データを生成してシステムに入力するか、システムによって生成されたデータを消費することにより、システムと対話するアクティブなオブジェクトです。 つまり、アクターはデータのソースおよびシンクとして機能します。
- DFDでの表現*-アクターは長方形で表されます。 アクターは入力と出力に接続され、DFDの境界上にあります。
例-次の図は、カウンター販売システムのアクター、つまりCustomerとSales_Clerkを示しています。
データストア
データストアは、データのリポジトリとして機能するパッシブオブジェクトです。 アクターとは異なり、操作を実行できません。 データを保存し、保存されたデータを取得するために使用されます。 データ構造、ディスクファイル、またはデータベース内のテーブルを表します。
- DFDでの表現*-データストアは、データストアの名前を含む2本の平行線で表されます。 各データストアは、少なくとも1つのプロセスに接続されます。 入力矢印にはデータストアの内容を変更する情報が含まれ、出力矢印にはデータストアから取得した情報が含まれます。 情報の一部を取得する場合、出力矢印にラベルが付けられます。 ラベルのない矢印は、完全なデータ取得を示します。 双方向の矢印は、取得と更新の両方を意味します。
例-次の図は、すべての販売の詳細を格納するデータストアSales_Recordを示しています。 データストアへの入力は、アイテム、請求額、日付などの売上の詳細で構成されます。 平均売上を見つけるために、プロセスは売上レコードを取得して平均を計算します。
制約
制約は、時間の経過とともに満たされる必要がある条件または制限を指定します。 新しいルールを追加したり、既存のルールを変更したりできます。 制約は、オブジェクト指向分析の3つのモデルすべてに現れる可能性があります。
- オブジェクトモデリングでは、制約はオブジェクト間の関係を定義します。 また、オブジェクトが異なる時間に取る可能性のある異なる値間の関係を定義することもできます。
- ダイナミックモデリングでは、制約がさまざまなオブジェクトの状態とイベント間の関係を定義します。
- 機能モデリングでは、制約は変換と計算の制限を定義します。
表現-制約は中括弧内の文字列としてレンダリングされます。
例-次の図は、営業部門のすべての従業員にインセンティブを与え、人事部門のすべての従業員の給与を増やすことを決定した会社の従業員の給与を計算するためのDFDの一部を示しています。 制約\ {Dept:Sales}は、部門が販売の場合にのみインセンティブを計算し、制約\ {Dept:HR}は部門がHRの場合にのみ増分を計算することがわかります。
制御フロー
プロセスは特定のブール値に関連付けられ、値がtrueの場合にのみ評価されますが、プロセスへの直接入力ではありません。 これらのブール値は、制御フローと呼ばれます。
- DFDでの表現*-制御フローは、ブール値を生成するプロセスから制御されるプロセスへの点線の円弧で表されます。
例-次の図は、算術除算のDFDを表しています。 除数はゼロ以外でテストされます。 ゼロでない場合、制御フローOKの値はTrueになり、その後、除算プロセスは商と剰余を計算します。
システムのDFDモデルの開発
システムのDFDモデルを開発するために、DFDの階層が構築されます。 最上位のDFDは、単一のプロセスとそれと対話するアクターで構成されます。
連続する各下位レベルで、詳細が徐々に追加されます。 プロセスはサブプロセスに分解され、サブプロセス間のデータフローが識別され、制御フローが決定され、データストアが定義されます。 プロセスの分解中、プロセスに出入りするデータフローは、DFDの次のレベルのデータフローと一致する必要があります。
例-卸売店の取引を自動化するソフトウェアシステム、卸売業者ソフトウェアを考えてみましょう。 店は大量に販売し、商人と小売店の所有者で構成される顧客がいます。 各顧客は、自分の詳細に登録するように求められ、一意の顧客コードC_Codeが与えられます。 販売が完了すると、ショップはその詳細を登録し、発送のために商品を送ります。 毎年、ショップは顧客にクリスマスギフトを配布します。クリスマスギフトは、総売上と所有者の決定に応じて、銀貨または金貨で構成されます。
Wholesaleソフトウェアの機能モデルを以下に示します。 次の図は、最上位のDFDを示しています。 ソフトウェアを単一のプロセスとして示し、それと対話するアクターを示しています。
システム内の俳優は-
- お客様
- 営業担当者
- 所有者
次のレベルのDFDでは、次の図に示すように、システムの主要なプロセスが識別され、データストアが定義され、プロセスとアクターとの相互作用、およびデータストアが確立されます。
システムでは、3つのプロセスを識別することができます-
- 顧客を登録する
- プロセス販売
- ギフトを確認する
必要となるデータストアは次のとおりです-
- 顧客の詳細
- 販売詳細
- ギフト詳細
次の図は、顧客の登録プロセスの詳細を示しています。 その中には、詳細の確認、C_Codeの生成、顧客の詳細の更新の3つのプロセスがあります。 顧客の詳細が入力されると、それらが検証されます。 データが正しい場合、C_Codeが生成され、データストアの顧客の詳細が更新されます。
次の図は、ギフトの確認プロセスの拡張を示しています。 合計売上の検索とギフトコインの種類の決定という2つのプロセスがあります。 Find Total Salesプロセスは、各顧客に対応する年間総売上を計算し、データを記録します。 この記録と所有者の決定を入力として、ギフトコインはギフトコインの種類の決定プロセスを通じて割り当てられます。
DFDの長所と短所
Advantages | Disadvantages |
---|---|
DFDs depict the boundaries of a system and hence are helpful in portraying the relationship between the external objects and the processes within the system. | DFDs take a long time to create, which may not be feasible for practical purposes. |
They help the users to have a knowledge about the system. | DFDs do not provide any information about the time-dependent behavior, i.e., they do not specify when the transformations are done. |
The graphical representation serves as a blueprint for the programmers to develop a system. | They do not throw any light on the frequency of computations or the reasons for computations. |
DFDs provide detailed information about the system processes. | The preparation of DFDs is a complex process that needs considerable expertise. Also, it is difficult for a non-technical person to understand. |
They are used as a part of the system documentation. | The method of preparation is subjective and leaves ample scope to be imprecise. |
オブジェクトモデル、動的モデル、機能モデルの関係
オブジェクトモデル、動的モデル、および機能モデルは、完全なオブジェクト指向分析のために互いに補完的です。
- オブジェクトモデリングは、オブジェクトに関してソフトウェアシステムの静的構造を開発します。 したがって、システムの「実行者」を示します。
- ダイナミックモデリングは、外部イベントに応じてオブジェクトの一時的な動作を開発します。 オブジェクトに対して実行される一連の操作を示します。
- 機能モデルは、システムが行うべきことの概要を示します。
機能モデルとオブジェクトモデル
オブジェクトモデルの観点から機能モデルの4つの主要部分は次のとおりです-
- プロセス-プロセスは、実装する必要があるオブジェクトのメソッドを意味します。
- アクター-アクターはオブジェクトモデルのオブジェクトです。
- データストア-これらは、オブジェクトモデル内のオブジェクトまたはオブジェクトの属性のいずれかです。
- データフロー-アクターとの間のデータフローは、オブジェクトに対する操作またはオブジェクトによる操作を表します。 データストアとの間のデータフローは、クエリまたは更新を表します。
機能モデルと動的モデル
動的モデルは操作が実行されるタイミングを示し、機能モデルは操作の実行方法と必要な引数を示します。 アクターはアクティブオブジェクトであるため、動的モデルはいつ動作するかを指定する必要があります。 データストアはパッシブオブジェクトであり、更新とクエリにのみ応答します。したがって、動的モデルは、いつ動作するかを指定する必要はありません。
オブジェクトモデルと動的モデル
動的モデルは、オブジェクトのステータスと、イベントの発生およびその後の状態の変化に対して実行された操作を示します。 変更の結果としてのオブジェクトの状態は、オブジェクトモデルに表示されます。