業務システム理解のための 外部アクセスに着目したクラスタリング手法

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
Python超入門 久保 幹雄 東京海洋大学.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Presentation transcript:

業務システム理解のための 外部アクセスに着目したクラスタリング手法 井上研究室 秦野智臣 

業務用の情報システム 数十年前に開発されたシステムが,現在でも稼働している 様々な企業における業務の基盤となっている 長年にわたる機能追加や仕様変更により,システムの大規模化と複雑化が進んでいる 保守費用が増加している システムの変更に時間がかかる 現代では,ユーザーの要求の変化に合わせた迅速な対応が求められる

システムの再構築 大規模化・複雑化したシステムを,保守性と生産性の高いシステムに作り替える 現状 分析 再設計 製造 テスト 現行システム 新システム 現状 分析 再設計 製造 テスト システム全体の 構造や動作の把握 複雑な設計の見直し ソースコードの変更

再構築における問題 システムの構造や動作を理解することが困難である 設計書が残っていない,更新されていない システム全体を把握している開発者がいない 最近の変更点に関する部分的な理解のみ ディレクトリ構造がない ソースコード中の識別子から,その役割を推測することが困難である ファイル名や関数名に,その役割と関係のない名前や機械的に割り当てた文字列が使われている

既存研究:ソフトウェアクラスタリング ソースファイルや関数を,扱うデータの類似性によって分類する技術 † 分析 分析 分析 func12() { //社員更新 } func11() { //社員検索 } func22() { //商品更新 } 分析 分析 func13() { //社員削除 } func32() { //顧客更新 } func21() { //商品検索 } func33() { //顧客削除 } func23() { //商品削除 } func31() { //顧客検索 } 分析 † O. Maqbool and H. Babri. “Hierarchical Clustering for Software Architecture Recovery.” IEEE TSE, Vol. 33, No. 11, pp. 759-780, 2007.

本研究で行うクラスタリング 関数を動作の類似性によって分類する func12() のみを読解 知識の流用 //社員更新 } func11() { //社員検索 } func12() のみを読解 func22() と func32() も ほぼ同じ動作である 知識の流用 システム理解の効率化 func22() { //商品更新 } func13() { //社員削除 } func32() { //顧客更新 } func21() { //商品検索 } func33() { //顧客削除 } func23() { //商品削除 } func31() { //顧客検索 }

? 既存研究との違い 既存研究:データの類似性 本研究:動作の類似性 プログラムの依存関係が有用 依存関係では分からない 関数の呼び出し関係 変数の参照関係 本研究:動作の類似性 依存関係では分からない 近年のJavaシステムなどでは識別子が有用 searchProduct, updateProduct 古いシステムでは識別子が意味を持たない func11, func21 func11() { //社員検索 } 社員DB func12() { //社員更新 } ? func21() { //商品検索 } 商品DB func22() { //商品更新 }

キーアイデア SQL文とシステムの操作画面に対する入出力処理(外部アクセス)によって,関数を特徴づける 着眼点:システムの機能は, いくつかの外部アクセスを組み合わせ, それらの実行を条件分岐やループ文で制御する  ことによって実現される void function1() { … // 指定されたデータを削除する } READ SELECT if () { DELETE } 外部アクセスと 制御文を特徴 として抽出

提案手法の手順 Step 1:外部アクセスと制御文の抽出 Step 2:関数間の類似度の計算 Step 3:クラスタリングアルゴリズムの適用 Func1 READ SELECT WRITE 0.7 0.7 0.5 0.2 0.0 0.1 Func3 Func1 Func2 Func4 Func1 Func2 0.0 Step1 Step2 Step3 0.2 0.2 Func2 0.1 Func3 Func4 SELECT if () { INSERT } else { UPDATE } 0.5 ソースコード Step 1:外部アクセスと制御文の抽出 Step 2:関数間の類似度の計算 Step 3:クラスタリングアルゴリズムの適用

Step 1:外部アクセスと制御文の抽出 関数から外部アクセスと制御文を抽出し,記号で表現する 文と外部アクセスの対応は,開発者に定義してもらう 外部アクセスは単一レコードか複数レコードかを区別する カテゴリ 文 記号 SQL文の実行 SELECT文の実行 Ss, Sm INSERT文の実行 Is, Im UPDATE文の実行 Us, Um DELETE文の実行 Ds, Dm 画面との入出力 画面からの読み込み Rs, Rm 画面への書き込み Ws, Wm 制御文 If 文の開始,終了 If, If} else 節の開始 E 繰り返し文の開始,終了 L, L} s :単一レコード m:複数レコード

例:外部アクセスと制御文の抽出 顧客管理画面における一括削除処理 メソッドの対応付け void method01(Dao001 dao001, Dao002 dao002, Vo vo) { String[] array = vo.getValue(); for (String s: array) { List list = dao001.query02(s); if (list.isEmpty()) { dao002.query11(s); } 1 2 3 4 5 6 7 8 9 10 顧客管理画面における一括削除処理 選択された顧客が何も注文していないことを確認し,その顧客情報を削除する メソッドの対応付け 画面からの読み込み Vo.getValue() Rs, Rm SELECT文の実行 Dao001.query02() Ss, Sm DELETE文の実行 Dao002.query11() Ds, Dm

例:外部アクセスと制御文の抽出 メソッドの対応付け method01:Rm, L, Sm, If, Ds, If}, L} void method01(Dao001 dao001, Dao002 dao002, Vo vo) { String[] array = vo.getValue(); for (String s: array) { List list = dao001.query02(s); if (list.isEmpty()) { dao002.query11(s); } 1 2 3 4 5 6 7 8 9 10 Rm L Sm If Ds If} L} method01:Rm, L, Sm, If, Ds, If}, L} メソッドの対応付け 画面からの読み込み Vo.getValue() Rs, Rm SELECT文の実行 Dao001.query02() Ss, Sm DELETE文の実行 Dao002.query11() Ds, Dm

Step 2:関数間の類似度の計算 記号列を N-gram による集合で表現し,ジャッカード係数を計算する N-gram:文字列を長さNの文字列に分解する 例:“ABCD” を N = 3 で分解する {$$A, $AB, ABC, BCD, CD$, D$$} $ は文字列の先頭と末尾を表す特殊記号 ジャッカード係数:集合間の類似度 2つの集合の共通要素が多ければ似ている Jaccard 𝑋, 𝑌 = | 𝑋 ∩ 𝑌 | | 𝑋 ∪ 𝑌 | 列を比較する方法の中では計算コストが小さい

Step 3:クラスタリングアルゴリズムの適用 関数間の類似度をグラフで表現し,Newman らのクラスタリングアルゴリズムを適用する 重み付き無向グラフ 頂点:関数,辺:類似度 類似度が閾値未満の関数間は辺の重みを 0 とする 類似度の低いメソッドが同じクラスタに含まれないようにする Newman らのアルゴリズム † 辺の結びつきが強い頂点集合を貪欲に求める 類似度の高い関数がクラスタとしてまとめられる 計算コストが小さい † M. E. J. Newman. “Fast algorithm for detecting community structure in networks.” Physical Review E, Vol. 69, No. 6, pp. 1-5, 2004.

評価実験 手法を2つの Java システムに対して適用し,以下の3つの観点 † で評価する 信頼性 クラスタの分布 安定性 手法によるクラスタリングが人手によるクラスタリングにどのくらい近いか クラスタの分布 クラスタの大きさが極端でないか 安定性 ソースコードが少し変更されても,クラスタリングの結果が大きく変わらないか † J. Wu, A.E. Hassan, and R.C. Holt. “Comparison of clustering algorithms in the context of software evolution.” Proc. ICSM, pp. 525-535, 2005.

信頼性を計測する指標:MoJoFM † クラスタリング A から B へ変換するのに必要な最小の操作回数を A,B 間の距離とする 以下の2つの操作のみを許す Move:あるクラスタの要素を別のクラスタに移動させる.移動させる要素を新たに1つのクラスタとすることも含む Join:2つのクラスタを併合し,1つのクラスタにする 操作回数が少ないほど A は B に近い 1 − 𝐴 から 𝐵への操作回数 最も操作回数が多い𝑋から𝐵への操作回数 ×100% † Z. Wen and V. Tzerpos. “An effectiveness measure for software clustering algorithms.” Proc. IWPC pp. 194-203, 2004.

クラスタの分布と安定性 クラスタの分布 安定性 範囲内に収まっているクラスタの要素数の和 全要素数 範囲:5個以上,(全要素数 / 5)個以下 1に近い = クラスタの大きさが適切である 安定性 連続した2つのバージョンに対するクラスタリング間の距離を計測する 距離が近い = 安定している 距離の計測には MoJoSim が使われる AからBの距離 = BからAの距離 となるように定義したもの

対象 Java システム ユーザーのボタン操作などによって呼び出されるメソッドを対象とした システム名 対象メソッド数 テーブル数 勤怠管理システムMosP 253-334 56-75 販売管理システム 9 6 MosP は11バージョンの最小値と最大値 ユーザーのボタン操作などによって呼び出されるメソッドを対象とした 人手によるクラスタリングは,企業の研究者に作成してもらった

結果 クラスタの分布,安定性は高い値である 信頼性は50%前後である 異なるクラスタに分類すべきメソッドを同じクラスタに含めてしまっている パラメータ 信頼性 分布 安定性 N = 1, 閾値1.0 55.35 0.59 96.94 N = 3, 閾値0.3 46.48 0.73 95.01 N = 5, 閾値0.1 50.76 0.94 92.29 異なるクラスタに分類すべきメソッドを同じクラスタに含めてしまっている あるクラスタの例:batchUpdate×13, delete×8

追加調査 各クラスタごとにクラスタリングを行い,サブクラスタに分類すると,信頼性が約 60% に向上した パラメータ 信頼性 分布 N = 1, 閾値0.8 56.27 0.66 N = 3, 閾値0.2 59.63 0.83 N = 5, 閾値0.1 59.94 0.88 メソッド名が同じメソッドを1つのクラスタとして場合は,信頼性が 77.37% であった 識別子を利用しない手法としては,信頼性が高いと考えられる

実用化のための議論 1 開発者は,外部アクセスと関数の対応付けができるか 識別子が有用でない状況で,対応付けを行うことになる 外部アクセスを行う方法は限定されている 決められた API やシステムコール 保守開発を行っている開発者であれば,比較的小さいコストで対応付けを行うことができると考えられる 部分的な知識を生かすことができる

実用化のための議論 2 開発者は,N-gramのNと閾値を選択できるか 複数通りのパラメータを試行できる場合 分布の値が高いクラスタリング結果を選択するとよい 信頼性は実際には計測できないが,信頼性と分布の値には正の相関があった 分布の値が高いクラスタリングは,信頼性も高いことが期待できる 複数通りのパラメータを試行できない場合 N = 3, 5 とし,閾値を 0.1, 0.2 などに設定する クラスタリングを複数回適用し,サブクラスタに分類する

まとめと今後の課題 ソースコード中の関数を,動作の類似性によって分類するクラスタリング手法を提案した 今後の課題 SQL文と操作画面に対する入出力に着目した 複数回クラスタリングを適用することによって,信頼性が向上した 今後の課題 企業における大規模システムへの適用 外部アクセスを行う命令の自動検出

今後の研究 ソースコードから仕様を自動的に復元する ソースコードを読むことなくシステムの仕様を把握することができる 設計・開発の効率化,テスト項目の作成に役立つ 仕様復元 以下の処理を繰り返し行う a) END == 1 であれば処理を終了 a1) INPUT == 1 であれば商品を更新 a2) INPUT == 2 であれば商品を登録 while (END != 1) { if (INPUT == 1) { updateProduct(); } else if (INPUT == 2) { insertProduct(); } END != 1 条件 処理 INPUT==1 商品を更新 INPUT==2 商品を登録 INPUT==1 INPUT==2 商品を更新 商品を登録

既存技術と課題 仕様復元に関連する技術はいくつか存在する 開発者は抽出された仕様を理解できるか ソースコードの自動要約 [1] 識別子が必要,Java 向け ロジックの自動抽出 [2, 3] 小規模システムでの適用事例,評価までは行われていない 開発者は抽出された仕様を理解できるか 正しく復元できたとしても,開発者が理解できなければ価値は低い 巨大なロジック,複雑なロジックをどう表現するか [1] G. Sridhara, L. Pollock, and K. Vijay-Shanker. Automatically detecting and describing high level actions within methods. Proc. ICSE, pp. 101-110, 2011. [2] V. Cosentino, J. Cabot, P. Albert, P. Bauquel, and J. Perronnet, “Extracting business rules from COBOL: A model-based framework,” in Proc. WCRE, 2013, pp. 409–416. [3] J. Pichler, “Specication extraction by symbolic execution,” in Proc. WCRE, 2013, pp. 462–466.

研究計画 複雑なロジックの分解を行う ロジックの適切な表現形式を追究する ロジックには様々な種類がある 種類ごとに整理して開発者に提示する 入力値チェック,データ間の整合性チェック,データの整形・加工ロジック,外部リソースを制御するロジック 種類ごとに整理して開発者に提示する ロジックの適切な表現形式を追究する 表,フローグラフ,自然言語など手段は複数ある どれがよいかは分かっていない 実システムでの試行を行い,開発者からのフィードバックを得る