Kaiauluを紹介するよ:ソフトウェア研究のための新しいツール
Kaiauluはソフトウェア開発の研究者のためにデータ分析を簡単にするよ。
― 1 分で読む
ソフトウェア開発の世界では、研究者がさまざまなプロジェクトからデータを分析する必要があることが多いんだ。これにはたくさんの情報を集めて処理することが含まれるから、めんどくさいし、間違いも起こりやすい。そこで、Kaiauluっていうツールが作られたんだ。これは、いろんなソフトウェアプロジェクトからのデータを集めて分析するのを簡単にすることを目指していて、研究者が本来の目標に集中できるようにしてくれる。
背景
ソフトウェアプロジェクトの研究をサポートするために、いくつかのツールが作られてきた。Codeface、GrimoireLab、SmartSHARKなんかがその例だね。これらのツールは似た機能を提供しているけど、デザインの選択肢がそれぞれ違うんだ。これが使いやすさや研究者が目標を達成するのにどれだけ効果的かに影響を与えることがある。
これらのツールの多くは、2009年に初めて登場したAlitheia Coreという古いツールと似た特徴を持っているんだけど、Alitheia Coreは今はもう開発が進んでいない。これが原因で、多くの新しいツールがAlitheia Coreの空白を埋めようとしているんだ。でも、どうやらこれらの新しいツールの多くがAlitheia Coreがやっていたことをそのまま繰り返しているみたいで、データを集めて分析するプロセスは以前と同じくらいめんどくさくてエラーが起きやすい。
こういう状況は重要な疑問を投げかけるよね:既存のツールで何が間違ったのか?新しいツールはなぜ同じ機能を繰り返し出てくるのか?これらの新しいツールはAlitheia Coreよりもいい仕事をしているのか?
デザイン原則
これらの疑問に答えて将来のツールを改善するために、既存のツールのデザイン選択を分析する必要があるんだ。この分析を通じて、うまくいっていることやそうでないことがわかるから、その理解を基にKaiauluという新しいツールを開発して、既存のツールの強みを活かしつつ弱みを克服することができるんだ。
いくつかのツールを評価した結果、新しいソフトウェア分析ツールの開発を導くためのいくつかの重要なデザイン原則が見つかった。それには以下のようなものがある:
抽象レベル:異なるツールが単純なデザインから複雑なデザインまでさまざまなレベルの抽象化を使用している。より明確な抽象化を使うと、研究者がツールを効果的に使いやすくなる。
設定ファイル:設定ファイルを使うことで、セットアップのプロセスが簡素化され、研究者が自分の分析を再現しやすくなる。
ユーザーインタラクションモード:ツールは、インタラクティブなモードとバッチ処理モードの両方を提供すべきだ。これにより、ユーザーはデータを自由に探索でき、準備が整ったときに大規模に処理できる。
データのアクセシビリティ:データにアクセスする方法はできるだけ簡単であるべきだ。複雑なセットアップはユーザーがツールを効果的に利用するのを妨げることがある。
コードの再利用性:ツールは既存のコードやライブラリを活用するべきで、古いソフトウェアへの依存関係を作らないようにすべきだ。
これらの原則を適用して、研究者がソフトウェアデータを集めて分析する方法を向上させるKaiauluを作り上げた。
既存ツールからの観察
Kaiauluを効果的に開発するために、現在利用可能な注目すべきツールをいくつか調べたよ。その評価から得られた観察結果は以下の通り。
抽象レベル
ツールは抽象化の扱い方に違いがある。例えば、Codefaceはモノリシックなアプリケーションとして動作するから、プロセス全体を一つのユニットとして扱うんだ。これでは研究者がアプリケーションの一部を適応させたり再利用したりするのが難しい。他のツール、例えばGrimoireLabはプロセスをより小さなコンポーネントに分けて、研究者がどの部分を使うか選べるようにしている。この柔軟性が新しい機能を既存のものの上に構築しやすくしているんだ。
設定ファイル
Codefaceは、ユーザーがプロジェクト設定ファイルを作成できる点がユニークだ。このファイルはデータ分析に必要な重要なパラメータを保存していて、将来の作業で結果を再現しやすくする。対照的に、他のツールはこのような機能を提供していないから、ユーザーが分析を繰り返すのが大変になってしまう。
ユーザーインタラクションモード
現在利用可能なほとんどのツールは、コマンドラインインターフェース(CLI)かアプリケーションプログラミングインターフェース(API)のどちらか一方を提供しているけど、両方を提供しているわけではない。CLIはユーザーがコマンドを実行してデータをバッチモードで取得したり処理したりできる。一方、APIはプログラミング言語を使ってデータをインタラクティブに探索する方法を提供する。片方だけのモードを提供しているツールは、ユーザーがデータで作業する方法を制限してしまうんだ。
データのアクセシビリティ
データへのアクセスのしやすさは、効果的な研究にとって重要だ。一部のツール、例えばGrimoireLabは、最小限のセットアップでデータに簡単にアクセスできる。他のツール、CodefaceやSmartSHARKは、ユーザーが複雑なデータベースのセットアップを理解する必要があるから、入り口が高くなってしまう。
コードの再利用性
コードの再利用は時間と労力を節約できるけど、リスクも伴う。もしツールが古くてサポートされていないコードに依存していたら、メンテナンスが大変になるかもしれない。Kaiauluは、積極的にメンテナンスされているライブラリだけを選ぶことで、こうした落とし穴を避けることを目指しているんだ。
Kaiauluのデザイン選択
既存のツールからの観察に基づいて、Kaiauluの作成にはいくつかのデザイン選択がなされたよ。
柔軟な抽象化
Kaiauluは柔軟な抽象レベルを活用していて、ユーザーがデータを簡単に理解し操作できるようになっている。高レベルと低レベルのインタラクションの両方をサポートしていて、ユーザーが特定のデータセットに深く入り込んだり、広い視野で見ることができるんだ。
プロジェクト設定ファイル
Kaiauluには、シンプルな形式で書かれたプロジェクト設定ファイルが組み込まれている。この機能により、ユーザーは複雑なセットアップなしで分析に必要なパラメータを指定できるようになる。これによって、他の人と設定を共有しやすくなり、研究者間のコラボレーションが進むんだ。
二重インタラクションモード
KaiauluはCLIとAPIの両方のインタラクションをサポートしている。ユーザーはインタラクティブにデータを探索でき、準備ができたらバッチモードで大きなデータセットを処理できる。この二重アプローチにより、ユーザーは自分に合った方法で作業できるんだ。
簡素化されたデータアクセシビリティ
データへのアクセスを簡単にするために、Kaiauluは始めるために必要なステップを最小限に抑えている。ユーザーは複雑なデータベース構造やセットアップを気にせずに、必要なデータをすぐに取得できる。
強固なコードの再利用性
Kaiauluは依存関係やライブラリの選択を慎重に行い、すべてのコンポーネントがしっかりとメンテナンスされていることを保証している。この強固なコードの再利用への焦点が、ツールの全体的な安定性と信頼性を高めているんだ。
Kaiauluの主な機能
Kaiauluは、研究者がソフトウェアリポジトリを分析するのを助けるために設計された機能が満載だよ。
データパース
Kaiauluは、さまざまなプロジェクトデータを扱うための幅広いデータパーサーを提供している。Gitログ、メーリングリスト、イシュートラッカーなど、情報を集めるプロセスを簡単にしてくれる。それぞれのパーサーは、一貫したフォーマットでデータを出力するように設計されているから、異なるソースからのデータを組み合わせて分析するのも楽になる。
ネットワーク分析
Kaiauluの特筆すべき機能の一つは、データをネットワークとして表現できることだ。ユーザーは、著者、ファイル、コミュニケーションスレッドなどの間の関係を視覚化できる。この視覚化が、ソフトウェアプロジェクト内の複雑な相互作用を理解するのに役立つんだ。
メトリクス計算
Kaiauluは、ソフトウェアのパフォーマンスに関する洞察を得るためのビルトインメトリクスを提供している。これらのメトリクスは、バグの数、コードの変化、開発者間の社会的相互作用をカバーすることができる。ユーザーはこれらのメトリクスを探求して、ソフトウェアプロジェクトの健康状態やダイナミクスをよりよく理解できる。
コミュニティ検出
ソーシャルネットワーク分析を利用して、Kaiauluはプロジェクトのコラボレーションネットワーク内の重要なパターンを特定する手助けをする。研究者はコミュニティ検出アルゴリズムを使って、密に協力している開発者グループを見つけ出すことができる。この情報は、ソフトウェアプロジェクト内のチームワークや組織行動についてより深く理解する手助けになるんだ。
アイデンティティマッチング
ソフトウェアプロジェクトを分析する上で重要なのは、ユーザーのアイデンティティを一致させることだ。多くの開発者は、さまざまなプラットフォームで異なる名前やメールアドレスを使っているからね。Kaiauluには、異なるソースからの情報を組み合わせて個々の貢献者を正確に追跡できるアイデンティティマッチング機能があるんだ。
結論
要するに、Kaiauluは研究者がソフトウェアリポジトリをマイニングするプロセスをより簡単で効果的にするためにデザインされている。既存のツールから学び、実用的な機能を実装することで、Kaiauluはユーザーが手間のかかるセットアップに煩わされることなくデータ分析の重要な作業に集中できるようにしているんだ。
Kaiauluの開発は進行中の取り組みで、将来的にはさらに改善の余地があるんだ。技術が進化するにつれて、ソフトウェア研究のためのツールも変わっていく。Kaiauluは、ソフトウェア開発の面白い分野で研究者の変わりゆくニーズに応えるために、最前線に立ち続けることを目指しているんだ。
タイトル: Building the MSR Tool Kaiaulu: Design Principles and Experiences
概要: Background: Since Alitheia Core was proposed and subsequently retired, tools that support empirical studies of software projects continue to be proposed, such as Codeface, Codeface4Smells, GrimoireLab and SmartSHARK, but they all make different design choices and provide overlapping functionality. Aims: We seek to understand the design decisions adopted by these tools--the good and the bad--along with their consequences, to understand why their authors reinvented functionality already present in other tools, and to help inform the design of future tools. Method: We used action research to evaluate the tools, and to determine a set of principles and anti-patterns to motivate a new tool design. Results: We identified 7 major design choices among the tools: 1) Abstraction Debt, 2) the use of Project Configuration Files, 3) the choice of Batch or Interactive Mode, 4) Minimal Paths to Data, 5) Familiar Software Abstractions, 6) Licensing and 7) the Perils of Code Reuse. Building on the observed good and bad design decisions, we created our own tool architecture and implemented it as an R package. Conclusions: Tools should not require onerous setup for users to obtain data. Authors should consider the conventions and abstractions used by their chosen language and build upon these instead of redefining them. Tools should encourage best practices in experiment reproducibility by leveraging self-contained and readable schemas that are used for tool automation, and reuse must be done with care to avoid depending on dead code.
著者: Carlos Paradis, Rick Kazman
最終更新: 2023-04-27 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2304.14570
ソースPDF: https://arxiv.org/pdf/2304.14570
ライセンス: https://creativecommons.org/licenses/by-sa/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://www.springer.com/gp/computer-science/lncs
- https://github.com/istlab/Alitheia-Core
- https://github.com/sailuh/kaiaulu
- https://github.com/smartshark/issueSHARK
- https://github.com/siemens/codeface/tree/master/conf
- https://github.com/maelstromdat/codeface4smells_TR/tree/master/Configurations
- https://xnmt.readthedocs.io/en/latest/experiment_config_files.html
- https://smartshark.github.io/plugin/tutorial/python
- https://github.com/dmlc/xgboost/issues/1338
- https://github.com/Rdatatable/data.table/pull/2456
- https://github.com/smartshark/mecoSHARK
- https://github.com/sed-inf-u-szeged/OpenStaticAnalyzer
- https://findbugs.sourceforge.net/
- https://sourceforge.net/p/findbugs/bugs/1487/
- https://github.com/spotbugs/spotbugs
- https://ropensci.org/about/
- https://chaoss.community/
- https://devguide.ropensci.org/softwarereviewintro.html
- https://www.r-project.org/
- https://cran.r-project.org/web/packages/
- https://cran.r-project.org/web/packages/ggplot2/index.html
- https://github.com/sailuh/kaiaulu/blob/master/R/network.R
- https://www.catb.org/~esr/writings/taoup/html/ch11s01.html
- https://github.com/sailuh/kaiaulu/blob/master/vignettes/social_smell_showcase.Rmd
- https://github.com/sailuh/kaiaulu/blob/master/vignettes/blamed_line_types_showcase.Rmd
- https://itm0.shidler.hawaii.edu/kaiaulu/articles/social_smell_showcase.html
- https://github.com/sailuh/kaiaulu/tree/master/conf