Java 2 Department of Computer Science Graduate School

  • Slides: 17
Download presentation
Javaプログラムの開発履歴における アクセス修飾子過剰性の分析 井上研究室 博士前期課程2年 石居 達也 Department of Computer Science, Graduate School of Information

Javaプログラムの開発履歴における アクセス修飾子過剰性の分析 井上研究室 博士前期課程2年 石居 達也 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 1

過剰なアクセス修飾子の宣言による問題の例 文字列strの長さを取得したい public class X { private String str = null; private void set.

過剰なアクセス修飾子の宣言による問題の例 文字列strの長さを取得したい public class X { private String str = null; private void set. String( ) { // ① str = "hello"; } public int get. Length() { // ② return str. length(); } public int get. Correct. Length() { this. set. String(); return this. get. Length(); } } <開発者の想定する正しい手順> ① set. String()を呼び,strに文字列を代入 ② get. Length()を呼び,strの長さを取得 publicなメソッドget. Correct. Length() get. Length()のアクセス修飾子が privateではなくpublic 外部から①を飛ばして②を実行可能 Null. Pointer. Exceptionの発生 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3

既存研究:AE [1] n フィールド/メソッドの状態はアクセス修飾子の種類別に以 下の表のように分類される 行:現在のアクセス修飾子 p 列:適切なアクセス修飾子 p n AE(Accessibility Excessiveness) フィールド/メソッドに対して過剰なアクセス修飾子が 宣言されている状態

既存研究:AE [1] n フィールド/メソッドの状態はアクセス修飾子の種類別に以 下の表のように分類される 行:現在のアクセス修飾子 p 列:適切なアクセス修飾子 p n AE(Accessibility Excessiveness) フィールド/メソッドに対して過剰なアクセス修飾子が 宣言されている状態 p 表の色付きセルが該当 p Public Protected Default Private No. Access pub-pub pub-pro pub-def pub-pri pub-na Protected x pro-pro pro-def pro-pri pro-na Default x x def-def def-pri def-na x x x pri-pri pri-na Public Private Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 5

バージョン毎のフィールド/メソッド分類 NA 宣言されてはいるが n AE以外の状態を 2つにグループ化し, どこからもアクセスされていない AE 計3つの状態を定義 アクセス可能な範囲が 実際のアクセス範囲より広い Public Protected Default

バージョン毎のフィールド/メソッド分類 NA 宣言されてはいるが n AE以外の状態を 2つにグループ化し, どこからもアクセスされていない AE 計3つの状態を定義 アクセス可能な範囲が 実際のアクセス範囲より広い Public Protected Default Private No. Access pub-pub pub-pro pub-def pub-pri pub-na Protected x pro-pro pro-def pro-pri pro-na Default x def-def def-pri def-na x pri-pri pri-na Public 適切 x Private x x アクセス可能な範囲と 実際のアクセス範囲が一致 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 6

バージョン間での状態遷移の分類(1/2) n 2つのバージョン間におけるフィールド/メソッド の状態遷移 18種を 6つにグループ化 a, p j 適切 d e, q なし

バージョン間での状態遷移の分類(1/2) n 2つのバージョン間におけるフィールド/メソッド の状態遷移 18種を 6つにグループ化 a, p j 適切 d e, q なし g m k b n AE f h c l o NA i, r Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 7

分析概要 (2/2) n 実験対象: 7つのJavaプロジェクト バージョン番号 バージョン数 開発期間(年) Apache Ant 1. 1 ~ 1.

分析概要 (2/2) n 実験対象: 7つのJavaプロジェクト バージョン番号 バージョン数 開発期間(年) Apache Ant 1. 1 ~ 1. 8. 4 23 2003~ 2012 Areca Backup 5. 0 ~ 7. 2. 17 66 2007~ 2012 Argo. UML 0. 1 ~ 0. 34 19 2002~ 2011 Free. Mind 0. 0. 2 ~ 0. 9. 0 16 2000~ 2011 JDT_Core 2. 0. 1 ~ 3. 7 16 2002~ 2012 j. Edit 3. 0 ~ 4. 5. 2 21 2000~ 2012 1. 0. 2 ~ 2. 3. 7 34 2002~ 2012 プロジェクト名 Apache Struts Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 10

分析 1結果-Antにおけるフィールド状態遷移 0. 02, 71. 42 6. 41 適切 0. 03 2. 03 なし

分析 1結果-Antにおけるフィールド状態遷移 0. 02, 71. 42 6. 41 適切 0. 03 2. 03 なし 0. 46 0. 21 0. 04 0. 16 1. 41 0. 07, 15. 28 AE 0. 13 0. 02 0. 00 0. 03 NA 0. 00, 2. 28 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 11

分析2結果-フィールドAE修正状況(単位: %) 全体 → 修正される割合は全AEとも1%に満たない pub-def, pub-pri → 全 7プロジェクトにて修正作業が行われている pro-def, pro-pri, def-pri →

分析2結果-フィールドAE修正状況(単位: %) 全体 → 修正される割合は全AEとも1%に満たない pub-def, pub-pri → 全 7プロジェクトにて修正作業が行われている pro-def, pro-pri, def-pri → 6プロジェクトにて修正作業が行われている Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 13