論文の概要: Automatic Specialization of Third-Party Java Dependencies
- arxiv url: http://arxiv.org/abs/2302.08370v2
- Date: Fri, 13 Oct 2023 08:03:47 GMT
- ステータス: 処理完了
- システム内更新日: 2023-10-24 13:15:48.743813
- Title: Automatic Specialization of Third-Party Java Dependencies
- Title(参考訳): サードパーティJava依存の自動特殊化
- Authors: C\'esar Soto-Valero and Deepika Tiwari and Tim Toady and Benoit Baudry
- Abstract要約: 大規模なコードの再利用は、開発コストと時間の両方を大幅に削減します。
ソフトウェアプロジェクトにおけるサードパーティのコードの大規模なシェアは、特にメンテナンスとセキュリティに関して、新たな課題を引き起こします。
そこで本研究では,Javaプロジェクトの実際の利用状況に基づいて,Javaプロジェクトの依存関係を専門化する新しい手法を提案する。
- 参考スコア(独自算出の注目度): 3.7973152331947815
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: Large-scale code reuse significantly reduces both development costs and time.
However, the massive share of third-party code in software projects poses new
challenges, especially in terms of maintenance and security. In this paper, we
propose a novel technique to specialize dependencies of Java projects, based on
their actual usage. Given a project and its dependencies, we systematically
identify the subset of each dependency that is necessary to build the project,
and we remove the rest. As a result of this process, we package each
specialized dependency in a JAR file. Then, we generate specialized dependency
trees where the original dependencies are replaced by the specialized versions.
This allows building the project with significantly less third-party code than
the original. As a result, the specialized dependencies become a first-class
concept in the software supply chain, rather than a transient artifact in an
optimizing compiler toolchain. We implement our technique in a tool called
DepTrim, which we evaluate with 30 notable open-source Java projects. DepTrim
specializes a total of 343 (86.6%) dependencies across these projects, and
successfully rebuilds each project with a specialized dependency tree.
Moreover, through this specialization, DepTrim removes a total of 57,444
(42.2%) classes from the dependencies, reducing the ratio of dependency classes
to project classes from 8.7x in the original projects to 5.0x after
specialization. These novel results indicate that dependency specialization
significantly reduces the share of third-party code in Java projects.
- Abstract(参考訳): 大規模なコードの再利用は、開発コストと時間の両方を大幅に削減します。
しかし、ソフトウェアプロジェクトにおけるサードパーティコードの膨大なシェアは、特にメンテナンスとセキュリティに関して、新たな課題をもたらす。
本稿では,実際の利用状況に基づいて,Javaプロジェクトの依存関係を専門化する新しい手法を提案する。
プロジェクトとその依存関係が与えられたら、プロジェクトを構築するのに必要な依存関係のサブセットを体系的に識別し、残りを削除します。
このプロセスの結果、それぞれの特別な依存関係をjarファイルにパッケージ化しました。
そして、元の依存関係を特別なバージョンに置き換える特別な依存関係ツリーを生成します。
これにより、オリジナルのものよりもはるかに少ないサードパーティコードでプロジェクトを構築することができる。
その結果、最適化コンパイラツールチェーンの一時的なアーティファクトではなく、特別な依存関係がソフトウェアサプライチェーンの第一級の概念になる。
このテクニックをdeptrimというツールで実装し、30の著名なオープンソースjavaプロジェクトで評価しました。
DepTrimは、これらのプロジェクト全体で合計343(86.6%)の依存関係を専門とし、それぞれのプロジェクトを特別な依存性ツリーで再構築することに成功した。
さらに、この特殊化によって、依存性から57,444 (42.2%) のクラスを削除し、依存性クラスとプロジェクトクラスの比率を、初期プロジェクトの8.7倍から特殊化後の5.0倍に引き下げた。
これらの新たな結果は、依存性の特殊化がJavaプロジェクトにおけるサードパーティコードのシェアを大幅に減少させることを示している。
関連論文リスト
- Beyond Dependencies: The Role of Copy-Based Reuse in Open Source Software Development [5.412781090113212]
オープンソースソフトウェアでは、依存関係を導入したり、リソース自体をコピーすることで、プロジェクトのリソースは再利用できる。
我々の目標は、将来の研究とツール開発が効率を高め、コピーベースの再利用のリスクを低減することである。
論文 参考訳(メタデータ) (2024-09-07T13:50:40Z) - Local Software Buildability across Java Versions (Registered Report) [0.0]
Javaのバージョン6から23をインストールしたコンテナで、すべてのプロジェクトを自動ビルドしようとします。
成功または失敗は終了コードによって決定され、標準出力とエラーストリームは保存される。
論文 参考訳(メタデータ) (2024-08-21T11:51:00Z) - Compilation of Commit Changes within Java Source Code Repositories [2.556190321164248]
JESSは、コミットされた変更参照した部分のみを保持することで、コードを削減します。
JESSは、独立して72%のメソッドとコンストラクタをコンパイルできる。
Project KBの修正コミットデータベースでは、コミット内で修正されたファイルのわずか8%が、提供されるビルドスクリプトでコンパイルできるため、JESSは、コミットが修正した全ファイルの73%をコンパイルすることができる。
論文 参考訳(メタデータ) (2024-07-25T08:14:33Z) - A Preliminary Study on Self-Contained Libraries in the NPM Ecosystem [2.221643499902673]
現代のソフトウェアエコシステムにおけるライブラリの普及は、依存関係の複雑なネットワークを生み出します。
依存関係がゼロのライブラリは自己完結型になる。
本稿では,NPMエコシステムにおける自己完結型ライブラリの特徴について考察する。
論文 参考訳(メタデータ) (2024-06-17T09:33:49Z) - ReGAL: Refactoring Programs to Discover Generalizable Abstractions [59.05769810380928]
Generalizable Abstraction Learning (ReGAL)は、再利用可能な関数のライブラリをコード化して学習する手法である。
ReGALによって発見された共有関数ライブラリは、プログラムが様々な領域で容易に予測できることを示している。
CodeLlama-13Bでは、ReGALはLOGOで11.5%、日付理解で26.1%、TextCraftで8.1%という絶対精度が向上し、3つのドメインのうち2つでGPT-3.5を上回った。
論文 参考訳(メタデータ) (2024-01-29T18:45:30Z) - DevEval: Evaluating Code Generation in Practical Software Projects [52.16841274646796]
我々はDevEvalという名の新しいベンチマークを提案し、実践プロジェクトにおける開発者の経験と一致している。
DevEvalは、119の実用的なプロジェクトから2,690のサンプルを含む厳格なパイプラインを通じて収集される。
DevEvalの5つの人気のあるLCMを評価し、コード生成における実際の能力を明らかにする。
論文 参考訳(メタデータ) (2024-01-12T06:51:30Z) - On the Security Blind Spots of Software Composition Analysis [46.1389163921338]
Mavenリポジトリで脆弱性のあるクローンを検出するための新しいアプローチを提案する。
Maven Centralから53万以上の潜在的な脆弱性のあるクローンを検索します。
検出された727個の脆弱なクローンを検出し、それぞれに検証可能な脆弱性証明プロジェクトを合成する。
論文 参考訳(メタデータ) (2023-06-08T20:14:46Z) - Hexatagging: Projective Dependency Parsing as Tagging [63.5392760743851]
文中の単語を有限個の可能なタグの要素でタグ付けすることで、依存関係木を構成する新しい依存性であるヘキサトガーを導入する。
私たちのアプローチは、トレーニング時に完全に並列化可能です。すなわち、依存関係のパースを構築するのに必要な構造構築アクションは、互いに並列に予測できます。
我々はPenn Treebankテストセット上で96.4 LASと97.4 UASの最先端性能を実現する。
論文 参考訳(メタデータ) (2023-06-08T18:02:07Z) - Entity Set Co-Expansion in StackOverflow [49.64523055423687]
特定の種類のいくつかのシードエンティティが与えられた場合、エンティティセット拡張は、シードと同じタイプのエンティティの広範なセットを見つけることを目的としている。
StackOverflowの質問応答スレッドからライブラリ、OS、アプリケーション、言語エンティティを抽出する。
共同膨張過程において、我々はPLMを用いて、エンティティ間の類似性を計算するための候補エンティティの埋め込みを導出する。
論文 参考訳(メタデータ) (2022-12-05T13:50:35Z) - Please Mind the Root: Decoding Arborescences for Dependency Parsing [67.71280539312536]
我々はUniversal Dependency Treebankから多くの言語における最先端の出力を分析する。
最悪の制約違反率は24%です。
論文 参考訳(メタデータ) (2020-10-06T08:31:14Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。