MASU Department of Computer Science Graduate School of

  • Slides: 30
Download presentation
メトリクス計測 プラグインプラットフォーム MASUの開発 大阪大学 三宅 達也 肥後 芳樹 井上 克郎 Department of Computer Science,

メトリクス計測 プラグインプラットフォーム MASUの開発 大阪大学 三宅 達也 肥後 芳樹 井上 克郎 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n 関連研究 n まとめと今後の課題 SES

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 3

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 8

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 10

ソースコード解析部~AST構築部~ 言語非依存なAST ソースコード class Sample. Class extends Super. Class{ public void sample(String arg) {

ソースコード解析部~AST構築部~ 言語非依存なAST ソースコード class Sample. Class extends Super. Class{ public void sample(String arg) { System. out. println( arg ); } } Java Class Sample. Class Inherits Super. Class Public Sub Sample(arg as String) Console. Write. Line( arg ) End Sub End Class VB A S T 構 築 部 class Sample. Class : Super. Class { public void sample(String arg){ Console. Write. Line( arg ); } } C# SES 2008 CLASS_DEFINITION NAME Sample. Class INHERITANCE Super. Class CLASSBLOCK_START METHOD_DEFINITION MODIFIERS public RETURN_TYPE void NAME sample PARAMETERS METHOD_PARAM_DEF TYPE String NAME arg BLOCK_START EXPRESSION METHOD_CALL ・ 2021/9/25 ・ Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 14

構文的差異の吸収例~共通ノードを定義~ 言語非依存なAST ソースコード class Sample. Class extends Super. Class{ public void sample(String arg) {

構文的差異の吸収例~共通ノードを定義~ 言語非依存なAST ソースコード class Sample. Class extends Super. Class{ public void sample(String arg) { System. out. println( arg ); } } Java Class Sample. Class Inherits Super. Class Public Sub Sample(arg as String) Console. Write. Line( arg ) End Sub End Class VB class Sample. Class : Super. Class { public void sample(String arg){ Console. Write. Line( arg ); } } C# A S T 構 築 部 トークンの 違いを吸収 SES 2008 CLASS_DEFINITION NAME Sample. Class INHERITANCE Super. Class CLASSBLOCK_START METHOD_DEFINITION MODIFIERS public RETURN_TYPE void NAME sample PARAMETERS METHOD_PARAM_DEF TYPE String NAME arg BLOCK_START EXPRESSION METHOD_CALL ・ 2021/9/25 ・ Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 16

構文的差異の吸収例~状態定義ノードの埋め込み~ 型 > 名前の順で定義 ソースコード class Sample. Class extends Super. Class{ public void sample(String

構文的差異の吸収例~状態定義ノードの埋め込み~ 型 > 名前の順で定義 ソースコード class Sample. Class extends Super. Class{ public void sample(String arg) { System. out. println( arg ); } } Java Class Sample. Class Inherits Super. Class Public Sub Sample(arg as String) Console. Write. Line( arg ) End Sub End Class VB 言語非依存なAST CLASS_DEFINITION METHOD_PARAM_DEF NAME String Sample. Class INHERITANCE arg A S T 構 築 部 名前 > 型の順で定義 class Sample. Class : Super. Class { public void sample(String arg){ METHOD_PARAM_DEF Console. Write. Line( arg ); } arg } String C# 記述順序の 違いを吸収 SES 2008 Super. Class CLASSBLOCK_START METHOD_DEFINITION MODIFIERS public RETURN_TYPE void NAME sample PARAMETERS METHOD_PARAM_DEF TYPE String NAME arg BLOCK_START EXPRESSION METHOD_CALL ・ 2021/9/25 ・ Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 17

MASUのプラグイン作成 MASU提供部 Abstract. Plugin ・・・・・・・ メインモジュールと協調するためのAPI Abstract. Class. Metric. Plugin ・・・・・・・ measure. Class. Metricメソッド

MASUのプラグイン作成 MASU提供部 Abstract. Plugin ・・・・・・・ メインモジュールと協調するためのAPI Abstract. Class. Metric. Plugin ・・・・・・・ measure. Class. Metricメソッド Abstract. Method. Metric. Plugin ・・・・・・・ measure. Method. Metricメソッド ユーザ記述部(Plugin実装) CBOPlugin ・・・・・・・ measure. Class. Metricメソッド (ビジネスロジックを実装) Pluginsフォルダ CBOPlugin. jar Cyclomatic. Plugin ・・・・・・・ measure. Method. Metricメソッド (ビジネスロジックを実装) ・・・・・ 登録 (ファルダ内に配置) AOASIA 3 Cyclomatic. Plugin. jar SES 2008 ・・・・・ 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 21

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 24

プラグイン実装に必要としたコスト n CKメトリクス,サイクロマチック数計測プラグイ ンを試作 計測メトリクス 行数(コメント込の総行数) ビジネスロジック行数 実装時間(分) WMC 31(74) 2 10 DIT 35(81)

プラグイン実装に必要としたコスト n CKメトリクス,サイクロマチック数計測プラグイ ンを試作 計測メトリクス 行数(コメント込の総行数) ビジネスロジック行数 実装時間(分) WMC 31(74) 2 10 DIT 35(81) 8 20 NOC 36(73) 1 10 CBO 61(121) 29 20 RFC 56(117) 7 15 LCOM 114(221) 48 40 Cyclomatic 52(115) 21 25 AOASIA 3 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 25

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 26

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n

発表の流れ n 研究背景 n 研究目的 n MASUの説明 n メトリクス計測プラグイン実装例 n ソースコード解析ツールとしての応用例 n 関連研究 n まとめと今後の課題 SES 2008 2021/9/25 Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 28

関連研究 n Javaバイトコード解析ツール p Soot: a Java Optimization Framework p WALA. n DucasseらのリエンジニアリングツールMOOSE [3]

関連研究 n Javaバイトコード解析ツール p Soot: a Java Optimization Framework p WALA. n DucasseらのリエンジニアリングツールMOOSE [3] p 複数言語に対応 p ソフトウェアの視覚化が主目的 n 長谷川の研究 [hasegawa 2008] p AST変換を用いた言語依存ツールの他言語への適用 [3] A. L. Baroni and F. B. Abreu. An OCL-Based Formalization of the MOOSE Metric Suite. In Proc. Of the 7 th ECOOP Workshop on Quantitative Approaches in Object-Oriented Software Engineering, 2003 [9] Soot: a Java Optimization Framework. http: //www. sable. mcgill. ca/soot/ [10] WALA. http: //wala. sourceforge. net/wiki/index. php/Main_Page. [hasegawa 2008] 長谷川 勇. AST変換を用いた他言語へのツール適用. 電子情報通信学会技術研究報告 SES 2008 2021/9/25 SS 2008 -13~26 p 55 -60. Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 29