協調動作機構によるクラスの抽出実験と評価

 

秋山 構平

 

1. 目的

オブジェクト指向が普及した現在においても、問題からクラスを識別することは難しい作業である。大規模なオブジェクト指向開発であれば、属性やクラスの候補は膨大になり、なおさら困難になる。このような状況下においてクラスを識別する決定的な方法や自動化ツールが求められている。

 そこで本研究では、属性と属性値決定時点に関するデータからクラス図を自動作成するシステムを試作し、その有用性を評価した。

 2.研究の内容

 クラスを識別するには次のような方法がある。

  @仕様内の名詞および動詞に着目する方法

 Aデータフロー

 Bユースケース

  本研究では、DATARUNで見られるような属性の入れ物として実体を識別する方法に基づいて、属性値の決定時点による分類から、クラス識別を行う。

 試作システムの動作機構は、参考文献1を基にしており、内部で協調動作機構をシミュレートしている。協調動作機構とは、協調オブジェクトと呼ばれる能動的なオブジェクトが他者との関連を常時意識しながら全体を最適化するような機構である。  

2.1 試作システムの機能

 試作システムの機能は以下の通りである。

 (1)クラスの抽出機能

 属性候補の値決定時点に関するデータ(基本データ)からクラスとその関連を分析する機能である。基本データは業務で使用する帳票などから、あらかじめ抽出する。

 (2)継承関係の作成機能

 一つのクラスの中に状況によって使用されない属性が混在する場合は、分割し継承関係を結ぶ機能である。

 (3)クラス図出力機能

 結果を図で表示しレイアウト編集する機能である。

 

3.実験および評価

3.1 生じた問題点

(1)継承を含むクラスの分割

 一つのクラスの中に、ある使用状況では必要とし、その他では必要でない選択的な属性が混在している場合、クラスを分割して継承関係を結ぶ必要がある。

 さらに、選択的な属性が多くなると分割後のクラスが多重継承となる可能性がある。

 (2)属性振り分け先の検索

 システムは値決定時点ごとに属性を振り分けるが、振り分け先の協調オブジェクトを振り分け元の協調オブジェクトが知っているとは限らない。

 

3.2 解決策

(1)継承を含むクラスの分割

 属性を必要とする使用状況の組合わせを記録して、正しく分割できるようにした。このとき、他のクラスとの関連も正しく分割するため、関連が生じる使用状況の組合わせも記録する。分割後のクラスと他のクラスとの関連を結び直すときに、関連が生じる使用状況の組み合わせに対応する分割後クラスが存在しない場合は、属性のない空のクラスを作る。

 (2)属性振り分け先の検索

 全ての協調オブジェクトを統括する協調オブジェクトに問い合わせる。

 3.3 評価およびまとめ

 具体的には「レンタルビデオショップ」、「在庫問題」等の設計問題に適用し、正しい出力が得られるか検証した結果、以下の成果が得られた。

  (1)     限られた設計問題ではあるが、正しい結果が得られ、システムの有効性が確認できた。

 (2)クラスの識別において、値の決定タイミングを意識することの有効性が確認できた。

 参考文献

[1] 大木幹雄; 協調動作機構の実体関連分析プロセスへの適用; 情報処理学会 ソフトウェア工学研究会 オブジェクト指向シンポジウム'99 999 pp.127-136,1999

[2]Daniel Pascot: 落水浩一郎 : C/Sデータベース設計入門 情報システムの新しい分析・設計法」,日経BP ,1996