忍者ブログ
研究関係覚書用 無事に卒業できますように・・・
[11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

研究内容整理@ゼミ用

☆プログラム理解に重点をおく

「プログラム理解のためにソースコードを変えて実行することも多い」
表示が変わる所も、表示が変わらない所もある。

*流れ、構造を表示(静的解析)→ 動的解析の結果をプラスする
 ★対象者のレベルは? 
   ☆初心者レベルの支援ならば何が必要なのか
      Java特有の構造(他より強調して表示させるとか)
      既存ライブラリ等の機能説明(ドキュメント?) 
   ☆中規模レベルの支援ならば何が必要なのか
      抽象化
  Maybe中規模レベル(1万行程度まで?)
    そのまま図にすると量が多くなり余計に複雑になる可能性がある
    → 読む量を減らす
       ★抽象化
         ソースコードから得られた図を抽象化
         ☆ユーザがまとめる
           ある程度のまとまりのある動作をユーザが判断し、1つの動作としてまとめる
         ☆似た構造の部分を知らせる(まとめるための1つの参考になる?)
           必要があれば自動で一括にまとめる?(リファクタリング) 
           (メンテナンスの立場では役に立つ 似た場所は同様に直すことが多い)
       ★実行時に通らなかった所を非表示にする(注目すべき所を目立たせる)
         もしくは通った所をハイライト表示
       ★表示する動作、しない動作の選択を可能にする
         (必要のない箇所を見る手間を省く)

 ★どこまでをシステムとするのか
   ライブラリ
   フレームワーク

*全体の概要?
・ソースコードからUMLを作成する(リバースエンジニアリング)
・実行時にログをとり、UMLに結果を反映させる
・プログラムを変更した際に差分を取得し、UMLに結果を反映させる
(ソースコードを返ることでどれくらいUMLがかわるか、どちらをベースに考える方がよいのか)
  → ベースは変更前のソースコード(より一般的な状態であるため)
  → 少しずつ変えて元に戻してを繰り返す
    変更を保存した場合はそれに対して新たなUMLセットを保存?

*リバースエンジニアリング機能*
<ユーザ>(参:EclipseUML)
 ・フォルダ選択
 ・関係選択
 ・パッケージコンテンツの選択
  ↓
<システム>
 ・JavaMLでXML形式に変換
 ・必要な情報を取得(DOM)
    クラス図:クラス名、メソッド名、変数名
          継承や実装の関係(インヘリタンス)
          クラスの包含関係など(関連)
          動的・一時的な関係(依存)
    シーケンス図:クラス名
             クラスの呼び出し関係(メソッド名、返り値など)
             条件分岐、ループ、再起
  ↓
 ・UMLを作成(クラス図、シーケンス図?)
    EMFで定義
    GEFで表示

*動的解析機能*
・ツールの検討
  JDIを用いて必要な情報を取得
  メソッドなどの呼び出しとか?
・アスペクト指向
  AspectJ
  必要な実行履歴を取得箇所へうめこんでいくことが可能に

*差分解析機能*
☆差分
  ・動的解析・静的解析
  ・追加、削除、修正
☆表示法
  ・追加した場合:追加部分+影響範囲をハイライト
    影響範囲の定義の必要 どこまでを影響とするか(修正が必須、可能性がある等)
  ・削除した場合
  ・修正した場合(削除+追加) UMLだとどうなるか
  ・複数箇所の変更を行った場合
      などの場合どう差分を表示すると良いか
☆どうやって差分を取得するのか
☆どのタイミングで差分を解析するのか
   保存したら?   目安となる量はどの程度か
   同期させて表示? どのように同期させるのか、重くならないか
☆「差分」の定義
  ★ソースコードを変更したときの静的な差分
    影響範囲とは? 変数の依存関係、どのような違いを表現するのか
  ★実行時の変化を表したときの差分
    経路の違い

*結果反映機能(表示部)*
・実行後に実行に関係した箇所をハイライト(図に反映、ソースコードにも反映?)


*評価方法
・実際に利用してもらいアンケートをとる
  対象者:Java経験者かつUMLの知識のある人
  対象プログラム
   1、有用な結果が見込まれるプログラムについてシステムを利用
       リバースエンジニアリング機能と事項履歴反映機能のみを
       使用する場合と、差分反映機能を追加した場合で理解の容易性
       を比較、評価
   2、自由なプログラムを用いてシステムを利用
       実際のプログラム開発における有用性を評価
・より定量的・科学的な評価方法はないか
   限界があっても、部分的にでも評価できる物がないか
★プログラム理解
 人に使ってもらった感触でやるしかない?(システムの有用性の調査)    


*参考
・影響波解析 アクサ(名大)、井上(阪大)
・ソースコード影響範囲 波及効果が及ぶ範囲(呼び出し関係図・依存関係図)
   メンテナンスとか
・静的解析+動的解析
PR


忍者ブログ [PR]
カレンダー
09 2025/10 11
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
最新記事
(02/11)
(02/09)
(02/09)
(02/09)
tex
(02/05)
最新TB
プロフィール
HN:
nrk
性別:
非公開
バーコード
ブログ内検索
最古記事
(10/14)
(10/16)
(10/20)
(10/23)
(10/24)
P R