今回は、見積りツール(Xradian)でのデータファンクションのタイプの判定について説明していきます。
前回の「見積りツール(Xradian)のデータファンクションの識別」では、見積りツール(Xradian)で何をデータファンクションとして識別するかについて説明しましたが、データファクションには、内部論理ファイル(ILF)と外部インタフェースファイル(EIF)の2種類存在します。
何をデータファンクションとして識別するのかということを検討した後は、識別したデータファンクションのタイプが内部論理ファイル(ILF)なのか、外部インタフェースファイル(EIF)なのかをどうやって判定するのかについて検討する必要があります。
内部論理ファイルと外部インタフェースファイルの条件については、「IFPUG法でのFP算出」にて説明しましたが、再度簡単に説明しますと、内部論理ファイルは当該アプリケーション内で維持管理されるデータで、外部インタフェースファイルは、当該アプリケーションでは参照だけ行う(維持管理は他のアプリケーションで行う)データのことをいいます。
この「アプリケーション内で・・・」ということですがで、アプリケーションの範囲をどのように考えるかが問題となります。
実は、以前の「見積りツール(Xradian)のアプリケーション境界の取扱」で説明したアプリケーション境界がこれに該当します。
従って、アプリケーション境界を検討した観点とどうようの観点から、どのような取扱をすればいいのかを検討すればいいということになります。
① サブシステム
② ビジネスフロー階層
③ アプリケーションエリア
④ サブシステム+アプリケーションエリア
⑤ ビジネスフロー階層+アプリケーションエリア
⑥ CRUDマトリックス
① サブシステム
プロセスからトランザクションファンクションを識別するために、サブシステムを選択するという考え方(案)がありましたが、サブシステムを指定するだけで、データを識別することはそもそも不可能ですので、データファンクションの識別、データファクションのタイプ判定を行うことはできません。
② ビジネスフロー階層
プロセスからトランザクションファンクションを識別するために、ビジネスフロー階層を選択するという考え方(案)がありましたが、ビジネスフロー階層を指定するだけでは、ビジネスフロー図上のデータ系オブジェクトは識別できますが、データ系オブジェクトでは、複雑度を判定することができません。
③ アプリケーション・エリア
エンティティからデータファンクションを識別するために、アプリケーション・エリアを選択するという考え方(案)です。
この方法でれば、データファンクションを識別することが可能ですが、指定されたアプリケーション・エリア内に存在するエンティティが、当該アプリケーションで維持管理されているのか、それとも参照のみされているのかについては、判断することができません。
内部論理ファイル用のアプリケーション・エリアと外部インタフェース用のアプリケーション・エリアを定義し、それぞれのアプリケーション・エリアに登録されているものをそれぞれのタイプのデータファンクションとして識別するという方法は可能かもしれません。
しかし、Xupperのエンティティ関連図では、あるエンティティが異なるアプリケーション・エリアに重複して登場することが可能となっていますので、内部論理ファイル用のアプリケーション・エリアと外部インタフェース用のアプリケーション・エリアに同じエンティティを登録することが可能となっています。(その部分は人間系で確認して、仮に重複定義されている場合は、ツール側でエラーとするという考え方もありますが・・・)
④ サブシステム+アプリケーションエリア
サブシステムを指定するだけでは、データファンクションを識別できないため、別途アプリケーションエリアを指定するという考え方(案)ですが、データファンクションに関する部分としては、基本的に③の「アプリケーション・エリア」で識別する方法と同様です。
⑤ ビジネスフロー階層+アプリケーションエリア
ビジネスフロー階層を指定するだけでは、データファンクションの複雑度を判定するための、データ項目(DET)を識別できないため、別途アプリケーションエリアを指定するという考え方(案)ですが、データファンクションに関する部分としては、基本的に③の「アプリケーション・エリア」で識別する方法と同様です。
⑥ CRUDマトリックス
エンティティ(データファンクション)およびプロセス(トランザクションファンクション)を識別するために、CRUDマトリックスを選択するという考え方(案)ですが、CRUDマトリックスではエンティティに対して、どのようなプロセスが作成:C、参照:R、更新:U、削除:Dしているのかを識別することができます。
この方法であれば、当該アプリケーション・エリア内で維持管理している(作成、更新、削除をしている)のか、参照だけしているのか(他のアプリケーション・エリアで維持管理しているのか)を判断することができます。
指定したアプリケーション・エリア内でCUDが定義されているエンティティについては、当該アプリケーションで維持管理していると考え、内部論理ファイルと判定します。
また、指定したアプリケーション・エリア内でRのみ定義されているエンティティについては、当該アプリケーションでは参照のみしていると考え、外部インタフェースファイルと判定します。(参照するデータが存在するということは、自分以外のアプリケーションで作成されているはずです。)
ちなみに、当該アプリケーション・エリア内に存在していても、CRUDを定義されていないエンティティについては、データファンクションとして識別しないという仕様になっています。
③(及び④、⑤)の方法で行えば、一応タイプを判定することが可能ですが、判定対象となるオブジェクト(この場合はアプリケーション・エリア)を複数指定する必要があること、それらの整合性を人間が判断する必要があること等の問題があるため、⑥の方法でデータファンクションのタイプの判定を行うこととしています。
※コメント投稿者のブログIDはブログ作成者のみに通知されます