(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024052547
(43)【公開日】2024-04-11
(54)【発明の名称】ソフトウェア・パッケージのためのバージョン更新の推奨
(51)【国際特許分類】
G06F 8/65 20180101AFI20240404BHJP
【FI】
G06F8/65
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023135917
(22)【出願日】2023-08-23
(31)【優先権主張番号】17/937420
(32)【優先日】2022-09-30
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
2.BLUETOOTH
3.PYTHON
4.WCDMA
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】リィウ・レイ
(72)【発明者】
【氏名】チェン・ウェイ-ペン
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376CA42
5B376CA44
(57)【要約】 (修正有)
【課題】ソフトウェア・パッケージのためのバージョン更新の推奨を提供する。
【解決手段】方法は、ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と、第1のバージョンの一般リリース日の前または後の一般リリース日をもつ第1のソフトウェア・パッケージの第2のバージョンを判別する段階と、セキュリティ制約条件、互換性制約条件、相互運用性制約条件およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と、選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、第1のバージョンのための更新としての第2のバージョンの好適さを決定する段階と、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングする段階と、を含む。
【選択図】
図15
【特許請求の範囲】
【請求項1】
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを含む、
方法。
【請求項2】
制約条件の前記集合をカテゴリーの集合に分類するオプションを表示するよう前記電子デバイスを制御する段階と;
前記電子デバイスを介してユーザー入力を受領する段階と;
受領されたユーザー入力に基づいて、表示されたオプションからオプションを選択する段階とをさらに含み、前記一つまたは複数の制約条件は選択されたオプションに基づいて選択される、
請求項1に記載の方法。
【請求項3】
前記一つまたは複数の制約条件は、前記セキュリティ制約条件、前記互換性制約条件、および前記相互運用性制約条件をハード制約条件として選択し、前記パフォーマンス制約条件をソフト制約条件として選択することを含む、請求項1に記載の方法。
【請求項4】
前記一つまたは複数の制約条件は、前記セキュリティ制約条件をハード制約条件として選択し、前記互換性制約条件、前記相互運用性制約条件、および前記パフォーマンス制約条件をソフト制約条件として選択することを含み、
前記ソフト制約条件のうち、前記互換性制約条件と前記相互運用性制約条件のそれぞれの重要性は前記パフォーマンス制約条件の重要性よりも高い、
請求項1に記載の方法。
【請求項5】
前記第2のバージョンについてのチェックの前記集合は、優先度の順に実行され、セキュリティ・チェック、互換性チェック、相互運用性チェック、およびパフォーマンス・チェックから構成され、
前記優先度の順は、前記セキュリティ・チェックに関連付けられた第1の優先度、前記互換性チェックに関連付けられた第2の優先度、前記相互運用性チェックに関連付けられた第3の優先度、および前記パフォーマンス・チェックに関連付けられた第4の優先度を示す、
請求項1に記載の方法。
【請求項6】
チェックの前記集合の実行は、セキュリティ・チェックを:
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける一つまたは複数のセキュリティ問題の存在を検出するよう一つまたは複数の脆弱性データベースに照会し;
前記照会に基づいて前記一つまたは複数の脆弱性データベースから応答を受信し;
受信された応答に基づいてセキュリティ・チェック結果を生成することによって実行することを含み、
前記第2のバージョンの前記好適さは、生成されたセキュリティ・チェック結果に基づいて決定される、
請求項1に記載の方法。
【請求項7】
チェックの前記集合の実行は、互換性チェックを:
前記入力に基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンに関する第1の情報を決定する段階と;
前記第1の情報に基づいて、前記一つまたは複数のウェブベースのソースからデータの集合を抽出する段階であって、前記データの集合は:
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおける一つまたは複数の変更、および
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける前記一つまたは複数の変更に関する第2の情報から構成される、段階と;
前記データの集合に対する一つまたは複数のパターン検索動作を含む動作の集合を実行する段階と;
動作の前記集合の実行に基づいて互換性チェック結果を生成する段階とによって実行することを含み、
前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さは、生成された互換性チェック結果に基づいて決定される、
請求項1に記載の方法。
【請求項8】
抽出された前記データの集合が:
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードを含む第1のファイル、
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける前記一つまたは複数の変更に関する前記第2の情報を含む第2のファイル、
前記第1のソフトウェア・パッケージの説明を含む第3のファイル、および
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおいて導入された前記一つまたは複数の変更に関連する第1のメッセージの集合
から構成される、請求項7に記載の方法。
【請求項9】
前記動作の集合を実行することがさらに:
前記データの集合における互換性に関連する一つまたは複数のタグを検出するよう前記データの集合に対する前記動作の集合の第1のパターン検索動作を実行する段階と;
前記一つまたは複数のタグに関連付けられた一つまたは複数の文を抽出する段階と;
前記一つまたは複数の文で言及されているAPI名または関数名の第1の集合を決定する段階と;
API名または関数名の前記第1の集合が、前記ソフトウェアのソースコードにおいて使用され、前記第1のソフトウェア・パッケージの前記第1のバージョンによって提供される一つまたは複数の第1のAPIまたは第1の関数の名前を含むかどうかを判定する段階とを含み、
前記互換性チェック結果はさらに決定に基づいて生成される、
請求項7に記載の方法。
【請求項10】
前記動作の集合を実行することがさらに:
前記抽出されたデータの集合から、前記第1のソフトウェア・パッケージの前記第1のバージョンのソースコードに対する、前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおける前記一つまたは複数の変更に対応する一つまたは複数のコード・チャンクを収集し;
前記一つまたは複数のコード・チャンクに対する前記動作の集合の第2のパターン検索動作を実行して、前記互換性チェック結果を生成することを含む、
請求項7に記載の方法。
【請求項11】
チェックの前記集合の実行は、相互運用性チェックを:
前記入力に基づいて、前記ソフトウェアのソースコード内で一つまたは複数の第2のAPIまたは関数を実装するために使用される、第2のソフトウェア・パッケージの第1のバージョンに関するパッケージ情報を決定する段階と;
前記パッケージ情報に基づいて相互運用性チェック結果を生成する段階であって、前記相互運用性チェック結果は、前記第1のソフトウェア・パッケージの前記第2のバージョンと前記第2のソフトウェア・パッケージの前記第1のバージョンとの間の相互運用性を示す、段階と;
生成された相互運用性チェック結果にさらに基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンのための更新としての、前記第2のバージョンの好適さを前記決定する段階とによって実行することを含む、
請求項1に記載の方法。
【請求項12】
一つまたは複数のウェブベースのソースからのソフトウェア・パッケージのコレクションを判別する段階であって、ソフトウェア・パッケージの前記コレクションは、前記第1のソフトウェア・パッケージおよび前記第2のソフトウェア・パッケージを含む、段階と;
ソフトウェア・パッケージの前記コレクションの各ソフトウェア・パッケージに関連付けられたソフトウェア・パッケージ・データを収集する段階であって、前記ソフトウェア・パッケージ・データは、依存関係の集合と、前記依存関係の集合においてリストされた各ソフトウェア・パッケージについての一つまたは複数のパッケージ・マネージャーとを含む、段階と;
収集されたソフトウェア・パッケージ・データに基づいて依存関係ツリーを生成する段階と;
前記依存関係ツリーに基づいて、ソフトウェア・パッケージの前記コレクションにおいて使用される、ソフトウェア・パッケージ組み合わせの集合を識別する段階と;
前記ソフトウェア・パッケージ組み合わせの集合に含まれるソフトウェア・パッケージ組み合わせと、それらのソフトウェア・パッケージ組み合わせに関連する情報とを含むデータセットを生成する段階とをさらに含む、
請求項11に記載の方法。
【請求項13】
前記データセットにおける前記第1のソフトウェア・パッケージの前記第2のバージョンと前記第2のソフトウェア・パッケージの前記第1のバージョンとの間の第1のソフトウェア・パッケージ組み合わせの存在を判別する段階と;
前記存在にさらに基づいて前記相互運用性チェック結果を生成する段階とをさらに含み、
生成された相互運用性チェック結果にさらに基づいて、前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さが決定される、
請求項12に記載の方法。
【請求項14】
一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの前記第1のバージョンに関連するパフォーマンス・メトリックの第1の集合を決定する段階と;
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの前記第2のバージョンに関連するパフォーマンス・メトリックの第2の集合を決定する段階と;
パフォーマンス・メトリックの前記第1の集合に基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンに関連する第1のパフォーマンス指数を計算する段階と;
パフォーマンス・メトリックの前記第2の集合に基づいて、前記第1のソフトウェア・パッケージの前記第2のバージョンに関連する第2のパフォーマンス指数を計算する段階と;
前記第1のパフォーマンス指数を前記第2のパフォーマンス指数と比較する段階と;
前記比較に基づいてパフォーマンス・チェック結果を生成する段階とをさらに含み、
前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さは、生成されたパフォーマンス・チェック結果にさらに基づいて決定される、
請求項1に記載の方法。
【請求項15】
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの各バージョンに関連するバージョン情報を収集する段階であって、
前記バージョン情報はバージョン・タグと対応するバージョン日付を含む、段階と;
前記一つまたは複数のウェブベースのソースから、第1のメッセージの集合、第1のメッセージ・ラベルの集合、第1のメッセージ・マージ日の集合を収集する段階であって、
前記第1のメッセージ・ラベルの集合および前記第1のメッセージ・マージ日の集合は、前記第1のメッセージの集合に関連付けられている、段階と;
前記第1のメッセージ・マージ日の集合と前記バージョン情報に基づいて、前記第1のメッセージの集合の各メッセージに、前記第1のソフトウェア・パッケージの対応するバージョンを割り当てる段階と;
前記第1のメッセージ・ラベルの集合の対応するメッセージ・ラベルに基づいて、前記第1のメッセージの集合の各第1のメッセージをクラスターの集合のうちの少なくとも1つのクラスターにクラスタリングする段階と;
前記クラスタリングに基づいて、パフォーマンス・メトリックの前記第1の集合およびパフォーマンス・メトリックの前記第2の集合の一つまたは複数のパフォーマンス・メトリックを決定する段階と;
前記一つまたは複数のパフォーマンス・メトリックに基づいて、前記第1のソフトウェア・パッケージに関連する前記第1のパフォーマンス指数と前記第2のパフォーマンス指数を計算する段階とをさらに含む、
請求項14に記載の方法。
【請求項16】
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージに関連付けられた第2のメッセージの集合、第2のメッセージ・ラベルの集合、および第2のメッセージ作成日の集合を収集する段階と;
前記第2のメッセージの集合の各メッセージがバージョン・タグを割り当てられているかどうかを決定する段階と;
事前に割り当てられたバージョン・タグおよび前記第2のメッセージ作成日の集合のうちの少なくとも1つに基づいて、収集された第2のメッセージの集合の各メッセージに前記バージョン・タグを割り当てる段階と;
前記割り当てに基づいて、パフォーマンス・メトリックの前記第1の集合およびパフォーマンス・メトリックの前記第2の集合の一つまたは複数のパフォーマンス・メトリックを決定する段階と;
前記一つまたは複数のパフォーマンス・メトリックに基づいて、前記第1のソフトウェア・パッケージに関連付けられた前記第1のパフォーマンス指数および前記第2のパフォーマンス指数を計算する段階とをさらに含む、
請求項14に記載の方法。
【請求項17】
ソフトウェア・パッケージのコレクションに関連付けられたメッセージの集合と、前記メッセージの集合に関連付けられたラベルの集合とのトレーニング・データセットを生成する段階であって、ソフトウェア・パッケージの前記コレクションは、前記第1のソフトウェア・パッケージを含む、段階と;
生成されたトレーニング・データセットで機械学習(ML)モデルをトレーニングする段階であって、前記MLモデルは、新しいメッセージについてのラベルを予測するようにトレーニングされる、段階と;
前記第1のソフトウェア・パッケージの前記第2のバージョンに関連付けられた第1のメッセージの集合に対する、トレーニングされたMLモデルの適用に基づいて、チェックの前記集合のうちのパフォーマンス・チェックを実行して、前記第2のバージョンの前記好適さを決定する段階とをさらに含む、
請求項1に記載の方法。
【請求項18】
前記ユーザー支援情報が:
前記第1のソフトウェア・パッケージの前記第2のバージョンとソースコード互換性があるように、前記ソフトウェアのソースコードを更新する第1の推奨、
前記第1のソフトウェア・パッケージの前記第2のバージョンにアップグレードする第2の推奨、および
前記第1のソフトウェア・パッケージの前記第2のバージョンを前記第1のバージョンに対する更新として推奨する、または推奨しない理由の集合
のうちの一つまたは複数を含む、請求項1に記載の方法。
【請求項19】
実行されることに応答してシステムに動作を実行させる命令を記憶するように構成された、非一時的なコンピュータ読み取り可能な記憶媒体であって、前記動作は:
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを含む、
記憶媒体。
【請求項20】
プロセッサを有するシステムであって、前記プロセッサは:
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを実行するように構成されている、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示で議論される実施形態は、ソフトウェア・パッケージのためのバージョン更新を推奨することに関する。
【背景技術】
【0002】
ソフトウェア開発では、バージョン管理は、ソフトウェア・パッケージ(たとえば、オープンソースのソフトウェア・パッケージ)のソースコードの変更を追跡するのに役立つ重要なプラクティスである。典型的には、開発者や組織は、ソフトウェア・パッケージの以前のバージョン(単数または複数)と比較して、新しいバージョンのソフトウェア・パッケージのソースコードに導入された変更の詳細を示す文書を公開する。ソフトウェア・パッケージは、新しい機能の追加、既存の機能の置き換えまたは削除、およびソフトウェア・パッケージのソースコードの古いバージョンで生じたバグ/例外などのセキュリティ問題の修正のために、新しいバージョンに更新されることがある。典型的には、ソフトウェア・パッケージは、ユーザーが自分のソフトウェア・アプリケーションのソースコードで使用できるメソッドまたは関数を含む。たとえば、ソフトウェア・パッケージは、ソフトウェア・アプリケーションのソースコードを含む、アプリケーション・プログラミング・インターフェース(API)呼び出しを実行することによって呼び出すことができるメソッドを公開することがある。
【0003】
新しいバージョンのリリースでは、ソフトウェア・パッケージにソースコードの変更を含むことがある。たとえば、ソフトウェア・パッケージの古いバージョンで公開されているメソッドは、新しいバージョンでは変更される可能性がある。場合によっては、そのような変更によってソフトウェアの後方互換性が失われる可能性がある。このようなメソッドを呼び出すソフトウェア・アプリケーションは、該ソフトウェア・アプリケーションのソースコードにおいて関連する変更が行われるまで、新しいバージョンで適切に機能しない可能性がある。場合によっては、該ソフトウェア・アプリケーションはエラーに遭遇することがあり、あるいはクラッシュすることがある。他方、新しいバージョンのソフトウェア・パッケージでは、アプリケーションで使用されている他のソフトウェアとの相互運用性がさらに損なわれたり、セキュリティ(たとえば脆弱性)やパフォーマンスの問題が付随したりすることがある。
【0004】
本願で請求される主題は、何らかの欠点を解決する、あるいは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿に記載されるいくつかの実施形態が実施されうる1つの例示的な技術領域を示すためにのみ提供されている。
【発明の概要】
【課題を解決するための手段】
【0005】
ある実施形態のある側面によれば、動作は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況(usage)を示す入力を受領することを含んでいてもよい。動作は、さらに、第1のソフトウェア・パッケージの第1のバージョンの一般リリース日の前または後の一般リリース日をもつ第1のソフトウェア・パッケージの第2のバージョンを判別することを含んでいてもよい。動作はさらに、セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択することを含んでいてもよい。動作は、選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、第1のバージョンのための更新としての第2のバージョンの好適さを判断することを含んでいてもよい。動作は、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリング/表示するよう電子デバイスを制御することを含みうる。ユーザー支援情報は、前記好適さに基づいてレンダリングされてもよい。
【0006】
実施形態の目的と利点は、少なくとも特許請求の範囲で特に指摘されている要素、特徴、および組み合わせによって実現され、達成される。
【0007】
上記の一般的な説明および以下の詳細な説明は、いずれも単に例および説明であり、請求の範囲にある発明を制限するものではないことを理解するべきである。
【図面の簡単な説明】
【0008】
添付図面を使用して、さらなる具体性および詳細さをもって実施形態が記載され、説明される。
【0009】
【
図1】ソフトウェア・パッケージのためのバージョン更新を推奨することに関連する例示的な環境を表す図である。
【0010】
【
図2】ソフトウェア・パッケージのためのバージョン更新を推奨するシステムのブロック図である。
【0011】
【
図3】ソフトウェア・パッケージのためのバージョン更新を推奨する入力(一つまたは複数)の集合を提供するための例示的な電子ユーザーインターフェース(UI)を示している。
【0012】
【
図4】ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な第1の方法のフローチャートを示している。
【0013】
【
図5】ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な第2の方法のフローチャートを示している。
【0014】
【
図6】ソフトウェア・パッケージのためのバージョン更新を推奨するためのセキュリティ・チェック結果を生成するための例示的な方法のフローチャートを示している。
【0015】
【
図7】ソフトウェア・パッケージのためのバージョン更新を推奨するための互換性チェック結果を生成するための例示的な方法のフローチャートを示している。
【0016】
【
図8】
図7の互換性チェック結果を生成するための第1のパターン検索動作を実行するための例示的な方法のフローチャートを示している。
【0017】
【
図9】
図7の互換性チェック結果を生成するための第2のパターン検索動作を実行するための例示的な方法のフローチャートを示している。
【0018】
【
図10】ソフトウェア・パッケージのためのバージョン更新を推奨するための相互運用性チェック結果を生成するための例示的な方法のフローチャートを示している。
【0019】
【
図11】ソフトウェア・パッケージのためのバージョン更新を推奨するためのパフォーマンス・チェック結果を生成するための例示的な方法のフローチャートを示している。
【0020】
【
図12】パフォーマンス・チェック結果を生成するためのパフォーマンス・メトリックを決定するための例示的な方法のフローチャートを示している。
【0021】
【
図13】パフォーマンス・チェック結果を生成するための機械学習(ML)モデルのトレーニングのための例示的な方法のフローチャートを示している。
【0022】
【
図14】電子デバイス上にユーザー支援情報を表示するための例示的な電子ユーザーインターフェース(UI)を示している。
【0023】
【
図15】ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な方法のフローチャートを示している。
【0024】
すべて、本開示に記載された少なくとも一つの実施形態による。
【発明を実施するための形態】
【0025】
現在の業界では、オープンソースソフトウェア(OSS)の重要性が増しつつある。GitHub(登録商標)のようなウェブベースのソフトウェア・パッケージ・ホスティング・システムは、オープンソース・ソフトウェアを構築し共有するための開発者や組織の大きなコミュニティをもつ。オープンソース・ソフトウェアは、クライアント・アプリケーションとオープンソース・ソフトウェアの間の対話を許容するAPIの助けにより、さまざまなクライアント・アプリケーションによって使用されている。膨大な数の開発者や組織があるので、オープンソース・ソフトウェアは頻繁に更新されている。場合によっては、OSSを更新した後では、APIは、必要とされる仕方で動作しないか、あるいは全く動作しないことがある。場合によっては、更新されたOSSには、セキュリティ上の問題、相互運用性の問題、または関連するパフォーマンスの問題さえあることがある。これにより、クライアント・アプリケーションのユーザーにとって、クライアント・アプリケーションの一つまたは複数の機能が利用不能になることがあり、あるいはクライアント・アプリケーションがクラッシュすることさえありうる。
【0026】
OSSの更新数が急速に増加すると、OSSは、APIを介して消費されうる、およびクライアント・アプリケーションに統合されうる、より多くの機能を提供する可能性がある。場合によっては、OSSに対するこれらの更新は、OSSの以前のバージョンで発生したセキュリティ問題を修正することがある。クライアント(または開発者)は、クライアント・アプリケーションにおいて使用されているOSSの現在のバージョンを更新して、クライアント・アプリケーションのセキュリティを改善したり、および/または機能を向上させたりすることを望むことがある。
【0027】
OSSをアップグレードする前に、クライアントは、API(またはアップグレードされたOSS)がOSSの現在のバージョンと互換であるかどうかを知ることを望むことがある。一般に、現在のバージョンのソフトウェアのAPIを使用するソフトウェア・アプリケーションが新しいバージョンのソフトウェアとともに動作できる場合、新しいバージョンのソフトウェアは互換である〔互換性がある〕(または後方互換である)と言われることがある。あるバージョンのAPIとともに動作するクライアント・アプリケーション(APIを消費するように記述されたプログラム)が将来のバージョンのAPIでも同様に動作できる場合、APIは互換であると言われることがある。つまり、クライアントが新しいバージョンのAPIとともにシームレスに(つまり、クライアント・アプリケーションのソースコードにおけるいかなる修正もなしに)動作できる場合、APIはリリース間で後方互換である。また、OSSをアップグレードする前に、クライアントはそのAPIがクライアント・アプリケーションによって使用されている別のオープンソース・ソフトウェアのAPIと相互運用可能かどうかを知ることを望むことがある。一般に、相互運用性とは、第1のOSSの第1のAPIの、第2のOSSの少なくとも第2のAPIとの共存(すなわち全員一致の実行(unanimous execution))を指す。APIが相互運用可能でない場合は、クライアント・アプリケーションのソースコードを更新する必要があることがある。これは面倒なだけでなく、時間もかかることがある。さらに、OSSをアップグレードする前に、クライアントは更新されたOSSにセキュリティ上の脆弱性があるかどうかを知りたがることがある。また、クライアントは、OSSをアップグレードする前に、更新されたOSSにいくつかのパフォーマンス改善や新機能があるかどうかを知ることを望むことがある。
【0028】
ソフトウェア(またはOSS)の更新を推奨する伝統的なアプローチは、セキュリティ問題チェック、互換性チェック、相互運用性チェック、パフォーマンス・チェックなどのすべての前提条件をチェックすることにおいて、手動の労力を必要とする。たとえば、クライアントは、新しいバージョンのOSSにおけるセキュリティ問題があるかどうかについて、新しいバージョンのコードの解析に基づいて、または新しいバージョンのソフトウェア・アプリケーションの他のユーザーによる、または脆弱性データベースから受領されたユーザー・レビューに基づいて、手動でチェックする必要がある場合がある。別の例として、互換性チェックおよび/または相互運用性チェックのために、クライアントは、互換性および相互運用性チェックを検出するために、サンドボックス環境において、新しいバージョンのソフトウェアをもってクライアント・アプリケーションを更新する必要がある場合がある。各前提条件を手動でチェックするそのようなアプローチは、面倒で時間がかかり、人的エラーが生じやすい可能性がある。
【0029】
本開示に記載されているいくつかの実施形態は、ソフトウェア・パッケージのためのバージョン更新を推奨するための方法および非一時的なコンピュータ可読媒体に関するものである。開示されたシステムは、クライアント・アプリケーションにおいて使用されるソフトウェア・パッケージのより新しいバージョンを推奨することができうる。さらに、開示されたシステムは、APIが推奨されるべきか否かをチェックするために、少なくとも2つの決定パラメータを使用してもよい。第1の決定パラメータは、ソフトウェア・パッケージの現在のバージョンおよび新しいバージョンに関連するセキュリティ問題に関連していてもよい。第2の決定パラメータは、ソフトウェア・パッケージの新しいバージョンの、ソフトウェア・パッケージの現在のバージョンとの互換性に関連していてもよい。さらに、第3の決定パラメータは、新しいバージョンのソフトウェア・パッケージの、クライアント・アプリケーションにおいて使用される他のソフトウェア・パッケージとの相互運用性に関連していてもよく、第4の決定パラメータは、ソフトウェア・パッケージの以前のバージョンに対する、新しいバージョンのソフトウェア・パッケージのパフォーマンスに関連していてもよい。新しいバージョンが推奨されない場合、開示されたシステムは、ソフトウェア・パッケージの新しいバージョンを推奨しない一つまたは複数の理由を自然言語で表示することができてもよい。したがって、開示されたシステムは、2つ以上の決定パラメータに基づいて、ソフトウェア・パッケージの新しいバージョンを推奨しうる。また、開示されたシステムは、ソフトウェア・パッケージの新しいバージョンを推奨するために、各決定パラメータに関連する包括的な規則および手順を定義しうる。本開示は、ソフトウェアの新しいバージョンに更新することを望む可能性のあるソフトウェア・アプリケーションの開発者にとって有用でありうる。また、該開発者は、ソフトウェアの新しいバージョンに更新した後に、ソフトウェア・アプリケーションのソースコードが修正される必要があるかどうかについて通知されてもよい。
【0030】
本開示の実施形態は、添付図面を参照して説明される。
【0031】
図1は、本開示に記載された少なくとも1つの実施形態に従って配置された、ソフトウェア・パッケージのためのバージョン更新の推奨に関連する例示的な環境を表す図である。
図1を参照するに、例示的な環境100が示されている。例示的な環境100では、システム102と一つまたは複数のウェブベースのソース104が示されている。一つまたは複数のウェブベースのソース104は、ソフトウェア・パッケージのコレクションをホストしたり、あるいはソフトウェア・パッケージのコレクションに関連するデータを記憶したりしていてもよい。さらに、電子デバイス106、通信ネットワーク108、および電子デバイス106の表示画面にレンダリングされた電子ユーザー・インターフェース(UI)110が示されている。システム102、一つまたは複数のウェブベースのソース104、および電子デバイス106は、通信ネットワーク108を介して相互に通信的に結合されうる。
【0032】
さらに、電子デバイス106に関連付けられる可能性のあるユーザー112が示されている。電子デバイス106は、ユーザー112からの入力を受け取り、電子UI 110上にユーザー支援情報をレンダリングするように構成されうる好適な論理、回路、およびインターフェースを含みうる。ある実施形態では、電子デバイス106は、ユーザー112が電子デバイス106上にレンダリングされた電子UI 110を介して一つまたは複数の入力を提供することを可能にしうるタッチスクリーンであってもよい。タッチスクリーンは、抵抗式タッチスクリーン、容量式タッチスクリーン、または熱式タッチスクリーンの少なくとも一つであってもよい。電子デバイス106は、液晶ディスプレイ(LCD)ディスプレイ、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、または有機LED(OLED)ディスプレイ技術のうちの少なくとも一つ、または他のディスプレイデバイスなどだがそれらに限定されない、いくつかの既知の技術を通じて実現されてもよい。ある実施形態によれば、電子デバイス106は、ヘッドマウントデバイス(HMD)、スマートグラス・デバイス、シースルー・ディスプレイ、プロジェクション・ベースのディスプレイ、エレクトロクロミックディスプレイ、または透明ディスプレイの表示画面を指してもよい。
【0033】
ある実施形態では、電子デバイス106は、ユーザー112に関連付けられたユーザーデバイスに対応してもよい。ユーザー112は、ユーザーデバイスを介してシステム102と対話してもよい。電子デバイス106の例は、モバイルデバイス、デスクトップコンピュータ、ラップトップ、コンピュータワークステーション、クラウドサーバーなどのサーバー、またはサーバーのグループを含みうるが、これらに限定されない。一つまたは複数の実施形態において、ユーザーデバイスは、ユーザーエンド端末デバイスと、該ユーザーエンド端末デバイスに通信的に結合されたサーバーを含むことができる。ユーザーエンド端末デバイスの例は、モバイルデバイス、デスクトップコンピュータ、ラップトップ、またはコンピュータワークステーションを含みうるが、これらに限定されない。
【0034】
一つまたは複数のウェブベースのソース104は、ソフトウェア・パッケージのコレクションに関連する情報を記憶するように構成されうる、好適な論理、回路、およびインターフェースを含みうる。ソフトウェア・パッケージのコレクション内の各ソフトウェア・パッケージは、アプリケーション開発のために使用されてもよい。ある実施形態では、ソフトウェア・パッケージは、一つまたは複数のAPIを公開または提供することができる。具体的には、ユーザー112は、ソフトウェアのソースコードに、API呼び出しコードまたはAPIのメソッドを含める必要がある場合がある。コレクション内の各ソフトウェア・パッケージは、たとえば、OSS、Free and Open-Source Software(FOSS)、Free/Libre and Open-Source Software(FLOSS)、または独自開発ソフトウェアに対応する場合がある。一つまたは複数のウェブベースのソース104の例は、ウェブベースのコード・ホスティング・サーバー、データベース・サーバー、ファイル・サーバー、ウェブ・サーバー、Really Simple Syndication(RSS)フィード、およびウェブサイトおよびウェブ・アプリケーションをホストするサーバーを含みうるが、これらに限定されない。
【0035】
ある実施形態では、一つまたは複数のウェブベースのソース104はサーバーとして実装されてもよく、これは、一つまたは複数の可用性ゾーン(availability zone)(たとえば、データセンター)にまたがって分散されたストレージを含みうる。別の実施形態では、各ウェブベースのソースはフロントエンド・システムとバックエンド・システムを含みうる。フロントエンド・システムは、ソフトウェアに関連する情報を閲覧するためのインターフェース(ウェブページまたはウェブ・アプリケーションのクライアント側インターフェースなど)を提供するように構成されてもよい。バックエンド・システムは、ソフトウェアに関連する前記情報にアクセスしようとするフロントエンド・システムによる要求を処理するためのデータベース、論理、および命令を記憶していてもよい。
【0036】
ある実施形態では、一つまたは複数のウェブベースのソース104は、ソフトウェア・パッケージ(またはソフトウェア・パッケージのコレクション)をホストしてもよく、個人および/または組織がウェブベースのインターフェースを通じてソフトウェアを管理することを許容しうる。別の実施形態では、ウェブベースのソースは、ソフトウェア・パッケージ上にウェブページを含むソフトウェア・パッケージ・ホスティング・システムであってもよい。ウェブページは、ソフトウェア・パッケージのソースコード(ソフトウェアがOSSの場合)や、他のソフトウェア関連ファイル、たとえば文書、変更ログ、対応するソフトウェア・パッケージの説明を含むリードミー(readme)ファイル、テスト結果、APIリファレンスガイド、その他の追加のリンクや参考文献へのリンクを含みうる。ユーザー(ユーザー112を含む)は、API呼び出し、ウェブ・クライアント(たとえば、ウェブ・ブラウザ)、またはコマンドライン・インターフェースを通じて、ソフトウェア・パッケージのコレクションにアクセスできる場合がある。
【0037】
ユーザー112は、ソフトウェアの開発者(または開発者グループ)であってもよい。ソフトウェアは、ソフトウェアのソースコード内で一つまたは複数の第1のAPIまたは第1の関数を使用していてもよい。たとえば、ソースコードは、ソフトウェアの特定の動作またはタスクに対応するAPI呼び出しコードまたは関数コードを含んでいてもよい。そのようなAPIまたは関数は、第1のソフトウェア・パッケージの第1のバージョンによって提供される場合があり、これは、一つまたは複数のウェブベースのソース104上でホストされていてもよい。
【0038】
いつでも、一つまたは複数のAPIまたは関数を提供する第1のソフトウェア・パッケージの第2のバージョンがリリースされる可能性がある。ユーザー112は、第1のソフトウェア・パッケージを第1のバージョンから第2のバージョンに更新することを望むことがある。第1のソフトウェア・パッケージの第2のバージョンは、第1のソフトウェア・パッケージの第1のバージョンのソースコードの変更を含んでいてもよい。たとえば、変更は、関数/メソッドの定義や関数のためのI/Oパラメータの数およびタイプの修正、既存の関数の廃止、新しいAPIメソッドまたは関数の追加などを含みうる。場合によっては、変更は、第1のバージョンが新しいバージョンのプログラミング言語をサポートするようにアップグレードされた場合に、第2のバージョンで導入される可能性のある構文関連の変更を含んでいてもよい。変更の一部は、第1のソフトウェア・パッケージの第1のバージョンに存在する脆弱性やバグなどのセキュリティ問題を取り除くために、ソフトウェア・パッケージの第2のバージョンで導入された修正であってもよい。第1のソフトウェア・パッケージの第2のバージョンが推奨されるべきか否かを判断するために、本稿で説明されるように、一組の動作が実行されうる。
【0039】
任意の時点において、システム102は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受け取ることができる。ソフトウェアは、コンピュータ・アプリケーションであってもよく、ユーザー112によって開発または管理されることがある。たとえば、ソフトウェアは、ユーザー112によって、ローコード(low-code)、ノーコード(no-code)、またはコードベースの(code-based)アプリケーション開発プラットフォームを通じて開発されうる。受領される入力は、たとえば、ソフトウェアのソースコード、または、該ソースコードのうち(ソフトウェアの該ソースコードにおいて使用されうる)一つまたは複数の第1のAPIまたは第1の関数に関連しうる一部を含んでいてもよい。場合によっては、受領される入力はテキスト情報を含んでいてもよい。テキスト情報は、第1のソフトウェア・パッケージの名前に関連付けられた第1のデータ、ソフトウェア・パッケージの第1のバージョンに関連付けられた第2のデータ、およびソフトウェア・パッケージの第2のバージョンに関連付けられた第3のデータを含んでいてもよい。たとえば、テキスト情報は、第1のソフトウェア・パッケージの名前として「ABC」、「ABC」の第1のバージョンとして「5.0」、「ABC」の第2のバージョンとして「5.1」を含んでいてもよい。
【0040】
入力を受領すると、システム102は第1のソフトウェア・パッケージの第2のバージョンまたはバージョンの集合(たとえば、第2のバージョン、第3のバージョンなど)を決定してもよい。簡潔のため、本開示は第2のバージョンについて動作を説明する。本開示で説明される動作は、第1のソフトウェア・パッケージの第2のバージョン以外の任意のバージョンにも適用可能でありうる。
【0041】
第1のソフトウェア・パッケージの第2のバージョンは、第1のソフトウェア・パッケージの第1のバージョンの、より早い使用リリース日、たとえばより早い一般リリース日より後でありうる、ソフトウェアの使用のためのリリース日、たとえば一般リリース日を有していてもよい。別の実施形態では、第1のソフトウェア・パッケージの第2のバージョンは、第1のソフトウェア・パッケージの第1のバージョンの一般リリース日より前の一般リリース日を有する場合がある。ここで使用されるように、一般リリース日は、ソフトウェアの使用のためのリリース日、または略して「リリース日」の例として使用されている。
【0042】
システム102は、制約条件の集合から一つまたは複数の制約条件を選択しうる。制約条件の集合は、セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含みうる。ある実施形態では、一つまたは複数の制約条件が電子デバイス106上にレンダリングされてもよく、電子デバイス106の電子UI 110を介してユーザー112によって選択されてもよい。制約条件の集合からの一つまたは複数の制約条件の選択に関する詳細は、たとえば
図3で与えられる。
【0043】
一つまたは複数の制約条件の選択に基づいて、システム102はチェックの集合を実行してもよい。チェックの集合は、たとえば、セキュリティ・チェック、互換性チェック、相互運用性チェック、パフォーマンス・チェックなどを含みうる。セキュリティ・チェックは、選択された一つまたは複数の制約条件のセキュリティ制約条件に関連していてもよい。互換性チェックは、選択された一つまたは複数の制約条件の互換性制約条件に関連していてもよい。相互運用性チェックは、選択された一つまたは複数の制約条件の相互運用性制約条件に関連していてもよい。同様に、パフォーマンス・チェックは、選択された一つまたは複数の制約条件のパフォーマンス制約条件に関連していてもよい。チェックの集合は、ソフトウェア・パッケージの第1のバージョンのための更新としての、第2のバージョンの好適さを判断するために実行されうる。
【0044】
ある実施形態では、第1のソフトウェア・パッケージの第2のバージョンのためのチェックの集合が優先度の順に実行されうる。優先度の順は、セキュリティ・チェックに関連する第1の優先度、互換性チェックに関連する第2の優先度、相互運用性チェックに関連する第3の優先度、およびパフォーマンス・チェックに関連する第4の優先度を示してもよい。具体的には、セキュリティ・チェックが最高の優先度を有していてもよく、その後に互換性チェックが続く。相互運用性チェックは、セキュリティ・チェックや互換性チェックより優先度が低いが、パフォーマンス・チェックよりも優先度が高くてもよい(パフォーマンス・チェックは、チェックの集合における全チェックのうちで最も低い優先度であってもよい)。チェックの集合の各チェックは、優先度の順に従って実行される必要がある可能性がある動作の集合を含んでいてもよい。チェックの集合の各チェックの実行に関する詳細は、たとえば、
図6、
図7、
図8、
図9、
図10、および
図11で与えられる。
【0045】
決定された好適さに基づいて、システム102は、ユーザー支援情報をレンダリングするよう電子デバイス106を制御してもよい。ある実施形態では、ユーザー支援情報は電子デバイス106の電子UI 110上に表示されてもよく、第1のバージョンを第2のバージョンに更新する推奨を含んでいてもよい。別の実施形態では、ユーザー支援情報は、第1のソフトウェア・パッケージの第2のバージョンとソースコード互換性があるように、ソフトウェアのソースコードを更新する第1の推奨を含んでいてもよい。別の実施形態では、ユーザー支援情報は、第1のソフトウェア・パッケージの第2のバージョンにアップグレードするための第2の推奨を含んでいてもよい。別の実施形態では、ユーザー支援情報は、第1のバージョンの更新として、第1のソフトウェア・パッケージの第2のバージョンを推奨するまたは推奨しない理由の集合を含んでいてもよい。ユーザー支援情報についての詳細は、たとえば、
図14で与えられる。
【0046】
なお、システム102と、一つまたは複数のウェブベースのソース104と、電子デバイス106との間の通信は、通信ネットワーク108を介して行われてもよい。通信ネットワーク108は、システム102が一つまたは複数のウェブベースのソース104、電子デバイス106、および/または異なるデバイス(図示せず)と通信しうるための通信媒体を含んでいてもよい。通信ネットワーク108の例は、インターネット、クラウドネットワーク、セルラーネットワーク(たとえば第四世代Long-Term Evolution(LTE)または第五世代New Radio(NR))、無線忠実度(Wi-Fi)ネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、および/またはメトロポリタンエリアネットワーク(MAN)を含みうるが、これらに限定されない。例示的な環境100におけるさまざまなデバイスは、さまざまな有線および無線通信プロトコルに従って、通信ネットワーク108に接続するように構成されうる。そのような有線および無線通信プロトコルの例は、伝送制御プロトコルおよびインターネットプロトコル(TCP/IP)、ユーザーデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、ファイル転送プロトコル(FTP)、ZigBee、EDGE、IEEE802.11、光忠実度(Li-Fi)、802.16、IEEE802.11s、IEEE802.11g、マルチホップ通信、無線アクセスポイント(AP)、デバイス間通信、セルラー通信プロトコル、および/またはBluetooth(BT)通信プロトコルの少なくとも一つ、またはそれらの組み合わせを含みうるが、これらに限定されない。
【0047】
本開示の範囲から逸脱することなく、システム102に対して修正、追加、または省略を行うことができる。たとえば、いくつかの実施形態では、システム102は、明示的に例示または説明されていない可能性のある任意の数の他のコンポーネントを含んでいてもよい。
【0048】
図2は、本開示に記載された少なくとも1つの実施形態に従って構成された、ソフトウェア・パッケージのためのバージョン更新を推奨するシステムのブロック図である。
図2は、
図1からの要素との関連で説明される。
図2を参照して、
図1のシステム102のブロック
図200が示されている。システム102は、プロセッサ202、メモリ204、および永続データストレージ206を含むことができる。いくつかの実施形態では、システム102は、ネットワーク・インターフェース210および電子デバイス106を含みうる入出力(I/O)デバイス208をも含んでいてもよい。さらに、システム102に通信的に結合されうる一つまたは複数のウェブベースのソース104が示されている。
【0049】
プロセッサ202は、システムによって実行される種々の動作に関連するプログラム命令を実行するように構成されうる好適な論理、回路、および/またはインターフェースを含みうる。プロセッサ202は、さまざまなコンピュータハードウェアまたはソフトウェアモジュールを含む、任意の好適な特殊目的または汎用コンピュータ、コンピューティングエンティティ、または処理デバイスを含んでいてもよく、任意の適用可能なコンピュータ可読記憶媒体に記憶された命令を実行するように構成されてもよい。たとえば、プロセッサ202は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)フィールドプログラマブルゲートアレイ(FPGA)、またはプログラム命令を解釈および/または実行し、および/またはデータを処理するように構成されたその他のデジタルまたはアナログ回路を含むことができる。
図2では単一のプロセッサとして示されているが、プロセッサ202は、本開示に記載されているように、システム102の任意の数の動作を個別にまたは集合的に実行する、またはその実行を指揮するように構成された任意の数のプロセッサを含むことができる。
【0050】
いくつかの実施形態では、プロセッサ202は、メモリ204および/または永続データストレージ206に記憶されたプログラム命令を解釈および/または実行し、および/またはデータを処理するように構成されることができる。いくつかの実施形態では、プロセッサ202は、永続データストレージ206からプログラム命令をフェッチし、メモリ204にプログラム命令をロードすることができる。プログラム命令がメモリ204にロードされた後、プロセッサ202はプログラム命令を実行することができる。プロセッサ202のいくつかの例は、中央処理装置(CPU)、縮小命令セットコンピュータ(RISC)プロセッサ、ASICプロセッサ、複雑命令セットコンピュータ(CISC)プロセッサ、グラフィカル処理ユニット(GPU)、コプロセッサ、および/またはそれらの組み合わせである。
【0051】
メモリ204は、プロセッサ202によって実行可能なプログラム命令を記憶するように構成されうる好適な論理、回路、および/またはインターフェースを含むことができる。ある種の実施形態では、メモリ204は、受領した入力と、選択された一つまたは複数の制約条件、チェックの集合、ソフトウェア・パッケージの第1のバージョン、およびソフトウェア・パッケージの第2のバージョンを記憶するように構成されてもよい。ある種の実施形態では、メモリ204は、ユーザー支援情報、第1のソフトウェアの第1のバージョンの一般リリース日、および第1のソフトウェアの第2のバージョンの一般リリース日を記憶するように構成されてもよい。メモリ204は、コンピュータで実行可能な命令またはデータ構造を担持するまたは記憶するための、コンピュータで読み取り可能な記憶媒体を含みうる。そのようなコンピュータで読み取り可能な記憶媒体は、プロセッサ202のような汎用または特殊目的のコンピュータによってアクセスされうる任意の利用可能な媒体を含みうる。
【0052】
制限ではなく例として、そのようなコンピュータで読み取り可能な記憶媒体は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、電子的に消去可能なプログラム可能な読み出し専用メモリ(EEPROM)、コンパクトディスク読み出し専用メモリ(CD-ROM)またはその他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、フラッシュメモリデバイス(例:ソリッドステートメモリデバイス)、またはコンピュータで実行可能な命令またはデータ構造の形で特定のプログラムコードを担持または記憶するために使用されることができ、汎用または特殊目的のコンピュータによってアクセスされることができる他の記憶媒体を含む、有形の、または非一時的なコンピュータで読み取り可能な記憶媒体を含みうる。上記の組み合わせも、コンピュータで読み取り可能な記憶媒体の範囲内に含まれうる。コンピュータで実行可能な命令は、たとえば、プロセッサ202にシステム102に関連するある動作または動作のグループを実行させるように構成された命令およびデータを含みうる。
【0053】
永続的データストレージ206は、プロセッサ202によって実行可能なプログラム命令を記憶するように構成されうる好適な論理、回路、および/またはインターフェースを含みうる。ある実施形態では、永続的データストレージ206は、ユーザー入力、一つまたは複数の脆弱性データベース、セキュリティ・チェック結果、互換性チェック結果、相互運用性チェック結果、およびパフォーマンス・チェック結果を記憶するように構成されてもよい。他のいくつかの実施形態では、永続的データストレージ206は、ファイルの集合、データセット、および機械学習(ML)モデルを記憶するように構成されうる。永続的データストレージ206は、コンピュータで実行可能な命令またはデータ構造を担持または記憶するための、コンピュータで読み取り可能な記憶媒体を含むことができる。そのようなコンピュータで読み取り可能な記憶媒体は、プロセッサ202のような汎用または特殊目的のコンピュータによってアクセスされうる任意の利用可能な媒体を含みうる。
【0054】
限定ではなく例として、そのようなコンピュータで読み取り可能な記憶媒体は、光ディスク記憶、磁気ディスク記憶または他の磁気記憶装置(例:ハードディスクドライブ(HDD))、フラッシュメモリデバイス(例:ソリッドステートドライブ(SSD)、セキュアデジタル(SD)カード、他のソリッドステートメモリデバイス)、またはコンピュータで実行可能な命令またはデータ構造の形で特定のプログラムコードを担持または記憶するために使用されることができ、汎用または特殊目的のコンピュータによってアクセスされることのできる他の記憶媒体を含む、有形なまたは非一時的なコンピュータで読み取り可能な記憶媒体を含みうる。上記の組み合わせも、コンピュータで読み取り可能な記憶媒体の範囲内に含まれてもよい。コンピュータで実行可能な命令は、たとえば、プロセッサ202がシステム102に関連するある動作または動作のグループを実行させるように構成された命令およびデータを含みうる。
【0055】
I/Oデバイス208は、一つまたは複数の入力を受け取るように設定されていてもよい好適な論理、回路、インターフェース、および/またはコードを含みうる。I/Oデバイス208は、一つまたは複数の入力に応答して出力を提供するようにさらに構成されていてもよい。I/Oデバイス208は、プロセッサ202およびネットワーク・インターフェース210などの他のコンポーネントと通信するように構成されうるさまざまな入出力デバイスを含みうる。入力デバイスの例は、タッチスクリーン、キーボード、マウス、ジョイスティック、および/またはマイクを含みうるが、これらに限定されない。出力デバイスの例は、電子デバイス106およびスピーカーを含みうるが、これらに限定されない。
【0056】
ネットワーク・インターフェース210は、通信ネットワーク108を介してシステム102、一つまたは複数のウェブベースのソース104、および電子デバイス106の間の通信を確立するように構成されうる、好適な論理、回路、インターフェース、および/またはコードを含みうる。ネットワーク・インターフェース210は、通信ネットワーク108を介したシステム102の有線または無線通信をサポートするために、さまざまな既知の技術を使用して実装されうる。ネットワーク・インターフェース210は、アンテナ、無線周波数(RF)トランシーバ、一つまたは複数の増幅器、チューナー、一つまたは複数の発振器、デジタルシグナルプロセッサ、コーダ・デコーダ(コーデック)チップセット、加入者識別情報モジュール(SIM)カード、および/またはローカルバッファを含みうるが、これらに限定されない。
【0057】
ネットワーク・インターフェース210は、インターネット、イントラネット、および/または無線ネットワーク、たとえば携帯電話ネットワーク、無線ローカルエリアネットワーク(LAN)および/またはメトロポリタンエリアネットワーク(MAN)などのネットワークと無線通信を介して通信することができる。無線通信は、Global System for Mobile Communications(GSM)、Enhanced Data GSM Environment(EDGE)、Wideband Code Division Multiple Access(W-CDMA)、Long Term Evolution(LTE)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、Bluetooth、Wireless Fidelity(Wi-Fi)(IEEE802.11a、IEEE802.11b、IEEE802.11g、および/またはIEEE802.11nなど)、Voice over Internet Protocol(VoIP)、Light Fidelity(Li-Fi)、またはWi-MAXなどの複数の通信規格、プロトコル、および技術のうちのいずれかを使用できる。
【0058】
【0059】
図3は、本開示に記載された少なくとも1つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨する入力(単数または複数)の集合を提供するための例示的な電子ユーザーインターフェース(UI)を示している。
図3は、
図1および
図2の要素との関連で説明される。
図3を参照すると、電子UI 300が示されており、これは
図1の電子UI 110の例示的な実装でありうる。電子UI 300は、ユーザー要求に基づいて電子デバイス106上に表示されてもよく、ユーザー要求は電子デバイス106の表示画面に表示されるアプリケーション・インターフェースを介して受領されてもよい。アプリケーション・インターフェースは、ソフトウェア開発キット(SDK)、クラウド・サーバー・ベースのアプリケーション、ウェブベースのアプリケーション、OSベースのアプリケーション/アプリケーションスイート、企業アプリケーション、またはモバイルアプリケーションなど、アプリケーションソフトウェアの一部である場合があってもよい。
【0060】
また、前述のように、
図1では、受領された入力は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示していてもよい。ある実施形態では、受領された入力は、ソフトウェアのソースコード、またはソフトウェアのソースコードの一部のうちの少なくとも一方を含んでいてもよい。ソースコードの一部は、第1のソフトウェア・パッケージによって提供される一つまたは複数の第1のAPI、第1の関数の使用状況、またはテキスト情報を示しうる。
【0061】
電子UI 300では、第1のUI要素302、第2のUI要素304、第3のUI要素306、第4のUI要素308などのUI要素の集合が示されている。第1のUI要素302は、たとえば「ソースコードをアップロード」とラベル付けされてもよい。第1のUI要素302は、ブラウズボタン302Aを含んでいてもよい。ブラウズボタン302Aを通じて、ユーザー112は、ソフトウェアのソースコードまたはソースコードの一部を含むファイルまたはディレクトリ/リポジトリをアップロードすることができる。場合によっては、ブラウズボタン302Aを介して、複数のソースコード・ファイルを含むリポジトリがユーザー112によってアップロードされてもよい。ソフトウェアのソースコードは、任意のプログラミング言語で書かれたものであってよく、一つまたは複数の第1のAPIまたは第1の関数についての情報と、一つまたは複数の第1のAPIまたは第1の関数を提供する第1のソフトウェア・パッケージの第1のバージョンを含んでいてもよい。
【0062】
場合によっては、ユーザー112は、ソフトウェアのソースコードまたはソースコードの一部をアップロードすることを望まないことがある。そのようなシナリオでは、ユーザー112は、第2のUI要素304を介して入力を提供してもよい。第2のUI要素304は、たとえば「詳細を入力」とラベル付けされていてもよい。第2のUI要素は、APIテキストボックス304A、第1のソフトウェア・パッケージ情報テキストボックス304B、および/または第2のソフトウェア・パッケージ情報テキストボックス304Cを含みうる。APIテキストボックス304A、第1のソフトウェア・パッケージ情報テキストボックス304B、および/または第2のソフトウェア・パッケージ情報テキストボックス304Cを通じて、システム102はソフトウェア・アプリケーションに関連付けられたテキスト情報を受け取ることができる。テキスト情報は、ソフトウェアのソースコードにおいて使用されうる一つまたは複数の第1のAPIまたは第1の関数に関連する第1のデータ、第1のソフトウェア・パッケージの第1のバージョンとともに、第1のソフトウェア・パッケージの名前に関連付けられた第2のデータ、および第1のソフトウェア・パッケージの第2のバージョンに関連付けられた第3のデータを含みうる。
【0063】
APIテキストボックス304Aは、ユーザー112がソフトウェアのソースコードで使用されうる一つまたは複数の第1のAPIまたは第1の関数の名前に関する情報を追加できるテキストボックスであってもよい。第1のソフトウェア・パッケージ情報テキストボックス304Bは、ユーザー112がソフトウェアに一つまたは複数の第1のAPIまたは第1の関数を提供する第1のソフトウェア・パッケージに関する情報を追加することを許容しうる。具体的には、ソフトウェア・パッケージに関する情報は、少なくとも、第1のソフトウェア・パッケージの名前と、第1のソフトウェア・パッケージの現在のバージョン(すなわち、第1のバージョン)を含みうる。第2のソフトウェア・パッケージ情報テキストボックス304Cは、第1のバージョンのための更新プログラムとしての好適さについてチェックされる必要がある可能性のある、第1のソフトウェア・パッケージの更新バージョン(たとえば第2のバージョン)に関する情報を、ユーザー112が追加することを許容しうる。第2のソフトウェア・パッケージ情報テキストボックス304Cは任意的でありうることに注意するべきである。デフォルトでは、システム102は第1のソフトウェア・パッケージの第2のバージョンとして、第1のソフトウェア・パッケージの最新または最も最近のバージョンを選択してもよい。
【0064】
第3のUI要素306は、たとえば「制約条件カテゴリー選択」とラベル付けされてもよい。第3のUI要素306は、第1の制約条件カテゴリー(すなわち、第1のオプション)に関連付けられた第1のラジオボタン306Aと、第2の制約条件カテゴリー(すなわち、第2のオプション)の選択のための第2のラジオボタン306Bを含んでいてもよい。ユーザー112は、第1の制約条件カテゴリーを選択するために第1のラジオボタン306Aを選択してもよい。同様に、ユーザー112は、第2の制約条件カテゴリーを選択するために第2のラジオボタン306Bを選択してもよい。
【0065】
ある実施形態では、システム102は、制約条件の集合をカテゴリーの集合に分類するオプションを表示するよう電子デバイス106を制御するように構成されうる。システム102は、電子デバイス106を介してユーザー入力を受領してもよく、受領されたユーザー入力に基づいて、表示されたオプションからオプションを選択することができる。選択されたオプションに基づいて、一つまたは複数の制約条件が選択されうる。
【0066】
ある実施形態では、第1のラジオボタン306Aを介した第1の制約条件カテゴリーの選択は、第1のバージョンのための好適な更新として第2のバージョンの好適さを決定するための第1の方法論の選択に対応しうる。同様に、第2のラジオボタン306Bを介した第2の制約条件カテゴリーの選択は、第1のバージョンのための好適な更新として第2のバージョンの好適さを決定するための第2の方法論の選択に対応しうる。第1の方法論は、第1のソフトウェア・パッケージの第2のバージョンへの更新後にソフトウェアのソースコードが修正されることを要求しなくてもよい動作を含むことができる。同様に、第2の方法論は、第1のソフトウェア・パッケージの第2のバージョンへの更新後にソフトウェアのソースコードが修正される必要がある可能性があるプロセスに対応することができる。第1の方法論と第2の方法論についての詳細は、たとえば、
図4と
図5に与えられる。
【0067】
第1の制約条件カテゴリーが選択された場合、システム102はセキュリティ制約条件、互換性制約条件、および相互運用性制約条件をハード制約条件として、パフォーマンス制約条件をソフト制約条件として選択してもよい。ハード制約条件は常に満たされなければならないが、ソフト制約条件は、そのためのコストが大きすぎなければ、可能な限り満たさなければならないものであってもよい。第2の制約条件カテゴリーが選択された場合、システム102は、ハード制約条件としてセキュリティ制約条件を、ソフト制約条件として互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を選択するように構成されうる。第2の制約条件カテゴリーについては、ソフト制約条件のうち、互換性制約条件と相互運用性制約条件の重要性がパフォーマンス制約条件よりも高くてもよい。
【0068】
第4のUI要素308は、たとえば「提出」とラベル付けされてもよく、ボタンであってもよい。このボタンを選択すると、システム102は、第1のソフトウェア・パッケージの第1のバージョンのための更新として、第1のソフトウェア・パッケージの第2のバージョンの好適さを判断するためのチェックの集合を実行するように構成されてもよい。
【0069】
電子UI 300のUI/UI要素は、単に例として提供されているだけであり、本開示を制限するものと解釈されるべきではないことに注意するべきである。いくつかの実施形態では、電子UI 300は、ユーザー112が、ソフトウェアおよび/または第1のソフトウェア・パッケージに関連するより多くの情報を入力またはアップロードできるように好適に修正されうる。
【0070】
図4は、本開示に記載された少なくとも一つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な第1の方法のフローチャートを示している。
図4は、
図1、
図2、および
図3の要素との関連で説明される。
図4を参照するに、フローチャート400が示されている。フローチャート400に示されている方法は、402で始まってもよく(たとえば、ユーザー112によって第1のラジオボタン306A(すなわち、第1の方法論)が選択される場合)、
図1または
図2のシステム102など、任意の好適なシステム、装置、またはデバイスによって実行されうる。
【0071】
402では、入力が受領されうる。入力は、電子デバイス106に表示されうる電子UI 110を介して電子デバイス106から受領されてもよい。入力は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示すことができる。ある実施形態では、受領された入力は、ソフトウェアのソースコードを含んでいてもよい。別の実施形態では、受領された入力は、ソフトウェアのソースコード内で使用されうる一つまたは複数の第1のAPIまたは第1の関数の名前を含むことができる。APIまたは関数の名前とともに、入力は、第1のソフトウェア・パッケージの第1のバージョンとともに、第1のソフトウェア・パッケージの名前をも含んでいてもよい。ある実施形態では、受領された入力は、一つまたは複数の制約条件(
図3に示されるような)を含んでいてもよい。受領される入力に関する詳細は、たとえば
図3に与えられている。
【0072】
404では、一つまたは複数のウェブベースのソース104への接続が確立されうる。ある実施形態では、システム102は、ウェブベースのソフトウェア・パッケージ・ホスティング・システム(例:GitHub(登録商標))、バージョン管理システム、ウェブベースのソフトウェア・メタデータ・ストレージ・サービス、またはウェブサイトを含みうる一つまたは複数のウェブベースのソース104への接続を確立することができる。システム102は、通信ネットワーク108を介してシステム102と一つまたは複数のウェブベースのソース104との間の接続を確立する。一つまたは複数のウェブベースのソース104に関する詳細は、たとえば
図1において与えられている。
【0073】
406では、第1のソフトウェア・パッケージの一つまたは複数のバージョンが取得されうる。ある実施形態では、システム102は、接続が確立された後、一つまたは複数のウェブベースのソース104から第1のソフトウェア・パッケージの一つまたは複数のバージョンを取得するように構成されうる。そのようなバージョンは、一つまたは複数のウェブベースのソース104で利用可能でありうる第1のソフトウェア・パッケージの一般リリースされたバージョンと未リリース・バージョンを含んでいてもよい。第1のソフトウェア・パッケージのリリースされたバージョンは、一般公衆または登録されたユーザーにとって利用可能であってもよいが、第1のソフトウェア・パッケージの一つまたは複数の未リリース・バージョンはテスト中であることがあり、特定のグループの人々にとって利用可能にされてもよい。
【0074】
ある実施形態では、システム102は、第1のソフトウェア・パッケージの一つまたは複数のバージョンを取得するために、第1のAPI要求を一つまたは複数のウェブベースのソース104に送信することができる。第1のソフトウェア・パッケージのそのようなバージョンは、データ構造(例:リスト)に格納されてもよい。リストは、第1のソフトウェア・パッケージの名前と、対応する一つまたは複数のバージョンとを含んでいてもよい。第1のソフトウェア・パッケージの一つまたは複数のバージョンのそれぞれは、数値、アルファベット、文字列、または英数字文字列で表されてもよい。ある実施形態では、第1のソフトウェア・パッケージの取得された名前は、第1のソフトウェア・パッケージの対応する一つまたは複数のバージョンともに、第1のソフトウェア・パッケージに関連付けられたソフトウェア・メタデータに対応しうる。
【0075】
408では、第1のソフトウェア・パッケージの一つまたは複数のバージョンからあるバージョンが選択されてもよい。ある実施形態では、システム102はリストから第1のソフトウェア・パッケージの一つまたは複数のバージョンのうちのあるバージョンを選択できる。リストからの諸バージョンの選択は、ある選択されたバージョンについて410から436までの動作の集合が実行された後に実行されうる逐次反復プロセスであってもよい。たとえば、制御が436から408に戻された後、第1のソフトウェア・パッケージの別のバージョン(すなわち、新しいバージョン)が選択されてもよい。新しいバージョンは、リストの次のエントリーであってもよい。
【0076】
410では、第1のソフトウェア・パッケージの選択されたバージョンに対して第1のセキュリティ・チェックが実行されてもよい。セキュリティ・チェックは、第1のソフトウェア・パッケージの第2のバージョンにおける一つまたは複数のセキュリティ問題(または脆弱性)を判別するために実行されてもよい。システム102は、セキュリティ制約条件(たとえば
図3に示されるような)の選択に基づいてセキュリティ・チェックを実行することができる。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンについてのセキュリティ・チェック結果を生成することができる。生成された結果は、第1のソフトウェア・パッケージの選択されたバージョンにおける少なくとも1つのセキュリティ問題の存在を示しうる。そのような問題は、第1のソフトウェア・パッケージの以前のバージョン(たとえば、第1のバージョン)に存在していても、存在していなくてもよい。セキュリティ・チェック結果の生成に関する詳細は、たとえば
図6で与えられる。
【0077】
412では、第1のソフトウェア・パッケージの第2のバージョンに前記セキュリティ問題が存在するかどうかが判定されてもよい。セキュリティ問題が検出されない場合は、制御は414に移行されてもよい。それ以外の場合は、制御は436に移行されてもよい。
【0078】
414では、第1のソフトウェア・パッケージの選択されたバージョンに対して第1の互換性チェックが実行されてもよい。具体的には、システム102は第1の互換性チェックを実行して、第1のソフトウェア・パッケージの第2のバージョンが、第1のソフトウェア・パッケージの第1のバージョンに対して後方互換または前方互換であるか否かを判定してもよい。第1のソフトウェア・パッケージの第2のバージョンは、第1のバージョンとともに動作するソフトウェア(すなわち、一つまたは複数のAPIを消費するように書かれたコンピュータ・プログラム)が第1のソフトウェア・パッケージの第2のバージョンとともに同じように動作できる場合、後方互換であると言われてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンに対して後方互換または前方互換であるかどうかを示しうる第1の互換性チェック結果を生成してもよい。第1の互換性チェック結果の生成に関する詳細は、たとえば、
図7、
図8、
図9で与えられる。
【0079】
416では、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンに対して互換であるかどうかが判定されてもよい。そのような判定は、生成された第1の互換性チェック結果に基づいて実行されてもよい。第2のバージョンが第1のバージョンに対して互換である場合は、制御は418に移行されてもよい。それ以外の場合は、制御は436に移行されてもよい。
【0080】
418では、第1のソフトウェア・パッケージの選択されたバージョンに対して相互運用性チェックが実行されてもよい。具体的には、システム102は、相互運用性問題を実行して、第1のソフトウェア・パッケージの選択されたバージョンが、ソフトウェアのソースコードにおいて使用される第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であるかどうかを判定するためにチェックしてもよい。たとえば、第1のソフトウェア・パッケージ「A」の選択されたバージョンが2.0であり、第2のソフトウェア・パッケージ「B」の第1のバージョンが「1.0」である場合、システム102は、第1のソフトウェア・パッケージ「A」のバージョン「2.0」が第2のソフトウェア・パッケージ「B」のバージョン「1.0」と相互運用可能であるかどうかを判定するように構成されてもよい。ある実施形態では、ソフトウェアは、ソフトウェア・アプリケーションの一つまたは複数の目的を達成するために、第1のソフトウェア・パッケージと第2のソフトウェア・パッケージを使用することができる。第1のソフトウェア・パッケージの選択されたバージョンと第2のソフトウェア・パッケージの第1のバージョンが、ソフトウェアのソースコードを修正する必要なくシームレスに動作する場合、第1のソフトウェア・パッケージの選択されたバージョンは、第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であると言われてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンが第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であるかどうかを示す相互運用性チェック結果を生成するように構成されてもよい。相互運用性チェック結果の生成に関する詳細は、たとえば
図10で与えられる。
【0081】
420では、第1のソフトウェア・パッケージの選択されたバージョンが、第2のソフトウェア・パッケージの第1のバージョンと相互運用可能かどうかが判定されてもよい。そのような判定は、生成された相互運用性チェック結果に基づいていてもよい。第1のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに対して相互運用可能である場合、制御は432に移行されてもよい。それ以外の場合、制御は422に移行されてもよい。
【0082】
422では、第2のソフトウェア・パッケージの第2のバージョンが決定されてもよい。第2のソフトウェア・パッケージの第2のバージョンは、一つまたは複数のウェブベースのソース104から決定されてもよい。ある実施形態では、システム102は、第2のソフトウェア・パッケージの第2のバージョンを取得するために、第2のAPI要求を一つまたは複数のウェブベースのソース104に送信するように構成されてもよい。
【0083】
424では、第2のソフトウェア・パッケージの第2のバージョンに対して第2のセキュリティ・チェックが実行されてもよい。具体的には、システム102は、第2のソフトウェア・パッケージの第2のバージョンに一つまたは複数のセキュリティ問題(または脆弱性)が存在するかどうかを判断するために、第2のセキュリティ・チェックを実行するように構成されてもよい。ある実施形態では、システム102は、第2のソフトウェア・パッケージの第2のバージョンについて第2のセキュリティ・チェック結果を生成するように構成されてもよい。生成されたセキュリティ・チェック結果は、第2のソフトウェア・パッケージの第2のバージョンにおける少なくとも1つのセキュリティ問題の存在を示しうる。第2のセキュリティ・チェック結果の生成に関する詳細は、たとえば
図6で与えられる。
【0084】
426では、第2のソフトウェア・パッケージの第2のバージョンにおいてセキュリティ問題が検出されたかどうかが判定されてもよい。システム102は、第2のソフトウェア・パッケージの第2のバージョンに関連する第2のセキュリティ・チェック結果に基づいて、第2のソフトウェア・パッケージの第2のバージョンにおけるセキュリティ問題を検出するように構成されてもよい。セキュリティ問題が検出されない場合は、制御は438に移行されてもよい。それ以外の場合は、制御は442に移行されてもよい。
【0085】
428では、第2のソフトウェア・パッケージの第2のバージョンに対して第2の互換性チェックが実行されてもよい。具体的には、システム102は、第2のソフトウェア・パッケージの第2のバージョンが第2のソフトウェア・パッケージの第1のバージョンに対して互換であるかどうかを判断するために、第2の互換性チェックを実行してもよい。そのような判断のために、システム102は、第2の互換性チェック結果を生成するように構成されてもよい。生成された互換性チェック結果は、第2のソフトウェア・パッケージの第2のバージョンの、第2のソフトウェア・パッケージの第1のバージョンとの互換性を示しうる。第2の互換性チェック結果の生成に関する詳細は、たとえば、
図7、
図8、
図9で与えられる。
【0086】
430では、第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに対して互換であるか否かがを判断されうる。そのような判断は、生成された第2の互換性チェック結果に基づいていてもよい。第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに対して互換である場合は、制御は432に移行されうる。それ以外の場合は、制御は438に移行されうる。
【0087】
432では、第1のソフトウェア・パッケージの第2のバージョンに対する第1のパフォーマンス・チェックが実行されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンに対して第1のパフォーマンス・チェックを実行するように構成されていてもよい。具体的には、第1のパフォーマンス・チェックは、第1のソフトウェア・パッケージの第2のバージョンが、第1のソフトウェア・パッケージの第1のバージョンに対してある種の向上を有しているかどうか、または第2のバージョンが、第1のソフトウェア・パッケージの第1のバージョンに関連するある種の問題を修正するかどうかを判断するために実行されてもよい。そのような向上は、第1のソフトウェア・パッケージの第2のバージョンにおいて修正されうる一つまたは複数のバグ、第1のソフトウェア・パッケージの第2のバージョンにおいて導入された一つまたは複数の機能、第1のソフトウェア・パッケージの第2のバージョンにおいて修正された一つまたは複数のセキュリティ問題などに関して判定されうる。
【0088】
ある実施形態では、システム102はパフォーマンス・チェック結果を生成してもよい。結果は、第1のソフトウェア・パッケージの第1のバージョンと比較しての、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスにおける違いを示してもよい。パフォーマンス・チェック結果の生成に関する詳細は、たとえば
図11で与えられる。
【0089】
434では、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスが第1のソフトウェア・パッケージの第1のバージョンよりもよいかどうかが判定されてもよい。そのような判定は、生成されたパフォーマンス・チェック結果に基づいて実行されてもよい。第1のソフトウェア・パッケージの第1のバージョンと比較して、第1のソフトウェア・パッケージの第2のバージョンのほうがよりよいパフォーマンスを有する場合は、制御は438に移行されうる。それ以外の場合は、制御は436に移行されうる。
【0090】
436では、第1のソフトウェア・パッケージの一つまたは複数のバージョンのそれぞれがすでに408で選択されたかどうかが判定されてもよい。選択された第1のソフトウェアの一つまたは複数のバージョンのそれぞれが408で選択されていた場合、制御は442に移行されてもよい。それ以外の場合は、第1のソフトウェア・パッケージの一つまたは複数のバージョンのそれぞれが408で選択されるまで、制御は408に移行されうる。
【0091】
438では、第1のソフトウェア・パッケージの第1のバージョンが安全か否かが判定されてもよい。具体的には、第1のソフトウェア・パッケージの第1のバージョンが少なくとも1つのセキュリティ問題に関連しているかどうかが判定されてもよい。第1のソフトウェア・パッケージの第1のバージョンに関連するセキュリティ問題の判定に関する詳細は、たとえば
図6で与えられる。第1のソフトウェア・パッケージの第1のバージョンが安全である場合(つまり、第1のソフトウェア・パッケージに関連するセキュリティ問題がない)、制御は440に移行されてもよい。それ以外の場合、制御は442に移行されてもよい。
【0092】
440では、第1のソフトウェア・パッケージの第2のバージョンが推奨されてもよい。ある実施形態では、システム102は、第1のバージョンを第1のソフトウェア・パッケージの第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう、電子デバイス106を制御してもよい。そのような推奨は、第1のセキュリティ・チェック結果、第1の互換性チェック結果、相互運用性チェック結果、第2のセキュリティ・チェック結果、第2の互換性チェック結果、およびパフォーマンス・チェック結果の少なくとも1つに基づいて決定されうる。
【0093】
442では、第1のソフトウェア・パッケージの第2のバージョンは推奨されなくてもよい。ある実施形態では、システム102は、第1のバージョンを第1のソフトウェア・パッケージの第2のバージョンに更新しないように推奨することを含むユーザー支援情報をレンダリングするよう電子デバイス106を制御してもよい。
【0094】
制御は終了に進んでもよい。フローチャート400は、402、404、406、408、410、412、414、416、418、420、422、424、426、428、430、432、434、436、438、440、442などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0095】
図5は、本開示に記載された少なくとも1つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な第2の方法のフローチャートを示している。
図5は、
図1、
図2、
図3、および
図4からの要素との関連で説明される。
図5を参照するに、フローチャート500が示されている。フローチャート500に示されている方法は、第2のラジオボタン306B(すなわち、第2の方法論)がユーザー112によって選択された場合、502で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0096】
502では、入力が受領されてもよい。受領された入力は、電子デバイス106に表示されてもよい電子UI 300を介して電子デバイス106から受領されうる。受領された入力は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示してもよい。入力の受領についての詳細は、
図3および
図4で与えられている。
【0097】
504では、一つまたは複数のウェブベースのソース104への接続が確立されうる。具体的には、システム102は、受領された入力に基づいて一つまたは複数のウェブベースのソース104への接続を確立するように構成されうる。一つまたは複数のウェブベースのソース104に関する詳細は、たとえば
図1と
図4で与えられている。
【0098】
506では、第1のソフトウェア・パッケージの一つまたは複数のバージョンが取得されうる。具体的には、システム102は、一つまたは複数のウェブベースのソース104への接続が確立された後に、第1のソフトウェア・パッケージの一つまたは複数のバージョンを取得するように構成されうる。ある実施形態では、一つまたは複数のバージョンは、一つまたは複数のウェブベースのソース104で利用可能でありうるソフトウェアのリリース済みバージョンと未リリースバージョンを含むことができる。ある実施形態では、取得された一つまたは複数のバージョンはリストに格納されてもよい。一つまたは複数のバージョンの取得に関する詳細は、たとえば
図4で与えられている。
【0099】
508では、第1のソフトウェア・パッケージの取得された一つまたは複数のバージョンからあるバージョンが選択されてもよい。該バージョンは、第1のソフトウェア・パッケージに関連付けられた、前記リストに格納された前記一つまたは複数のバージョンから選択されてもよい。ある実施形態では、システム102は、制御が536から508に戻された後、別のバージョンを選択するように構成されてもよい。ある実施形態では、フローチャート500で実行される動作の集合の第1の反復工程で、第1のソフトウェア・パッケージの第2のバージョンが選択されてもよい。取得された一つまたは複数のバージョンは、第1のソフトウェア・パッケージの第2のバージョンが選択された後に選択されてもよい。
【0100】
510では、第1のソフトウェア・パッケージの選択されたバージョンに対して第1のセキュリティ・チェックが実行されてもよい。具体的には、システム102は、第1のソフトウェア・パッケージの第2のバージョンにおける一つまたは複数のセキュリティ問題(または脆弱性)を判別するために、第1のセキュリティ・チェックを実行するように構成されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンについての第1のセキュリティ・チェック結果を生成するように構成されてもよい。生成された第1のセキュリティ・チェック結果は、第1のソフトウェア・パッケージの選択されたバージョンに少なくとも1つのセキュリティ問題があることを示しうる。第1のセキュリティ・チェック結果の生成に関する詳細は、たとえば
図6で与えられている。
【0101】
512では、第1のソフトウェア・パッケージの第2のバージョンにおいてセキュリティ問題が検出されたかどうかが判定されてもよい。システム102は、第1のソフトウェア・パッケージの第2のバージョンに関連する、生成された第1のセキュリティ・チェック結果に基づいて、第1のソフトウェア・パッケージの第2のバージョンにおけるセキュリティ問題を検出するように構成されてもよい。セキュリティ問題が検出された場合は、制御は536に移行されてもよい。それ以外の場合は、制御は514に移行されてもよい。
【0102】
514では、第1のソフトウェア・パッケージの選択されたバージョンに対して第1の互換性チェックが実行されてもよい。具体的には、システム102は、第1の互換性チェックを実行して、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンに関して後方互換性があるかどうかを判定するように構成されてもよい。第1のソフトウェア・パッケージの第2のバージョンに後方互換性があると言うことができるのは、第1のバージョンとともに動作するソフトウェア(一つまたは複数の第1のAPIを消費するように記述されたプログラム)が第1のソフトウェア・パッケージの第2のバージョンとともに同じように動作できる場合である。つまり、クライアントが第1のソフトウェア・パッケージの第2のバージョンとともにシームレスに(すなわち、ソフトウェアのソースコードの修正なしに)動作できる場合、第2のバージョンは後方互換性がある。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンに関して後方互換性または前方互換性があるかどうかを示すことができる第1の互換性チェック結果を生成するように構成されてもよい。第1の互換性チェック結果の生成に関する詳細は、たとえば、
図7、
図8、
図9で与えられている。
【0103】
516では、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンに関して互換性があるかどうかが判定されてもよい。そのような判定は、生成された第1の互換性チェック結果に基づいていてもよい。第2のバージョンが第1のバージョンに関して互換性がある場合は、制御は518に移行されてもよい。それ以外の場合は、制御は536に移行されてもよい。
【0104】
518では、第1のソフトウェア・パッケージの選択されたバージョンに対して相互運用性チェックが実行されてもよい。具体的には、システム102は、第1のソフトウェア・パッケージの第2のバージョンが、ソフトウェアのソースコードにおいて使用される第2のソフトウェア・パッケージの第1のバージョンと相互運用可能かどうかを判定する相互運用性チェックを実行するように構成されてもよい。ある実施形態では、ソフトウェアは、一つまたは複数の目的を達成するために、第1のソフトウェア・パッケージおよび第2のソフトウェア・パッケージを使用することができる。第1のソフトウェア・パッケージの第2のバージョンと第2のソフトウェア・パッケージの第1のバージョンがシームレスに(すなわち、ソフトウェアのソースコードの修正なしに)動作する場合、第1のソフトウェア・パッケージの第2のバージョンは、第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であると言うことができる。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンが第2のソフトウェア・パッケージの第1のバージョンと相互運用可能かどうかを示しうる相互運用性チェック結果を生成するように構成されてもよい。相互運用性チェック結果の生成に関する詳細は、たとえば
図10で与えられている。
【0105】
520では、第1のソフトウェア・パッケージの第2のバージョンが第2のソフトウェア・パッケージの第1のバージョンと相互運用可能かどうかが判定されてもよい。そのような判定は、生成された相互運用性チェック結果に基づいていてもよい。第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに関して相互運用可能でない場合は、制御は522に移行されてもよい。それ以外の場合は、制御は532に移行されてもよい。
【0106】
522では、第2のソフトウェア・パッケージの第2のバージョンが決定されてもよい。ある実施形態では、システム102は、一つまたは複数のウェブベースのソース104から第2のソフトウェア・パッケージの第2のバージョンを決定するようにさらに構成されてもよい。第2のバージョンの決定に関する詳細は、たとえば
図4で与えられている。
【0107】
524では、第2のソフトウェア・パッケージの第2のバージョンに対して第2のセキュリティ・チェックが実行されてもよい。具体的には、システム102は、第2のソフトウェア・パッケージの第2のバージョンにおける一つまたは複数のセキュリティ問題(または脆弱性)を判別するために、第2のセキュリティ・チェックを実行するように構成されていてもよい。ある実施形態では、システム102は、第2のソフトウェア・パッケージの第2のバージョンについての第2のセキュリティ・チェック結果を生成するように構成されてもよい。生成されたセキュリティ・チェック結果は、第2のソフトウェア・パッケージの第2のバージョンに少なくとも1つのセキュリティ問題が存在することを示してもよい。第2のセキュリティ・チェック結果の生成に関する詳細は、たとえば
図6で与えられている。
【0108】
526では、第2のソフトウェア・パッケージの第2のバージョンにおいてセキュリティ問題が検出されたかどうかが判定されてもよい。システム102は、第2のソフトウェア・パッケージの第2のバージョンに関連付けられた生成された第2のセキュリティ・チェック結果に基づいて、第2のソフトウェア・パッケージの第2のバージョンにおけるセキュリティ問題を検出するように構成されてもよい。セキュリティ問題が検出されなかった場合は、制御は528に移行されてもよい。それ以外の場合は、制御は542に移行されてもよい。
【0109】
528では、第2のソフトウェア・パッケージの第2のバージョンに対して、第2の互換性チェックが実行されてもよい。具体的には、システム102は、第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに関して互換性があるかどうかを判定する第2の互換性チェックを実行するように構成されてもよい。そのような判定のために、システム102は、第2のソフトウェア・パッケージの第2のバージョンの、第2のソフトウェア・パッケージの第1のバージョンとの互換性に関連しうる第2の互換性チェック結果を生成するように構成されてもよい。第2の互換性チェック結果の生成に関する詳細は、たとえば、
図7、
図8、
図9で与えられている。
【0110】
530では、第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに関して互換性があるかどうかが判定されてもよい。そのような判定は、生成された第2の互換性チェック結果に基づいていてもよい。第2のソフトウェア・パッケージの第2のバージョンが、第2のソフトウェア・パッケージの第1のバージョンに関して互換性がある場合は、制御は532に移行されてもよい。それ以外の場合は、制御は544に移行されてもよい。
【0111】
532では、第1のソフトウェア・パッケージの第2のバージョンに対する第1のパフォーマンス・チェックが実行されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンに対して第1のパフォーマンス・チェックを実行するように構成されてもよい。具体的には、システム102は、第1のソフトウェア・パッケージの第2のバージョンが、第1のソフトウェア・パッケージの第1のバージョンに関する向上を有するかどうか、または第1のソフトウェア・パッケージの第1のバージョンに関連する問題を修正するかどうかを判断するために、第1のパフォーマンス・チェックを実行するように構成されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第1のバージョンと比較しての、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスに関連するパフォーマンス・チェック結果を生成するように構成されてもよい。パフォーマンス・チェック結果の生成の詳細については、たとえば
図11で与えられている。
【0112】
534では、第1のソフトウェア・パッケージの第1のバージョンと比較して、第1のソフトウェア・パッケージの第2のバージョンのほうがよいパフォーマンスを有するかどうかが判定されてもよい。そのような判定は、生成されたパフォーマンス・チェック結果に基づいていてもよい。第1のソフトウェア・パッケージの第1のバージョンと比較して、第1のソフトウェア・パッケージの第2のバージョンがよりよいパフォーマンスを有する場合は、制御は538に移行されてもよい。それ以外の場合は、制御は536に移行されてもよい。
【0113】
536では、第1のソフトウェア・パッケージの一つまたは複数のバージョンのそれぞれがすでに508で選択されたかどうかが判定されてもよい。選択された第1のソフトウェアの一つまたは複数のバージョンのそれぞれが508ですでに選択されている場合、制御は538に移行されてもよい。それ以外の場合、第1のソフトウェア・パッケージの一つまたは複数のバージョンのそれぞれが508で選択されるまで、制御は508に移行されてもよい。
【0114】
538では、第1のソフトウェア・パッケージの第1のバージョンが安全かどうかが判定されてもよい。具体的には、システム102は、第1のソフトウェア・パッケージの第1のバージョンが少なくとも1つのセキュリティ問題に関連しているかどうかを判定するように構成されてもよい。第1のソフトウェア・パッケージの第1のバージョンに関連するセキュリティ問題の判別に関する詳細は、たとえば
図6で与えられている。第1のソフトウェア・パッケージの第1のバージョンが安全である(つまり、第1のソフトウェア・パッケージにセキュリティ上の問題が関連していない)場合、制御は542に移行されてもよい。それ以外の場合、制御は540に移行されてもよい。
【0115】
540では、第1のソフトウェア・パッケージの第2のバージョンが推奨されてもよい。ある実施形態では、システム102は、第1のバージョンを第1のソフトウェア・パッケージの第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイス106を制御するように構成されてもよい。また、ソフトウェアのソースコードを変更することなく、第1のソフトウェア・パッケージが第2のバージョンに更新されうることがレンダリングされてもよい。
【0116】
542では、第1のソフトウェア・パッケージの第2のバージョンは推奨されなくてもよい。ある実施形態では、システム102は、第1のバージョンを第1のソフトウェア・パッケージの第2のバージョンに更新しないという推奨を含むユーザー支援情報をレンダリングするように電子デバイス106を制御するように構成されてもよい。
【0117】
544では、第2のソフトウェア・パッケージの第2のバージョンが安全かどうかが判定されてもよい。具体的には、システム102は、第2のソフトウェア・パッケージの第2のバージョンが少なくとも一つのセキュリティ問題に関連しているかどうかを判定するように構成されてもよい。第2のソフトウェア・パッケージの第2のバージョンに関連するセキュリティ問題の判別に関する詳細については、たとえば
図6で与えられている。第2のソフトウェア・パッケージの第2のバージョンが安全でない場合(つまり、少なくともセキュリティ上の問題が第2のソフトウェア・パッケージに関連している場合)、制御は546に移行されてもよい。それ以外の場合、制御は538に移行されてもよい。
【0118】
546では、第2のソフトウェア・パッケージの第2のバージョンと第1のソフトウェア・パッケージの第2のバージョンが推奨されてもよい。ある実施形態では、システム102は、前記第1のバージョンを第1のソフトウェア・パッケージの第2のバージョンに更新し、第2のソフトウェア・パッケージの第1のバージョンを第2のソフトウェア・パッケージの第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするように電子デバイス106を制御するように構成されてもよい。ある実施形態では、ソフトウェアのソースコードに一つまたは複数の変更を加えて、第1のソフトウェア・パッケージが第2のバージョンに更新されうることがレンダリングされてもよい。別の実施形態では、第2のソフトウェア・パッケージの第1のバージョンが第1のソフトウェア・パッケージの第2のバージョンと相互運用可能でない可能性があるため、第2のソフトウェア・パッケージが第2のバージョンに更新されうることがレンダリングされてもよい。
【0119】
制御は終了に進んでもよい。フローチャート500は、502、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、534、536、538、540、542、544、546などの離散的な動作として示されている。しかしながら、ある種の実施形態では、開示された実施形態の本質を損なうことなく、特定の実装に依存して、そのような離散的な動作をさらに追加の動作に分割したり、より少ない動作に組み合わせたり、または削除したりすることができる。
【0120】
図6は、本開示に記載された少なくとも1つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するためのセキュリティ・チェック結果を生成するための例示的な方法のフローチャートを示している。
図6は、
図1、
図2、
図3、
図4、および
図5の要素との関連で説明される。
図6を参照するに、フローチャート600が示されている。フローチャート600に示されている方法は、602で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0121】
602では、第1のソフトウェア・パッケージの第1のバージョンに関連する情報が取得されてもよい。そのような情報は、一つまたは複数のウェブベースのソース104から取得されてもよい。取得される情報は、たとえば、対応するソフトウェア・パッケージの第1のバージョンに関連付けられたリリース・ノート、または第1のソフトウェア・パッケージの第1のバージョンに関連付けられた一つまたは複数のプル・リクエスト・メッセージを含みうる。リリース・ノートは、新しいソフトウェア・パッケージまたはソフトウェア・パッケージの新しいバージョンの立ち上げと同時に作成および配布される技術文書を指しうる。プル・リクエスト・メッセージはテキスト・メッセージであってもよく、ソフトウェア・パッケージのあるバージョンに関連する最近の変更、機能向上、バグなどを含むことができる。
【0122】
604では、取得された情報が解析されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第1のバージョンに関連する一つまたは複数のセキュリティ問題を検出するために、取得された情報を解析してもよい。ある実施形態では、システム102は、取得された情報におけるセキュリティ問題(たとえば、「セキュリティ問題」、「問題」、「脆弱性」、「欠陥」など)に関連するキーワードを検索してもよい。取得された情報においてキーワードのマッチが見つかった場合、システム102は、一つまたは複数のセキュリティ問題を検出できるために、キーワードに関連する一つまたは複数の文を解析してもよい。これは、「セキュリティ関連」または「セキュリティ関連ではない」とラベル付けされた注釈付きの文を使用して、機械学習ベースの二項分類器をトレーニングすることによっても達成できる。そのような二項分類器が適合された後、該二項分類器は、文がセキュリティに関連しているかどうかを予測するために使用できる。
【0123】
606では、一つまたは複数の脆弱性データベースが照会されてもよい。ある実施形態では、システム102は一つまたは複数の脆弱性データベースに照会してもよい。そのようなデータベースは、ソフトウェア・パッケージのコレクション(一つまたは複数のウェブベースのソース104でホストされている)の各ソフトウェア・パッケージの各バージョンに関連する一つまたは複数のセキュリティ問題を含んでいてもよい。そのようなデータベースの例は、Mitre(登録商標) Common Vulnerabilities and Exposures(CVE)、National Vulnerability Database(NVD)を含みうるが、これらに限定されない。
【0124】
ある実施形態では、システム102は、一つまたは複数の脆弱性データベースに照会するために、一つまたは複数の脆弱性データベースにAPI要求を送信するように構成されてもよい。送信されるAPI要求は、セキュリティ問題が判別されるべきバージョンとともに、ソフトウェア・パッケージの名前を含んでいてもよい。たとえば、410では、API要求は、第1のソフトウェア・パッケージの第2のバージョンを含んでいてもよい。同様に、424では、API要求は第2のソフトウェア・パッケージの第2のバージョンを含んでいてもよい。
【0125】
608では、照会〔クエリー〕に基づいて応答が受領されてもよい。ある実施形態では、システム102は、送信されたAPI要求について一つまたは複数の脆弱性データベースからの応答を受信することができる。具体的には、受信された応答は、送信されたAPI要求に応答して受信されうるAPI応答に対応してもよい。応答は、一つまたは複数のセキュリティ問題が第1のソフトウェア・パッケージの第2のバージョン(API要求に含まれる)に関連付けられているかどうかに関する情報を含んでいてもよい。例として、一つまたは複数の脆弱性データベースからの受信された応答は下記のように示される:
"configurations": {
"CVE_data_version": "4.0",
"nodes": {
{
operator": "OR",
"cpe_match": [
{
"vulnerable":true,
"cpe23Uri":cpe:2.3:a:abc,
"versionEndExcluding": "1.15.4"
},
{
"vulnerable": true,
"cpe23Uri":cpe:2.3:a:abc,
"versionStartIncluding":"2.0.0",
"versionEndExcluding":"2.0.3"
},
{
"vulnerable":true,
"cpe23Uri":"cpe:2.3:a:abc,
versionStartIncluding":"2.1.0",
"versionEndExcluding": "2.1.2"
}
}
}
上記応答に示されているように、「abc」ソフトウェア・パッケージのバージョン「1.15.4」より前、「2.0.0」から「2.0.3」の間、および「2.1.0」から「2.1.2」の間に発生するバージョンは、セキュリティ問題をもつ(または脆弱である)可能性がある。
【0126】
610では、セキュリティ・チェック結果が生成されてもよい。ある実施形態では、システム102はセキュリティ・チェック結果を生成するように構成されてもよい。セキュリティ・チェック結果は、第1のソフトウェア・パッケージの第2のバージョンが、それに関連する一つまたは複数のセキュリティ問題を有するかどうかを示しうる。ある実施形態では、生成されたセキュリティ・チェック結果は、「はい」(yes)または「いいえ」(no)を指定してもよい。生成されたセキュリティ・チェックが「はい」である場合、第2のバージョンは、少なくとも1つのセキュリティ問題をもつと判断されうる。生成されたセキュリティ・チェックが「いいえ」である場合、第2のバージョンにはセキュリティ問題が関連付けられていないと判断されてもよい。脆弱性(またはセキュリティ問題)の例は、破られたアクセスコントロールの脆弱性、暗号学的な失敗の脆弱性、注入脆弱性、安全でない設計の脆弱性、セキュリティ誤設定の脆弱性、ソフトウェアとデータの整合性(Software and Data Integrity)の脆弱性、およびサーバー側要求偽造(Server-Side Request Forgery)の脆弱性を含みうるが、これらに限定されない。
【0127】
ある実施形態では、セキュリティ・チェック結果は、取得された情報内のキーワードに関連しうる一つまたは複数の文の解析に基づいて生成されてもよい。別の実施形態では、セキュリティ・チェック結果は、受信された応答に基づいて生成されてもよい。
【0128】
ある実施形態では、システム102は、生成されたセキュリティ・チェック結果に基づいて、第2のバージョンの好適さを判断してもよい。第2のバージョンの好適さは、第2のバージョンが第1のバージョンの更新として好適であるかどうかを識別するために決定されうる。好適さの判断は、生成されたセキュリティ・チェック結果に基づいて実行されてもよい。
【0129】
ある実施形態では、生成されたセキュリティ・チェック結果が「はい」であるか、またはその結果が第1のソフトウェア・パッケージの第2のバージョンが少なくとも一つのセキュリティ問題を有することを示す場合、システム102は使用者支援情報をレンダリングするよう電子デバイス106を制御しうる。この情報は、第1のソフトウェア・パッケージの第2のバージョンを第1のバージョンへの適切な更新として推奨しない理由の集合を含んでいてもよい。そうでない場合、システム102は、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイス106を制御してもよい。
【0130】
フローチャート600は、実行されうるチェックの集合のセキュリティ・チェックに対応しうることに注意する必要がある。セキュリティ・チェックは、制約条件の集合のうちのセキュリティ制約条件に関連していてもよい。
【0131】
コントロールは終了に進んでもよい。フローチャート600は、602、604、606、608、610などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0132】
図7は、本開示に記載された少なくとも1つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するための互換性チェック結果を生成するための例示的な方法のフローチャートを示している。
図7は、
図1、
図2、
図3、
図4、
図5、および
図6の要素と関連で説明される。
図7を参照するに、フローチャート700が示されている。フローチャート700に示されている方法は、702で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0133】
702では、第1のソフトウェア・パッケージの第1のバージョンに関する第1の情報が決定されうる。ある実施形態では、システム102は、一つまたは複数のウェブベースのソース104から第1のソフトウェア・パッケージの第1のバージョンに関する第1の情報を決定することができる。第1の情報は、ソフトウェア(すなわち、開発者/ユーザー・アプリケーション)のソースコードにおいて使用される可能性のある一つまたは複数の第1のAPIまたは第1の関数と、該一つまたは複数の第1のAPIまたは該第1の関数を提供しうる第1のソフトウェア・パッケージの第1のバージョンに関するものであってもよい。
【0134】
704では、データの集合が抽出されてもよい。ある実施形態では、システム102は、一つまたは複数のウェブベースのソース104からデータの集合を抽出してもよい。データの集合は、決定された第1の情報に基づいて抽出されてもよく、第1のソフトウェア・パッケージの第2のバージョンのソースコードにおける一つまたは複数の変更を含んでいてもよい。データの集合は、第1のソフトウェア・パッケージの第2のバージョンにおける前記一つまたは複数の変更に関する第2の情報をも含んでいてもよい。
【0135】
ある実施形態では、抽出されたデータの集合は、第1のソフトウェア・パッケージの第1のバージョンのソースコードに関して、第1のソフトウェア・パッケージの第2のバージョンのソースコードにおける一つまたは複数の変更を含みうる。具体的には、抽出されたデータの集合は、第1のソフトウェア・パッケージの第2のバージョンのソースコードを含んでいてもよい第1のファイル、第2のバージョンのソースコードにおける一つまたは複数の変更に関する第2の情報を含む第2のファイル、第1のソフトウェア・パッケージの説明を含む第3のファイル、および第1のソフトウェア・パッケージの第2のバージョンのソースコードに導入された一つまたは複数の変更に関連付けられた第1のメッセージの集合を含んでいてもよい。例として、第2のファイルは、第1のソフトウェア・パッケージの各バージョンについての注目すべき変更のキュレーションされた、時系列順にされたリストを含みうる変更ログに対応していてもよい。第3のファイルは、第1のソフトウェア・パッケージ(または第1のソフトウェア・パッケージの第2のバージョン)に関連付けられたreadmeファイルに対応していてもよい。限定ではなく例として、第3のファイルの内容には、次の質問に対する答えを含んでいてもよい:
1.第1のソフトウェア・パッケージは何のために使用されるか。
2.第1のソフトウェア・パッケージはなぜ有用なのか。
3.第1のソフトウェア・パッケージのソースコードを使い始めるにはどうすればよいのか。
4.第1のソフトウェア・パッケージのソースコードを実装することに関してユーザーの役に立つリンクやリソースは何か。
5.誰が第1のソフトウェア・パッケージを保守し、貢献しているか。
6.第1のソフトウェア・パッケージの第2のバージョンにおいて実行される一つまたは複数の変更は何か(オプション)。
7.第1のソフトウェア・パッケージの第2のバージョンでは、どのAPI/メソッドが変更されているか(たとえば必須パラメータ)。
8.第1のソフトウェア・パッケージの第2のバージョンでは、どのような新しいAPI/メソッドが導入されているか。
9.第1のソフトウェア・パッケージの第2のバージョンでは、どのようなAPI/メソッドが廃止されているか。
第1のメッセージの集合は、第1のソフトウェア・パッケージの第2のバージョンに関連付けられたプル・リクエスト・メッセージおよび/またはコミット・メッセージに対応してもよい。
【0136】
706では、動作の集合が実行されうる。ある実施形態では、システム102は、データの集合に対して一つまたは複数のパターン検索動作を含みうる動作の集合を実行するように構成されてもよい。ある実施形態では、動作の集合の実行は、第1のパターン検索動作と第2のパターン検索動作を含むことができる。第1のパターン検索動作と第2のパターン検索動作のそれぞれは、抽出されたデータの集合に対して実行されてもよい。第1のパターン検索動作の実行に関する詳細は、たとえば
図8で与えられており、第2のパターン検索動作の実行に関する詳細は、たとえば
図9で与えられている。
【0137】
708では、互換性チェック結果が生成されてもよい。ある実施形態では、システム102は、動作の集合の実行に基づいて互換性チェック結果を生成するように構成されてもよい。生成された互換性チェック結果は、第1のソフトウェア・パッケージの第1のバージョンに関して、第1のソフトウェア・パッケージの第2のバージョンが互換性があるかどうかを示してもよい。具体的には、生成された互換性チェック結果は、ソフトウェアのソースコードにおいて使用される一つまたは複数の第1のAPIまたは第1の関数が、第1のソフトウェア・パッケージの第2のバージョンに関して互換性があるかどうかを示してもよい。システム102は、生成された互換性チェック結果に基づいて、第1のソフトウェア・パッケージの第1のバージョンについての更新として、第2のバージョンの好適さを判断するようにさらに構成されてもよい。
【0138】
ある実施形態では、互換性結果は後方互換性結果または前方互換性結果に対応しうる。第1のソフトウェア・パッケージの第2のバージョンの一般リリース日が第1のソフトウェア・パッケージの第1のバージョンの一般リリース日より後である場合、生成される互換性結果は後方互換性結果に対応しうる。別のケースでは、第1のソフトウェア・パッケージの第2のバージョンの一般リリース日が第1のソフトウェア・パッケージの第1のバージョンの一般リリース日より前である場合には、生成される互換性結果は前方互換性結果に対応しうる。
【0139】
ある実施形態では、生成される互換性チェック結果は「はい」または「いいえ」のいずれかでありうる。生成された互換性チェックが「はい」の場合、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンと互換性があると判断されうる。生成された互換性チェックが「いいえ」の場合、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンと互換性がないと判断されうる。
【0140】
ある実施形態では、システム102は、生成された互換性チェック結果に基づいて、第2のバージョンの好適さを判断してもよい。生成された互換性チェック結果が「はい」を示す場合、または第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンと互換性があることを示す場合、システム102は、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイス106を制御してもよい。それ以外の場合、ユーザー支援情報は、第1のバージョンを第2のバージョンに更新しない推奨と、第1のバージョンについての更新として第2のバージョンを推奨しない理由の集合とを含みうる。
【0141】
フローチャート700は、実行されうるチェックの集合のうちの互換性チェックに対応しうることに注意すべきである。互換性チェックは、制約条件集合のうちの互換性制約条件に関連していてもよい。
【0142】
制御は終了に進んでもよい。フローチャート700は、702、704、706、708などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0143】
図8は、本開示に記載された少なくとも1つの実施形態による、
図7の互換性チェック結果を生成するための第1のパターン検索動作を実行するための例示的な方法のフローチャートを示している。
図8は、
図1、
図2、
図3、
図4、
図5、
図6、および
図7の要素との関連で説明される。
図8を参照するに、フローチャート800が示されている。フローチャート800に示されている方法は、802で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0144】
802では、システム102は、抽出されたデータの集合(たとえば、
図7の704で抽出される)に対して動作の集合の第1のパターン検索動作を実行することができる。具体的には、システム102は、互換性に関連しうる一つまたは複数のタグを検出するために、第2のファイル(すなわち、抽出されたデータの集合に存在する変更ログ)の内容に対して第1のパターン検索動作を実行するように構成されてもよい。ある実施形態では、第1のパターン検索動作は、互換性に関連付けられた一つまたは複数のタグを検出するために一つまたは複数の正規表現(すなわち、regex)を使用できる文字列検索動作であってもよい。限定ではなく例として、そのようなタグは、「破壊する」(breaking)、「破壊」(break)、「互換性がない」「互換でない」(incompatible)、「破壊的変更」(breaking change)などの単語を含みうる。
【0145】
804では、一つまたは複数のタグが第2のファイルの内容に存在するかどうかが判定されうる。第2のファイルの内容において一つまたは複数のタグが検出された場合は、制御は806に移行されうる。それ以外の場合は、制御を810に移行されうる。
【0146】
806では、一つまたは複数の文を抽出されてもよい。ある実施形態では、システム102は、検出された一つまたは複数のタグに関連付けられた一つまたは複数の文を抽出しうる。そのような文は、検出された一つまたは複数のタグを含みうる。
【0147】
808では、システム102は、抽出された一つまたは複数の文で言及されうるAPI名または関数名の第1の集合を決定してもよい。具体的には、API名または関数名の第1の集合は、抽出された一つまたは複数の文において、検出された一つまたは複数のタグとともに言及される可能性がある。
【0148】
810では、システム102は、第2のファイルの内容から、一つまたは複数のキーワードに関連付けられた一つまたは複数の文を抽出することができる。そのようなキーワードは、一つまたは複数のタグと意味的に類似していてもよい。限定ではなく例として、一つまたは複数のキーワードは、「互換性がある」「互換である」(compatible)、「破壊する」(breaking)、「破壊」(break)、「互換性がない」「互換でない」(incompatible)、「破壊的変更」(breaking change)などでありうる。システム102は、そのようなキーワードを第2のファイルの内容において検出するために、パターン検索動作を実行してもよい。検出された一つまたは複数の文は、検出された一つまたは複数のキーワードを含みうる。
【0149】
812では、システム102は、抽出された一つまたは複数の文で言及されているAPI名または関数名の第2の集合を決定してもよい。一つまたは複数の文のそれぞれは、前記一つまたは複数のキーワードと、API名の第2の集合の少なくとも一つのAPI名とを含みうる。
【0150】
814では、互換性チェック結果が生成されてもよい。互換性チェック結果を生成するために、システム102は、API名または関数名の決定された第1の集合、および/またはAPI名または関数名の決定された第2の集合が、ソフトウェアのソースコードにおいて使用されている前記一つまたは複数の第1のAPIまたは第1の関数の名前を含むかどうかを判定してもよい。互換性結果は、API名または関数名の決定された第1の集合、および/またはAPI名または関数名の決定された第2の集合が、ソフトウェアのソースコードにおいて使用されている前記一つまたは複数の第1のAPIまたは第1の関数の名前を含むかどうかの判定に基づいて生成されてもよい。例として、決定されたタグとキーワード(たとえば互換性がない(incompatible)、破壊(break)など)が破れた互換性を示し、決定されたAPI名または関数名が、ソフトウェアのソースコードにおいて使用される一つまたは複数のAPIまたは関数の名前を含む場合、互換性結果は、第1のソフトウェア・パッケージの第2のバージョンに関して、一つまたは複数の第1のAPI(またはソフトウェアのソースコードにおいて使用されている第1の関数)の非互換性を示している可能性がある。決定されたタグとキーワード(たとえば、互換(compatible)、整合(consistent)など)が互換性がまだ保持されていることを示し、決定されたAPI名または関数名がソフトウェア・アプリケーションのソースコードで使用されている一つまたは複数のAPIまたは関数の名前を含む場合、互換性結果は、ソフトウェアのソースコードで使用されている一つまたは複数のAPIまたは関数が、第1のソフトウェア・パッケージの第2のバージョンのものと互換性があることを示している可能性がある。
【0151】
制御は終了に進んでもよい。フローチャート800は、802、804、806、808、810、812、814などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0152】
図9は、本開示に記載された少なくとも1つの実施形態による、
図7の互換性チェック結果を生成するための第2のパターン検索動作を実行するための例示的な方法のフローチャートを示している。
図9は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、および
図8の要素との関連で説明される。
図9を参照するに、フローチャート900が示されている。フローチャート900に示されている方法は、902で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0153】
システム102は、第1のソフトウェア・パッケージの第1のバージョンのソースコードに関して、第1のソフトウェア・パッケージの第2のバージョンのソースコードの一つまたは複数の変更に対応する、一つまたは複数のコード・チャンクを収集することができる。一つまたは複数のコード・チャンクは、データの集合(
図7の704で抽出される)から収集されうる。その後、システム102は、互換性チェック結果を生成するために、一つまたは複数のコード・チャンクに対して動作の集合の第2のパターン検索動作を実行してもよい。第2のパターン検索動作は、ここで説明するように、変更の集合を決定するために実行されうる。
【0154】
902では、システム102は、第1のソフトウェア・パッケージの第2のバージョンにおける関数の定義に関連する第1の変更を決定しうる。第1の変更は、第1のソフトウェア・パッケージの第1のバージョンに関して決定されうる。
【0155】
ソフトウェアのソースコードは、API呼び出しコードを含んでいてもよく、これは、実行されたとき、API呼び出しのパラメータに基づいてその関数を実行するサーバーにAPI呼び出しを送信する。ソフトウェアのソースコードが第1のソフトウェア・パッケージの第1のバージョンからの定義を使用している場合、定義における第1の変更が互換性を破壊する〔破る〕ことがある。ある実施形態では、関数が第2のバージョンにおいて削除または名前変更されている場合、第1の変更が判別されうる。別の実施形態では、関数の可視性(visibility)(アクセス修飾子(access modifier)など)が変わった場合、第1の変更が判別されうる。別の実施形態では、第1のソフトウェア・パッケージの第1のバージョンに関して、関数の高リスク修飾語が第2のバージョンにおいて変わった場合、第1の変更が判別されうる。そのような高リスク修飾語(high-risk modifier)は、関数に関連付けられる可能性のある特別なキーワード(最終的な(final)、デフォルトの(default)、静的な(static)、この(this)、超(super)など)に対応してもよい。別の実施形態では、関数に関連付けられたクラスの継承に変更がある場合に、第1の変更が判別されうる。
【0156】
904では、システム102は、関数の入力パラメータの集合における第2の変更を決定するように構成されてもよい。第2の変更は、第1のソフトウェア・パッケージの第1のバージョンに関して、第1のソフトウェア・パッケージの第2のバージョンにおいて判別されてもよい。ある実施形態では、第2の変更は、カウント、データ型、デフォルト値、名前、または関数の入力パラメータの集合の順序(order)における変更に基づいて判別されうる。ソフトウェアのソースコードが第1のソフトウェア・パッケージの第1のバージョンからの入力パラメータの集合を使用している場合、入力パラメータの集合における第2の変更は互換性を損なう可能性がある。
【0157】
906では、システム102は関数の一つまたは複数の出力パラメータにおける第3の変更を決定してもよい。第3の変更は、第1のソフトウェア・パッケージの第1のバージョンに関して、第1のソフトウェア・パッケージの第2のバージョンにおいて判別されてもよい。ある実施形態では、第3の変更は、カウント、データ型、デフォルト値、名前、または関数の出力パラメータの集合の順序における変更に基づいて決定されてもよい。ソフトウェアのソースコードが第1のソフトウェア・パッケージの第1のバージョンからの出力パラメータの集合を使用している場合、出力パラメータの集合における第3の変更は後方互換性を損なう可能性がある。
【0158】
908では、システム102は互換性チェック結果を生成しうる。互換性チェック結果は、第1の変更、第2の変更、および第3の変更に基づいて生成されうる。第1の変更、第2の変更、または第3の変更のいずれかが検出された場合、生成された互換性結果は、第1のソフトウェア・パッケージの第2のバージョンに関して、第1のバージョンの非互換性を示しうる(ソフトウェアのソースコードにおいて使用するための一つまたは複数のAPIまたは関数を提供する)。変更が検出されない場合、互換性結果は、第1のソフトウェア・パッケージの第2のバージョンが第1のソフトウェア・パッケージの第1のバージョンと互換性があることを示しうる。
【0159】
制御は終了に進んでもよい。フローチャート900は、902、904、906、908などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0160】
図10は、本開示に記載された少なくとも一つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するための相互運用性チェック結果を生成するための例示的な方法のフローチャートを示している。
図10は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、および
図9の要素との関連で説明される。
図10を参照するに、フローチャート1000が示されている。フローチャート1000に示されている方法は、1002で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0161】
1002では、ソフトウェア・パッケージのコレクションが、一つまたは複数のウェブベースのソース104から決定されうる。ある実施形態では、ソフトウェア・パッケージのコレクションは、第1のソフトウェア・パッケージと第2のソフトウェア・パッケージを含みうる。ソフトウェア・パッケージのコレクションの詳細は、
図1および
図4で与えられている。
【0162】
1004では、ソフトウェア・パッケージのコレクションの各ソフトウェア・パッケージに関連付けられたソフトウェア・パッケージ・データが、一つまたは複数のウェブベースのソース104から収集されうる。ソフトウェア・パッケージ・データは、たとえば、依存関係の集合と、依存関係の集合においてリストされうるソフトウェア・パッケージのための一つまたは複数のパッケージ・マネージャーを含みうる。依存関係の集合の各依存関係は、対応するソフトウェア・パッケージが一つまたは複数のタスクを達成するために利用できるソースコードに対応してもよい。ある実施形態では、依存関係の集合とソフトウェア・パッケージについての一つまたは複数のパッケージ・マネージャーは、「txt」、「xml」、「yml」などだがこれらに限られない一つまたは複数のファイルに含まれてもよい。
【0163】
1006では、依存関係ツリーが生成されてもよい。ある実施形態では、システム102は、第2のソフトウェア・パッケージに関連付けられた収集されたソフトウェア・パッケージ・データに基づいて依存関係ツリーを生成してもよい。ある実施形態では、システム102は、ソフトウェア・パッケージ(たとえば、第2のソフトウェア・パッケージ)と、ソフトウェア・パッケージ・データに含まれるソフトウェア・パッケージ(たとえば、第2のソフトウェア・パッケージ)の対応するバージョンに基づいて依存関係ツリーを生成してもよい。依存関係ツリーは有向グラフであってもよく、取得されたソフトウェア・パッケージとソフトウェア・パッケージの対応するバージョンとに向かう、第2のソフトウェア・パッケージの一つまたは複数の依存関係を表すことができる。
【0164】
1008では、ソフトウェア・パッケージ組み合わせの集合が識別されうる。ある実施形態では、システム102は、生成された依存関係ツリーに基づいてソフトウェア・パッケージ組み合わせの集合を識別することができる。そのような組み合わせには、単一プラットフォームのパッケージ組み合わせと、それぞれの単一プラットフォームのバージョン組み合わせを含みうる。単一プラットフォームのパッケージ組み合わせは、単一のパッケージ・マネージャーおよびプログラミング言語(例:Python)に関連付けられていてもよい諸ソフトウェア・パッケージを含みうる。例として、単一プラットフォームのソフトウェア・パッケージ組み合わせが、第1のソフトウェア・パッケージ(例:OSS A)と第2のソフトウェア・パッケージ(例:OSS B)の第1のソフトウェア・パッケージ組み合わせを含む場合、それぞれの単一プラットフォームのバージョン組み合わせは、第2のソフトウェア・パッケージの第2のバージョン(例:バージョン1.1)とともに動作しうる第1のソフトウェア・パッケージの第1のバージョン(例:バージョン1.0)を含みうる。上記の例を参照すると、ソフトウェア・パッケージ組み合わせの集合は、単一プラットフォームのソフトウェア・パッケージ組み合わせとしてOSS A+OSS Bを、単一プラットフォームのバージョンの組み合わせとしてOSS A 1.0+OSS B 1.1を含みうる。
【0165】
ある実施形態では、ソフトウェア・パッケージ組み合わせの集合は、クロスプラットフォームのソフトウェア・パッケージ組み合わせと、それぞれのクロスプラットフォームのバージョン組み合わせを含みうる。クロスプラットフォームのソフトウェア・パッケージ組み合わせは、複数のパッケージ・マネージャーに関連付けられたソフトウェア・パッケージを含みうる。例として、クロスプラットフォームのソフトウェア・パッケージ組み合わせは、第3のソフトウェア・パッケージ(例:OSS C)と第4のソフトウェア・パッケージ(例:OSS D)の第2のソフトウェア・パッケージ組み合わせを含んでいてもよく、それぞれのクロスプラットフォームのバージョン組み合わせは、第2のソフトウェア・パッケージの第2のバージョン(例:バージョン2.1)とともに動作しうる第1のソフトウェア・パッケージの第1のバージョン(例:バージョン1.9)を含みうる。上記の例を参照すると、ソフトウェア・パッケージ組み合わせの集合は、クロスプラットフォームのソフトウェア・パッケージ組み合わせとしてOSS C+OSS Dを、クロスプラットフォームのバージョンの組み合わせとしてOSS C 1.9+OSS D 2.1を含みうる。
【0166】
1010では、データセットが生成されてもよい。生成されるデータセットには、ソフトウェア・パッケージ組み合わせの集合に含まれるソフトウェア・パッケージ組み合わせと、それらのソフトウェア・パッケージ組み合わせに関連する情報を含む。ソフトウェア・パッケージ組み合わせに関連する情報は、各ソフトウェア・パッケージ組み合わせに関連付けられたパッケージ・マネージャーの名前、ソフトウェア・パッケージ組み合わせの集合における各ソフトウェア・パッケージ組み合わせの出現数、ソフトウェア・パッケージ組み合わせを使用するコード・リポジトリの名前、およびソフトウェア・パッケージ組み合わせに関連付けられたバージョン組み合わせの数のうちの一つまたは複数を含みうる。
【0167】
1012では、生成されたデータセットにおけるソフトウェア・パッケージ組み合わせの存在が判別されてもよい。ある実施形態では、システム102が、生成されたデータセットにおけるソフトウェア・パッケージ組み合わせの存在を判別してもよい。ソフトウェア・パッケージ組み合わせは、第1のソフトウェア・パッケージの第2のバージョンと第2のソフトウェア・パッケージの第1のバージョンを含みうる。たとえば、第1のソフトウェア・パッケージの名前が「A」、第1のソフトウェア・パッケージの第2のバージョンが「1.0」、第2のソフトウェア・パッケージの名前が「B」、第2のソフトウェア・パッケージの第1のバージョンが「2.0」の場合、システム102は、生成されたデータセットにおいて「A 1.0+B 2.0」パッケージ組み合わせの存在を判別するように構成されうる。
【0168】
1014では、相互運用性チェック結果が生成されてもよい。ある実施形態では、システム102は、生成されたデータセットにソフトウェア・パッケージ組み合わせが存在するかどうかに基づいて、相互運用性結果を生成することができる。第1のソフトウェア・パッケージ組み合わせが存在する場合、第1のソフトウェア・パッケージの第2のバージョンが第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であると判断されうる。そうでない場合、第1のソフトウェア・パッケージの第2のバージョンは、第2のソフトウェア・パッケージの第1のバージョンと相互運用可能であると見なされなくてもよい。
【0169】
フローチャート1000は、実行されうるチェックの集合のうちの相互運用性チェックに対応しうることに注意するべきである。互換性チェックは、制約条件の集合のうちの互換性制約条件に関連しうる。
【0170】
制御は終了に進んでもよい。フローチャート1000は、1002、1004、1006、1008、1010、1012、1014などの離散的な動作として示されている。しかしながら、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、さらに追加の動作に分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0171】
図11は、本開示に記載された少なくとも一つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するためのパフォーマンス・チェック結果を生成するための例示的な方法のフローチャートを示している。
図11は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9、および
図10の要素との関連で説明される。
図11を参照するに、フローチャート1100が示される。フローチャート1100に示されている方法は、1102で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0172】
1102では、パフォーマンス・メトリックの第1の集合が決定されうる。ある実施形態では、システム102は、一つまたは複数のウェブベースのソース104からパフォーマンス・メトリックの第1の集合を決定することができる。そのようなメトリックのそれぞれは、第1のソフトウェア・パッケージの第1のバージョンのパフォーマンスに関連していてもよい。
【0173】
ある実施形態では、パフォーマンス・メトリックの第1の集合は、第1のソフトウェア・パッケージの第1のバージョンで対処されうるセキュリティ問題またはバグの数に関連付けられた第1のパフォーマンス・メトリック、第1のソフトウェア・パッケージの第1のバージョンで導入されうる新しい機能または向上の数に関連付けられた第2のパフォーマンス・メトリック、および第1のソフトウェア・パッケージの第1のバージョンに関連する未解決の問題の数に関連付けられた第3のパフォーマンス・メトリックを含みうる。パフォーマンス・メトリックの第1の集合の決定に関する詳細は、たとえば
図12で与えられている。
【0174】
1104では、パフォーマンス・メトリックの第2の集合が決定されうる。ある実施形態では、システム102は、一つまたは複数のウェブベースのソース104からパフォーマンス・メトリックの第2の集合を決定するように構成されうる。パフォーマンス・メトリックの第2の集合のそれぞれは、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスに関連していてもよい。
【0175】
ある実施形態では、パフォーマンス・メトリックの第2の集合は、第1のソフトウェア・パッケージの第2のバージョンで対処されうるセキュリティ問題またはバグの数に関連付けられたパフォーマンス・メトリック、第1のソフトウェア・パッケージの第2のバージョンで導入されうる新機能または向上の数に関連付けられた第5のパフォーマンス・メトリック、および第1のソフトウェア・パッケージの第2のバージョンに関連付けられた未解決の問題の数に関連付けられた第6のパフォーマンス・メトリックを含みうる。パフォーマンス・メトリックの第1の集合の決定に関する詳細は、たとえば
図12で与えられている。
【0176】
1106では、第1のパフォーマンス指数が計算されうる。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第1のバージョンに関連付けられた第1のパフォーマンス指数を計算するように構成されうる。第1のパフォーマンス指数は、パフォーマンス・メトリックの決定された第1の集合に基づいて計算されてもよい。具体的には、第1のパフォーマンス指数を計算するために、パフォーマンス・メトリックの第1の集合のそれぞれに重みが割り当てられてもよい。たとえば、第1のパフォーマンス指数は、次のように与えられる式(1)に基づいて計算されてもよい:
PI1=W1A1+W2B1+W3C1 (1)
ここで、
PI1は、第1のパフォーマンス指数に対応し、
A1は、パフォーマンス・メトリックの第1の集合のうちの第1のパフォーマンス・メトリックに対応し、
B1は、パフォーマンス・メトリックの第1の集合のうちの第2のパフォーマンス・メトリックに対応し、
C1は、パフォーマンス・メトリックの第1の集合のうちの第3のパフォーマンス・メトリックに対応し、
W1、W2、W3は、それぞれA1、B1、C1に割り当てられた重みに対応し、
W1+W2+W3=1
である。
【0177】
1108では、第2のパフォーマンス指数が計算されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンに関連付けられた第2のパフォーマンス指数を計算するように構成されうる。第2のパフォーマンス指数は、パフォーマンス指数の決定された第2の集合に基づいて計算されうる。具体的には、第2のパフォーマンス指数を計算するために、パフォーマンス指数の第2の集合のそれぞれに重みが割り当てられてもよい。たとえば、第2のパフォーマンス指数は、次のように与えられる式(2)に基づいて計算されてもよい:
PI2=W1A2+W2B2+W3C2 (2)
ここで、
PI2は、第2のパフォーマンス指数に対応し、
A2は、第4のパフォーマンス・メトリックに対応し、
B2は、第5のパフォーマンス・メトリックに対応し、
C3は、第6のパフォーマンス・メトリックに対応し、
W1、W2、W3は、それぞれA2、B2、C2に割り当てられた重みに対応し、
W1+W2+W3=1
である。
【0178】
1110では、第1のパフォーマンス指数が第2のパフォーマンス指数と比較されてもよい。第2のパフォーマンス指数が第1のパフォーマンス指数よりも大きい場合、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスは、第1のソフトウェア・パッケージの第1のバージョンのパフォーマンスよりも良好であると推論されうる。第2のパフォーマンス指数が第1のパフォーマンス指数よりも小さい場合、第1のソフトウェア・パッケージの第1のバージョンのパフォーマンスが、第1のソフトウェア・パッケージの第2のバージョンのパフォーマンスよりも良好であると推論されうる。
【0179】
1112では、パフォーマンス・チェック結果が生成されうる。ある実施形態では、システム102は、第1のパフォーマンス指数と第2のパフォーマンス指数の比較に基づいてパフォーマンス・チェック結果を生成してもよい。パフォーマンス・チェック結果は、第2のバージョンのパフォーマンスが第1のソフトウェア・パッケージの第1バージョンよりも良好であるかどうかを示しうる。システム102は、生成されたパフォーマンス・チェック結果に基づいて、第1のバージョンのための更新としての、第2のバージョンの好適さを判断しうる。
【0180】
なお、フローチャート1100は、実行可能されうるチェックの集合のうちのパフォーマンス・チェックに対応してもよい。パフォーマンス・チェックは、制約条件の集合のうちの互換性制約条件に関連していてもよい。
【0181】
制御は終了に進んでもよい。フローチャート1100は、1102、1104、1106、1108、1110、1112などの離散的な動作として示されているが、ある種の実施形態では、開示された実施形態の本質を損なうことなく、特定の実装に依存して、そのような離散的な動作はさらに追加の動作に分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0182】
図12は、本開示に記載された少なくとも一つの実施形態による、パフォーマンス・チェック結果を生成するためのパフォーマンス・メトリックを決定するための例示的な方法のフローチャートを示す。
図12は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9、
図10、および
図11の要素との関連で説明される。
図12を参照するに、フローチャート1200が示されている。フローチャート1200に示されている方法は、1202で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0183】
1202では、一つまたは複数のウェブベースのソース104への接続が確立されてもよい。ある実施形態では、システム102が、一つまたは複数のウェブベースのソース104への接続を確立しうる。そのようなソースは、一つまたは複数のウェブベースのソフトウェア・ホスティング・ソース(例:GitHub(登録商標))、一つまたは複数のバージョン・コントロール・システム、一つまたは複数のウェブベースのソフトウェア・メタデータ・ストレージ・サービス、または一つまたは複数のウェブサイトを含みうる。システム102は、通信ネットワーク108を介してシステム102と一つまたは複数のウェブベースのソース104との間の接続を確立することができる。一つまたは複数のウェブベースのソース104に関する詳細は、たとえば
図1で与えられている。
【0184】
1204では、一つまたは複数のウェブベースのソース104からバージョン情報が収集されてもよい。ある実施形態では、システム102は、第1のソフトウェア・パッケージの各バージョンに関連付けられたバージョン情報を収集することができる。たとえば、バージョン情報は、第1のソフトウェア・パッケージの第1のバージョンおよび第2のバージョンについて収集されてもよい。バージョン情報は、バージョン・タグと、対応するバージョン日付を含んでいてもよい。バージョン・タグは対応するバージョンの識別子に対応してもよく、バージョン・データは対応するバージョンの一般リリース日に対応してもよい。たとえば、第1のソフトウェア・パッケージが「A」であり、それには「01/01/2021」および「01/01/2022」にリリースされた「v1」および「v2」などの2つのバージョンがありうる場合、バージョン・タグは「v1」および「v2」であってもよく、バージョン日付はそれぞれ「01/01/2021」および「01/01/2022」であってもよい。
【0185】
1206では、一つまたは複数のウェブベースのソース104からデータの第1の集合が収集されてもよい。データの第1の集合は、第1のメッセージの集合、第1のメッセージ・ラベルの集合、および第1のメッセージ・マージ日の集合を含みうる。第1のメッセージ・ラベルの集合と第1のメッセージ・マージ日の集合は、第1のメッセージの集合に関連付けられていてもよい。
【0186】
ある実施形態では、データの第1の集合は、第1のソフトウェア・パッケージの各バージョンに関連付けられていてもよい。具体的には、第1のメッセージの集合は、第1のソフトウェア・パッケージのあるバージョンのソースコードにおいて導入された一つまたは複数の変更に関連していてもよい。たとえば、GitHub(登録商標)では、第1のメッセージ集合の各メッセージがプル・リクエスト・メッセージに対応していてもよい。
【0187】
第1のメッセージ・ラベルの集合は、第1のメッセージの集合に関連付けられていてもよい。第1のラベルの集合の各ラベルは、対応するメッセージに関する情報を提供しうる。たとえば、ラベルの集合は、「問題」、「バグ」、「機能」、「向上」などを含みうる。限定ではなく例として、「問題」や「バグ」などのラベルは予期しない問題または意図しない挙動を示してもよく、「機能」や「向上」などのラベルは対応するバージョンに関連付けられた新しい機能を示しうる。第1のメッセージ・マージ日(first message merged date)の集合は、第1のメッセージの集合が一つまたは複数のウェブベースのソース104上で作成/更新された日付に対応しうる。
【0188】
ある実施形態では、第1のラベルの集合は、第1のメッセージの対応する集合の作者によって提供されてもよい。場合によっては、作者は第1のメッセージのみを書いてもよく、対応する第1のメッセージに関連付けられるべき第1のラベルを追加しない場合がある。そのような場合、システム102は第1のメッセージに機械学習(ML)モデルを適用して、第1のラベルを第1のメッセージに関連付けることができる。MLモデルの詳細は、たとえば
図13で与えられている。
【0189】
1208では、第1のメッセージの集合の各メッセージは対応するバージョンに割り当てられてもよい。ある実施形態では、システム102は、第1のメッセージ・マージ日の集合とバージョン情報とに基づいて、第1のメッセージの集合の各メッセージを第1のソフトウェア・パッケージの対応するバージョンに割り当てることができる。具体的には、システム102は、第1の日付をバージョン日付と比較して、第1のメッセージ集合の各メッセージを、第1のソフトウェア・パッケージの対応するバージョンに割り当てることができる。
【0190】
1210では、第1のメッセージ集合のそれぞれがクラスタリングされてもよい。ある実施形態では、システム102は、第1のメッセージ・ラベルの集合の対応するメッセージ・ラベルに基づいて、第1のメッセージの集合のそれぞれをクラスターの集合の少なくとも一つのクラスターにクラスタリングすることができる。たとえば、第1のメッセージが「X feature is introduced」〔X機能が導入される〕であり、対応するメッセージ・ラベルが「feature」〔機能〕である場合、第1のメッセージは「feature」メッセージ・ラベルに対応するクラスターに含められてもよい。クラスターの数は、第1のメッセージ・ラベルの集合におけるラベルの数と同じであってもよい。
【0191】
ある実施形態では、システム102は、対応する第1のメッセージに関連付けられたラベルの集合とバージョンとに基づいて、第1のメッセージの集合をクラスタリングしてもよい。そのような実施形態では、システム102は、ラベルの集合の各ラベルについてクラスターを作成してもよい。たとえば、第1のソフトウェア・パッケージが2つのバージョンをもち、第1のメッセージ・ラベルの集合が2である場合、4つのクラスター(第1のバージョンについて2つ、第2のバージョンについて2つ)が作成されてもよい。
【0192】
1212では、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックが決定されうる。ある実施形態では、システム102は、クラスタリングに基づいて、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックを決定できる。パフォーマンス・メトリックの第1の集合の一つまたは複数のパフォーマンス・メトリックは、第1のソフトウェア・パッケージの第1のバージョンにおいて対処されうるセキュリティ問題またはバグの数に関連付けられた第1のパフォーマンス・メトリックと、第1のソフトウェア・パッケージの第1のバージョンで導入されうる新機能または向上の数に関連付けられた第2のパフォーマンス・メトリックとを含んでいてもよい。
【0193】
パフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックは、第1のソフトウェア・パッケージの第2のバージョンにおいて対処されうるセキュリティ問題またはバグの数に関連付けられた第4のパフォーマンス・メトリックと、第1のソフトウェア・パッケージの第2のバージョンで導入されうる新機能または向上の数に関連付けられた第5のパフォーマンス・メトリックとを含みうる。ある実施形態では、システム102は、各クラスターに含まれる第1のメッセージの数をカウントして、一つまたは複数のパフォーマンス・メトリックを決定してもよい。
【0194】
1214では、一つまたは複数のウェブベースのソース104からデータの第2の集合が収集されてもよい。データの第2の集合は、第2のメッセージの集合、第2のメッセージ・ラベルの集合、および第2のメッセージ作成日の集合を含みうる。第2のメッセージ・ラベルの集合と第2のメッセージ・マージ日の集合は、第2のメッセージの集合に関連付けられてもよい。
【0195】
ある実施形態では、データの第2の集合は、第1のソフトウェア・パッケージの各バージョンに関連付けられていてもよい。具体的には、第2のメッセージの集合は、第1のソフトウェア・パッケージの対応するバージョンのソースコードに存在する可能性のある一つまたは複数の問題に関連していてもよい。たとえば、GitHub(登録商標)では、第1のメッセージの集合の各メッセージが、ある問題に対応していてもよい。
【0196】
1216では、バージョン・タグが第2のメッセージの集合のそれぞれに関連付けられているかどうかが判定されてもよい。ある実施形態では、バージョン・タグは、第2のメッセージの集合に関連付けられた第2のメッセージ・ラベルの集合に含まれてもよい。バージョン・タグが第2のメッセージに割り当てられている場合、制御は1218に移行されてもよい。それ以外の場合、制御は1220に移行されてもよい。
【0197】
1218では、システム102は、対応する第2のメッセージに関連付けられた事前に割り当てられたバージョン・タグに基づいて、第2のメッセージを対応するバージョンに割り当てることができる。たとえば、第2のメッセージ・ラベル(第2のメッセージに関連付けられている)に含まれている事前に割り当てられたバージョン・タグが、第1のソフトウェア・パッケージのバージョンが「1.0」であることを示している場合、システム102は第2のメッセージをバージョン「1.0」に割り当てることができる。
【0198】
1220では、システム102は、対応する第2のメッセージに関連付けられている第2のメッセージ作成日に基づいて、第2のメッセージを対応するバージョンに割り当ててもよい。たとえば、第2のメッセージ・ラベル(第2のメッセージに関連付けられている)に含まれているバージョン・タグが、第2のメッセージ作成日が「01/02/2021」であり、バージョン「v1」に関連付けられているバージョン・タグ・データが「01/01/2021」であり、バージョン「v2」に関連付けられているバージョン・タグ・データが「01/01/2022」であると示している場合、システム102は第2のメッセージをバージョン「1.0」に割り当てることができる。この割り当ては、バージョン「v2」のリリース日が第2のメッセージ作成日より後であるため、行われうる。
【0199】
1222では、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックが決定されうる。ある実施形態では、システム102は、第2のメッセージの、対応するバージョンへの割り当てに基づいて、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックを決定できる。
【0200】
パフォーマンス・メトリックの第1の集合の一つまたは複数のパフォーマンス・メトリックは、第1のソフトウェア・パッケージの第1のバージョンに関連する未解決の問題の数に関連付けられた第3のパフォーマンス・メトリックを含んでいてもよい。パフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックは、第1のソフトウェア・パッケージの第2のバージョンに関連する未解決の問題の数に関連付けられた第6のパフォーマンス・メトリックを含んでいてもよい。ある実施形態では、システム102は、対応するバージョンに割り当てられた第2のメッセージの数をカウントしてもよい。
【0201】
システム102は、パフォーマンス・メトリックの第1の集合に基づいて、第1のソフトウェア・パッケージの第1のバージョンに関連付けられた第1のパフォーマンス指数を計算することができる。同様に、システム102は、パフォーマンス・メトリックの第2の集合に基づいて、第1のソフトウェア・パッケージの第2のバージョンに関連付けられた第2のパフォーマンス指数を計算することができる。計算された第1のパフォーマンス指数と第2のパフォーマンス指数に基づいて、システム102はパフォーマンス・チェック結果を生成することができる。第1のパフォーマンス指数と第2のパフォーマンス指数の計算およびパフォーマンス結果の生成に関する詳細は、たとえば
図11で与えられている。
【0202】
制御は終了に進んでもよい。フローチャート1200は、1202、1204、1206、1208、1210、1212、1214、1216、1218、1220、1222などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0203】
図13は、本開示に記載された少なくとも一つの実施形態による、パフォーマンス・チェック結果を生成するための機械学習(ML)モデルのトレーニングのための例示的な方法のフローチャートを示している。
図13は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9、
図10、
図11、および
図12の要素との関連で説明される。
図13を参照するに、フローチャート1300が示されている。フローチャート1300に示されている方法は、1302で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0204】
1302では、ソフトウェア・パッケージのコレクションに関連付けられたメッセージの集合が取得されてもよい。ある実施形態では、システム102は、(一つまたは複数のウェブベースのソース104でホストされる)ソフトウェア・パッケージのコレクションの各パッケージに関連付けられたメッセージの集合を取得してもよい。システム102は、メッセージの集合のそれぞれに関連付けられたラベルの集合を決定することができる。GitHub(登録商標)を参照すると、メッセージの集合は、たとえば、ソフトウェア・パッケージのコレクションの各パッケージに関連付けられた問題、各パッケージに関連付けられたプル・リクエスト・メッセージ、および各パッケージに関連付けられたディスカッションフォーラムを含みうる。各ラベルは、対応するメッセージに関する情報を提供しうる。たとえば、ラベルの集合は「バグ」および「向上」を含んでいてもよい。限定ではなく例として、「バグ」というラベルは、予期しない問題や意図しない挙動を示してもよく、「向上」というラベルは、対応するメッセージに関連付けられた新しい機能を示しうる。
【0205】
1304では、トレーニング・データセットが生成されてもよい。ある実施形態では、システム102は、(ソフトウェア・パッケージのコレクションに関連付けられた)メッセージの集合と、メッセージの集合に関連付けられたラベルの集合のトレーニング・データセットを生成してもよい。トレーニング・データセットは、複数のトレーニング・サンプルを含みうる。各トレーニング・サンプルは、メッセージと対応するラベルのペアを含んでいてもよい。
【0206】
1306では、MLモデルがトレーニングされてもよい。ある実施形態では、システム102は、生成されたトレーニング・データセットに基づいてMLモデルをトレーニングするように構成されてもよい。MLモデルは、新しいメッセージのためのラベルを予測するようにトレーニングされうる。
【0207】
MLモデルは、計算ネットワークであってもよいし、あるいはノードとしての、複数の層に配置された人工ニューロンのシステムであってもよい。MLモデルの複数の層は、入力層、一つまたは複数の隠れ層、および出力層を含むことができる。複数の層の各層は、一つまたは複数のノード(または、たとえば円で表される人工ニューロン)を含んでいてもよい。入力層のすべてのノードの出力は、隠れ層(単数または複数)の少なくとも1つのノードに結合されうる。同様に、各隠れ層の入力は、MLモデルの他の層における少なくとも1つのノードの出力に結合されてもよい。各隠れ層の出力は、MLモデルの他の層における少なくとも1つのノードの入力に結合されてもよい。最終層におけるノード(単数または複数)は、結果を出力するために、少なくとも1つの隠れ層からの入力を受け取ることができる。層の数と各層におけるノードの数は、MLモデルのハイパーパラメータから決定されうる。そのようなハイパーパラメータは、トレーニング前、トレーニング中、またはトレーニング・データセットでMLモデルをトレーニングした後に設定されうる。
【0208】
MLモデルの各ノードは、MLモデルのトレーニング中に調整可能なパラメータの集合をもつ数学的関数(たとえば、シグモイド関数または整流線形ユニット)に対応しうる。パラメータの集合は、たとえば、重みパラメータ、正則化パラメータなどを含みうる。各ノードは、数学的関数を使用して、MLモデルの他の層(単数または複数)(たとえば前の層(単数または複数))のノードからの一つまたは複数の入力に基づいて、出力を計算することができる。MLモデルのすべてのノードまたは一部のノードは、同じ数学的関数または異なる数学的関数に対応しうる。
【0209】
MLモデルのトレーニングでは、所与の入力(トレーニング・データセットからの)についての最終層の出力が、MLモデルの損失関数に基づく正しい結果と一致するかどうかに基づいて、MLモデルの各ノードの一つまたは複数のパラメータが更新されうる。上記のプロセスは、損失関数の最小値が達成されうるまで、同じ入力または異なる入力について繰り返されてもよく、トレーニングエラーが最小にされうる。トレーニングのいくつかの方法が当技術分野で知られており、たとえば、勾配降下法、確率的勾配降下法、バッチ勾配降下法、勾配ブースト法、メタヒューリスティクスなどがある。
【0210】
MLモデルは、電子データを含んでいてもよく、電子データは、たとえば、システム102上で実行可能なアプリケーションのソフトウェア・コンポーネントとして実装されてもよい。MLモデルは、プロセッサ202などの処理デバイスによる実行のために、ライブラリ、外部スクリプト、または他の論理/命令に頼ることがある。MLモデルは、プロセッサ202などのコンピューティングデバイスが新しいメッセージについてのラベルを予測するための一つまたは複数の動作を実行できるようにするように構成されたコードおよびルーチンを含んでいてもよい。追加的または代替的に、MLモデルは、プロセッサ、マイクロプロセッサ(たとえば、一つまたは複数の動作を実行する、またはその実行を制御するための)、フィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)を含むハードウェアを使用して実装されてもよい。あるいはまた、いくつかの実施形態では、ニューラルネットワークは、ハードウェアとソフトウェアの組み合わせを使用して実装されうる。
【0211】
1308では、パフォーマンス・チェックが実行されうる。ある実施形態では、システム102は、第1のソフトウェア・パッケージの第2のバージョンに関連付けられた第1のメッセージの集合に対する、トレーニングされたMLモデルの適用に基づくチェックの集合のうちのパフォーマンス・チェックを実行することができる。パフォーマンス・チェックは、ソフトウェア・パッケージ(例:OSSパッケージ)の第1のバージョンについての好適な更新としての、第2のバージョンの好適さを判断するために実行されてもよい。ある実施形態では、パフォーマンス・チェックの実行は、
図11に記載されるようなパフォーマンス・チェック結果の生成に対応する。
【0212】
制御は終了に進んでもよい。フローチャート1300は1302、1304、1306、1308などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、あるいは削除されたりしてもよい。
【0213】
図14は、本開示に記載された少なくとも一つの実施形態による、電子デバイス上にユーザー支援情報を表示するための例示的な電子ユーザーインターフェース(UI)を示す。
図17は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9、
図10、
図11、
図12、および
図13の要素との関連で説明される。
図14を参照するに、電子UI 1400が示されており、これは
図1の電子UI 110の例示的実装でありうる。電子UI 1400は、生成された互換性結果に基づいて電子デバイス106に表示されてもよい。
【0214】
電子UI 1400には、第1のUI要素1402、第2のUI要素1404、第3のUI要素1406、第4のUI要素などのUI要素の集合が表示される。第1のUI要素1402は、たとえば「結果」とラベル付けされる。第1のUI要素1402は、第2のバージョンが第1のバージョンのための更新として好適であるかどうかを示しうるラベル・ウィンドウであってもよい。第2のバージョンが第1のバージョンのための更新のために好適である場合、第1のUI要素1402に「yes」〔はい〕が表示されてもよい。第2のバージョンが第1のバージョンのための更新のために好適でない場合、第1のUI要素1402に「no」〔いいえ〕が表示されてもよい。
【0215】
第2のバージョンが第1のバージョンのための更新のために好適である場合、第2のUI要素1404と第4のUI要素1408が電子UI 1400に表示されてもよい。第2のバージョンが第1のバージョンのための更新のために好適でない場合、第3のUI要素1406と第4のUI要素1408が電子UI 1400に表示されてもよい。
【0216】
第2のUI要素1404は、たとえば「ソースコードの変更」とラベル付けされる。第2のUI要素1404は、第1のソフトウェア・パッケージの第2のバージョンとソースコード互換性があるように、ソフトウェアのソースコードを更新する第1の推奨を表示しうるテキストボックスであってもよい。コードの変更が必要ない場合、システム102は、ソフトウェアのソースコードを更新しない第1の推奨を表示するように構成されてもよい。
【0217】
第3のUI要素1406は、たとえば「代替バージョン」とラベル付けされる。第3のUI要素1406は、第1のソフトウェア・パッケージの第2のバージョンにアップグレードするための第2の推奨を表示しうるテキストボックスであってもよい。
【0218】
第4のUI要素1408は、たとえば「理由」とラベル付けされる。第4のUI要素1408は、第1のバージョンのための更新として、第1のソフトウェア・パッケージの第2のバージョンを推奨するまたは推奨しない理由の集合を表示するテキストボックスまたはラベルであってもよい。ある実施形態では、システム102は、自然言語形式(すなわち、人間が理解できる)で理由の集合を生成するように構成されてもよい。
【0219】
図15は、本開示に記載された少なくとも一つの実施形態による、ソフトウェア・パッケージのためのバージョン更新を推奨するための例示的な方法のフローチャートを示している。
図15は、
図1、
図2、
図3、
図4、
図5、
図6、
図7、
図8、
図9、
図10、
図11、
図12、
図13、および
図14の要素との関連で説明される。
図15を参照するに、フローチャート1500が示されている。フローチャート1500に示されている方法は、1502で始まってもよく、
図1または
図2のシステム102など、任意の適切なシステム、装置、またはデバイスによって実行されうる。
【0220】
1502では、入力が受領されてもよい。受領された入力は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示してもよい。入力の受領に関する詳細は、
図1および
図3で与えられている。
【0221】
1504では、第1のソフトウェア・パッケージの第2のバージョンが決定されうる。第2のバージョンは、第1のソフトウェア・パッケージの第1のバージョンの一般リリース日の前または後の一般リリース日をもつ。第1のソフトウェア・パッケージの第2のバージョンの決定に関する詳細は、
図4および
図5で与えられている。
【0222】
1506では、制約条件の集合から一つまたは複数の制約条件が選択されうる。制約条件の集合は、セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含みうる。一つまたは複数の制約条件の選択に関する詳細は、たとえば
図1および
図3で与えられている。
【0223】
1508では、チェックの集合が実行されうる。チェックの集合は、第1のバージョンのための更新としての第2のバージョンの好適さを判断するために、選択された一つまたは複数の制約条件に基づいて実行されてもよい。第2のバージョンについてのチェックの集合は、優先度の順に実行されてもよく、セキュリティ・チェック、互換性チェック、相互運用性チェック、パフォーマンス・チェックを含みうる。優先度の順は、セキュリティ・チェックに関連する第1優先度、互換性チェックに関連する第2の優先度、相互運用性チェックに関連する第3の優先度、パフォーマンス・チェックに関連する第4の優先度を示してもよい。チェックの集合の実行に関する詳細は、たとえば、
図6、
図7、
図8、
図9、
図10、
図11、
図12で与えられている。
【0224】
1510では、電子デバイス106が制御されてもよい。電子デバイス106は、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするように制御されうる。ユーザー支援情報は、前記好適さに基づいてレンダリングされうる。ユーザー支援情報の表示についての詳細は、
図14から与えられる。
【0225】
制御は終了に進んでもよい。フローチャート1500は、1502、1504、1506、1508、1510などの離散的な動作として示されているが、ある種の実施形態では、そのような離散的な動作は、開示された実施形態の本質を損なうことなく、特定の実装に依存して、追加の動作にさらに分割されたり、より少ない動作に組み合わされたり、または削除されたりしてもよい。
【0226】
本開示のさまざまな実施形態は、実行されることに応答してシステム(システム102など)に動作を実行させる命令を記憶するように構成された、一つまたは複数の非一時的なコンピュータ可読記憶媒体を提供しうる。動作は、ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力の受領を含んでいてもよい。動作は、第1のソフトウェア・パッケージの第1のバージョンの一般リリース日の前または後の一般リリース日をもつ第1のソフトウェア・パッケージの第2のバージョンを決定することをさらに含んでいてもよい。動作は、セキュリティ制約条件、後方互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択することをさらに含んでいてもよい。動作は、選択された一つまたは複数の制約条件に基づいてチェックの集合を実行し、第1のバージョンのための更新としての第2のバージョンの好適さを判断することをさらに含みうる。動作は、第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイス(電子デバイス106など)を制御することをさらに含んでいてもよい。ここで、ユーザー支援情報は前記好適さに基づいてレンダリングされる。
【0227】
前述のように、本開示に記載されている実施形態は、以下でより詳細に論じるような、さまざまなコンピュータハードウェアまたはソフトウェアモジュールを含む特殊目的または汎用コンピュータ(たとえば、
図2のプロセッサ202)の使用を含みうる。さらに、前述のように、本開示に記載される実施形態は、コンピュータで実行可能な命令またはデータ構造を担持するまたは記憶するためのコンピュータ可読媒体(たとえば、
図2のメモリ204または永続データストレージ206)を使用して実装されてもよい。
【0228】
本開示で使用されるところでは、用語「モジュール」または「コンポーネント」は、コンピューティングシステムの汎用ハードウェア(たとえば、コンピュータで読み取り可能な媒体、処理装置、または他の何らかのハードウェア)に記憶および/または実行されうるモジュールまたはコンポーネントおよび/またはソフトウェアオブジェクトまたはソフトウェアルーチンのアクションを実行するように構成された特定のハードウェア実装を指す場合がある。いくつかの実施形態では、本開示で説明される異なるコンポーネント、モジュール、エンジン、およびサービスは、コンピューティングシステム上で(たとえば別個のスレッドとして)実行されるオブジェクトまたはプロセスとして実装される場合がある。本開示で説明されるシステムおよび方法のいくつかは、一般的に(汎用ハードウェアに記憶および/または実行される)ソフトウェアで実装されるものとして説明されているが、特定のハードウェア実装またはソフトウェアと特定のハードウェア実装の組み合わせも可能であり、考えられている。この説明では、「コンピューティングエンティティ」は、本開示で以前に定義された任意のコンピューティングシステム、またはコンピューティングシステム上で実行される任意のモジュールまたは小モジュールの組み合わせであってもよい。
【0229】
一般的な慣行に従って、図面に示されているさまざまな特徴は、同縮尺で描かれていないことがある。本開示に示されている図は、特定の装置(たとえば、デバイス、システムなど)または方法の実際の図であることは意図されておらず、単に、開示のさまざまな実施形態を記述するために用いられる理想化された表現である。よって、さまざまな特徴の寸法は、明確にするために任意に拡大または縮小されてもよい。さらに、一部の図面は、明確のために簡略化されていることがある。よって、図面は、所与の装置(たとえば、デバイス)のすべての構成要素を、または特定の方法のすべての動作を描いていないことがある。
【0230】
本開示、特に添付の請求項(たとえば、添付の請求項の本文)で使用されている用語は、一般に「オープンな」用語として意図されている(たとえば、「含む」という用語は「…を含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は「少なくとも…を有する」と解釈されるべきであり、「含んでいる」という用語は「…を含むが、それに限定されない」と解釈されるべきである)。
【0231】
さらに、導入されたクレーム記載の特定の数が意図されている場合、そのような意図はクレームにおいて明示的に記載され、そのような記載がない場合にはそのような意図は存在しない。たとえば、理解の一助として、以下の添付されたクレームは、クレーム記載を導入するための導入句「少なくとも1つの」および「一つまたは複数の」の使用を含むことがある。
【0232】
加えて、導入されたクレーム記載の特定の数が明示的に記載されていたとしても、当業者は、そのような記載は少なくとも記載された数を意味すると解釈されるべきであることを認識するであろう(たとえば、他の修飾語なしで「2つの記載」というだけの記載は、少なくとも2つの記載、または2つ以上の記載を意味する)。さらに、「A、B、Cなどのうち少なくとも1つ」または「A、B、Cなどのうちの一つまたは複数」に類似した慣用表現が使用されている場合には、一般的に、そのような構文は、Aのみ、Bのみ、Cのみ、AとBを一緒に、AとCを一緒に、BとCを一緒に、またはA、B、Cを一緒に含むことを意図している。
【0233】
さらに、2つ以上の代替用語を提示する選言的な単語または句は、明細書、クレームまたは図面のいずれの中であろうと、それらの用語のうちの一つ、それらの用語の一方または両方の用語を含む可能性を考えていると理解されるべきである。たとえば、「AまたはB」という句は、「A」または「B」または「AおよびB」の可能性を含むものとして理解されるべきである。
【0234】
しかしながら、そのような句の使用は、たとえ同じクレームが「一つまたは複数の」または「少なくとも1つの」の導入句および「a」または「an」のような不定冠詞(たとえば、「a」および/または「an」は、「少なくとも1つ」または「一つまたは複数」を意味すると解釈されるべきである)を含む場合であっても、不定冠詞「a」または「an」によるクレーム記載の導入が、そのような導入されたクレーム記載を含む特定のクレームを、そのような記載を1つだけ含む実施形態に限定することを含意すると解釈されるべきではない。同じことは、クレーム記載を導入するために使用される定冠詞の使用についてもいえる。
【0235】
さらに、「第1」、「第2」、「第3」などの用語の使用は、本稿では、必ずしも特定の順序または要素の数を意味するために使用されるわけではない。一般的に、「第1」、「第2」、「第3」などの用語は、一般的な識別子として異なる要素を区別するために使用される。「第1」、「第2」、「第3」などの用語が特定の順序を意味することを示すものがない場合、これらの用語は特定の順序を意味するものとして理解されるべきではない。さらに、「第1」、「第2」、「第3」などの用語が特定の数の要素を意味することを示すものがない場合、これらの用語は特定の数の要素を意味すると理解されるべきではない。たとえば、第1のウィジェットが第1のサイドをもつと記載され、第2のウィジェットが第2のサイドをもつと記載されることがありうる。第2のウィジェットに関して「第2のサイド」という用語を使用するのは、第2のウィジェットのそのようなサイドを第1のウィジェットの「第1のサイド」と区別するためであり、第2のウィジェットが2つのサイドをもつことを意味するためではない。
【0236】
本開示において記載されているすべての例および条件付きの言辞は、本発明および発明者が本技術を促進するために寄与される概念を理解する上で読者を支援するための教育的目的のために意図されており、そのように特定的に記載されている例および条件に限定されることなく解釈されるべきである。本開示の実施形態が詳細に説明されてきたが、本開示の精神および範囲から逸脱することなく、さまざまな変更、代替および改変を本開示に加えることができることを理解すべきである。
【0237】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを含む、
方法。
(付記2)
制約条件の前記集合をカテゴリーの集合に分類するオプションを表示するよう前記電子デバイスを制御する段階と;
前記電子デバイスを介してユーザー入力を受領する段階と;
受領されたユーザー入力に基づいて、表示されたオプションからオプションを選択する段階とをさらに含み、前記一つまたは複数の制約条件は選択されたオプションに基づいて選択される、
付記1に記載の方法。
(付記3)
前記一つまたは複数の制約条件は、前記セキュリティ制約条件、前記互換性制約条件、および前記相互運用性制約条件をハード制約条件として選択し、前記パフォーマンス制約条件をソフト制約条件として選択することを含む、付記1に記載の方法。
(付記4)
前記一つまたは複数の制約条件は、前記セキュリティ制約条件をハード制約条件として選択し、前記互換性制約条件、前記相互運用性制約条件、および前記パフォーマンス制約条件をソフト制約条件として選択することを含み、
前記ソフト制約条件のうち、前記互換性制約条件と前記相互運用性制約条件のそれぞれの重要性は前記パフォーマンス制約条件の重要性よりも高い、
付記1に記載の方法。
(付記5)
前記第2のバージョンについてのチェックの前記集合は、優先度の順に実行され、セキュリティ・チェック、互換性チェック、相互運用性チェック、およびパフォーマンス・チェックから構成され、
前記優先度の順は、前記セキュリティ・チェックに関連付けられた第1の優先度、前記互換性チェックに関連付けられた第2の優先度、前記相互運用性チェックに関連付けられた第3の優先度、および前記パフォーマンス・チェックに関連付けられた第4の優先度を示す、
付記1に記載の方法。
(付記6)
チェックの前記集合の実行は、セキュリティ・チェックを:
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける一つまたは複数のセキュリティ問題の存在を検出するよう一つまたは複数の脆弱性データベースに照会し;
前記照会に基づいて前記一つまたは複数の脆弱性データベースから応答を受信し;
受信された応答に基づいてセキュリティ・チェック結果を生成することによって実行することを含み、
前記第2のバージョンの前記好適さは、生成されたセキュリティ・チェック結果に基づいて決定される、
付記1に記載の方法。
(付記7)
チェックの前記集合の実行は、互換性チェックを:
前記入力に基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンに関する第1の情報を決定する段階と;
前記第1の情報に基づいて、前記一つまたは複数のウェブベースのソースからデータの集合を抽出する段階であって、前記データの集合は:
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおける一つまたは複数の変更、および
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける前記一つまたは複数の変更に関する第2の情報から構成される、段階と;
前記データの集合に対する一つまたは複数のパターン検索動作を含む動作の集合を実行する段階と;
動作の前記集合の実行に基づいて互換性チェック結果を生成する段階とによって実行することを含み、
前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さは、生成された互換性チェック結果に基づいて決定される、
付記1に記載の方法。
(付記8)
抽出された前記データの集合が:
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードを含む第1のファイル、
前記第1のソフトウェア・パッケージの前記第2のバージョンにおける前記一つまたは複数の変更に関する前記第2の情報を含む第2のファイル、
前記第1のソフトウェア・パッケージの説明を含む第3のファイル、および
前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおいて導入された前記一つまたは複数の変更に関連する第1のメッセージの集合
から構成される、付記7に記載の方法。
(付記9)
前記動作の集合を実行することがさらに:
前記データの集合における互換性に関連する一つまたは複数のタグを検出するよう前記データの集合に対する前記動作の集合の第1のパターン検索動作を実行する段階と;
前記一つまたは複数のタグに関連付けられた一つまたは複数の文を抽出する段階と;
前記一つまたは複数の文で言及されているAPI名または関数名の第1の集合を決定する段階と;
API名または関数名の前記第1の集合が、前記ソフトウェアのソースコードにおいて使用され、前記第1のソフトウェア・パッケージの前記第1のバージョンによって提供される一つまたは複数の第1のAPIまたは第1の関数の名前を含むかどうかを判定する段階とを含み、
前記互換性チェック結果はさらに決定に基づいて生成される、
付記7に記載の方法。
(付記10)
前記動作の集合を実行することがさらに:
前記抽出されたデータの集合から、前記第1のソフトウェア・パッケージの前記第1のバージョンのソースコードに対する、前記第1のソフトウェア・パッケージの前記第2のバージョンのソースコードにおける前記一つまたは複数の変更に対応する一つまたは複数のコード・チャンクを収集し;
前記一つまたは複数のコード・チャンクに対する前記動作の集合の第2のパターン検索動作を実行して、前記互換性チェック結果を生成することを含む、
付記7に記載の方法。
(付記11)
チェックの前記集合の実行は、相互運用性チェックを:
前記入力に基づいて、前記ソフトウェアのソースコード内で一つまたは複数の第2のAPIまたは関数を実装するために使用される、第2のソフトウェア・パッケージの第1のバージョンに関するパッケージ情報を決定する段階と;
前記パッケージ情報に基づいて相互運用性チェック結果を生成する段階であって、前記相互運用性チェック結果は、前記第1のソフトウェア・パッケージの前記第2のバージョンと前記第2のソフトウェア・パッケージの前記第1のバージョンとの間の相互運用性を示す、段階と;
生成された相互運用性チェック結果にさらに基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンのための更新としての、前記第2のバージョンの好適さを前記決定する段階とによって実行することを含む、
付記1に記載の方法。
(付記12)
一つまたは複数のウェブベースのソースからのソフトウェア・パッケージのコレクションを判別する段階であって、ソフトウェア・パッケージの前記コレクションは、前記第1のソフトウェア・パッケージおよび前記第2のソフトウェア・パッケージを含む、段階と;
ソフトウェア・パッケージの前記コレクションの各ソフトウェア・パッケージに関連付けられたソフトウェア・パッケージ・データを収集する段階であって、前記ソフトウェア・パッケージ・データは、依存関係の集合と、前記依存関係の集合においてリストされた各ソフトウェア・パッケージについての一つまたは複数のパッケージ・マネージャーとを含む、段階と;
収集されたソフトウェア・パッケージ・データに基づいて依存関係ツリーを生成する段階と;
前記依存関係ツリーに基づいて、ソフトウェア・パッケージの前記コレクションにおいて使用される、ソフトウェア・パッケージ組み合わせの集合を識別する段階と;
前記ソフトウェア・パッケージ組み合わせの集合に含まれるソフトウェア・パッケージ組み合わせと、それらのソフトウェア・パッケージ組み合わせに関連する情報とを含むデータセットを生成する段階とをさらに含む、
付記11に記載の方法。
(付記13)
前記データセットにおける前記第1のソフトウェア・パッケージの前記第2のバージョンと前記第2のソフトウェア・パッケージの前記第1のバージョンとの間の第1のソフトウェア・パッケージ組み合わせの存在を判別する段階と;
前記存在にさらに基づいて前記相互運用性チェック結果を生成する段階とをさらに含み、
生成された相互運用性チェック結果にさらに基づいて、前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さが決定される、
付記12に記載の方法。
(付記14)
一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの前記第1のバージョンに関連するパフォーマンス・メトリックの第1の集合を決定する段階と;
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの前記第2のバージョンに関連するパフォーマンス・メトリックの第2の集合を決定する段階と;
パフォーマンス・メトリックの前記第1の集合に基づいて、前記第1のソフトウェア・パッケージの前記第1のバージョンに関連する第1のパフォーマンス指数を計算する段階と;
パフォーマンス・メトリックの前記第2の集合に基づいて、前記第1のソフトウェア・パッケージの前記第2のバージョンに関連する第2のパフォーマンス指数を計算する段階と;
前記第1のパフォーマンス指数を前記第2のパフォーマンス指数と比較する段階と;
前記比較に基づいてパフォーマンス・チェック結果を生成する段階とをさらに含み、
前記第1のバージョンのための更新としての前記第2のバージョンの前記好適さは、生成されたパフォーマンス・チェック結果にさらに基づいて決定される、
付記1に記載の方法。
(付記15)
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージの各バージョンに関連するバージョン情報を収集する段階であって、
前記バージョン情報はバージョン・タグと対応するバージョン日付を含む、段階と;
前記一つまたは複数のウェブベースのソースから、第1のメッセージの集合、第1のメッセージ・ラベルの集合、第1のメッセージ・マージ日の集合を収集する段階であって、
前記第1のメッセージ・ラベルの集合および前記第1のメッセージ・マージ日の集合は、前記第1のメッセージの集合に関連付けられている、段階と;
前記第1のメッセージ・マージ日の集合と前記バージョン情報に基づいて、前記第1のメッセージの集合の各メッセージに、前記第1のソフトウェア・パッケージの対応するバージョンを割り当てる段階と;
前記第1のメッセージ・ラベルの集合の対応するメッセージ・ラベルに基づいて、前記第1のメッセージの集合の各第1のメッセージをクラスターの集合のうちの少なくとも1つのクラスターにクラスタリングする段階と;
前記クラスタリングに基づいて、パフォーマンス・メトリックの前記第1の集合およびパフォーマンス・メトリックの前記第2の集合の一つまたは複数のパフォーマンス・メトリックを決定する段階と;
前記一つまたは複数のパフォーマンス・メトリックに基づいて、前記第1のソフトウェア・パッケージに関連する前記第1のパフォーマンス指数と前記第2のパフォーマンス指数を計算する段階とをさらに含む、
付記14に記載の方法。
(付記16)
前記一つまたは複数のウェブベースのソースから、前記第1のソフトウェア・パッケージに関連付けられた第2のメッセージの集合、第2のメッセージ・ラベルの集合、および第2のメッセージ作成日の集合を収集する段階と;
前記第2のメッセージの集合の各メッセージがバージョン・タグを割り当てられているかどうかを決定する段階と;
事前に割り当てられたバージョン・タグおよび前記第2のメッセージ作成日の集合のうちの少なくとも1つに基づいて、収集された第2のメッセージの集合の各メッセージに前記バージョン・タグを割り当てる段階と;
前記割り当てに基づいて、パフォーマンス・メトリックの前記第1の集合およびパフォーマンス・メトリックの前記第2の集合の一つまたは複数のパフォーマンス・メトリックを決定する段階と;
前記一つまたは複数のパフォーマンス・メトリックに基づいて、前記第1のソフトウェア・パッケージに関連付けられた前記第1のパフォーマンス指数および前記第2のパフォーマンス指数を計算する段階とをさらに含む、
付記14に記載の方法。
(付記17)
ソフトウェア・パッケージのコレクションに関連付けられたメッセージの集合と、前記メッセージの集合に関連付けられたラベルの集合とのトレーニング・データセットを生成する段階であって、ソフトウェア・パッケージの前記コレクションは、前記第1のソフトウェア・パッケージを含む、段階と;
生成されたトレーニング・データセットで機械学習(ML)モデルをトレーニングする段階であって、前記MLモデルは、新しいメッセージについてのラベルを予測するようにトレーニングされる、段階と;
前記第1のソフトウェア・パッケージの前記第2のバージョンに関連付けられた第1のメッセージの集合に対する、トレーニングされたMLモデルの適用に基づいて、チェックの前記集合のうちのパフォーマンス・チェックを実行して、前記第2のバージョンの前記好適さを決定する段階とをさらに含む、
付記1に記載の方法。
(付記18)
前記ユーザー支援情報が:
前記第1のソフトウェア・パッケージの前記第2のバージョンとソースコード互換性があるように、前記ソフトウェアのソースコードを更新する第1の推奨、
前記第1のソフトウェア・パッケージの前記第2のバージョンにアップグレードする第2の推奨、および
前記第1のソフトウェア・パッケージの前記第2のバージョンを前記第1のバージョンに対する更新として推奨する、または推奨しない理由の集合
のうちの一つまたは複数を含む、付記1に記載の方法。
(付記19)
実行されることに応答してシステムに動作を実行させる命令を記憶するように構成された、非一時的なコンピュータ読み取り可能な記憶媒体であって、前記動作は:
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを含む、
記憶媒体。
(付記20)
プロセッサを有するシステムであって、前記プロセッサは:
ソフトウェアのソースコードにおける、第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領する段階と;
前記第1のソフトウェア・パッケージの前記第1のバージョンの一般リリース日の前または後の一般リリース日をもつ前記第1のソフトウェア・パッケージの第2のバージョンを判別する段階と;
セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択する段階と;
選択された一つまたは複数の制約条件に基づいてチェックの集合を実行して、前記第1のバージョンのための更新としての前記第2のバージョンの好適さを決定する段階と;
前記第1のバージョンを前記第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御する段階であって、前記ユーザー支援情報は、前記好適さに基づいてレンダリングされる、段階とを実行するように構成されている、
システム。
【符号の説明】
【0238】
102 システム
104 一つまたは複数のウェブベースのソース
106 電子デバイス
108 通信ネットワーク
110 電子ユーザー・インターフェース(UI)
202 プロセッサ
204 メモリ
206 永続データストレージ
208 I/Oデバイス
210 ネットワーク・インターフェース
300 電子ユーザー・インターフェース
306A 第1の制約条件カテゴリー
306B 第2の制約条件カテゴリー
308 提出
402 入力を受領
404 一つまたは複数のウェブベースのソースへの接続を確立
406 第1のソフトウェア・パッケージのバージョンを取得
408 選択された第1のソフトウェア・パッケージのバージョンを選択
410 第1のセキュリティ問題チェックを実行
412 セキュリティ問題検出?
414 第1の互換性問題チェックを実行
416 後方互換か?
418 相互運用性チェックを実行
420 相互運用可能か?
422 第2のソフトウェア・パッケージの第2のバージョンを決定
424 第2のセキュリティ問題チェックを実行
426 セキュリティ問題検出?
428 第2の互換性問題チェックを実行
430 後方互換か?
432 第1のパフォーマンス・チェック
434 第2のバージョンのほうがよいパフォーマンス?
436 すべてのバージョンが処理されたか?
438 第1のバージョンは安全か?
440 ソースコード変更なしの更新を推奨
442 更新を推奨しない
502 入力を受領
504 一つまたは複数のウェブベースのソースへの接続を確立
506 第1のソフトウェア・パッケージのバージョンを取得
508 選択された第1のソフトウェア・パッケージのバージョンを選択
510 第1のセキュリティ問題チェックを実行
512 セキュリティ問題検出?
514 第1の互換性問題チェックを実行
516 後方互換か?
518 相互運用性チェックを実行
520 相互運用可能か?
522 第2のソフトウェア・パッケージの第2のバージョンを決定
524 第2のセキュリティ問題チェックを実行
526 セキュリティ問題検出?
528 第2の互換性問題チェックを実行
530 後方互換か?
532 第1のパフォーマンス・チェック
534 第2のバージョンのほうがよいパフォーマンス?
536 すべてのバージョンが処理されたか?
538 第1のバージョンは安全か?
540 ソースコード変更なしの更新を推奨
544 現在バージョンは安全か?
546 ソースコード変更なしの更新を推奨
542 更新を推奨しない
602 第1のソフトウェア・パッケージの第1のバージョンに関連する情報を取得
604 一つまたは複数のセキュリティ問題を検出するために、取得された情報を解析
606 取得された情報に基づいて、一つまたは複数の脆弱性データベースに照会
608 照会に基づいて一つまたは複数の脆弱性データベースから応答を受領
610 セキュリティ・チェック結果を生成
702 入力に基づいて、第1のソフトウェア・パッケージの第1のバージョンに関する第1の情報を決定
704 第1の情報に基づいて、一つまたは複数のウェブベースのソースからデータの集合を抽出
706 データの集合に対して一つまたは複数のパターン検索動作を含む動作の集合を実行
708 動作の集合の実行に基づいて互換性チェック結果を生成
802 抽出されたデータの集合に対して動作の集合の第1のパターン検索動作を実行
804 一つまたは複数のタグが検出されたか?
806 一つまたは複数のタグに関連付けられた一つまたは複数の文を抽出
808 API名または関数名の第1の集合を決定
810 一つまたは複数のキーワードに関連付けられた一つまたは複数の文を抽出
812 API名または関数名の第2の集合を決定
814 互換性結果を生成
902 第1のソフトウェア・パッケージの第2のバージョンにおける一つまたは複数の関数のうちの第1の関数の定義に関連する第1の変更を判別
904 第1のソフトウェア・パッケージの第2のバージョンにおける第1の関数の入力パラメータの集合における第2の変更を判別
906 第1のソフトウェア・パッケージの第2のバージョンにおける第1の関数の一つまたは複数の出力パラメータにおける一つまたは複数の変更のうちの第3の変更を判別
908 互換性チェック結果を、第1の変更、第2の変更、および第3の変更に基づいて生成
1002 ソフトウェア・パッケージのコレクションを、一つまたは複数のウェブベースのソースから決定
1004 ソフトウェア・パッケージのコレクションの各ソフトウェア・パッケージに関連付けられたソフトウェア・パッケージ・データを収集
1006 収集されたソフトウェア・パッケージ・データに基づいて依存関係ツリーを生成
1008 依存関係ツリーに基づいて、ソフトウェア・パッケージのコレクションにおいて使用される、ソフトウェア・パッケージ組み合わせの集合を識別
1010 ソフトウェア・パッケージ組み合わせの集合に含まれるソフトウェア・パッケージ組み合わせと、ソフトウェア・パッケージ組み合わせに関連する情報とを含むデータセットを生成
1012 データセットにおける、第1のソフトウェア・パッケージの第2のバージョンと第2のソフトウェア・パッケージの第1のバージョンとの間の第1のソフトウェア・パッケージ組み合わせの存在を判定
1014 判定された存在に基づいて、相互運用性結果を生成
1102 一つまたは複数のウェブベースのソースから、第1のソフトウェア・パッケージの第1のバージョンに関連するパフォーマンス・メトリックの第1の集合を決定
1104 一つまたは複数のウェブベースのソースから、第1のソフトウェア・パッケージの第2のバージョンに関連するパフォーマンス・メトリックの第2の集合を決定
1106 パフォーマンス・メトリックの第1の集合に基づいて、第1のソフトウェア・パッケージの第1のバージョンに関連付けられた第1のパフォーマンス指数を計算
1108 パフォーマンス・メトリックの第2の集合に基づいて、第1のソフトウェア・パッケージの第2のバージョンに関連付けられた第2のパフォーマンス指数を計算
1110 第1のパフォーマンス指数を第2のパフォーマンス指数と比較
1112 比較に基づいて、パフォーマンス・チェック結果を生成
1202 一つまたは複数のウェブベースのソースに接続
1204 一つまたは複数のウェブベースのソースからバージョン情報を収集
1206 一つまたは複数のウェブベースのソースからデータの第1の集合を収集
1208 データの第1の集合の第1のメッセージの集合の各メッセージに、第1のソフトウェア・パッケージの対応するバージョンを割り当て
1210 第1のメッセージ集合のそれぞれをクラスターの集合の少なくとも一つのクラスターにクラスタリング
1212では、クラスタリングに基づいて、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックを決定
1214 一つまたは複数のウェブベースのソースからデータの第2の集合を収集
1216 バージョン・タグが関連付けられているか?
1218 バージョン・タグに基づいて、第2のメッセージを対応するバージョンに割り当てる
1220 第2のメッセージ作成日に基づいて、第2のメッセージを対応するバージョンに割り当てる
1222 クラスタリングに基づいて、パフォーマンス・メトリックの第1の集合とパフォーマンス・メトリックの第2の集合の一つまたは複数のパフォーマンス・メトリックを決定
1302 ソフトウェア・パッケージのコレクションに関連付けられたメッセージの集合を取得
1304 ソフトウェア・パッケージのコレクションに関連付けられたメッセージの集合と、メッセージの集合に関連付けられたラベルの集合のトレーニング・データセットを生成
1306 生成されたトレーニング・データセットに基づいて機械学習(ML)モデルをトレーニング
1308 パフォーマンス・チェックを実行
1400 電子ユーザー・インターフェース
1402 いいえ、第2のバージョンは推奨されません。第1のソフトウェア・パッケージの第2のバージョンにアップグレードしないでください。
1404 第2のバージョンは推奨されないので、ソフトウェアのソースコードは更新される必要はありません。ただし、代替バージョン(すなわち、第3のバージョン)が推奨されます。第3のバージョンに更新したい場合は、ソースコードを更新する必要があります。
1406 第1のソフトウェア・パッケージの第3のバージョンは更新として推奨される。
1408 第1のソフトウェア・パッケージの第2のバージョン。第2のバージョンにはセキュリティ問題が関連しているため。
1502 ソフトウェアのソースコード内の第1のソフトウェア・パッケージの第1のバージョンの使用状況を示す入力を受領
1504 第1のソフトウェア・パッケージの第1のバージョンの一般リリース日の前または後の一般リリース日をもつ、第1のソフトウェア・パッケージの第2のバージョンを決定
1506 セキュリティ制約条件、互換性制約条件、相互運用性制約条件、およびパフォーマンス制約条件を含む制約条件の集合から一つまたは複数の制約条件を選択
1508 第1のバージョンのための更新としての第2のバージョンの好適さを判断するために、選択された一つまたは複数の制約条件に基づいて一組のチェックを実行
1510 第1のバージョンを第2のバージョンに更新する推奨を含むユーザー支援情報をレンダリングするよう電子デバイスを制御。ユーザー支援情報は、好適さに基づいてレンダリングされる