学位論文要旨



No 120951
著者(漢字) 四野見,秀明
著者(英字)
著者(カナ) シノミ,ヒデアキ
標題(和) プログラムの依存関係分析による遺産ソフトウェアの解析とアスペクト指向プログラムへの展開に関する研究
標題(洋)
報告番号 120951
報告番号 甲20951
学位授与日 2006.03.23
学位種別 課程博士
学位種類 博士(学術)
学位記番号 博総合第654号
研究科 総合文化研究科
専攻 広域科学専攻
論文審査委員 主査: 東京大学 教授 玉井,哲雄
 東京大学 教授 川合,慧
 東京大学 助教授 増原,英彦
 東京大学 教授 山内,和紀
 東京大学 助教授 田中,哲朗
内容要旨 要旨を表示する

研究の背景と目的

ソフトウェアは開発された後に修正が行われないということはありえない.バグの修正,機能拡張,パフォーマンス改善,保守性向上のためのリファクタリング,プラットフォーム移行などのために,必ずプログラムの修正が行われる.修正のためのプログラムの理解や影響把握の生産性向上がライフサイクル全体のコスト削減に大きく寄与する.修正ではなくシステム自体を別のプラットフォーム上で作り直す場合も,既存システムを理解する必要がある.その際にもプログラムの理解が必要である.

プログラムの理解となると仕様書が役立つと考えられるが,仕様書は度重なるプログラムの修正で,プログラムと仕様書は乖離していたり,必要となる情報が仕様書に残されていない場合も多い.プログラマが,プログラムを正確に把握するためには,プログラム自体を解析する必要がある.

プログラム解析に有効な技術としてプログラムスライシング技術がある.プログラムスライシング技術は,その手法やアルゴリズムについての研究は報告されているが,実世界のプログラムに適用した例は多くない.また,新しい方法論であるアスペクト指向プログラミングにおいての適用は研究が始まったばかりである.本研究では,新旧プログラムに対するプログラムスライシング技術を適用するためのプログラム解析モデルの考案と,その応用によるプログラム理解による再構築支援や,修正に伴う影響分析の方式について提案した.対象とするプログラムは,COBOL,PL/Iによる遺産ソフトウェアから,オブジェクト指向言語Javaに対して近年注目をされているアスペクト指向の機能拡張をしたAspectJによって書かれたものまでを対象にしている.

プログラムスライシング技術とプログラム保守/理解

Weiserによるプログラムスライスの概念の提案後,Horwitzらによってスライシングを効率良く計算するためにプログラム依存グラフを利用するアルゴリズムが提案された.その後は,プログラム依存グラフを構成する文の間のデータ依存関係と制御依存関係を利用して文の部分集合を計算することが,主にプログラムスライシング技術の適用と呼ばれている.テスト,デバッグ,保守などの適用例がある.

スライスには,プログラムの実行を伴わない静的スライスと,実行による情報を使う動的スライスがある.また,プログラムの制御の流れにそったフォワードスライスとバックワードスライスがある.本研究では,プログラム理解や影響分析を狙いとすることから,それに適した静的スライスを対象とする.スライスの方向としてはフォワード,バックワードの両スライスを実現できるように考慮している.

プログラム依存関係分析モデルと遺産プログラムへの適用

COBOLやPL/Iを対象として,プログラムスライシング技術におけるデータ/制御依存関係の解析結果を抽出できるプログラム解析モデルを構築し,APIとして設計・実現した.遺産プログラムの多くは,ソフトウェア工学的には望ましくないコーディングが行われている.それにより正確なデータフローが計算できないために,正確なスライシングが行われていなかった.本解析モデルとAPIを適用すれば,そのようなプログラムにおいても正確なスライシングを実現できる.

そのAPIの適用例として,データ/制御依存関係に基づく解析結果を帳票化したツールを実現した.そのツールは,データ項目の使用法を一貫性を持たせるためのシステム再構築の現場でプログラムの理解に実際に利用された.また,実現されたツールは実装済みのビジネスロジック(例,保険の約款)の検証に役立つことも分かった.

既存のCOBOLやPL/Iで書かれたシステムをWeb化,J2EE化するなどの必要性というレガシー現代化が注目されている現在,遺産プログラムの理解のための正確なプログラム解析は重要である.

アスペクト指向への展開と織り込みによる影響波及解析への適用

プログラム解析モデルを,アスペクト指向言語AspectJで書かれたプログラムに適用するための拡張も行った.

アスペクト指向に基づくプログラムは,アスペクトとそれが織り込まれるベースプログラムとから成る.アスペクト指向における織り込みは,ベースプログラムに対するアスペクトによるある種の「修正」と見なすことができる.ベースプログラムが既にある程度安定して稼動している場合,そのアスペクトの織り込みによりベースプログラム中のどの範囲まで影響があるかを把握することが有効である.たとえば,織り込みによりバグが挿入された場合の問題解決,織り込み後の回帰テストの必要な範囲の把握などに役立つ.

アスペクト指向に対応したプログラム依存グラフに基づくスライシングをおこなうことにより,織り込みの影響が,ベースプログラムに与える影響の範囲を解析する手法を提案した.その影響分析の結果,準備されていたテストケースの中で,どの範囲までテストすべきかを限定できることを示した.また,実現したツールを公開されているAspectJプログラムに適用し,その有効性を検証した.この織り込みによる影響分析のツールは,2006年3月に開催されるFifth International Conference on Aspect-Oriented Software Development (AOSD.06)へのデモンストレーション・プロポーザルが受理され,デモを行うことが決定している.

