富士通研究所は10月11日、業務システムの大規模なプログラムを解析し、実装されている業務上の決まりや計算の方法などを理解しやすい条件表として自動抽出する技術を業界で初めて開発したと発表した。同社では、システム移行のアプローチにおいて過去に開発してきた技術である、プログラム資産から機能部分を見つけ出す技術や、業務ロジックの複雑度を可視化する技術とあわせ、今回開発した技術の実プロジェクトでの試行と課題対応を進め、2017年度中の実用化を目指す。
近年では、既存業務をクラウドへ移行・再構築したり、モバイル対応など新しい機能を追加したりするケースが増えている。しかし既存の業務システムは、長期間の改善・保守を経て、プログラムの複雑化、仕様書の陳腐化、開発関係者の散逸などのためにブラックボックスとなっている場合が多く、運用されている業務仕様の把握に多大な時間が必要となっている。
そこで富士通研究所では今回、業務仕様を、プログラム作成不要で業務ルールを自動的に実行できるBRMS(Business Rule Management System:業務担当者が理解しやすい形式の業務ルールを、プログラムを作成せずに実行できるようにするシステム)のように条件表の形で管理することを目指した。
そのためにはまず、現行の複雑なプログラムから業務仕様を掘り起こして、仕様書の再整備や、条件表の形に加工することが必要となる。
業務システムの部分特性に合わせた移行のアプローチ
条件表を抽出する技術として、従来、シンボリック実行(プログラム解析手法の一つ。プログラムが実行し得る処理経路を網羅的に抽出する技術)技術を用いてプログラムの実行経路を抽出してから、条件表として整理する手法が知られている。しかし、この手法はプログラムが大規模で複雑になると実行経路の個数が膨大となってしまうので、大規模な業務システムへの適用が難しいという実用上の課題があった。
プログラムから抽出する条件表と特長、実用性の課題
こうした課題に対し、今回開発した技術では、まず大規模なプログラムについて、業務ロジックの複雑さやプログラム構造に着目して処理ブロックに分割し、部分ごとに独自のシンボリック実行技術を用いて条件表を抽出。次に、サブルーチン呼び出しなどプログラムの流れとプログラム中の変数の参照や更新を解析して、分割生成した条件表を結合することによって本来の処理内容の条件表を再構成する。例えば、サブルーチンの呼び出し前後で分割した場合は、呼出元、呼出時点、呼出先の3つの条件表を抽出し結合する。
これにより、従来は呼出元・呼出先の経路数の積程度の実行経路を分析する必要があったのに対し、今回の技術ではそれぞれの和程度の経路数にまで処理を削減することができた。この削減効果はサブルーチン呼び出しが多重であるほど大きくなり、例えば3重のサブルーチン呼び出しで、従来は3060個の実行経路の分析が必要であったところを41個に削減できた。さらに、入力項目値チェックやデータベースの処理など、業務でのデータ処理に直接関係しない部分は分析の対象外とすることで、注目する業務処理だけの条件表を抽出でき、不要な経路を削減する。
今回開発した技術
これにより、これまでの技術では分析できなかった大規模で複雑なプログラムからも業務仕様を抽出できるようになったという。さらに、今回開発した技術によってプログラムから自動抽出した条件表は、以下のように利用することができる。
- 仕様書の再整備(リドキュメント)の効率化
- BRMSルールへの変換
抽出した条件表は、プログラム実行結果を正確に、漏れなく、簡潔に表現するので、プログラムの途中の処理内容を人が追跡して理解する手間を削減できる。条件表を利用して再整備したドキュメントは、次のシステムを設計する際の資料として活用できる。
条件表をBRMSルールに加工・変換することによって、業務システムの変化の大きい部分においても、BRMSに移行する際のルール作成を効率化する。
富士通研究所の社内において大規模なCOBOLプログラムへ適用した事例では、仕様書の再整備にかかる時間を約3分の2に削減できたほか、実システムの大規模なプログラムから抽出した条件表をBRMSルールに加工できることが確認できたとのこと。