研究概要 |
プログラムの保守を効率化するためには,プログラムから仕様への逆生成が重要である.本研究では,ファイル処理例題に対するCOBOLプログラムから形式的な要求仕様を逆生成する手法を提案するとともに,それを実現するシステムCOBOL Reverse Engineer for Modules:CORE/Mを開発した.プログラム理解の結果を表す要求仕様として,等関係仕様を提案した.この一般形は,『X_L.I0_F=g(X0_<G0>.I0_<F0>,X1_<F1>.<I0,I1>_<F1>,…)』のようになる.この式は,『識別子I0=値i0で表わされる実体I0_Fの属性X_L.I0_Fの値は,他のファイルG0におけるこの実体I0_<F0>の別の属性X0_<G0>.I0_<F0>や実体I0=i0と関連している全ての実体I1の属性X1_<F1>.<I0,I1>_<F1>などに,関数gを適用させて求まる』ことを表している.この様に,計算対象の特定化を識別子やファイル修飾子によって,また計算の算術的意味を数式や関数によって表している.特に,I0=値i0に対するX1_<F1>.<I0,I1>_<F1>は順序集合で,これに関数gを作用させて左辺の値X_L.I0_Fを求めることを表す.従って,プログラム内の繰り返し処理ブロック内で行われる計算式は,その処理ブロック内での計算対象を表す識別子I0を同定するだけで,(1)のような等関係式を用いてその式の(例えば実体I0に対する集計などの)意味を実現できる. 等関係式集合を入力するとCORE/Mは,まずプログラムをブロック構造に分解し,ブロック内で処理される計算対象の特性を,『ブロックの実用条件が,(1)識別子間の選択条件の時はファイル修飾子間の照合条件に,(2)値による選択条件の時はIF条件に,(3)識別子がある範囲の時行う繰り返し条件はこの対象を表す識別子に,それぞれ対応させる』という基本的考えに従って,各ブロック内の各計算式を等関係式に変換することで,EOS仕様を生成する.事例として,234行のCOBOLプログラムを変換した結果,元のプログラムと同じ実行結果を与える等関係式仕様を得た.今後の課題としては,等価変換などを用いて,入力プログラムに課した制約の多くを除くことである.
|