論文の概要: 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プロジェクトにおけるサードパーティコードのシェアを大幅に減少させることを示している。
関連論文リスト
- Depends-Kotlin: A Cross-Language Kotlin Dependency Extractor [1.7129679621106917]
Googleは2017年にAndroidアプリを開発するための公式プログラミング言語としてKotlinを導入した。
ソフトウェア分析の基礎となるKotlinコード依存性分析は限定的だ。
Depends-Kotlinを開発し、Kotlinソースコードのエンティティとその依存関係を抽出しました。
論文 参考訳(メタデータ) (2024-01-30T10:15:35Z) - ReGAL: Refactoring Programs to Discover Generalizable Abstractions [66.37493420911979]
Generalizable Abstraction Learning (ReGAL)は、コードカプセル化によって再利用可能な関数のライブラリを学ぶ方法である。
ReGALによって発見された共有関数ライブラリは、プログラムが様々な領域で容易に予測できることを示している。
CodeLlama-13Bでは、ReGALはグラフィックスで11.5%、日付理解で26.1%、MinecraftベースのテキストゲームであるTextCraftで8.1%という絶対的な精度向上を実現している。
論文 参考訳(メタデータ) (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) - A Data Source Dependency Analysis Framework for Large Scale Data Science
Projects [0.0]
データソース依存地獄(Data source dependency hell)は、データと、しばしば機械学習モデルの予期せぬ失敗に繋がるユニークなクイックが果たす中心的な役割を指す。
MLOpsエンジニアは、高速なペースのエンジニアリング環境で、モデルの依存性マップ全体を監視できる自動依存性マッピングフレームワークを提示する。
論文 参考訳(メタデータ) (2022-12-15T16:34:39Z) - Entity Set Co-Expansion in StackOverflow [49.64523055423687]
特定の種類のいくつかのシードエンティティが与えられた場合、エンティティセット拡張は、シードと同じタイプのエンティティの広範なセットを見つけることを目的としている。
StackOverflowの質問応答スレッドからライブラリ、OS、アプリケーション、言語エンティティを抽出する。
共同膨張過程において、我々はPLMを用いて、エンティティ間の類似性を計算するための候補エンティティの埋め込みを導出する。
論文 参考訳(メタデータ) (2022-12-05T13:50:35Z) - LabelGit: A Dataset for Software Repositories Classification using
Attributed Dependency Graphs [11.523471275501857]
LabelGitと呼ばれるGitHubプロジェクトの新しいデータセットを作成します。
私たちのデータセットは、依存関係グラフや識別子からのソースコードニューラル表現など、ソースコードからの直接的な情報を使用します。
プロキシに頼らず、ソースコード全体を分類するために使用するソリューションの開発を支援することを願っています。
論文 参考訳(メタデータ) (2021-03-16T07:28:58Z) - How We Refactor and How We Document it? On the Use of Supervised Machine
Learning Algorithms to Classify Refactoring Documentation [25.626914797750487]
リファクタリングは、外部の振る舞いを変えることなく、システムの設計を改善する技術である。
この研究はコミットを、従来のBugFixやFunctionalのカテゴリとともに、内部QA、外部QA、Code Smell Resolutionの3つのカテゴリに分類する。
分類結果をよりよく理解するために、私たちはコミットメッセージを分析して、開発者が定期的に臭いを説明するために使用するパターンを抽出しました。
論文 参考訳(メタデータ) (2020-10-26T20:33:17Z) - Please Mind the Root: Decoding Arborescences for Dependency Parsing [67.71280539312536]
我々はUniversal Dependency Treebankから多くの言語における最先端の出力を分析する。
最悪の制約違反率は24%です。
論文 参考訳(メタデータ) (2020-10-06T08:31:14Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。