図書館カテゴリの新しいフレームワーク
プログラミング言語間でライブラリを効果的に比較するシステムを作る。
― 1 分で読む
今のソフトウェア開発の世界では、JavaとPythonは最も人気のあるプログラミング言語の2つだよね。どちらの言語にも、開発者が仕事を楽にするために使えるライブラリやツールがたくさんある。でも、違うプログラミング環境間でライブラリを比較するのはちょっと難しいんだ。これは、ライブラリを定義するために使われるカテゴリが一致しないことがよくあるから。異なるエコシステムでは、似たような機能に対して異なる名前が使われたりすることがある。これが原因で、異なるプログラミング言語を見たときに、特定のライブラリがどれだけ安全か、またはしっかり管理されてるかについて誤解が生じることがあるんだ。
この問題に対処するために、私たちはライブラリをその機能的な目的に基づいて分類するシステムを作ったよ。このアプローチを使うことで、研究者たちは異なるプログラミング環境間でライブラリを一貫した方法で比較できるようになるんだ。この記事では、ライブラリを分類するために取ったステップと、この新しいシステムの利点について説明するね。
ライブラリ比較の問題
プログラミングのライブラリは、開発者がアプリケーションを構築するために使うツールや関数の束なんだ。それぞれのプログラミングエコシステム、例えばJavaのMavenやPythonのPyPIには、ライブラリを分類する独自の方法があるんだ。たとえば、ウェブ開発用に設計されたライブラリは、Javaでは別のカテゴリにされることがあるし、Pythonではまた別のカテゴリにされるかもしれない。これが混乱を引き起こすことがあって、特にライブラリのセキュリティを評価しようとする時に問題になるんだ。
JavaとPythonのライブラリを効果的に比較するためには、共通の分類フレームワークが必要なんだ。これは、さまざまなライブラリに関連するセキュリティリスクを理解するために重要だよ、なぜなら特定のタイプのライブラリは他のものより攻撃にさらされやすいから。
私たちの分類へのアプローチ
この問題に取り組むために、ライブラリの機能に基づいて分類する人間主導のシステムを開発したんだ。目標は、異なるエコシステムからのライブラリにも適用できる標準的なカテゴリのセットを作ることだった。それによって、意味のある比較ができるようになるんだ。
私たちが考案したシステムは、いくつかのステップを含んでいるよ:
- ライブラリの選定: 重大なセキュリティ脆弱性があることが知られている256のJavaライブラリを選んだんだ。
- データ収集: 選ばれた各ライブラリに関する情報をいくつかのソースから集めたよ。
- 人間による評価: 複数の評価者が集めたデータをレビューして、ライブラリの機能的な目的に基づいてカテゴリを割り当てたんだ。
- 最終レビュー: 評価者の選択を確認して、意見が分かれた場合は最終決定を下す仲裁者がいたよ。
これらの各ステップは、分類が正確で信頼できることを確保するために重要なんだ。
ライブラリの選定
最初のステップは、私たちの研究のためのライブラリを選ぶことだった。重大なセキュリティ脆弱性があるMaven CentralリポジトリからのJavaライブラリに焦点を当てたんだ。問題があることが知られているライブラリを選ぶことで、異なる環境におけるセキュリティリスクの研究に特に役立つデータセットを作ることを目指したんだ。
結果として、条件を満たす256のライブラリが集まったよ。脆弱性が確認されたライブラリに焦点を当てることで、私たちの発見がセキュリティ研究者や開発者にとってより関連性のあるものになるようにしたんだ。
データ収集
ライブラリを選定したら、次のステップは情報を集めることだった。各ライブラリについて、主に4つのソースからデータを集めたよ:
- Maven Centralリポジトリの主要エントリ
- ライブラリのメインリポジトリ(GitHubなど)
- ライブラリの公式ウェブサイト
- ライブラリに関連するドキュメントやWikiページ
このデータ収集プロセスは、評価者が分類の決定をする際に同じ情報にアクセスできるようにするために重要だったよ。また、各ライブラリの機能に関するよくまとまった視点を得るのにも役立ったんだ。
ライブラリの人間評価
必要な情報が揃ったところで、ライブラリを分類する作業に進んだんだ。バイアスを最小限に抑えるために、複数の評価者をこのプロセスに関与させて、正確性を確保したよ。各評価者は、4つのソースからのデータをレビューして、ライブラリの主な目的を最もよく反映するカテゴリを割り当てる責任があったんだ。
私たちの分類は、Python Package Index(PyPI)トピックから派生した24の機能カテゴリの事前定義リストに基づいていたよ。各カテゴリには、評価者が決定を下すのを助けるための説明が含まれていたんだ。カテゴリは様々なタイプのライブラリに適用可能になるように広く設定されていたけど、主な機能を捉えられるように具体的でもあったんだ。
評価中には、評価者がライブラリが異なる機能エリアにフィットすると思った場合は、複数のカテゴリを選択できるようにしたんだ。この柔軟性は、複数の目的を持つライブラリにとって便利だったよ。
最終レビューと仲裁
評価者がカテゴリの選択を提供した後、意見の不一致を解決する方法が必要だった。そこで仲裁者が登場することになったんだ。仲裁者の役割は、評価者が行った選択をレビューして、意見が対立したときに最終的な判断を下すことだったよ。
情報を再確認することで、仲裁者は最も適切なカテゴリを判断できたんだ。このステップは、最終的な分類ができるだけ正確で信頼できるようにするために重要だったよ。
システムの利点
私たちが開発したライブラリの分類システムには、いくつもの利点があるよ:
- 標準化: 異なるエコシステムに適用できる共通のカテゴリセットを作ることで、混乱を減らし、ライブラリの比較を楽にしたんだ。
- セキュリティの洞察向上: 信頼できる分類のフレームワークを使うことで、研究者は異なるライブラリに関連するセキュリティ問題をより効果的に研究できて、理解が進むし、潜在的にセキュリティ対策も向上するかもしれない。
- エコシステム間研究の促進: 私たちのアプローチは、研究者が言語を超えてライブラリを比較できるようにして、ソフトウェアの質やセキュリティについての一貫した視点を提供するんだ。
- データのオープンアクセス: 分類されたデータセットにアクセスを提供することで、他の研究者が私たちの作業に基づいて分析を行ったり、ライブラリの機能を理解するために貢献できるようになるんだ。
制限事項と今後の作業
私たちのシステムにはいくつかの強みがある一方で、制限もあるんだ。分類プロセスの手動の性質が時間がかかるし、人間の評価の主観性がバイアスを生む可能性があるよ。それでも、複数の評価者と仲裁者を用いることで、こうした懸念を軽減できるんだ。
今後は、JavaScriptのnpmやRubyのGemsなど、他のエコシステムへの分類プロトコルの拡張を計画しているよ。また、プロセスの一部を自動化するために機械学習技術の使用を探ることも目指していて、これが私たちの努力の規模を拡大し、分類に必要な時間を短縮できるかもしれないんだ。
結論
まとめると、私たちの作業は、ライブラリをその機能的な目的に基づいて分類する体系的なアプローチを提供しているんだ。エコシステムを超えた分類フレームワークを開発することで、プログラミング言語間でライブラリを理解し比較しようとする研究者や開発者にとって価値のあるツールを提供しているんだ。私たちの方法はライブラリの機能の研究を強化し、より良いセキュリティ意識に貢献し、さらなる研究の機会を開くんだ。私たちの研究から生成されたデータセットは、ソフトウェアライブラリやその脆弱性についての理解を向上させるための基盤として存在しているよ。
タイトル: Cross-ecosystem categorization: A manual-curation protocol for the categorization of Java Maven libraries along Python PyPI Topics
概要: Context: Software of different functional categories, such as text processing vs. networking, has different profiles in terms of metrics like security and updates. Using popularity to compare e.g. Java vs. Python libraries might give a skewed perspective, as the categories of the most popular software vary from one ecosystem to the next. How can one compare libraries datasets across software ecosystems, when not even the category names are uniform among them? Objective: We study how to generate a language-agnostic categorisation of software by functional purpose, that enables cross-ecosystem studies of libraries datasets. This provides the functional fingerprint information needed for software metrics comparisons. Method: We designed and implemented a human-guided protocol to categorise libraries from software ecosystems. Category names mirror PyPI Topic classifiers, but the protocol is generic and can be applied to any ecosystem. We demonstrate it by categorising 256 Java/Maven libraries with severe security vulnerabilities. Results: The protocol allows three or more people to categorise any number of libraries. The categorisation produced is functional-oriented and language-agnostic. The Java/Maven dataset demonstration resulted in a majority of Internet-oriented libraries, coherent with its selection by severe vulnerabilities. To allow replication and updates, we make the dataset and the protocol individual steps available as open data. Conclusions: Libraries categorisation by functional purpose is feasible with our protocol, which produced the fingerprint of a 256-libraries Java dataset. While this was labour intensive, humans excel in the required inference tasks, so full automation of the process is not envisioned. However, results can provide the ground truth needed for machine learning in large-scale cross-ecosystem empirical studies.
著者: Ranindya Paramitha, Yuan Feng, Fabio Massacci, Carlos E. Budde
最終更新: 2024-03-10 00:00:00
言語: English
ソースURL: https://arxiv.org/abs/2403.06300
ソースPDF: https://arxiv.org/pdf/2403.06300
ライセンス: https://creativecommons.org/licenses/by-sa/4.0/
変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。
オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。
参照リンク
- https://assuremoss.eu/en/
- https://zenodo.org/records/10480832
- https://peps.python.org/
- https://peps.python.org/pep-0301/
- https://nvd.nist.gov/
- https://api.gocd.org/21.1.0/
- https://www.first.org/cvss/v3.1/specification-document
- https://pypi.org/search/
- https://www.elsevier.com/authors/policies-and-guidelines/credit-author-statement