背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点

Slides:



Advertisements
Similar presentations
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
Advertisements

6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
JPAを利用した RESTful Webサービスの開発
コンパイラ 2011年10月17日
Applet 岡部 祐典 鈴木 敬幸.
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
第1回 HTML5入門.
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
コンパイラ 2012年10月15日
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
C#とC++とオブジェクト指向 上甲 健史.
SGMLについて 2年8組  原口 文晃.
XSL-FO + MathML MathML表示、PDF生成、SVG生成
プログラム静的解析手法の効率化と 解析フレームワークの構築に関する研究
Flyingware : バイトコード変換による 安全なエージェントの実行
コンパイラの解析 (2) GCJのデータ構造 - 1.
第12回 2007年7月13日 応用Java (Java/XML).
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第10回 2007年6月29日 応用Java (Java/XML).
第11回 2007年7月6日 応用Java (Java/XML).
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
暗黙的に型付けされる構造体の Java言語への導入
第3回 2007年4月27日 応用Java (Java/XML).
Webアプリケーションの方向性 データベース論 第13回.
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向プログラムにおける エイリアス解析について
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
プログラム解析情報のXMLデータベース化 ー 提案と実現 ー
Javaによる Webアプリケーション入門 第6回
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Javaによる Webアプリケーション入門 第2回
動的データ依存関係解析を用いた Javaプログラムスライス手法
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オブジェクト指向プログラムにおける エイリアス解析・視覚化ツールの試作
XMLゼミ 1.3 XML文書の表示 1.4 XMLの役割 1.5 XMLとプログラミング M2 正木 裕一.
Javaバイトコードの 動的依存解析情報を用いた スライシングシステムの実現
ウェッブページ書法の復習 ネットワーク論以前のお話.
バイトコードを単位とするJavaスライスシステムの試作
XML Schema (1) ソフトウェア特論 第3回 /
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
XMLゼミ 3.5 DTD M2 正木 裕一.
3-1.文書と構造 3-2.整形式文書と検証済み文書 兒玉 光太郎
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
静的情報と動的情報を用いた Javaプログラムスライス計算法
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
JSPの基本 データベース論 第2回.
JSPの基本 J2EE I (データベース論) 第8回 /
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
コンパイラ 2012年10月11日
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

XMLによるJavaプログラム解析情報の データベース化 井上研究室 山中祐介

背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点 解析情報がアプリケーション独自の形式であるため,他のアプリケーションとの情報共有が難しい 実行のたびにソースコードを再解析しなければならないため効率が悪い もっと詳細に書く.これでは現状が把握しきれない. 「解析情報」では曖昧すぎ.

目的 プログラム解析情報(意味解析木)のXMLデータベース化 データベース化による利点 XMLを用いる利点 解析情報の二次利用 解析コストの削減 XMLを用いる利点 解析情報をXMLで構造化できる XML文書を扱うための様々なアプリケーションが提供されている もっと詳細に書く. XMLを使うことをここで宣言しておく.その理由ももちろん添える. XMLを用いる利点を具体的に書く。

XML XML(eXtensible Markup Language)の特徴 XMLデータベースの利点 構文の容易性 タグ定義の自由性 DOM: XML文書を扱う共通API XSLT: XML文書の変換ルール XMLデータベースの利点 DTDによるデータの一貫性の保証 XML文書を容易に扱うことのできるDOM/XSLTの存在 次のスライドも含めて,記述内容の構造が不安定.スライドの構造に意味をきちんと持たせる. XMLの定義は「文書構造を記述するための言語」でいいの?(よく知らんから聞いてる) このあたりは事実を淡々と述べる部分なので,いい加減な本やwebページからパクるのだけは遠慮しておこう.信憑性のある文献(W3Cの文書等)から引用しといてね.

タグの例:<タグ名 属性= ”inf”> 意味解析木のXMLデータベース化 (1/2) 意味解析木 構文解析木に意味情報を加えたもの 変数/メソッド/型の宣言と参照の関係を保持 XMLタグ定義の方針 意味解析木の構造をタグ名で表現 プログラム情報や宣言,参照関係をタグの属性が保持 タグの種類は必要最小限にして構文を単純化 賢く見えるように書こう. タグの例:<タグ名 属性= ”inf”>

