【文献】
Ferdian Thung, et al.,Active Semi-Supervised Defect Categorization,2015 IEEE 23rd International Conference on Program Comprehension,2015年 5月19日,p.60-70
【文献】
Evgeniy Gabrilovich, et al.,Computing Semantic Relatedness using Wikipedia-based Explicit Semantic Analysis,IJCAI'07 Proceeding of the 20th International Joint Conference on Artificial Intelligence,2007年 1月12日,p.1606-1611
(58)【調査した分野】(Int.Cl.,DB名)
前記分析を実施する記ステップは、前記関連文書サブセットを特定するために、前記1つ又は複数の知識ベースから入手した前記文書コーパスに対し、1つ又は複数の文書特定技法を適用するステップであって、前記1つ又は複数の文書特定技法は、1つ又は複数のグラフ理論分析、1つ又は複数のキーワード特定技法、及び1つ又は複数のテキストクラスタ化技法のうち少なくとも1つを含む、ステップを含む、請求項1に記載のプロセッサ実施方法。
前記1つ又は複数の類似度値が動的に生成した前記閾値よりも高い場合、前記1つ又は複数のソフトウェア欠陥報告は、前記1つ又は複数のソフトウェア欠陥カテゴリに分類される、請求項1に記載のプロセッサ実施方法。
前記概念空間生成モジュール(206)は、前記関連文書サブセットを特定するために、前記1つ又は複数の知識ベースから入手した前記文書コーパスに対し1つ又は複数の文書特定技法を適用することによって、分析を実施し、前記1つ又は複数の文書特定技法は、1つ又は複数のグラフ理論分析、1つ又は複数のキーワード特定技法、1つ又は複数のテキストクラスタ化技法のうち少なくとも1つを含む、請求項5に記載のシステム。
前記1つ又は複数の類似度値が動的に生成した前記閾値よりも高い場合、前記ソフトウェア欠陥報告は、前記1つ又は複数のソフトウェア欠陥カテゴリに分類される、請求項5に記載のシステム。
1つ又は複数の命令を含む1つ又は複数の非一時的機械可読情報記憶媒体であって、1つ又は複数のハードウェア・プロセッサによって前記1つ又は複数の命令を実行すると、
前記1つ又は複数のハードウェア・プロセッサによって、入力データを入手するステップであって、前記入力データは、(a)1つ又は複数のソフトウェア欠陥報告、(b)1つ又は複数のソフトウェア欠陥カテゴリであって、前記1つ又は複数のソフトウェア欠陥カテゴリからの各ソフトウェア欠陥カテゴリが、クラス標示、及び前記クラス標示に関連するテキスト記述を含む、1つ又は複数のソフトウェア欠陥カテゴリ、並びに(c)文書コーパスを含む、ステップと、
前記1つ又は複数のハードウェア・プロセッサによって、前記入力データに基づき、前記1つ又は複数のソフトウェア欠陥報告の入力テキストを1つ又は複数の区分に区分化するステップであって、前記1つ又は複数の区分のそれぞれは、テキスト内容を含む、ステップと、
文書コーパスから関連文書サブセットを特定するために、1つ又は複数の知識ベースから入手した前記文書コーパスに対し分析を実施するステップと、
特定した前記関連文書サブセットに基づき、概念空間を生成するステップであって、特定した前記関連文書サブセットのそれぞれは、概念に対応し、前記概念空間は、前記文書コーパスから特定された前記関連文書サブセットに及ぶベクトル空間である、ステップと、
前記1つ又は複数のプロセッサによって、前記概念空間内に、前記1つ又は複数のソフトウェア欠陥報告の少なくとも1つに関係する前記1つ又は複数の区分のテキスト内容、及び前記1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述を投影し、前記1つ又は複数のソフトウェア欠陥報告及び前記1つ又は複数のソフトウェア欠陥カテゴリのそれぞれに対する概念空間表現を生成するステップと、
前記1つ又は複数のハードウェア・プロセッサによって、前記1つ又は複数のソフトウェア欠陥報告のそれぞれ及び前記1つ又は複数のソフトウェア欠陥カテゴリのそれぞれの前記概念空間表現の間の1つ又は複数の類似度を計算し、分類すべき前記1つ又は複数のソフトウェア欠陥報告に特有の1つ又は複数の類似度値の分布を入手するステップと、
前記1つ又は複数のハードウェア・プロセッサによって、前記1つ又は複数の類似度値の分布と、動的に生成した閾値との比較を実施するステップと、
前記1つ又は複数のハードウェア・プロセッサによって、前記比較に基づき、前記1つ又は複数のソフトウェア欠陥報告を前記1つ又は複数のソフトウェア欠陥カテゴリに分類するステップと、
を生じさせる、1つ又は複数の非一時的機械可読情報記憶媒体。
前記分析を実施するステップは、前記関連文書サブセットを特定するために、前記1つ又は複数の知識ベースから入手した前記文書コーパスに対し1つ又は複数の文書特定技法を適用するステップであって、前記1つ又は複数の文書特定技法は、1つ又は複数のグラフ理論分析、1つ又は複数のキーワード特定技法、1つ又は複数のテキストクラスタ化技法のうち少なくとも1つを含む、ステップを含む、請求項9に記載の1つ又は複数の非一時的機械可読情報記憶媒体。
前記1つ又は複数の類似度値が動的に生成した前記閾値よりも高い場合、前記1つ又は複数のソフトウェア欠陥報告は、前記1つ又は複数のソフトウェア欠陥カテゴリに分類される、請求項9に記載の1つ又は複数の非一時的機械可読情報記憶媒体。
【発明を実施するための形態】
【0015】
添付の図面を参照しながら例示的実施形態を説明する。図面において、参照番号の最も左の桁(複数可)は、その参照番号が最初に出現する図を特定する。好都合である場合は常に、同じ又は同様の部品を指すために、図面全体を通じて同じ参照番号を使用する。開示する原理の例及び特徴を本明細書で説明するが、開示する実施形態の趣旨及び範囲から逸脱することなく、修正形態、適合形態及び他の実装形態が可能である。以下の詳細な説明は、例示的なものにすぎず、真の範囲及び趣旨は、以下の特許請求の範囲によって示すことを意図する。
【0016】
本開示の一実施形態では、ソフトウェア欠陥報告を分類するシステム及び方法を開示する。上述のように、既存のシステム及び方法は、教師あり機械学習等の標準的なデータ駆動方式に依存してソフトウェア欠陥タイプを分類するものであり、この方式は、予測モデルの構築に著しい量の標示訓練データを必要とする。この標示データセットは、典型的には、ドメイン知識及び専門的知識を有する人間が作製する。これは明らかに、集中的な取組み及び費用を要求する活動である。更に、ソフトウェア欠陥テキストをカテゴリ化する既存の方式は、教師あり機械学習又は半教師あり機械学習方式の使用に基づく。この教師あり学習において、分類子モデルを訓練するには各クラスに著しい量の標示訓練データが必要である。標示訓練データは、多数の欠陥から構成され、これらの欠陥は、欠陥タイプ分類のために、適用可能な分類方式に従って人間が注釈を付け、検証している。この訓練データの生成には、著しい量の人力が必要となるため、工程が高額になり、更に、利用可能な専門的知識及び資源を非効率的な形で使用することになる。研究界は、この課題を認識しており、ソフトウェア欠陥分類のために能動学習及び半教師あり学習の使用を提案しており、これにより、必要な標示訓練データの量を低減し、次に、注釈を付けるのに要求される人力を最小化することを目指している。こうした方式は、基本的な教師つき学習方式を改善しているとはいえ、必要量の標示訓練データを生成してソフトウェア欠陥分類を実行するには、依然として相応の人力を必要とする。
【0017】
本開示の実施形態は、ソフトウェア欠陥報告を分類するシステム及び方法を提供し、それにより、標示訓練データの使用を回避し、標示記述に固有の「セマンティック」情報を使用してソフトウェア欠陥の自動分類を達成する。本開示の実施形態は、欠陥分類方式(ODC等)において欠陥標示のテキスト記述からのキーワードを使用して、ソフトウェア欠陥報告を分類するシステム及び方法を提供し、特徴として知識ベース項目を使用して標示を表す。実施形態は、各知識ベース項目が人間解釈可能概念に対応し、ベクトル空間は、概念空間としての知識ベース内で全ての知識ベース項目に及ぶことを仮定する。本開示の実施形態は、システム及び方法が、1つ又は複数の技法、例えば概念空間表現を適用し、この概念空間内に欠陥標示及び個別欠陥記述を投影することを更に可能にする。したがって、伝統的な単語の袋(bag−of−words)特徴を使用する従来又は伝統的なシステム及び方法とは異なり、本開示の実施形態は、この概念の袋(bag−of−concepts)特徴表現を使用して分類標示及び個別欠陥を表すものである。更に、本開示のシステムは、知識ベース概念空間における欠陥標示と欠陥記述との間の類似度を計算し、次に、類似度値の分布、様々な欠陥標示にわたる類似度の相対強度、及び欠陥標示の概念空間表現と欠陥報告記述の概念空間表現との間の共通概念の数に応じて、1つ又は複数の欠陥標示を割り当てる。この方式は、標示訓練データへの依存問題を回避するのに役立つ。
【0018】
次に、同様の参照文字が図面全体を通じて一貫して対応する特徴を示す図面、より詳細には
図1から
図4を参照する。好ましい実施形態を示しており、これらの実施形態を、以下の例示的システム及び/又は方法の背景において説明する。
【0019】
図1は、本開示の一実施形態による、ソフトウェア欠陥報告を分類するシステム100の例示的ブロック図を示す。システム100は、以下、分類システムと呼ぶこともある。一実施形態では、システム100は、1つ若しくは複数のプロセッサ104、通信インターフェース・デバイス(複数可)又は入出力(I/O)インターフェース(複数可)106、及び1つ若しくは複数のプロセッサ104に動作可能に結合された1つ若しくは複数のデータ保存デバイス又はメモリ102を含む。メモリ102は、1つ又は複数のモジュール108及びデータベース110を備える。ハードウェア・プロセッサである1つ又は複数のプロセッサ104は、1つ又は複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理ユニット、状態機械、論理回路、及び/又は動作指示に基づき信号を操作する任意のデバイスとして実装することができる。プロセッサ(複数可)は、他の機能の中でも特に、メモリ内に保存したコンピュータ可読命令を取り出し、実行するように構成されている。一実施形態では、システム100は、ラップトップ・コンピュータ、ノートブック、ハンドヘルド・デバイス、ワークステーション、汎用コンピュータ、サーバ、ネットワーク・クラウド等、様々なコンピューティング・システム内に実装することができる。
【0020】
I/Oインターフェース・デバイス(複数可)106は、様々なソフトウェア・インターフェース及びハードウェア・インターフェース、例えば、ウェブ・インターフェース、グラフィカル・ユーザ・インターフェース等を含むことができ、多種多様なネットワークN/W及びプロトコル・タイプ内で多数の通信を促進することができ、これらには、例えばLAN、ケーブル等の有線ネットワーク、及びWLAN、セルラー又は衛星等のワイヤレス・ネットワークを含む。一実施形態では、I/Oインターフェース・デバイス(複数可)は、いくつかのデバイスを互いに接続するか又は別のサーバに接続する1つ又は複数のポートを含むことができる。
【0021】
メモリ102は、当技術分野で公知の任意のコンピュータ可読媒体を含むことができ、これらには、例えば、スタティック・ランダム・アクセス・メモリ(SRAM)及びダイナミック・ランダム・アクセス・メモリ(DRAM)等の揮発性メモリ、並びに/又は読取り専用メモリ(ROM)、消去可能プログラマブルROM、フラッシュ・メモリ、ハードディスク、光ディスク及び磁気テープ等の不揮発性メモリを含む。
【0022】
図1に関する
図2は、本開示の一実施形態による、
図1のシステム100のメモリ102内に保存した様々なモジュール108のブロック図である。本開示の一実施形態では、メモリ102は、入力読取りモジュール202、ソフトウェア欠陥報告テキスト区分化モジュール204、概念空間生成モジュール206、投影モジュール208、概念空間類似度計算モジュール210、ソフトウェア欠陥分類モジュール212及びデータベース110を備える。本開示の一実施形態では、入力読取りモジュール202、ソフトウェア欠陥報告テキスト区分化モジュール204、概念空間生成モジュール206、投影モジュール208、概念空間類似度計算モジュール210、ソフトウェア欠陥分類モジュール212は、ソフトウェア・プログラムの論理的自己完結部分、自己完結型ハードウェア構成要素、及び/又はソフトウェア・プログラムの論理的自己完結部分をハードウェア構成要素のそれぞれに組み込みんだ自己完結型ハードウェア構成要素の少なくとも1つとして実装され、ソフトウェア・プログラムを実行すると、本明細書に記載の上記の方法を実施する。
【0023】
図1〜
図2に関する
図3は、本開示の一実施形態による、
図1のシステム100を使用してソフトウェア欠陥報告を分類する方法を示す例示的流れ図である。一実施形態では、システム100は、1つ又は複数のハードウェア・プロセッサ104に動作可能に結合された1つ又は複数のデータ保存デバイス又はメモリ102を備え、1つ又は複数のプロセッサ104によって方法ステップを実行する指示を保存するように構成されている。次に、
図1〜
図2に示すシステム100及びモジュール202〜212の構成要素並びに流れ図を参照しながら本開示の方法ステップを説明する。本開示の一実施形態では、ステップ302で、1つ又は複数のハードウェア・プロセッサ104によって入力読取りモジュール202を実行すると、入力読取りモジュール202は、入力データを入手し、入力データは、(a)分類すべき1つ又は複数のソフトウェア欠陥報告、(b)1つ又は複数のソフトウェア欠陥カテゴリであって、1つ又は複数のソフトウェア欠陥カテゴリからの各ソフトウェア欠陥カテゴリが、クラス標示、及びクラス標示に関連するテキスト記述を含む、1つ又は複数のソフトウェア欠陥カテゴリ、並びに(c)文書コーパスを含む。一実施形態では、文書コーパスは、1つ又は複数の知識ベース(例えばウィキペディア(登録商標)等)から入手することができる。本開示の一実施形態では、1つ又は複数のクラス標示は、1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述と共に、各カテゴリを簡単に説明するキーワード(複数可)又は句(複数可)を含む。一実施形態では、1つ又は複数のソフトウェア欠陥カテゴリは、直交欠陥分類(ODC)方式、IEEE1044欠陥分類方式等の既存の欠陥分類方式、又は特注の欠陥分類方式から入手することができる。本開示の一実施形態では、文書コーパスは、人間の認識に基づく概念に対応し得る文書を含む。一実施形態では、分類すべき1つ又は複数のソフトウェア欠陥報告、1つ又は複数のクラス標示は、1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述と共に、データベース110内に保存することができる。知識ベースから入手した文書コーパスも、データベース110内に保存する(含める)ことができる。
【0024】
本開示の一実施形態では、ステップ304で、1つ又は複数のハードウェア・プロセッサ104によってソフトウェア欠陥報告テキスト区分化モジュール204を実行すると、ソフトウェア欠陥報告テキスト区分化モジュール204は、1つ又は複数のソフトウェア欠陥報告の入力テキストを、ステップ302で受信した入力データに基づき1つ又は複数の区分に区分化し、1つ又は複数の区分のそれぞれは、対応するテキスト内容を含む。一実施形態では、ソフトウェア欠陥報告は、ソフトウェア欠陥の発生についての詳細を提供するテキスト記述を含む。多くのソフトウェア欠陥報告では、テキスト記述は、「ソフトウェアのバージョン」、「ソフトウェア検査者の名前」、「オペレーティング・システムのバージョン」、「ソフトウェア欠陥の概要」、「欠陥を再現するステップ」、「予期される結果」、「実際の結果」、「ソフトウェア欠陥の詳細な説明」等の詳細、及びソフトウェア欠陥についての更なる詳細を含む。ソフトウェア欠陥報告がこの形式で利用可能な詳細を伴って構成されている場合、ソフトウェア欠陥報告テキスト区分化モジュール204は、ソフトウェア欠陥の入力テキストを、上記で概説した異なるフィールド(例えば、「ソフトウェアのバージョン」、「ソフトウェア検査者の名前」、「オペレーティング・システムのバージョン」、「ソフトウェア欠陥の概要」、「再現ステップ」、「予期される結果」、「実際の結果」、「ソフトウェア欠陥の詳細な説明」等)に区分化する。本開示のソフトウェア欠陥報告分類の実施形態をより良好に理解するために、システム100は、分類という目的においてより重要であるとみなしたこれらの区分の一部のみ、例えば、「ソフトウェア欠陥の概要」、「再現ステップ」、「予期される結果」、「実際の結果」及び「ソフトウェア欠陥の詳細な説明」、からテキスト内容を入手することができる。そのような区分に明確な境界がない場合、1つ又は複数のソフトウェア欠陥報告のテキスト内容全体を単一の「ソフトウェア欠陥の詳細な説明」区分としてシステム100によって考慮することができる。
【0025】
本開示の一実施形態では、ステップ306で、1つ又は複数のハードウェア・プロセッサ104によって概念空間生成モジュール206を実行すると、概念空間生成モジュール206は、文書コーパスから関連文書サブセットを特定するために、1つ又は複数の知識ベースから入手した文書コーパスに対する分析を実施する。一実施形態では、分析を実施するステップは、関連文書サブセットを特定するために、1つ又は複数の知識ベースから入手した文書コーパスに対し1つ又は複数の文書特定技法を適用することを含む。本開示のソフトウェア欠陥報告分類に関する実施形態をより良好に理解するために、システム100又は概念空間生成モジュール206は、少なくとも1つの文書サブセットが、ソフトウェア開発ライフ・サイクル、ソフトウェア開発及び検査技術の少なくとも1つからの概念、並びにソフトウェア・アプリケーションを開発する分野に関連する概念及び情報に関連することを保証する。本開示の一実施形態では、システムは、ウィキペディア(登録商標)等の汎用百科事典知識ベースを利用することができる。というのは、こうした汎用百科事典知識ベースは、ソフトウェア開発ライフ・サイクル、ソフトウェア技術及び他の多くの分野についての情報項目を収容しているためである。汎用知識ベースは、ソフトウェア欠陥分類の目的とは無関係である可能性がある文書部分を大量に収容する傾向もあることに留意されたい。したがって、概念空間生成モジュール206は、ソフトウェア欠陥分類の目的で関連する可能性がより高い文書コーパスから文書サブセット(例えば、少なくとも1つの文書サブセット又は関連文書サブセット)を特定、選択し、残りの文書をこのコーパスから除外する。少なくとも1つの文書サブセットを特定、選択するために、概念空間生成モジュール206のシステム100は、1つ又は複数の知識ベース及び文書コーパスに対し1つ又は複数の文書特定技法を適用し、関連文書サブセットを特定する。例えば、1つ又は複数の文書特定技法は、1つ又は複数のグラフ理論分析、1つ又は複数のキーワード特定技法、1つ又は複数のテキストクラスタ化技法、それらの組合せの少なくとも1つを含み、これらは、(入力として供給された)知識ベース又は文書コーパスに対し適用される。1つ又は複数のグラフ理論分析、1つ又は複数のキーワード特定技法、1つ又は複数のテキストクラスタ化技法等は、メモリ102内に保存し、関連文書サブセットの特定を実行するために照会することができる。これらの特定及び/又は選択された文書サブセットは事前に処理され、1つ又は複数の知識ベースから入手した文書コーパスの少なくとも1つからの少なくとも1つの関連文書サブセットに対しnグラム(長さ「n」のトークン・シーケンス)をマッピングすることによって、概念空間が生成される。本開示の一実施形態では、nグラムの「n」は、1からユーザ指定の最大値(例えば最大値3)までの値を取ることができるユーザ指定のパラメータとすることができる。
【0026】
本開示の一実施形態では、ステップ308で、1つ又は複数のハードウェア・プロセッサ104によって概念空間生成モジュール206を実行すると、概念空間生成モジュール206は、ステップ306で特定した関連文書サブセットに基づき、概念空間を生成する。
【0027】
本開示の一実施形態では、ステップ310で、1つ又は複数のハードウェア・プロセッサ104によって投影モジュール208を実行すると、投影モジュール208は、概念空間(又は生成した概念空間)内に、1つ又は複数のソフトウェア欠陥報告の少なくとも1つに関係する1つ又は複数の区分のテキスト内容、及び1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述を投影し、概念空間表現を生成する。言い換えれば、1つ又は複数のソフトウェア欠陥報告の少なくとも1つに特有の1つ又は複数の区分に関係するテキスト内容、及び1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述は、1つ又は複数のソフトウェア欠陥報告及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれに関して(ステップ308で生成した)概念空間内に投影される。例えば、投影モジュール208は、ソフトウェア欠陥報告テキスト区分化モジュール204から入手した「ソフトウェア欠陥の概要」、「再現ステップ」、「予期される結果」、「実際の結果」及び「ソフトウェア欠陥の詳細な説明」等の1つ又は複数のソフトウェア欠陥報告に関係する1つ又は複数の区分のテキスト・データ(又はテキスト内容)、並びに1つ又は複数のソフトウェア欠陥カテゴリのテキスト記述を、概念空間生成モジュール206が生成した概念空間内に投影し、ソフトウェア欠陥報告(複数可)の概念空間表現及びソフトウェア欠陥カテゴリを生成する。
【0028】
本開示の一実施形態では、ステップ312で、1つ又は複数のハードウェア・プロセッサ104によって概念空間類似度計算モジュール210を実行すると、概念空間類似度計算モジュール210は、1つ又は複数のソフトウェア欠陥報告のそれぞれ及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれの概念空間表現の間の1つ又は複数の類似度を計算し、分類すべき1つ又は複数のソフトウェア欠陥報告に特有の1つ又は複数の類似度値の分布を入手する。
【0029】
本開示の一実施形態では、ステップ314で、1つ又は複数のハードウェア・プロセッサ104によって分類モジュール210を実行すると、分類モジュール210は、1つ又は複数の類似度値の分布と閾値との比較を実施し、ステップ316で、比較に基づき1つ又は複数のソフトウェア欠陥報告を1つ又は複数のソフトウェア欠陥カテゴリに分類する。本開示の一実施形態では、閾値は、事前に定義するか又は動的に生成する。動的に生成する場合の閾値は、1つ又は複数の類似度値の分布に基づく(又は基づくことができる)。更に、一例示的実施形態では、閾値は、1つ又は複数のソフトウェア欠陥報告及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれの概念空間表現において、共通概念の最小数についての制約条件を前提とすることができる。本開示の一実施形態では、分類モジュール212は、入力として計算した1つ又は複数の類似度値の分布を取り、次に、1つ又は複数類似度値のこの分布を選別して類似度閾値を特定する。本開示の一実施形態では、1つ又は複数の類似度値がこの閾値よりも高い(又はこの閾値と等しい)場合、1つ又は複数のソフトウェア欠陥報告は、1つ又は複数のソフトウェア欠陥カテゴリ(例えば、ソフトウェア欠陥カテゴリの第1のセット)に分類される。言い換えれば、1つ又は複数の類似度値がこの閾値よりも高い(又はこの閾値と等しい)場合、ソフトウェア欠陥報告からの1つ又は複数のソフトウェア欠陥は、ソフトウェア欠陥カテゴリの第1のセットに分類される。同様に、1つ又は複数の類似度値が閾値よりも小さい場合、クラス標示(又は1つ又は複数のソフトウェア欠陥カテゴリ)は、1つ又は複数のソフトウェア欠陥報告に割り当てられない。言い換えれば、対応する類似度値が閾値未満であるこれらのソフトウェア欠陥カテゴリは、ソフトウェア欠陥報告(複数可)に割り当てられない。一実施形態では、表示「クラス標示」、「欠陥タイプ」、「欠陥タイプ標示」及び「欠陥標示」は、以下、互換的に使用することができる。
【0030】
概念空間は、知識ベース(例えばウィキペディア(登録商標))内の項目(又は文書コーパス)によって補われる。概念空間表現内の概念c
jは、知識ベース項目(例えばウィキペディア(登録商標)の項目)に対応し、当該項目内でTF−IDFのような単語重み付けベクトルを使用して表される。逆索引を作成すると、1つ又は複数の単語を、その単語が出現する概念リストにマッピングするのに役立つ。逆索引における単語と概念との結合は、TF−IDFのような単語重み付け方式(例えばBM25重み付け方式)によって重み付けされる。この逆索引において、比較的低い重みの入力は、ノイズとして除外される。ソフトウェア欠陥報告Dを仮定すると、最初に、TF−IDFのような単語重み付け方式(例えばBM25重み付け方式)によって重み付けした単語の袋(例えば全ての単語が一次元である)方式/空間を使用する単語ベクトルとして表される。逆索引を使用すると、各単語に対する概念ベクトルw
d∈Dは、併合され、所与のソフトウェア欠陥報告Dを表す概念の重み付けベクトルを形成する。
【0031】
以下は、一例としての本開示の実施形態の例示的実装形態である。
【0032】
以下は、本開示の実施形態によって実施する技法(複数可)又は方法(複数可)を説明するための例示的表記法である:
D={w
d}ソフトウェア欠陥報告の入力テキスト・データ内の単語セット。
L={w
i}欠陥標示(又はソフトウェア欠陥カテゴリ)の入力テキスト・データ内の単語セット。
N=概念空間表現内で使用される知識ベース概念の数(結合強度の減少に基づく順序)。
【0033】
【数1】
が、欠陥報告Dの長さNの概念空間表現ベクトルを示すと仮定する、即ち、
【0035】
【数3】
の入力p
jは、Dの概念空間表現における対応する概念c
jの重みを示す。入力p
jは以下のように計算される:
【0036】
【数4】
式中、v
iは、DのTF−IDFのような重み付けベクトル表現における単語w
iのBM25の重みであり、BM25とは、TF−IDF単語重み付け方式の高度な変種である(参考文献:Stephen Robertson & Hugo Zaragoza(2009年)。「The Probabilistic Relevance Framework:BM25 and Beyond」。3(4)。Found.Trends Inf.Retr.:333〜389。DOI:10.1561/1500000019)、及び
k
ijは、逆索引内で単語w
iと知識ベース概念c
jとの結合強度を定量化したものである。
同様に、
【0037】
【数5】
が、欠陥タイプ標示Lの長さNの概念空間表現ベクトルを示すと仮定する、即ち、
【0039】
【数7】
の入力q
jは、Lの概念空間表現内の対応する概念c
jの重みを示す。入力q
jは、以下のように計算される:
【0040】
【数8】
式中、v
iは、LのTF−IDFのような重み付けベクトル表現における単語w
iのBM25の重みであり、
k
ijは、逆索引内で単語w
iと知識ベース概念c
jとの結合強度を定量化したものである。
【0041】
ソフトウェア欠陥報告Dは、知識ベース(例えばウィキペディア(登録商標))の項目のベクトル
【0042】
【数9】
を使用して表される。各欠陥タイプ標示(又はソフトウェア欠陥カテゴリ)も、対応する概念空間表現ベクトル
【0045】
【数12】
)の入力は、対応する概念の、入力ソフトウェア欠陥報告D(同様にL)に対する関連性を反映する。欠陥タイプ標示L及びソフトウェア欠陥報告Dのセマンティック関連度を計算するために、これらの概念空間表現ベクトルは、以下で例として提供するコサイン基準を使用して比較される:
【0047】
最後の分類のために、ソフトウェア欠陥報告は、類似度値の分布、様々な欠陥標示にわたる類似度の相対強度、及び欠陥標示の概念空間表現と欠陥報告記述の概念空間表現との間の共通概念の数に応じて、1つ又は複数の欠陥標示を割り当てる。
【0048】
本開示の実施形態、及び本開示の実施形態に関連するシステム及び方法は、以下に例として示す、ソフトウェア欠陥報告の1つ又は複数のカテゴリへの例示的分類を提供する。
【0049】
上述のように、ステップ302で、システム100は、ソフトウェア欠陥報告(複数可)、それぞれがクラス標示、及びクラス標示に関連するテキスト記述を含む1つ又は複数のソフトウェア欠陥カテゴリ、以下に示す1つ又は複数の知識ベースから入手した文書コーパスを含む入力を受信する。本開示の実施形態を簡潔にし、より良好に理解するために、3つの欠陥タイプから構成されるサンプル欠陥分類方式を、各欠陥タイプのテキスト記述と共に以下に提供する。
【0050】
制御/データ・フロー欠陥タイプ:この欠陥タイプは、アルゴリズム;変数割当て又は初期化によるエラー又は例外;条件文及びfor/whileループの確認;マルチスレッド・システム又はマルチプロセス・システム等におけるタイミング、シリアル化又は同期化に関連するソフトウェア欠陥に適用可能である。
【0051】
構造欠陥タイプ:このタイプは、ソフトウェア・モジュール又は構成要素間のインターフェース、アプリケーション・プログラム・インターフェース(API)、クラス、オブジェクトを含むオブジェクト指向設計;プロシージャ、データベース・スキーマ、エンティティ関係図(複数可)等の間の関係の欠陥に適用可能である。
【0052】
非コード欠陥タイプ:このタイプは、マニュアル、ユーザ・ガイド、javadoc等のソフトウェア文書;ソフトウェア構築プロセス;ソフトウェア構成及びインストール;ソフトウェア構成及び変更管理プロセス;ソフトウェア・グラフィカル・ユーザ・インターフェース又はナビゲーション等の欠陥に適用可能である。
【0053】
上記の欠陥タイプでは、制御/データ・フロー欠陥タイプ、構造欠陥タイプ及び非コード欠陥タイプがクラス標示であり、「この欠陥タイプは、アルゴリズム;変数割当て又は初期化によるエラー又は例外;条件文及びfor/whileループの確認;マルチスレッド・システム又はマルチプロセス・システム等におけるタイミング、シリアル化又は同期化に関連するソフトウェア欠陥に適用可能である」を含むテキストが、ソフトウェア欠陥カテゴリのサンプルのテキスト記述である。同様に、クラス標示、構造欠陥タイプ及び非コード欠陥タイプの残りは、上記で示したテキスト記述を含む。
【0054】
更に、以下のサンプルのソフトウェア欠陥報告を考慮する:
バグ名称:FP木ノードが積和演算されている(木の中で兄弟になっている)
バグ詳細:2011年11月14日作成
バージョン:0.6
優先度:大
報告者:Abc Xyz
OS:Linux(登録商標)
FPGrowth#traverseAndBuildConditionalFPTreeDataにおいて、条件付きFP木を作成する際にノードが同じノードの子として積和演算されることがあり、条件付き木の中で兄弟になっている。
【0055】
一例示的実施形態では、ステップ304で述べたように、システム100は、ソフトウェア欠陥報告テキスト区分化モジュール204を介して、上記サンプル欠陥報告の区分化を実施し、正規表現を使用して異なる区分にし、各区分の部分を抽出する。以下で示すのは、システム100によって区分化工程から入手した1つ又は複数の区分の一例であり、例示的表1によって示す:
【0057】
区分化ステップが完了すると、システム100は、欠陥分類の目的で、欠陥区分のテキスト内容:「欠陥名称」、「再現ステップ」、「予想される結果」、「実際の結果」及び「欠陥の詳細な説明」を考慮する。他の欠陥報告区分の内容は、欠陥分類の目的では無視することができる。
【0058】
欠陥区分のテキスト内容、「欠陥名称」、「再現ステップ」、「予想される結果」、「実際の結果」及び「欠陥の詳細な説明」は、「分類用_欠陥_テキスト」と示す単一のテキスト文字列に組み合わせられ、次に、このテキスト文字列を概念空間内に投影する。進行中の例では、「分類用_欠陥_テキスト」は、以下の区分出力として得られる。
【0059】
「FP木ノードが積和演算されている(木の中で兄弟になっている)。FPGrowth#traverseAndBuildConditionalFPTreeDataにおいて、条件付きFP木を作成する際にノードが同じノードの子として積和演算されることがあり、条件付き木の中で兄弟になっている。」
【0060】
次のステップとして、システム100は、1つ又は複数の知識ベースから入手した文書コーパスに対し(1つの)分析を実施し、文書コーパスから関連文書サブセットを特定する。知識ベースを分析し、関連文書サブセットを特定するステップは、ソフトウェア欠陥報告分類タスクのため考慮中のソフトウェア欠陥報告の全てについて繰り返さなくてもよいことは、当業者であれば理解されよう。更に、一例示的実施形態では、このことは、典型的には、事前処理動作であってもよく、所与のセットのソフトウェア欠陥報告を分類する実際のタスクの前に実行することができる。ここで、ステップ306を具体的に説明する。
【0061】
概念空間の生成に適切な関連文書セットの特定:
【0062】
システム100は、例えば、知識ベースに対応する文書コーパスとして英語版ウィキペディア(登録商標)を利用する。ウィキペディア(登録商標)は、約350万の文書を有する。ウィキペディア(登録商標)は、汎用コーパスであるため、ソフトウェア欠陥分類タスクのためにウィキペディア(登録商標)全体を使用して概念空間生成を生成するステップは、多くの無関係な文書を含む傾向がある。したがって、実施形態は、本開示で提案する、ウィキペディア(登録商標)文書サブセットを特定する方法(複数可)を採用し、このウィキペディア(登録商標)文書サブセットとは、(本開示の目的である)ソフトウェア欠陥分類タスクで関連する可能性がより高い文書サブセットである。様々なウィキペディア(登録商標)文書を接続しているハイパー・リンクを使用して、ウィキペディア(登録商標)文書のグラフ(図示せず)を生成する。ソフトウェア欠陥報告分類タスクのための種文書として、ウィキペディア(登録商標)文書(小)セットを使用する。これらの種文書は、ソフトウェア欠陥報告分類タスクのために構成可能なパラメータである。ユーザ(複数可)は、提案するソフトウェア欠陥分類システム及び/又は方法を、既存の種文書セットには含まれていない新たなアプリケーション、新たな技術又は新たな分野に適合させたい場合にのみ、種文書を更新することができる。システム100は、一例示的実施形態では、これらの「種文書」から「x」ホップ(例えば本実験シナリオでは3ホップ)以内で到達可能であるウィキペディア(登録商標)文書のサブセットを特定する。このウィキペディア(登録商標)文書サブセットを特定するために、システム100は、ハイパーリンクを使用して構成したウィキペディア(登録商標)グラフに対し幅優先探索(BFS)を実行する。幅優先探索とは、グラフ理論分析の一種であり、一例示的実施形態では3ホップ以内で到達可能な文書の関連セットを特定するために、システム100によって実施、実行される。一実施形態では、第1のホップは、種ノード(又は種文書)の1つ又は複数の近隣(例えば第1の近隣セット)と呼ばれ、第2のホップは、第1の近隣セットの1つ又は複数の近隣(例えば第2の近隣セット)と呼ばれ、第3のホップは、第2の近隣セットの1つ又は複数の近隣(例えば第3の近隣セット)と呼ばれる。
【0063】
現在の例では、簡潔にするために、「ソフトウェア・バグ」を唯一の種文書として使用し、この種文書から3ホップ以内で到達可能なウィキペディア(登録商標)文書のみを関連文書セット(又は文書サブセットと呼ぶ)として特定し、現在の例に含める。この文書サブセットを使用して、ソフトウェア欠陥の概念ベースの分類に必要な概念空間を生成する。概念空間は、工程内で多量の文書セットが特定されるため、図示しない。しかし、関連文書セットを特定し、ソフトウェア欠陥報告を分類するために、(上記で実施した)3ホップを実施することは、本開示の範囲の限定として解釈すべきではないことは当業者であれば理解されよう。
【0064】
ステップ308で述べたように関連文書セットを特定した後、特定された関連文書セットに基づき、概念空間を生成する(多量の文書コーパスを含む概念空間生成に関する制約のために図示しない)。
【0065】
更に、ソフトウェア欠陥報告(例えば上記の作業例で示したバグ・レポート)及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれに対する概念空間表現は、
図3のステップ310に従って入手/生成される。ソフトウェア欠陥報告及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれに対する概念空間表現は、例として提供する。
【0066】
ステップ304(例えば区分化)で出力として示される、検討中のソフトウェア欠陥報告に関する例示的概念空間表現(例えば「分類用_欠陥_テキスト」)を以下の表2に示す。
【0068】
上記からわかるように、簡潔にするために、25の概念のみを示す。しかし、考慮中のソフトウェア欠陥報告のために図示した25の概念は、本発明の範囲の限定として解釈されるものではないことは当業者であれば理解されよう。
【0069】
同様に、ステップ302における入力(例えばクラス標示及びテキスト記述)として示す、考慮中の1つ又は複数のソフトウェア欠陥カテゴリ(又は対応するクラス標示)の例示的概念空間表現(例えば「制御/データ・フロー」)を以下の表3に示す。
【0071】
上記からわかるように、簡潔にするために、25の概念のみを示す。しかし、考慮中のソフトウェア欠陥カテゴリ(又は複数のソフトウェア欠陥カテゴリ)のために図示した25の概念は、本発明の範囲の限定として解釈されるものではないことは当業者であれば理解されよう。
【0072】
ステップ312で、ソフトウェア欠陥報告及びソフトウェア欠陥カテゴリのそれぞれに対し概念空間表現を生成した後、システム100は、欠陥報告と欠陥標示(及び/又はソフトウェア欠陥カテゴリ)のそれぞれとの間の共通概念の数及び類似度を計算する。欠陥標示(以下、1つ又は複数のソフトウェア欠陥カテゴリのクラス標示とも呼ぶ)を割り当てるために、システム100は、概念空間表現で使用される概念数の少なくとも10%が、ソフトウェア欠陥報告と欠陥標示(又はソフトウェア欠陥カテゴリ)との間で共通であるはずであるという制約条件を前提として、(
図4に示すような)様々な欠陥タイプにわたる類似度値の分布、類似度の相対強度を考慮に入れる。システム100は、1つ又は複数のソフトウェア欠陥報告の概念空間表現と共通している概念の数の10%未満を有する欠陥標示(又はソフトウェア欠陥カテゴリ)に対応する類似度値の平均及び標準偏差を計算する。本開示の一実施形態では、類似度値の標準偏差は、当技術分野で公知の標準偏差式を使用して計算される。次に、システム100は、10%未満の共通概念を有する欠陥標示(又はソフトウェア欠陥カテゴリ)に対応する類似度値セットの上記で計算した平均と、上記で計算した標準偏差の「n」倍(例えば本例では「n」は3である)との和として閾値を計算(生成)する。システム100は、概念空間表現が少なくとも10%のソフトウェア欠陥報告の概念空間表現との共通概念を有し、類似度値が、計算した(生成した)閾値よりも高い(閾値を超える)(又は閾値と等しい)1つ又は複数の欠陥標示(又はソフトウェア欠陥カテゴリ)を割り当てる。
【0073】
欠陥標示(又はソフトウェア欠陥カテゴリ)であって、その欠陥標示(又はソフトウェア欠陥カテゴリ)の概念空間表現がソフトウェア欠陥報告の概念空間表現との共通概念を10%未満有する、欠陥標示(又はソフトウェア欠陥カテゴリ)がただ1つである場合、システム100は、閾値をただ1つの欠陥標示に対応する類似度値の「p」倍(例えば本例では「p」は例えば2である)として計算する。
【0074】
欠陥標示(又はソフトウェア欠陥カテゴリ)であって、その欠陥標示(又はソフトウェア欠陥カテゴリ)の概念空間表現が、ソフトウェア欠陥報告の概念空間表現と共通する概念を10%未満有する欠陥標示(又はソフトウェア欠陥カテゴリ)がない場合(即ち、全ての欠陥標示(又はソフトウェア欠陥カテゴリ)が、ソフトウェア欠陥報告の概念空間表現と共通する概念を少なくとも10%有する場合)、システム100は、全ての欠陥標示に対応する類似度値の標準偏差及び平均に基づき、閾値を計算する。例えば、システム100は、全ての欠陥標示に対応する類似度値の標準偏差の「m」倍(例えば本例では「m」は例えば3である)を、全ての欠陥表示に対応する類似度知の平均から減算することによって、閾値を計算する。
【0075】
以下は、ソフトウェア欠陥報告(例えば考慮中のソフトウェア欠陥報告−「分類用_欠陥_テキスト」)及びソフトウェア欠陥カテゴリ(例えば制御/データ・フロー、構造及び非コード)のそれぞれに関係する類似度値の計算及びその分布を示す例示的な表(例えば表4)である。進行中の例に関し、類似度値の分布、相対強度及び共通概念の数を以下の表4に示す。
【0077】
明らかであるように、各ソフトウェア欠陥カテゴリに対する考慮中の欠陥報告(例えば分類用_欠陥_テキスト)に対し、第2列は、類似度値を示す。これらの類似度値は、上記式(1)を使用して計算する。一例示的実装形態では、類似度値0.1786を、ソフトウェア欠陥カテゴリ・タイプ「制御/データ・フロー」のために計算した。同様に、類似度値0.0157を、ソフトウェア欠陥カテゴリ・タイプ「構造」のために計算し、類似度値0.0174を、ソフトウェア欠陥カテゴリ・タイプ「非コード」のために計算した。第3列は、様々な欠陥カテゴリ(又はタイプ)の中での類似度の相対強度を表し、第2列からの値のうち、最小の値は、各ソフトウェア欠陥カテゴリの相対強度を決定するため、異なっている。例示的シナリオでは、0.0157は、特定された最小類似度値であり、類似度値0.1786を分割し、ソフトウェア欠陥カテゴリ・タイプ「制御/データ・フロー」の類似度の相対強度を計算するために使用され、この場合、11.376となる。同様に、0.0157は、特定された最小類似度値であり、類似度値0.0157を分割し、ソフトウェア欠陥カテゴリ・タイプ「構造」の類似度の相対強度を計算するために使用され、この場合、上記表4からわかるように、1となる。同様に、0.0157は、特定された最小類似度値であり、類似度値0.0174を分割し、ソフトウェア欠陥カテゴリ・タイプ「非コード」の類似度の相対強度を計算するために使用され、この場合、1.108となる。実施した実験結果では、現実には、考慮中のソフトウェア欠陥報告及び1つ又は複数のソフトウェア欠陥カテゴリのそれぞれに対し考慮した概念は、500であった。第4列は、考慮中のソフトウェア欠陥報告(例えば分類用_欠陥_テキスト)と、カテゴリ(例えば制御/データ・フロー、構造及び非コード)との間の共通概念の数を表す。上記表4からわかるように、考慮中のソフトウェア欠陥報告に関係する概念−分類用_欠陥_テキストと、制御/データ・フロー欠陥カテゴリとの間に79の共通概念が発見された。同様に、考慮中のソフトウェア欠陥報告−分類用_欠陥_テキストと、構造欠陥カテゴリとの間に10の共通概念があった。同様に、考慮中のソフトウェア欠陥報告−分類用_欠陥_テキストと、非コード欠陥カテゴリとの間に10の共通概念があった。上記表4に基づき、
図1から
図3に関する
図4は、本開示の一実施形態による、考慮中のソフトウェア欠陥報告に関する各ソフトウェア欠陥カテゴリに対し計算した類似度値の分布を示すグラフ図を示す。より詳細には、グラフ図は、システム100によって生成され、左側のY軸は、式(1)を使用して計算した「類似度値」を示し、右側のY軸は、様々な欠陥タイプにわたる相対強度を示す(
図4では点線で示す)。
【0078】
実験の実施により、システム100については、カテゴリのそれぞれに対し類似度値を計算するために、少なくとも50の概念が、考慮中のソフトウェア欠陥報告(例えば分類用_欠陥_テキスト)の概念空間表現と、カテゴリ(例えば制御/データ・フロー、構造及び非コード)との間で共通である必要があることに気付いた。500のうち50の共通概念とは、少なくとも10%であり、このシナリオでは制約条件である。システム100は、平均(例えば、平均は、ソフトウェア欠陥報告(複数可)表現の共通概念の10%未満を有するソフトウェア欠陥カテゴリの類似度値で計算される)、及び標準偏差の「n」倍(この場合、「n」は3である)に基づき閾値を計算する。したがって、閾値は、以下の例示的式により計算される:
平均=0.01655=((0.0157+0.0174)/2)
標準偏差(又はstdev)=0.001202082
閾値=平均+3×stdev=0.01655+3×0.001202082
=0.020156245
次に、いずれかの第2列からの値のそれぞれを、この動的に生成した類似度閾値と比較し、この場合、類似度閾値は0.020156245である。
【0079】
例示的実装形態では、ソフトウェア欠陥カテゴリ「制御/データ・フロー」に関係する類似度値(例えば0.1786)を0.020156245と比較した。同様に、ソフトウェア欠陥カテゴリ「構造」に関係する類似度値(例えば0.0157)を0.020156245と比較した。同様に、ソフトウェア欠陥カテゴリ「非コード」に関係する類似度値(例えば0.0174)を0.020156245と比較した。明らかであるとおり、ソフトウェア欠陥カテゴリ「制御/データ・フロー」に関係する類似度値(例えば0.1786)は、動的に生成した類似度閾値(例えば0.020156245)よりも高い(又はこれを超える)。したがって、考慮中のソフトウェア欠陥報告は、ステップ316で示すように、「制御/データ・フロー」ソフトウェア欠陥カテゴリ下(又は「制御/データ・フロー」ソフトウェア欠陥カテゴリ内)に分類されている。
【0080】
本明細書は、当業者が実施形態を製作し、使用することが可能になるように主題を説明するものである。主題の実施形態の範囲は、特許請求の範囲によって定義され、当業者が想到する他の修正形態を含むことができる。そのような他の修正形態は、特許請求の範囲の文字通りの文言とは異ならない同様の要素を有する場合、又は特許請求の範囲の文字通りの文言と比べて実質的でない差異を有する等価要素を含む場合、特許請求の範囲内にあることを意図する。
【0081】
しかし、保護の範囲は、特許請求の範囲のメッセージを有するプログラム及び更にはプログラムコンピュータ可読記憶手段まで拡大され、そのようなコンピュータ可読記憶手段は、プログラムをサーバ又はモバイル・デバイス又は任意の適切なプログラム可能デバイス上で稼働させる際に、方法の1つ又は複数のステップを実施するプログラム・コード手段を含むことは理解されよう。ハードウェア・デバイスは、プログラム可能なあらゆる種類のデバイスとすることができ、例えば、サーバ若しくはパーソナル・コンピュータ等のようなあらゆる種類のコンピュータ、又はそれらの組合せを含む。デバイスは、手段も含むことができ、例えばハードウェア手段、例えば、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はハードウェア手段とソフトウェア手段との組合せ、例えば、ASIC及びFPGA、又は少なくとも1つのマイクロプロセッサ、及びデバイスの中に位置するソフトウェア・モジュールを有する少なくとも1つのメモリとすることができる。したがって、手段は、ハードウェア手段及びソフトウェア手段の両方を含むことができる。本明細書で説明する方法の実施形態は、ハードウェア及びソフトウェア内に実装することができる。デバイスは、ソフトウェア手段も含むことができる。代替的に、実施形態は、例えば複数のCPUを使用して様々なハードウェア・デバイス上に実装することができる。
【0082】
本明細書の実施形態は、ハードウェア要素及びソフトウェア要素を備えることができる。ソフトウェア内に実装する実施形態は、限定はしないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含む。本明細書で記載する様々なモジュールによって実施する機能は、他のモジュール又は他のモジュールの組合せにおいて実施することができる。この説明の目的で、コンピュータ使用可能媒体又はコンピュータ可読媒体は、指示実行システム、装置又はデバイスが使用するか又はこれらに関連するプログラムを備え、保存、通信、伝搬又は移送するあらゆる装置とすることができる。
【0083】
例示するステップは、図示の例示的実施形態を説明するために示し、進行中の技術開発により、特定の機能を実施する様式が変更されることは予期されるはずである。こうした例は、例示のために本明細書で提示するものであり、限定するものではない。更に、機能的な基本構成要素の境界は、説明の便宜上、本明細書において任意に定義されている。特定の機能及び機能関係が適切に実施されるかぎり、代替的な境界を定義することができる。代替形態(本明細書に記載するものの等価物、拡張形態、変形形態、変形体等を含む)は、本明細書に含まれる教示に基づき、当業者には明らかであろう。そのような代替形態は、開示する実施形態の趣旨及び範囲内にある。また、語「備える」、「有する」、「含有する」及び「含む」並びに他の同様の形態は、意味が同等であり、これらの語のいずれか1つに続く1つ若しくは複数の項目がそのような1つ若しくは複数の項目の網羅的なリストではないという点で無制限であることを意図する、又は列挙した1つ若しくは複数の項目のみに限定されないことを意味する。本明細書及び添付の特許請求の範囲で使用する単数形「1つの(a、an及びthe)」は、文脈が別段に明確に規定しない限り、複数の言及を含むことにも留意されたい。
【0084】
更に、1つ又は複数のコンピュータ可読記憶媒体は、本開示に一致する実装形態において利用することができる。コンピュータ可読記憶媒体は、プロセッサが読取り可能な情報又はデータを保存することができる任意のタイプの物理メモリを指す。したがって、コンピュータ可読記憶媒体は、本明細書に記載の実施形態に一致するステップ又は段階をプロセッサ(複数可)に実施させる指示を含め、1つ又は複数のプロセッサを実行させる指示を保存することができる。用語「コンピュータ可読媒体」は、有形物品を含み、搬送波及び過渡信号を除外する、即ち、非一時的であることは理解されよう。例は、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、揮発性メモリ、不揮発性メモリ、ハード・ドライブ、CD ROM、DVD、フラッシュ・ドライブ、ディスク、及びあらゆるほかの公知の物理的記憶媒体を含む。
【0085】
本開示及び例は、例と見なされるにすぎず、真の範囲及び趣旨は、以下の特許請求の範囲によって示すことを意図する。