プログラム解析の効率化
に関する研究
大阪大学 大学院基礎工学研究科
情報数理系専攻 ソフトウェア科学分野
略歴
平成 9 年 3 月
大阪大学大学院基礎工学研究科 物理系専攻 情
報工学分野 博士前期課程修了 在学中はプログラムスライシ
ングに関する研究に従事
平成 9 年 4 月
日本電信電話株式会社 入社
平成 9 年 8 月
ヒューマンインタフェース研究所に配属 ビデ
オサーバの負荷分散技術の研究・開発に従事
平成 12 年 4 月
西日本電信電話株式会社 大阪支店に異動 中
規模 ERP パッケージの SI 業務
平成 13 年 10 月
大阪大学大学院基礎工学研究科 情報数理系
専攻 博士後期課程入学 プログラムスライシングに関する研
究に従事
平成 14 年 5 月
日本電信電話株式会社 サイバーソリューショ
ン研究所に異動 ディジタルコンテンツの著作権管理に関する
研究・開発に従事
論文一覧
プログラム依存グラフの効率的な更新手法
電子情報通信学会論文誌 (1998)
⇒
2
章
制限された動的情報を用いたプログラムスライシング手法の提
案
電子情報通信学会論文誌 (2002)
⇒
3
章
制限された動的情報を用いたブロック単位スライシング手法の
提案
電子情報通信学会論文誌 ( 投稿中 )
⇒ 章
4
ソースコード解析ツール開発支援システムの試用
電子情報通信学会論文誌 (1997)
Dependence-Cache Slicing: A Program Slicing Method Using
Lightweight Dynamic Information,
10th IEEE International Workshop on Program Comprehension (2002/6
発表
予定 )
発表内容
プログラム解析概要
プログラム依存グラフの効率的な更新手法
プログラムが変更された場合に、プログラム依
存グラフを再計算することなく、部分的に更新す
る手法
準動的解析を用いたスライシング手法
静的解析情報と動的解析情報を組み合わせた効
率的なスライシング手法
デバッグ作業におけるプログラム解析
ソフトウェア開発において、デバッグ・テス
ト・保守フェーズにおける比重はソフトウェ
アの大規模化に伴い増加している
デバッグ効率向上へのアプローチ
文間の
依存関係解析
によって特定の文に関連
のある文を抽出
依存関係解析はオーバヘッドが大きい
↓
解析の効率化が重要
プログラムスライス
注目した文に影響を与える(受ける)文の集
合
プログラム開発における様々なフェーズで利
用可能 ⇒ 特にデバッグフェーズ
開発作業の効率化を実現
1 program Square_Cube(input, output); 2 var a, b, c, d : integer;3 function Square(x : integer) : integer; 4 begin
5 Square := x * x 6 end;
7 function Cube(x : integer) : integer; 8 begin 9 Cube := x * x * x 10 end; 11 begin 12 writeln(``Squared Value ?''); 13 readln(a); 14 writeln(``Cubed Value ?''); 15 readln(b);
16 writeln(``Select Feature! Square: 0 Cube: 1''); 17 readln(c); 18 if c = 0 then 19 d := Square(a) 20 else 21 d := Cube(b); 22 if d < 0 then 23 d := -1 * d; 24 writeln(d) 25 end.
1 program Square_Cube(input, output); 2 var a, b, c, d : integer;
3 function Square(x : integer) : integer; 4 begin
5 Square := x * x 6 end;
7 function Cube(x : integer) : integer; 8 begin 9 Cube := x * x * x 10 end; 11 begin 12 writeln(``Squared Value ?''); 13 readln(a); 14 writeln(``Cubed Value ?''); 15 readln(b);
16 writeln(``Select Feature! Square: 0 Cube: 1''); 17 readln(c); 18 if c = 0 then 19 d := Square(a) 20 else 21 d := Cube(b); 22 if d < 0 then 23 d := -1 * d; 24 writeln(d) 25 end.