意味解析木のXMLデータベース化 (2/2) タグ名の例 属性の例 Method : メソッド宣言 Variable : 変数宣言 type : 型参照 属性の例 text : プログラムの内容(変数名や演算子など) id : クラスや変数などのID ref : ID参照 <Method text=“sample” id=“189b”> <type text="void" ref="4"/> <Block> <Variable text="a" id="18a9"> <type text="int" ref="7"/> <Literal text="1"/> </Variable> <Variable text=“b" id="18ab"> <variable text=“a“ ref="18a9"/> </Block> </Method> 1: void sample() { 2: int a = 1; 3: int b = a; 4: }

XMLデータベースの実現 意味解析木-XML変換ライブラリ 解析情報のXML化による応用アプリケーション Javaプログラム解析フレームワークが扱う意味解析木 ,およびそのXML記述 を相互変換する 解析情報のXML化による応用アプリケーション XMLからソースプログラムに変換 XMLからHTMLに変換 XML編集 変数名の置換 ツールは大きく分けて,2つ(発表内容 参照).

Javaプログラム解析フレームワーク ソースプログラム 意味解析木 ユーザ XML文書 解析ライブラリ GUI 意味解析木-XML class Sam{ } ソースプログラム 意味解析木 ユーザ 解析ライブラリ GUI XML <?xml…> <sample> </sample> XML文書 意味解析木-XML 変換ライブラリ

意味解析木-XML変換ライブラリ 開発言語:C++(libxml使用),約4000行 解析手順 意味解析木⇒XML XML⇒意味解析木 意味解析木をたどり各構文木要素に対応するタグを出力 XML⇒意味解析木 XML文書を解析してDOMツリーを構築 DOMツリーをたどり各タグに対応する構文木要素を作成 ツールは何を使って実現したとか,コード数がどれくらいとかもちゃんと書く.

XMLデータベースの検証 ファイルサイズ 解析時間(意味解析木構築まで) ソースプログラム 25MB XMLデータベース 62MB 対象:JDK1.3付属クラスライブラリ 解析時間(意味解析木構築まで) ソースプログラム 25MB XMLデータベース 62MB ソースプログラム 37秒 XMLデータベース 24秒

応用アプリケーション XML文書 ソースプログラム 意味解析木 ユーザ HTML文書 ソース変換 ブラウザ プログラム XML編集プログラム <sample> </sample> XML文書 意味解析木-XML 変換ライブラリ Java class Sam{ } ソースプログラム 意味解析木 ユーザ 解析ライブラリ GUI ブラウザ ソース変換 プログラム HTML <html> <body> </body> </html> HTML文書 HTML変換 プログラム XML編集プログラム (変数名置換)

使用例(HTML変換) Sam5.html 例:Sam5.java class Sam5 { 例:Sam5.xml(一部抜粋) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Java SYSTEM "java.dtd"> <Java> <CompilationUnit> <ClassType modifiers="" text="Sam5" id="0x12"> <Method modifiers="public static" text="main" id="0x189b"> <type text="void" ref="0x4"/> <Variable modifiers="" text="args" id="0x18a4"> <type text="java.lang.String[]" text_="String[]" ref="0x20"/> </Variable> <Block> <Variable modifiers="" text="b" id="0x18ad"> <type text="int" ref="0x7"/> <Operation text="="> <variable text="b" ref="0x18ad"/> <Operation text="+"> <variable text="a" ref="0x18a9"/> <Literal text="1"/> </Operation> </Block> </Method> </ClassType> </CompilationUnit> </Java> 例:Sam5.java class Sam5 { public static void main(String args[]){ int a = 1; int b; b = a + 1; System.out.println(a + "," + b); } java/lang/System.html もっと例をひねったほうがいい. つまり,ストーリー立てをしてみるとか. アニメーション機能とかもあるので,活用すべし. ここで,いろんな機能をアピールする.

まとめと今後の課題 まとめ 今後の課題 XMLによるJavaプログラム解析情報のデータベース化 意味情報以外の解析情報のデータベース化 解析効率の向上 今後の課題 意味情報以外の解析情報のデータベース化 依存関係 エイリアス関係 ちゃんと書く.