Department of Computer Science Graduate School of Information

  • Slides: 15
Download presentation
データフロー情報を用いたソフト ウェア部品利用例の抽出 コンピュータサイエンス専攻 井上研究室 柳 慶吾 Department of Computer Science, Graduate School of Information

データフロー情報を用いたソフト ウェア部品利用例の抽出 コンピュータサイエンス専攻 井上研究室 柳 慶吾 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

Java プログラムにおける例 開発者 既存のプログラムのとあるメソッド String name = x. get. Name ( ) ; y.

Java プログラムにおける例 開発者 既存のプログラムのとあるメソッド String name = x. get. Name ( ) ; y. set. Name (name) ; class X { if (c. bar) c. baz (d) ; String set. Name (String name) {. . . } ; String type = z. get. Type ( ) ; String set. Type (String type ) {. . . } ; y. set. Type (type) ; String set. ID (String id) {. . . } ; } a. foo (b) ; 利用例を 調べたい メソッド 同時に利用する べきメソッド 見落としてしまった 一つのメソッドではなく複数のメソッドに渡って利用される 場合はさらに理解が困難 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 4

メソッドの接続関係 x メソッド・コンストラクタ呼び出し ▬ obj : オブジェクト頂点 ▬ param : 引数頂点 ▬ ret :

メソッドの接続関係 x メソッド・コンストラクタ呼び出し ▬ obj : オブジェクト頂点 ▬ param : 引数頂点 ▬ ret : 戻り値頂点 int size = x. get. Size ( ) ; y. set. Size (size) ; get. Size ( )_call ob j ret siz e y set. Size (int)_call para m ob j ret voi d 戻り値頂点からオブジェクト頂点・引数頂点へのデータフ ローを調べてメソッドの接続関係を抽出 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7

抽出された利用例:Bio. Java ret_<Simple. Comparable. Triple: Simple. Comparable. Triple(. . . )> obj_<Triple: Term get.

抽出された利用例:Bio. Java ret_<Simple. Comparable. Triple: Simple. Comparable. Triple(. . . )> obj_<Triple: Term get. Object()> 12 obj_<Triple: Term get. Predicate()> 12 obj_<Triple: Term get. Subject()> 12 private void remove. Triple(Triple t) { -> 出現回数は各 12 triples. remove(t); pull. Triple(subject. Triples, t. get. Subject(), t); pull. Triple(object. Triples, t. get. Object(), t); pull. Triple(relation. Triples, t. get. Predicate(), t); 実際に 13個の メソッドで 3個 同時に利用 } Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 13

抽出された利用例:Apache Ant ret_<Java: Java(Task)> -> obj_<Java: void set. Classname(String)> 14 obj_<Java: void set. Classpath(Path)>

抽出された利用例:Apache Ant ret_<Java: Java(Task)> -> obj_<Java: void set. Classname(String)> 14 obj_<Java: void set. Classpath(Path)> 14 obj_<Java: void set. Fork(boolean)> 14 java. Task. set. Classname(ejbc. Class. Name); . . . 出現回数は各 14 java. Task. set. Fork(true); if (classpath != null) { } java. Task. set. Classpath(classpath); 異なる利用順序・条件 で 14個のメソッドで 3個 同時に利用 java. set. Classpath(p); java. set. Classname("org. apache. jasper. Jsp. C"); java. set. Fork(true); Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 14