アスペクト指向に対応したプログラム依存グラフとその上でのスライシングを提供する部分は,Eclipseのプラグインとして実装され,Jadeと名付けられた.Jadeは,プログラムスライシング技術を利用するツールの実現を容易にするプラグインとして,オープンソースで公開予定である.

結論と今後の研究課題

前時代的なコーディングがなされているために,正確なスライスが計算できなかったCOBOLとPL/Iによる遺産プログラムが,本研究によるプログラム解析モデルにより正確なスライスが実現できるようになった.そのモデルを実現したAPIを利用したツールの有効性は,システム再構築の現場で確認された.

アスペクト指向プログラム上でのプログラムスライシングを実現するためのモデルが提案された.それによりアスペクト指向における織り込みによる影響の分析が可能になった.AspectJにおいてJadeに相当するツールは,今のところ他にない.また,織りこみによってベースプログラムに与える影響を解析するという発想に基づくツールも同様のものは他にない.

今後の研究課題として,AspectJとAspectCobolの解析モデルの共通化の可能性やCOBOLプログラムへのアスペクト織り込みを利用した動的解析の可能性がある.また,AspectJに関しては,今後公開することが予想される現実的なAspectJプログラムに本研究による織り込みによる影響分析ツールを適用し,アスペクトの使用法の傾向を統計的に調査するという可能性があるだろう.

Jadeにより,JavaとAspectJのプログラムに対してスライシング技術を利用したツールを実現するための道具が提供された.それを利用して,既存プログラムからアスペクトを抽出するアスペクト・マイニングや,形式的仕様記述との組み合わせでプログラム自体の検証を行なう研究などが今後考えられる.

審査要旨 要旨を表示する

ソフトウェアが開発され運用が開始された直後から,その保守・発展プロセスが始まる.したがってソフトウェア開発に関わる費用の8割は,新規の開発ではなく既存のソフトウェアを保守し,また機能を拡張発展させていく作業に投入されるといわれる.そのとき,既存のソフトウェアを正しく理解し,どこに手を加えればよいかを明確にするとともに,プログラムを修正する際に生じる影響の範囲を把握することは,きわめて重要になる.

本論文では,プログラムを構成する文の依存関係に注目した抽象モデルと,そのモデルに基づくプログラム解析の手法を提案している.解析手法のベースとなるのは,プログラムスライシング技術と呼ばれすでに知られている方法であるが,本論文では,それを社会に遺産として大規模に蓄積されている,COBOLやPL/Iで書かれたビジネスソフトウェアに適用する方法と,現在注目を浴びているアスペクト指向プログラミングに基づく言語AspectJで書かれたプログラムに適用する方法を,新たに提案している.さらにその手法を実装したプログラム理解支援ツールも開発し,その機能と実現方法,さらにその使用実験結果について報告している.

本論文は,5章から構成されている.第1章では,ソフトウェアライフサイクルにおけるプログラム解析に基づくプログラム理解支援の必要性を述べ,本研究の目的を明確にするとともに,対象とするプログラムの範囲を明示している.

第2章では,ここで提案する手法の基礎となるプログラムスライシング技術に関して,文間の依存関係グラフ,動的/静的スライス,前方/後方スライスの概念を説明している.また,この技術をプログラム保守・理解に適用した関連研究を述べ,それらとの比較で本研究の位置づけを明らかにしている.

第3章では,COBOLやPL/Iによる遺産プログラムに対してプログラムスライシング技術を適用するための,プログラム解析モデルを提案している.そのモデルに基づいて適用プログラム・インターフェース(API)を実現し,それを用いてデータ項目の利用についての詳細理解を支援するツールを実現することで,その有効性を実証した事例を報告している.これはスライシング技術を実用的な大規模プログラムに適用して,実際に有効に利用されたという貴重な成果と認められる.

第4章では,アスペクト指向プログラムへの適用のためのプログラム解析モデルの拡張と,それを利用した「織り込みによるベースプログラムへの影響分析ツール」の提案,実現について述べている.アスペクト指向における織り込みは,元のプログラムに対するある種の修正とみなせることに注目し,修正による影響の把握の意義,回帰テスト削減への利用について議論している.実現したツールを利用して,原始プログラムが公開されている5種類のアスペクト指向プログラムを解析した結果についても報告している.この結果はまだ研究の歴史の浅いアスペクト指向技術に対しての,実践的な面から大きな貢献といえる.

第5章では,上記の研究成果に基づく本論文としての結論と,今後の研究課題について述べている.

現在,旧式のプログラムに関しては,システムの全体もしくはユーザインターフェースの部分のみ最新のJava,Web技術で再構築する「現代化」の要請が強く,また団塊の世代の定年退職に伴う既存システムの知識消滅という情報技術における「2007年問題」が大きな問題となっている.その状況に対し,大規模な旧式プログラムへの理解支援を実際的に提案した本研究は,大きな意義が認められる.一方,アスペクト指向プログラミングは,学術的な研究例だけでなく,現実的なソフトウェア開発現場での適用例も急速に増えており,今後も増加が予想される.本研究はアスペクト指向プログラムにおけるプログラムスライシング技術を適用可能にし,織り込みによる影響の解析という独自の解析手法を考案していることから,学術的貢献が大きいと認められる.

よって,本論文は博士(学術)の学位論文として相応しいものであると審査委員会は認め,合格と判定する.

UTokyo Repositoryリンク