This article needs additional citations for verification. (May 2017) |
This article may need to be rewritten to comply with Wikipedia's quality standards. (November 2024) |
ソフトウェアエンジニアリングにおけるソフトウェアリポジトリマイニング[1](MSR)分野[2]では、バージョン管理リポジトリ、メーリングリストアーカイブ、バグ追跡システム、問題追跡システムなどのソフトウェアリポジトリで利用可能な豊富なデータを分析して、ソフトウェアシステム、プロジェクト、ソフトウェアエンジニアリングに関する興味深く実用的な情報を発見します。
意味
ハージグとツェラーは、「ソフトウェアアーカイブのマイニング」を、ソフトウェアリポジトリからデータを抽出することで「大量の初期証拠を得る」プロセスと定義しています。さらに、彼らは「データソース」を、ソースコード、要件アーティファクト、バージョンアーカイブといった製品ベースの成果物と定義し、これらのソースは偏りがないものの、ノイズが多く不完全であると主張しています。[3]
テクニック
連成変化分析
結合変更分析の考え方は、開発者が欠陥修正や新機能の導入のために、コードエンティティ(ファイルなど)を頻繁にまとめて変更するというものです。エンティティ間のこうした結合は、コードやその他のドキュメントでは明確に示されていないことがよくあります。特にプロジェクトに新しく参加した開発者は、どのエンティティをまとめて変更する必要があるのか分かりません。結合変更分析は、プロジェクトのバージョン管理システムからこの結合を抽出することを目的としています。コミットと変更のタイミングから、どのエンティティが頻繁にまとめて変更されるかを特定できる可能性があります。この情報は、エンティティのいずれかを変更しようとしている開発者に提示され、その後の変更を支援することができます。[4]
コミット分析
バージョン管理システムには、バグ修正コミット、新機能コミット、ドキュメントコミットなど、様々な種類のコミットがあります。過去のコミットに基づいてデータ駆動型の意思決定を行うには、特定の基準を満たすコミットのサブセットを選択する必要があります。これはコミットメッセージに基づいて行うことができます。[5]
ドキュメント生成
マイニングソフトウェアのリポジトリから有用なドキュメントを生成することが可能です。例えば、Jadeiteは使用状況の統計情報を計算し、初心者がよく使用するクラスを素早く識別するのに役立ちます。[6]
データとツール
主要なマイニングデータはバージョン管理システムから取得されます。初期のマイニング実験はCVSリポジトリで行われました。[7]当時、研究者たちはSVNリポジトリを広範囲に分析していました。[8]現在では、Gitリポジトリが主流です。[9]必要なデータの性質(サイズ、ドメイン、処理)に応じて、これらのソースのいずれかからデータをダウンロードすることができます。[説明が必要]しかし、大規模言語モデルを構築するためのデータガバナンスとデータ収集は、複数のソースとドメインからデータを取得するためにWebクローラーの使用を統合することで、ゲームのルールを変えてきました。
参照
参考文献
- ^ Hassan, Ahmed E. (2008). 「ソフトウェアリポジトリのマイニングの将来」. 2008年ソフトウェアメンテナンスの最前線. IEEE. pp. 48– 57.
- ^ マイニングソフトウェアリポジトリに関するワーキングカンファレンス、この分野の主要なソフトウェアエンジニアリングカンファレンス
- ^ KS Herzig と A. Zeller、「Mining your own evidence」、Making Software、pp. 517–529、セバストポル、カリフォルニア州、米国: O'Reilly、2011 年。
- ^ Gall, H.; Hajek, K.; Jazayeri, M. (1998). 「製品リリース履歴に基づく論理結合の検出」. Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272) . pp. 190– 198. CiteSeerX 10.1.1.199.7754 . doi :10.1109/icsm.1998.738508. ISBN 978-0-8186-8779-2。
- ^ Hindle, Abram; German, Daniel M.; Godfrey, Michael W.; Holt, Richard C. (2009). 「大規模な変更のメンテナンスカテゴリへの自動分類」2009 IEEE 第17回国際プログラム理解会議pp. 30– 39. doi :10.1109/ICPC.2009.5090025. ISBN 978-1-4244-3998-0。
- ^ Stylos, Jeffrey; Faulring, Andrew; Yang, Zizhuang; Myers, Brad A. (2009). 「API使用情報を用いたAPIドキュメントの改善」. 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) . pp. 119– 126. doi :10.1109/VLHCC.2009.5295283. ISBN 978-1-4244-4876-0。
- ^ Canfora, G.; Cerulo, L. (2005). 「ソフトウェアおよび変更要求リポジトリのマイニングによる影響分析」.第11回IEEE国際ソフトウェアメトリクスシンポジウム (METRICS'05) . p. 29. doi :10.1109/METRICS.2005.28. ISBN 978-0-7695-2371-2。
- ^ ダンブロス, マルコ; ギャル, ハラルド; ランザ, ミシェル; ピンツガー, マーティン (2008). 「ソフトウェアリポジトリの分析によるソフトウェアの進化の理解」.ソフトウェアの進化. pp. 37– 67. doi :10.1007/978-3-540-76440-3_3. ISBN 978-3-540-76439-7。
- ^ Kalliamvakou, Eirini; Gousios, Georgios; Blincoe, Kelly; Singer, Leif; German, Daniel M.; Damian, Daniela (2014). 「GitHubマイニングの期待と危険性」.第11回ソフトウェアリポジトリマイニングに関するワーキングカンファレンス議事録 - MSR 2014. pp. 92– 101. doi :10.1145/2597073.2597074. ISBN 9781450328630。