シーケンス図を用いて実行履歴を 可視化するデバッグ環境の試作 大阪大学基礎工学部情報科学科 井上研究室 淺利 勇太 研究の背景 デバッグプロセス Step1: テストで発見された不具合の再現 Step2: 不具合の原因であるバグ位置の特定 Step3: バグ修正 Step2が最もコストを必要とする作業であり、 デバッガによる支援が行われている 2 デバッガの機能 ブレークポイントによる、プログラムの実行 の一時停止 ステップ実行による、文単位の実行 一時停止状態では、停止した時点のス タック内の各変数の値を取得できる 3 オブジェクト指向プログラムの デバッグの難しさ OOPでは、動的束縛のために、ソースコー ド上のメソッド呼び出しの記述と、実際 のメソッド呼び出しの動作が異なる オブジェクト群がどのような相互作用(状 態)を経て現在に至ったか 特定のオブジェクトに対するメソッド呼び 出し履歴 4 研究の目的 通常のデバッガでは得られない、メソッド呼 び出し履歴をシーケンス図として表示する ことで、デバッグ支援を行う 対象:Javaプログラム シーケンス図: オブジェクト間のメッセージのやり取りを時間に沿って表 すための図 5 シーケンス図の生成方法 Amida: 実行履歴からシーケンス図を生成するツール A(1).a(){ B(2).b(){ } B(2).b(){ } } B[2] A[1] a() b() b() 2 b() 谷口、 石尾、 神谷、 楠本、 井上: "Javaプログラムの実行履歴に基づくシーケンス図の作成"、 ソフトウェア 工学の基礎XI、日本ソフトウェア科学会FOSE2004、pp.5-15(2004). 6 シーケンス図からのバグ位置の 特定 プログラムの設計と、生成されたシーケンス 図の比較 設計では呼び出す(呼び出されない)はずのメ ソッドが実際は呼ばれていない(呼ばれている) メソッド呼び出しの順序 不具合が見つかったオブジェクトに対しての メソッド呼び出し履歴の調査 7 設計と生成されたシーケンス図 との比較 設計時に作成したシーケンス図 A[1] a1() B[2] C[3] 実行履歴から生成されたシーケンス図 A[1] B[2] C[3] a1() b1() b2() b2() c1() c1() c2() c3() c3() c2() 8 シーケンス図からのバグ位置の 特定 プログラムの設計と、生成されたシーケンス 図の比較 設計では呼び出す(呼び出されない)はずのメ ソッドが実際は呼ばれていない(呼ばれている) メソッド呼び出しの順序 不具合が見つかったオブジェクトに対しての メソッド呼び出し履歴の調査 9 不具合が見つかったオブジェクト についてのメソッド呼び出し履歴 実行履歴から生成されたシーケンス図 A[1] B[2] C[3] b1() a1() b2() b3() c1() 不正な値の変数 ブレークポイントでの停止位置 10 開発環境への実装 シーケンス図生成機能を、統合開発環境 Eclipseのプラグインとして組み込み、デ バッグ環境を試作 デバッグ時に実行履歴の取得 ブレークポイントでの停止時・実行終了時に実 行履歴をシーケンス図として表示・更新 シーケンス図からソースコードへの参照 11 実行画面 スタックトレース エディタ シーケンス図表示部 12 適用例 試作した環境でドローツールを開発 バグの特定作業にシーケンス図生成機能を利用 直線、長方形、楕円の配置 マウスによる配置 パラメータ設定エリアからの座標入力による配置 と着色 配置済みの図形のリスト表示 図形の重なりの順序変更 図形の削除 不具合:マウスによる図形配置の際に、頂点の座標 が別の値に変更されてしまう 13 適用例: 正常な図形配置動作 追加 図形リスト 頂点座標をセット パラメータ設定エリア 図形描画部 14 適用例: 不具合 追加 不正な頂点座標をセット 15 適用例: 設計と生成されたシー ケンス図との比較 実行履歴から生成されたシーケンス図 図形配置の処理設計 キャンバス キャンバス 図形オブジェクト 図形オブジェクト ドラッグの終了() 頂点2の座標設定() 図形の配置と パラメータ設定エリアの更新() 設計にはない バグ 16 考察 シーケンス図から実際の動作を把握し、バグ位 置の特定をすることができた 設計と実際の動作との比較は、デバッグに有効 であると確認できた 有効に使うには、対象のプログラムについての 設計情報が利用できることが必要 全体の大まかな設計についての知識 クラス名、メソッド名から処理内容が分かること 17 まとめ 主な結果 デバッグ支援のため、プログラム実行履歴から シーケンス図を生成する機能を持つデバッグ環境 を試作した Javaプログラムの実際の開発に使用し、デバッグ における有効性を確認した 今後の課題 より多くのソフトウェア開発への適用 18
© Copyright 2024 ExpyDoc