今回は、見積りツール(Xradian)でのトランザクションファンクションのタイプの判定について説明していきます。
前回の「見積りツール(Xradian)のトランザクションファンクションの識別」では、見積りツール(Xradian)で何をトランザクションファンクションとして識別するかについて説明しましたが、トランザクションファクションには、外部入力(EI)、外部出力(EO)、外部照会(EQ)の3種類存在します。
何をデータファンクションとして識別するのかということを検討した後は、識別したトランザクションファンクションのタイプが、外部入力(EI)、外部出力(EO)、外部照会(EQ) なのかをどうやって判定するのかについて検討する必要があります。
外部入力(EI)、外部出力(EO)、外部照会(EQ)の条件については、「IFPUG法でのFP算出」にて説明しましたが、再度簡単に説明しますと、外部入力(EI)というのは外部からの入力処理ということになります。ここでいう外部とは、システムの外という意味です。(あくまで主役は計測対象のシステム/アプリケーションです。)
外部出力(EO)と外部照会(EQ)というのは、外部に情報(データ)を提供するという意味では同じですが、外部出力(EO)は演算等の処理を実施するが、外部照会(EQ)はそりが存在しないよいう違いがあります。
トランザクションファンクションのタイプ判定については、結局のところ、何をトランザクションファンクションとして識別するかに依存します。
なぜならば、各オブジェクトによってそのプロパティ(持っている特性)が異なるため、タイプ度判定のために利用可能な情報が異なるからです。
以前、「見積りツール(Xradian)でのトランザクションファンクションの識別」で何をトランザクションファクションとして識別するかについて、以下の案を検討してきました。
① プロセス① プロセス
② デバイス/GUI(画面や帳票)
③ フィールド更新仕様タイトル
④ DLCP
Xupperのプロセスをトランザクションファンクションとして識別しようという場合は、プロセスのタイプでトランザクションファンクションのタイプを判定するようになっています。
プロセスのタイプですが、Xupperでは以下のタイプが存在します。
・画面入力系プロセス
・画面照会系プロセス
・帳票出力系プロセス
・バッチ更新系プロセス です。
このプロセスタイプをもとに、トランザクションファンクションのタイプを判定していこうという案です。
必ずしも、CMPの定義にはあわないと思いますが、開発の初期段階でわかる範囲で見積りを実施する場合は、ある程度の割り切りも必要だと考え、以下のように分類しています。
【図】プロセスタイプ別のトランザクションファンクションのタイプ判定
② デバイス/GUI(画面や帳票)
XupperのデバイスやGUIフォームをトランザクションファンクションとして識別しようという場合ですが、デバイスやGUIフォームとプロセスタイプからトランザクションファンクションのタイプを判定しています。
<<デバイス>>
デバイスについては、以下のデバイスタイプが存在します。
・画面
・ウインドウ
・帳票
・HTML
・フレーム
また、デバイスは基本的にプロセスに定義されるという構造になっていますので、デバイスからみてプロセスが特定できるようになっています。(⇒プロセスタイプを特定できる)
そこでデバイスタイプとプロセスタイプから、以下のようにトランザクションタイプを判定しています。
(HTMLやフレームについても対象外としています。)
<<GUIフォーム>>
Xupperにはデバイス設計とは別にGUI設計の機能があり、デバイス設計の機能ではなくGUI設計の機能を用いて画面の入出力を定義することがあります。
この場合、GUIフォームをトランザクションファンクションとして識別するということになりますが、GUIフォームにはデバイスタイプのようなタイプが存在しません。
GUIフォームに存在するのは、MainフォームかMainフォームでないかの区分だけです。
Mainフォームというのが、データ入力を行ったり、照会を行ったりするフォームで、Mainフォーム以外のGUIフォームはコード選択画面やダイアログのような補助的なフォームという扱いになります。
そこでMainフォームかどうかということとプロセスタイプから、以下のようにトランザクションタイプを判定しています。
【図 】GUIフォームのトランザクションファンクションのタイプ判定
③ フィールド更新仕様タイトル
Xupperのフィールド更新仕様タイトルをトランザクションファンクションとして識別しようという場合ですが、CRUD種別とプロセスタイプからトランザクションファンクションのタイプを判定しています。
Xupperのフィールド更新仕様タイトルのCRUD種別には、以下のタイプが存在します。
C:追加
R:参照
U:更新
D:削除
また、ある更新仕様タイトルの種別としてCRUD種別の中から任意のタイプを複数選択して定義することができるようになっています。
そこで、CUDが一つでも定義されている更新仕様タイトルは、どのプロセスタイプに定義されていようとも、外部入力(EI)として判定します。
(アプリケーション境界内の内部論理ファイルを維持管理しているトランザクションとして識別します。)
フィールド更新仕様タイトルのCRUD種別としてR:参照のみ定義されているものを、以下の組合せでタイプ判定を行っています。
【図】フィールド更新仕様のトランザクションファンクションのタイプ判定
④ DLCP
Xupperでは、DLCP定義の機能を用いてデータに対する処理を定義していくことができます。また、DLCPにはDAPとBPとがあり、データに対する処理をDAP(DataAccessProcedure)、DAPの制御を行う処理のことをBPと呼んでいます。
DAPとはデータに対するアクセス部品(入出力パラメータ付きのSQL文)のことであり、以下の種類が存在します。
C:追加
R:参照
U:更新
D:削除
基本的にBPの中からDAPを呼び出して処理を定義することになりますが、当該処理がどのようなDAPを呼び出しているかによってトランザクションファンクションのタイプを判定します。
あるBPは複数のDAPを任意に呼び出して処理定義することが可能ですので、BP前提からみると、CRUD種別が複数存在しうるということになります。
そこで、CUDタイプのDAPを一つでも利用しているDLCPは、どのプロセスタイプに定義されていようとも、外部入力(EI)として判定します。
(アプリケーション境界内の内部論理ファイルを維持管理しているトランザクションとして識別します。)
DLCP(BP)が藻日出しているDAPのCRUD種別がR:参照のみ定義されているものを、EOもしくはEQとしてタイプ判定を行っています。
DLCPのEO/EQの判定は、DLCP(DAP)の中に“Statement”(演算処理の記述)が存在するか否かで判定します。
“Statement”(演算処理の記述)が存在する場合はEO、存在しない場合はEQとして判定します。
<<コンボボックスのファンクションの認識について>>
XupperのGUI設計の機能でコンボボックスの定義を行えますが、その際にDLCPを定義するかどうかにより、EQかどうかを判定することができます。
単に、固定値をコンボボックスに表示するといった場合は、データ項目がアプリケーション境界を跨るといえませんので、ファンクションとしては認識しません。
しかし、コンボボックスのOnClickイベントにDLCPを定義し、マスタから情報を読み込むという定義を行っていれば、ファンクション(EQ)として認識することとなります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます