- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2022-03-17T10:02:59+00:00;1970-01-01T00:00:00+00:00","default:admin","admin")
#author("2022-03-17T10:09:34+00:00;2022-03-17T10:04:36+00:00","default:admin","admin")
[[Research]]
* クラス名構成単語に基づくソフトウェアの概要推測に関する研究 [#mb311832]
** ソフトウェアアップサイクリング [#m0e1d4c1]
** 背景 [#va182b93]
過去に作成され,保守が進んでいないソフトウェアはしだいに利用されなくなってゆくという現状があります.
しかし,そうしたソフトウェアのソースコードには設計や実装の一部などの再利用可能かつ資産的価値の高い情報も多く含まれており,新規ソフトウェア開発に活かすことができます.
そこで,ソフトウェアの再利用方法としてソフトウェアアップサイクリングを検討します.
ソフトウェアアップサイクリングとは既存ソフトウェアの設計や実装に着目し,新たに手を加えることで価値あるソフトウェア資産に転換することを指します.
** 課題 [#edaad5d9]
ソフトウェアアップサイクリングを行うには再利用の素材となる既存ソフトウェアの目的・機能を把握し,再利用可能なアイデアや設計を見つけ出すことが重要です.
しかし,組織や会社などの現場において全てのソフトウェアプロダクトが資産的に管理されているわけではありません.
READMEなどの説明書が欠けている,あるいは不十分であるケースも多く存在します.
** 目的とアプローチ [#vf6ceddf]
既存プロジェクトの概要把握をREADMEの有無に関わらず行うことを目的とします.
そのため,本研究ではプロジェクトコーパスを用いたソフトウェア概要推測手法を提案します.
** プロジェクトコーパス [#x945663a]
課題解決のキーアイデアとして,プロジェクトに含まれるクラス名構成単語に着目します.
クラス名はシステムの目的や機能に深く関連するとみなし,ここから効果的に概要を抽出することでプロダクトの概要把握に費やす時間の削減を目指します.
&attachref(./idea.png,zoom,30%);
&attachref(./idea.png,zoom,50%);
提案手法は以下の4つのステップで構成されます.
- Step1
-- リポジトリマイニング: Step1 では,リポジトリマイニングによってクラス名を抽出する
(Step1)リポジトリマイニング: Step1 では,リポジトリマイニングによってクラス名を抽出する
(Step2) プロジェクトコーパスの作成: Step2 では,Step1 で取得した各クラス名を単語に分割する.分割処理によって得られた単語群を,そのプロジェクトに関するプロジェクトコーパスと見なす.
(Step3) プロジェクトコーパスの加工: プロジェクトコーパスを辞書順に並び替え,タグクラウド画像を生成する
(Step4) 概要の推測: プロジェクトコーパスのみを参照して生成元のプロジェクトのもつ機能,使用技術,概要を推測する
- Step2
-- プロジェクトコーパスの作成: Step2 では,Step1 で取得した各クラス名を単語に分割する.分割処理によって得られた単語群を,そのプロジェクトに関するプロジェクトコーパスと見なす
&attachref(./P_corpus.png,zoom,30%);
- Step3
-- プロジェクトコーパスの加工: プロジェクトコーパスを辞書順に並び替え,タグクラウド画像を生成する
- Step4
-- 概要の推測: プロジェクトコーパスのみを参照して生成元のプロジェクトのもつ機能,使用技術,概要を推測する
&attachref(./P_corpus.png,zoom,50%);
** 実験 [#d7f5d5bb]
提案手法の有効性を検証するため,12名に対してプロジェクトコーパスを用いた概要推測の実験行いました.
提案手法の有効性を検証するため,12名に対してプロジェクトコーパスを用いた概要推測の実験を行いました.
&attachref(./corpus_example.png,zoom,30%);
&attachref(./corpus_example.png,zoom,50%);
プロジェクトのもつ機能,使用技術,概要の3つの観点からプロジェクトコーパスの有効性を評価した結果,提案手法がプロジェクトの概要推測に一定の効果を持つことが明らかになりました.