![](https://blogimg.goo.ne.jp/user_image/2e/d0/8b8a687772b17e7830721615f6444248.png)
今回は、見積りツール(Xradian)でのトランザクションファンクションの複雑度の判定について説明していきます。
トランザクションファンクションの複雑度を判定するためには、DET(データ項目数)とFTR(関連ファイル数)を識別する必要があります。
どのように、DETとFTRを識別し複雑度を判定するかについては、結局のところ、何をトランザクションファンクションとして識別するかに依存します。
なぜならば、各オブジェクトによってそのプロパティ(持っている特性)が異なるため、複雑度判定のために利用可能な情報が異なるからです。
以前、「見積りツール(Xradian)でのトランザクションファンクションの識別」で何をトランザクションファクションとして識別するかについて、以下の案を検討してきました。
① プロセス
② デバイス/GUI(画面や帳票)
③ フィールド更新仕様タイトル
④ DLCP
では、どのオブジェクトのどのような情報を元に複雑度を判定していけばいいのでしょうか?
繰り返しになりますが、トランザクションファンクションの複雑度を判定するためには、DET(データ項目数)とFTR(関連ファイル数)を識別する必要があります。
DET(データ項目数)とは、対象のトランザクションファンクションが何個のデータ項目を処理の対象としているかということです。
FTR(関連ファイル数)とは、対象のトランザクションファンクションが何種類のファイルに対して処理を行っているのかということです。
① プロセス
プロセスについては、実は、DETやFTRをし識別するような属性が存在しません。
しかしながら、提案段階や設計の初期段階においては、必要なプロセスを整理する程度しか行いません。
その状態での見積もりを実施するということを想定すると、[システム企画(要求定義)段階での見積もり」のようにある係数を乗じることにより、規模を算出するという方法しかありません。
プロセスの情報のみで見積りを実施する場合は、プロセスタイプ別に予め係数を決めておき、タイプ別のプロセス数×タイプ別の係数を行うことによりFP規模を算出するようにしています。
もちろん、この係数は変更することが可能となっていますので、自社のプロジェクトの実績に基づき実態に合わせて係数を変更してもらえればよいと思います。
② デバイス/GUI(画面や帳票)
デバイスについては、画面レイアウト、帳票レイアウトとしてデータ項目を貼り付けながら定義していくことになりますので、 画面や帳票単位にどのようなデータ項目を対象としているのかを把握することが可能です。
このレイアウト上に定義されているデータ項目数をカウントすることにより、DET数を算出します。
Xupperの画面、帳票レイアウトは、ディクショナリで管理されているフィールドを用いて定義していきますが、1つの画面や帳票上で同じフィールドを何度でも繰り返して使用することが可能となっています。
しかし、DETのカウント条件として二重にカウントしないということがありますので、画面上に繰り返し出てくるデータ項目については、1回しかカウントしないようにしています。(⇒同じフィールドの場合は1回しかカウントしないようにしています。)
では、FTR数はどうやって算出すればいいのでしょうか?
実はXupperでは、レイアウト上のデータ項目に対してどのエンティティの項目なのかを定義することができるようになっています。
しかし、レイアウトを定義した段階では、まだエンティティ関連図は完成していないということが多いと思いますし、レイアウト上の個々のデータ項目に対して対応するエンティティを定義していくとい作業も現実的ではありません。
この段階でエンティティ関連図が完成している(エンティティの属性項目が確定している)ということが前提となりますが、レイアウト上にデータ項目を貼り付ける際に、エンティティの属性から選択して張り付けるという操作が可能であり、その場合は、自動的にレイアウト上のデータ項目にエンティティ情報が付加されます・・・
XradianでどのようにFTRを集計しているかという話に戻りますが、この段階では概念データモデル(エンティティとリレーションと主キーレベル)は完成しているであろうという前提で、プロセスとエンティティのCRUD情報からFTRを集計しています。
※プロセスには複数の画面や帳票を定義することが可能となっていますが、プロセス単位のCRUD数をFTRとしてカウントするため、同じプロセスであれば、全ての画面及び帳票のFTRが同じ値となります。
③ フォールド更新仕様タイトル
フィールド更新仕様タイトルをトランザクションファンクションとして識別する場合は、フィールド更新仕様タイトルごとに、対象エンティティのどの属性に対してどのような処理を行っているのかを定義することができます。
従って、フィールド更新仕様タイトルの処理対象となっているエンティティの属性の数をカウントすることにより、トランザクションファンクションのDET数とします。
FTRはどのようにカウントするのかですが、ある処理(トランザクションファンクション)というのは、当然、複数のエンティティに対して処理を実施していることがあります。
例えば、AというエンティティとBというエンティティに対して○○更新という処理を実施していたとします。
この○○更新というのが、フィールド更新仕様タイトルということになりますが、この○○更新というタイトルは、Aエンティティに定義され、かつ、Bエンティティにも定義されることになります。
つまり、同じタイトルが別々のエンティティに対して定義されるという状態になるわけです。
そこで、あるフィールド更新仕様タイトルが、どのエンティティ(何個のエンティティ)に定義されているかをカウントすることにより、トランザクションのFTR数としています。
ここで、注意してもらいたいのは、フィールド更新仕様タイトルが複数のエンティティにまたがって処理を実施している場合は、各エンティティの処理対象フィールドを全て合計した値が当該トランザクションファンクションのDET数となるということです。
④ DLCP
DLCPをトランザクションファンクションとする場合ですが、イベント単位にDLCPが定義されていますので、対象のプロセスや画面にどのようなイベントが定義されていて、それらのイベントから起動されるDLCPに情報からトランザクションファンクションの複雑度を判定していきます。
まず、DET数ですがDLCPのBP(Business Procedure)から呼び出されているDAP(Data Access Procedure)でどのようなエンティティの属性にアクセスしているのかを識別できますので、DAPで使用しているデータ項目数をDET数としてカウントします。(また、DETの条件としてアプリケーション境界をまたがるという条件がありますので、内部の処理で使用しているだけのデータ項目(属性)については、DETの対象外としています。⇒DAPのパラメータをDETとして識別します。)
また、XupperのDLCP(BPやDAP)のパラメータは、ディクショナリで管理されているフィールドを用いて定義していきますが、異なるBPやDAPで同じフィールドを何度でもパラメータとして指定することが可能となっています。
しかし、DETのカウント条件として二重にカウントしないということがありますので、同じデータ項目については、1回しかカウントしないようにしています。(⇒同じフィールドの場合は1回しかカウントしないようにしています。)
次にFTR数ですが、これも DLCP のBP(Business Procedure)から呼び出されているDAP(Data Access Procedure)でどのようなエンティティにアクセスするかにつてわかりますので、そのエンティティの数をカウントすることにより、FTR数とします。
FTRについても、同じエンティティを重複してカウントしませんので、別のDAPで同じエンティティを使用していたとしても、1度しかカウントしません。
<<トランザクションファンクションの複雑度の判定>>
DET(データ項目数)とFTR(関連ファイル数)がわかれば、あとは以下の判定テーブルに当てはめて複雑度を判定すればいいわけです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます