(57)【要約】【課題】ソフトウェアアプリケーション（SA）のユーザインタフェース要素を各自のコードに対応付けるコンポーネントコードマッピングツールを効率的にトレーニングできるようにすること。【解決手段】本方法は、SA一群のユースケース（UC）にアクセスし、一群のUCから良好度対コストの比率が所定の条件を満たすUCの一部分を選択する。良好度対コストの比率を算出する際、UCの一部分に属するUC各々について、UCのユーザアクションに関する第1のコストの総和である第2のコストを算出し、第2のコストの総和である第3のコストを算出し、ユーザインタフェース要素の各々について、UCの一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、  第1の良好度の総和である第2の良好度を算出し、第2の良好度と前記第3のコストとの比率である良好度対コストの比率を算出する。【選択図】図1
2011248893.tif 000002
【特許請求の範囲】
【請求項１】
1つ以上のコンピュータ装置により使用される方法であって、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、方法。
【請求項２】
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、請求項1記載の方法。
【請求項３】
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、請求項1記載の方法。
【請求項４】
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する請求項1記載の方法。
【請求項５】
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、請求項1記載の方法。
【請求項６】
ユースケースの前記一部分を用いて、ユーザインタフェース要素のマッピングツールをトレーニングするステップをさらに有し、前記ユーザインタフェース要素のマッピングツールは、第2のユーザインタラクティブソフトウェアアプリケーションの第2のユーザインタフェース要素と、第2のソフトウェアアプリケーションのソースコードの部分とを対応付ける、請求項1記載の方法。
【請求項７】
ソフトウェアアプリケーションの一群のテストケースの中から、前記一群のユースケースを抽出するステップをさらに有する、請求項1記載の方法。
【請求項８】
1つ以上のプロセッサにより実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行する1つ以上のプロセッサと
を有するシステムであって、前記命令は前記1つ以上のプロセッサに方法を実行させ、該方法は、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、システム。
【請求項９】
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、請求項8記載のシステム。
【請求項１０】
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、請求項8記載のシステム。
【請求項１１】
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する請求項8記載のシステム。
【請求項１２】
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、請求項8記載のシステム。
【請求項１３】
ユースケースの前記一部分を用いて、ユーザインタフェース要素のマッピングツールをトレーニングするステップをさらに有し、前記ユーザインタフェース要素のマッピングツールは、第2のユーザインタラクティブソフトウェアアプリケーションの第2のユーザインタフェース要素と、第2のソフトウェアアプリケーションのソースコードの部分とを対応付ける、請求項8記載のシステム。
【請求項１４】
ソフトウェアアプリケーションの一群のテストケースの中から、前記一群のユースケースを抽出するステップをさらに有する、請求項8記載のシステム。
【請求項１５】
1つ以上のコンピュータ装置に方法を実行させるソフトウェアを有する1つ以上のコンピュータ読取可能な一時的なものではない記憶媒体であって、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、記憶媒体。
【請求項１６】
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、付記15記載の記憶媒体。
【請求項１７】
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、付記15記載の記憶媒体。
【請求項１８】
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する付記15記載の記憶媒体。
【請求項１９】
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、付記15記載の記憶媒体。
【請求項２０】
ソフトウェアアプリケーションの一群のユースケースにアクセスする手段と、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択する手段と
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される発明は、ユーザインタラクティブソフトウェアアプリケーションに関連する。
【背景技術】
【０００２】
複数のタイプのソフトウェアアプリケーションが存在している。そのうちの1つはユーザインタラクティブ（user  interactive）ソフトウェアアプリケーションである。ユーザインタラクティブソフトウェアアプリケーションに関連は、スタンドアローンのコンピュータシステムにより実行されるデスクトップベースのアプリケーションでもよいし、あるいはクライアントサーバ環境におけるクライアント又はサーバにより実行されるネットワークベースのアプリケーションでもよい。ユーザインタラクティブソフトウェアアプリケーションの場合、典型的には、アプリケーションのユーザに一度に一つ提示することが可能な1つ以上の提示可能な表示（view）があり、例えば、アプリケーションが実行されるコンピュータ装置又はクライアント装置の表示画面がある。これらの提示可能な表示は、アプリケーションの出力であり、また、これらはアプリケーションに対するユーザインタフェースを提供する。場合によっては、提示可能な特定の表示は、パネル、フレーム、プルダウンメニュー、ポップアップメニュー、ボタン、チェックボックス、選択リスト又はテキストフィールド等のような1つ以上のユーザインタフェース要素を含み、ユーザインタフェース要素は、アプリケーションのユーザがアプリケーションに対する入力を与えることを可能にする。アプリケーションは、ユーザに現在表示されている特定の表示に関連して、例えば人的な入力装置（例えば、マウス、キーボード、又はジョイスティック）を通じて、様々なタイプの入力をユーザから受け付ける。ユーザは、アプリケーションの異なる表示に含まれている異なるユーザインタフェース要素を通じて、異なるタイプの入力を与えることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、ソフトウェアアプリケーションのユーザインタフェース要素を各自のコードに対応付けるコンポーネントコードマッピングツールを効率的にトレーニングできるようにすることである。
【課題を解決するための手段】
【０００４】
開示される発明による方法は、
1つ以上のコンピュータ装置により使用される方法であって、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、方法である。
【図面の簡単な説明】
【０００５】
【図１】ソフトウェアアプリケーションのユーザインタフェースの表示例を示す図。
【図２】コンポーネント及びコードのマッピングを行うツールをトレーニングするためのシステム例を示す図。
【図３】コンポーネント及びコードのマッピングを行うツールをトレーニングするための方法例を示す図。
【図４】コンポーネント及びコードのマッピングツールが使用されるテスト環境例を示す図。
【図５】ネットワーク環境例を示す図。
【図６】コンピュータシステム例を示す図。
【発明を実施するための形態】
【０００６】
以下、添付図面に示されているようないくつかの実施例とともに開示される発明を説明する。以下の説明において、開示内容の理解を促すために多くの具体的な詳細が説明される。しかしながら、開示される発明はそのような具体的な詳細の全部又は一部によらずに実現されてもよい。また、開示される発明を曖昧にしてしまう避けるため、周知の処理ステップ及び／又は構造は詳細には説明されない。さらに、開示される発明は特定の実施例に関連して説明されるが、本説明は開示される発明を説明した実施例に限定することを意図するものではないことが、理解されるべきである。むしろ本願の説明は、代替例、変形例及び均等物が、添付の特許請求の範囲により規定されている発明の範囲及び精神の中に包含されるように意図されている。
【０００７】
ユーザインタラクティブソフトウェアアプリケーションはユーザインタフェースを含み、そのユーザインタフェースを通じて、アプリケーションのユーザはアプリケーションとやり取りすることができる。特定の実施例において、アプリケーションのユーザインタフェースは、任意の数の（例えば、1つ以上の）提示可能な表示を含んでいてもよい。特定の実施例において、特定の表示は、アプリケーションのユーザがアプリケーションに入力を与えることを可能にし、あるいはアプリケーションの出力をユーザに表示するために使用される。特定の実施例において、表示は1つ以上のユーザインタフェース要素又はコンポーネントを含み、ユーザインタフェース要素は、例えば、ウィンドウ、パネル、フレーム、プルダウンメニュー、プルアップメニュー、クリック可能なリンク、ボタン、チェックボックス、選択用のリスト又はテキストフィールド等であるがこれらに限定されない。ユーザは、特定の表示に含まれている特定のユーザインタフェース要素を介して、アプリケーションに入力を与える。同様に、アプリケーションは、特定の表示に含まれている特定のユーザインタフェース要素を用いて、アプリケーションの出力をユーザに表示する。ユーザインタフェース要素は、ユーザインタフェースアーチファクト又はウィジェットとして言及されてもよい。ウェブアプリケーションは、ユーザインタラクティブソフトウェアアプリケーションの一般的な具体例である。概して、ウェブアプリケーションは1つ以上のウェブページを含み、ウェブページの各々が、ウェブアプリケーションの提示可能な表示と考えることができる。ウェブページの各々は任意の数のユーザインタフェース要素又はウィジェットを含んでもよく、ユーザインタフェース要素は、例えば、フレーム、クリック可能なリンク、テキストフィールド、ボタン、チェックボックス又は選択用のリスト等であるがこれらに限定されない。ウェブアプリケーションのユーザは、特定のウェブページに含まれている特定のユーザインタフェース要素又はウィジェットを通じてウェブアプリケーションとやり取り（相互作用）を行う。
【実施例１】
【０００８】
特定の実施例において、ソフトウェアアプリケーションのユーザインタフェースの特定の表示に含まれているユーザインタフェース要素は、階層的に組織されていてもよい。図1はソフトウェアアプリケーションのユーザインタフェースの具体的な表示100を示す。表示100は階層的に構成された様々なタイプのユーザインタフェース要素を含んでもよい。例えば、階層の最上位レベルにウィンドウ116がある。ウィンドウ116は、パネル102、フレーム104及び2つのボタン112、114を含み、これらは階層構造における第2のレベルを構成する。フレーム104は3つのテキストフィールド106、108及び110をさらに有し、これらは階層構造における第3のレベルを構成する。
【０００９】
特定の実施例において、ソフトウェアアプリケーションを実行するプログラムコードは、アプリケーションのユーザインタフェースを実現する特定の部分を含む。特定の実施例において、ユーザインタフェース要素の各々は、そのユーザインタフェース要素の機能を実現するコードの各自が関連する部分を有する。特定の実施例において、コンピュータソフトウェア、ハードウェア又はそれらの組み合わせとして実現されるツールは、ユーザインタフェース要素をそれが関連するコード（すなわち、ユーザインタフェース要素の機能を実現する特定のコード）に自動的に対応付けるようにトレーニング（trained）又は構築される。より具体的には、特定の実施例において、ソフトウェアアプリケーションのユーザインタフェースの提示可能な表示（様々なタイプのユーザインタフェース要素を幾つ含んでいてもよい）に関し、コンポーネント及びコードのマッピングツールが、その表示を分析し、その表示に含まれる個々のユーザインタフェース要素を特定し、そのユーザインタフェース要素の機能を実現するソフトウェアアプリケーションのコードの特定の部分に、特定のユーザインタフェース要素を自動的に対応付ける。
【００１０】
特定の実施例において、コンポーネント及びコードのマッピングツールは、ソフトウェアアプリケーションのユーザインタフェース要素を正しく特定し、個々のユーザインタフェース要素を各自が関連するコードに対応付けることができるようになる前に、トレーニングされていることを必要とする。特定の実施例において、コンポーネント及びコードのマッピングツールは、1つ以上のソフトウェアアプリケーションにそれぞれ関連付けられている1つ以上のユースケース（use  case）群を用いてトレーニングされる。特定の実施例では、ソフトウェアアプリケーションに関連する一群のユースケースの中から一部のユースケースを選択し、その一部のユースケースは、所定の閾値条件を満たす「良好度及びコストの比率（goodness−to−cost  ratio）」を有し、その一部のユースケースを用いてコンポーネント及びコードのマッピングツールをトレーニングする。
【００１１】
図2はコンポーネント及びコードのマッピングツールをトレーニングするためのシステム例200を示す。特定の実施例において、図2に示されているシステム200のコンポーネントの各々は、コンピュータソフトウェア、ハードウェア又はそれらの組み合わせとして実現されてもよい。図3はコンポーネント及びコードのマッピングツールをトレーニングするための方法例を示す。図2及び図3を参照しながら説明を行う。さらに、図2は1つのソフトウェアアプリケーションとそのソフトウェアアプリケーションに関連付けられた
一群のユースケースとに関連して説明されているが、図2に示される処理又はステップは、複数のソフトウェアアプリケーションとそれらのソフトウェアアプリケーションに関連付けられた複数のユースケース群とについて反復的に使用されてもよい。コンポーネント及びコードのマッピングツールは、例えばパフォーマンスを改善するために複数のユースケース群を用いて反復的にトレーニングされてもよい。
【００１２】
特定の実施例において、ソフトウェアアプリケーションは一群のテストケースに関連付けられている。テストケースは、適切な如何なる方法で構築又は取得されてもよい。例えば、ソフトウェアアプリケーションの仕様に基づいて、又はソフトウェアアプリケーションの開発及び実装処理の一部として、テストケースが設計及び構築されてもよい。なぜなら、全てのソフトウェアアプリケーションはそれらが配備できるようになる前に検査（テスト）され有効性を確認するからである。特定の実施例において、テストケースの各々は、ユースケースと、そのユースケースに関して実行される特定のテストの説明又は定義とを含んでもよい。特定の実施例において、テストケースに含まれているユースケースは、ソフトウェアアプリケーションに関して実行される一連のアクション又は処理を指定していてもよい。例えば、一連のアクションは、ソフトウェアアプリケーションの特定のユーザインタフェース要素に関してアプリケーションのユーザにより実行される一連のユーザのアクション又は処理であり（例えば、ボタン又はリンクをクリックし、テキストフィールドに言葉をタイプ入力し、ボックスをチェックし、あるいはメニューアイテムを洗濯すること等である）、ユーザのアクションを実行することで、アプリケーションに様々な入力を与える。一連のアクションは、ソフトウェアアプリケーションが実際にどのように使用されるべきかを反映する。例えば、ウェブアプリケーションに関して実行されてもよい一連のアクションは、以下のものを含んでもよい：（1）「ユーザ名」のフィールドに名前をタイプ入力すること、（2）「パスワード」のフィールドにパスワードをタイプ入力すること、（3）「ログイン（login）」ボタンをクリックすること、（4）MP3プレーヤに関連付けられている「ショッピングカートに追加」のボタンをクリックすること、（5）「精算（check  out）」のボタンをクリックすること、及び（6）「クレジットカード番号」のフィールドにクレジットカード番号をタイプ入力すること。特定の実施例において、テストケースに含まれるテストの説明は、テストに関する如何なる情報を指定してもよく、例えば、テストケース中のユースケースに含まれている一連のアクションがソフトウェアアプリケーションに対するテスト入力としてどのように適用されるべきか、ソフトウェアアプリケーションについてテストが実行されるランタイム環境（runtime  environment）、対応するユースケースを用いて実行される特定のテスト又は試験、テストのカバレッジ又は適用範囲、確認される特定のタイプのエラー、ソフトウェアアプリケーションの正しい出力又は動作（すなわち、テストについて予想される結果）等を指定してもよいが、これらに限定されない。
【００１３】
図3のステップ302に示されているように、特定の実施例は、ソフトウェアアプリケーションに関連する一群のテストケースの中から一群のユースケースを抽出する。特定の実施例において、ステップ302は図2に示されているシステム200の要素又はコンポーネント202により実行されてもよい。特定の実施例において、コンポーネント202は、ユーザインタラクティブソフトウェアアプリケーション214及びソフトウェアアプリケーション214に関連する一群のテストケース212を入力として取得する。コンポーネント202は、テストケース212の各々を分析し、テストケース212に含まれているユースケースを抽出し、個々のテストケース212から抽出したユースケースを含む一群のユースケースを構築する。コンポーネント202は、テストケース212から抽出したユースケース216を出力として提供する。
【００１４】
特定の実施例において、ユースケースの各々は、ソフトウェアアプリケーションに関してユーザが実行するアクション（処理）のような一連のアクションを含み、特定のユースケースにアクションが幾つ含まれていてもよい。特定の実施例において、各々のアクションは、＜アクション，タイプ，名称＞の形式による3つ組みにより又は＜アクション，タイプ，名称，値＞の形式による4つ組みにより表現されてもよい。特定の実施例において、「アクション」及び「タイプ」は、ユースケースが関連付けられているソフトウェアアプリケーションを実行するのに使用されるプログラミング言語に基づいて規定されてもよい。例えば、「アクション」は、ソフトウェアアプリケーションのユーザインタフェース要素に関してジコウされる特定のアクション（例えば、アクションは、クリック、指定、マウスでカーソルを重ねることの内の何れかである（アクション∈｛クリック，指定，マウスでカーソルを重ねる｝））を指定するのに使用されてもよいし、「タイプ」は、（例えば、タイプは、リンク、ボタン、入力ボックスの内の何れかである（タイプ∈｛リンク，ボタン，入力ボックス｝））アクションを実行するソフトウェアアプリケーションの特定のユーザインタフェース要素を指定するのに使用されてもよい。特定の実施例において、「名称」はユーザ又はソフトウェアアプリケーションの開発者が指定した任意の文字列でよい。例えば、
「名称」はアクションを実行するユーザインタフェース要素の名称を示すのに使用されてもよい。特定の実施例において、「値」は、特定のアクションに関してユーザにより適用される実際の値（例えば、文字列数）でもよい。
【００１５】
例えば、「サブミット（submit）」のボタンをクリックするアクションは、＜クリック，ボタン，“サブミット”＞のような3つ組みを用いて表現されてもよい。「数量」入力フィールドに値「2」を入力するアクションは、＜指定（assign），入力ボックス，“数量”，2＞のような4つ組みを用いて表現されてもよい。以下の例はユースケースの具体例を示し、ユースケースにおける各々のアクションは3つ組み又は4つ組みを用いて表現される。
【数１】
2011248893.tif 000003
［ユースケースの具体例］
【００１６】
ソフトウェアアプリケーションに関する一群のユースケースがあった場合（例えば、ソフトウェアアプリケーションに関連する一群のテストケースから一群のユースケースが抽出された場合）、特定の実施例では、図3のステップ304に示されているように、一群のユースケースの中から一部のユースケースを選択する。特定の実施例において、選択された一部のユースケース（選択されたユースケースの部分集合）は、コンポーネント及びコードのマッピングツールをトレーニングする観点から最適なユースケースの部分であってもよい。特定の実施例において、ステップ304は図2に示されているシステム200の要素204により実行されてもよい。特定の実施例において、コンポーネント204は、一群のユースケース216を入力として取得し、一部分を出力として（より具体的には、ユースケース216から選択されたユースケースの最適な部分集合218として）提供する。特定の実施例において、コンポーネント及びコードのマッピングツールをトレーニングするのに最適なユースケースの部分が、ある所望の特性又は性質を有するものと考えてよい。例えば、特定の実施例は、その部分のコスト及びサイズを小さくする一方、その部分のコンポーネントカバレッジ（component  coverage）を最大化することで、ユースケースの一部分を選択してもよい。
【００１７】
特定の実施例において、ソフトウェアアプリケーションに関連する一群のユースケースは、任意の数の（すなわち、1つ以上の）ユースケースを含んでよく、ユースケースの各々は、任意の数の（すなわち、1つ以上の）アクションを含む一連のアクションを含んでいてよい。
【数２】
2011248893.tif 000004
が、一群のnU個のユースケースを表すものとする。ただし、nU≧1であり、Uに属するuiの各々（ui∈U）はUに含まれる特定のユースケースを示す。特定の実施例において、Uは一群のユースケースであり、その一群のユースケースの中から、コンポーネント及びコードのマッピングツールをトレーニングするのに最適なユースケースの一部分が選択される。
【数３】
2011248893.tif 000005
が、Uから選択されたnUS個のユースケースの部分であるとする。ただし、
【数４】
2011248893.tif 000006
である。さらに、特定の実施例において、ユースケースの各々は一連のアクションを含んでいるので、
【数５】
2011248893.tif 000007
が、特定のユースケースuに含まれているna個の一連のアクションを示すものとする。ここで、na≧1であり、uに属するai（ai∈u）はuに含まれている特定のアクションを示す。特定の実施例において、一連のアクションはそれらが指定されているのと同じ順番で実行されてもよい。例えば、
【数６】
2011248893.tif 000008
という一連のアクションの場合、a1が最初に実行され、それに続いてa2が2番目に実行され、それに続いてa3が3番目に実行され、以下同様に実行されてもよい。さらに、一群のユースケース（例えば、U）が関連付けられているソフトウェアアプリケーションの特定のユーザインタフェース要素（例えば、ウィジェット）に関して、各アクションaiが実行されてもよく、アクションのシーケンス（一連のアクション）各々において、個々のアクションが、同一の又は相違するユーザインタフェース要素に関連して実行されてもよい。
【００１８】
一実施例において、ユースケース各々に含まれているアクション各々を実行することに関するコストが存在してもよい。特定の実施例において、アクションに関連付けられるコストは、限定ではないが例えば、時間、コンピュータリソース及び人であるユーザの賃金等の観点による、アクションを実行する人であるユーザのコストを表してもよい。したがって、アクションに関するコストは非負の数であるとしてもよい。特定の実施例において、実験データ又は経験的なデータに基づいてアクション各々についてコストを判定してもよいし、あるいは各アクションについてデフォルトのコスト（例えば、1）を選択してもよい。特定の実施例において、ユースケースに含まれるアクションの各々は、a＝＜w，i，d，c＞の形式により、アクションを実行することに関するコストを考慮に入れた別の4つ組みを用いて表現されてもよい。ここで、（1）wは、アクションを実行することに関するログインボタン、クリック可能なリンク又はテキストフィールド等のようなユーザインタフェース要素（すなわち、ウィジェット）を表現し、（2）iは例えばクリック、マウスによりカーソルを重ねること、又は文字入力等のようなwについて実行される特定のユーザのアクションを表現し、（3）dはアクションに関するデータを記述する文字列を表し、空白列でもよく（例えばテキストフィールドに入力されるパスワード又はユーザ名を表現する文字列でもよい）、（4）cはアクションを実行することに関連するコストを表し、0以上である（すなわち、非負の数であり、例えば1である）。
【００１９】
特定の実施例において、ユースケース各々を実行することに関するコストが存在してもよい。特定の実施例において、ユースケースに関するコストは、そのユースケースに含まれている一連のアクション全てを実行する場合における人であるユーザに関するコストを表してもよい。特定の実施例において、ユースケースに関するコストは、そのユースケースに含まれている個々のアクションに関する個々のコストの総和であってもよい。C（ai）がアクションaiに関するコストを表し、aiがユースケースuに含まれていた場合（すなわち、ai∈u）、特定の実施例において、uに関するコストは、
【数７】
2011248893.tif 000009
として定義されてもよい。同様に、特定の実施例において、一群のユースケース（例えば、U又はUS）に関するコストは、その群中の個々のユースケースに関する個々のコストの総和であってもよい；すなわち
【数８】
2011248893.tif 000010
であってもよい。コンポーネント及びコードのマッピングツールをトレーニングする場合において、ユースケースの一部分USを選択する際、特定の実施例ではC（US）を最小化するように選択する。
【００２０】
特定の実施例において、ユースケースが、ユーザインタフェース要素に関して実行される少なくとも1つのアクション（例えば、ユーザインタフェース要素で実行される少なくとも1つのアクション）を含んでいた場合、ユーザインタフェース要素（例えば、ウィジェット）は、そのユースケースにより試行される、使用される又は含められる。ユースケースに含まれる又はカバーされるユーザインタフェース要素に関し、そのユーザインタフェース要素において実行するアクションは、そのユースケースに含まれている一連のアクションにおける任意のアクションでもよい。コンポーネントマッピングツールをトレーニングするためにユースケースの一部分USを選択する場合に、特定の実施例では、その一部分に含まれているユースケースがカバーする（包含する）ユーザインタフェース要素の数を最大にするようにする（すなわち、その一部分によるユーザインタフェース要素のカバレッジを最大にする）。さらに、特定の実施例では、ユーザインタフェース要素に関して行われるアクションのダイバーシチ又は多様性（diversity）を増やすようにしてもよい。例えば、あるユーザインタフェース要素に関し、特定の実施例は、ユーザインタフェース要素に関して実行される特定のアクションに通じる別のユースケースに含まれている別の一連のアクションを選択するようにし、ユーザインタフェース要素が異なるシナリオで使用されるようにしてもよい。同様に、特定の実施例は、ユーザインタフェース要素に関して実行される異なるタイプのアクションを含む異なるユースケースを選択するようにしてもよい。
【００２１】
特定の実施例において、あるユースケースのペアu1、u2及びユーザインタフェース要素wに関し、wはu1及びu2の双方で使用される場合（すなわち、wに関して実行されるu1における少なくとも1つのアクション及びu2における少なくとも1つのアクションが存在する場合）、u1は、
【数９】
2011248893.tif 000011
として規定され、u2は、
【数１０】
2011248893.tif 000012
として規定されてもよい。特定の実施例において、wに関するu1及びu2間の距離は、Dw（u1，u2）として記述され、これは
【数１１】
2011248893.tif 000013
として規定されてもよい。ここで、aj1≠aj2の場合にはxj＝1であり、それ以外についてはxj＝0である。本質的には、Dw（u1，u2）は、wが実行される点に至るまでにおける、u1及びu2それぞれに含まれている2つの一連のアクションの相違数を表す。特定の実施例において、u1及びu2に含まれているwについて実行する複数のアクションがあった場合、a1i1がwに関して実行する一連のu1において最初のアクションであり、a2i2がwに関して実行する一連のu2において最初のアクションである。
【００２２】
特定の実施例において、ユースケースU又はUS及びユーザインタフェース要素wの組に関し、ユーザインタフェース要素に関する一群のユースケースの差分は、その群におけるユースケースの全ての固有のペアに関するペアの距離の総和であってもよい。すなあｗち、wに対するUに関する距離は、
【数１２】
2011248893.tif 000014
として定義されてもよい。wに対するUSに関する距離は、
【数１３】
2011248893.tif 000015
として定義されてもよい。
【００２３】
コンポーネントマッピングツールをトレーニングするためにソフトウェアアプリケーションに関して一群のユースケースUの中から一部のユースケースUSを選択する場合に、特定の実施例では、USがソフトウェアアプリケーションのユーザインタフェース要素について与えるカバレッジを表すUSに関する良好度指標（goodness  measure）G（US）を判定してもよい。すなわち、G（US）は、US内のユースケースに含まれているアクション、ユーザインタフェース要素に関して実行する異なるタイプのアクション、及びユーザインタフェース要素wが実行するシナリオにより、どの程度多くのユーザインタフェース要素が実行されるかを示す。特定の実施例は、一群のユースケースUから選択された一部のユースケースUSの良好度指標を最大化するようにする。特定の実施例では、一部のユースケースによりカバーされる全てのユーザインタフェース要素に関する一部のユースケースの良好度指標は、一部のユースケースによりカバーされる個々のユーザインタフェース要素に関する良好度指標の総和であるとしてもよい。Gw（US）が、US内のユースケースによりカバーされる特定のユーザインタフェース要素wに関するUSの良好度指標であるとする。特定の実施例において、USに属するユースケースによりカバーされるユーザインタフェース要素全てに関し、良好度指標G（US）は、
【数１４】
2011248893.tif 000016
として定義されてもよい。
【００２４】
特定の実施例において、Gw（US）が、
【数１５】
2011248893.tif 000017
として定義されてもよい。ここで、（1）fwUS／UはUに対するUSで表現されるwに関するアクションの割合（fraction）を表し、（2）Cx、Ca及びCdはそれぞれユーザインタフェース要素（例えば、w）をカバーする、より多くのアクションをカバーする、及び多様性のあるシナリオをカバーする恩恵をもたらす相対的な重みに対する係数コスト（multiplicative  cost）である。より具体的には、ユーザインタフェース要素wに関し、fwUS／Uは、wに関して実行されるUS内のユースケースに含まれているアクション数と、wに関して実行されるU内のユースケースに含まれているアクション数との間の比率、すなわち
【数１６】
2011248893.tif 000018
を表す。Cxは、ある特定のユーザインタフェース要素を含めることが、ソフトウェアアプリケーションの別の特定のユーザインタフェース要素を含めることに対して有する相対的な重要度（寄与度）の観点から、各ユーザインタフェース要素の相対的なウェイトに対するコスト係数を表す。Caは個々のユーザインタフェース要素に関し、できるだけ多くの異なるアクションをカバーする際の重要度（寄与度）の観点からのコスト係数を表す。Cdは一連の異なるアクションのような多様性のあるシナリオとともにユーザインタフェース要素をカバーする際の重要度（寄与度）の観点からのコスト係数を表す。Cx、Ca及びCdの値は、実験的なデータ、経験的なデータ又は指定されたデフォルト値に基づいて決定されてもよい。
【００２５】
特定の実施例において、一部のユースケースUSに関し、良好度対コストの比率は、
【数１７】
2011248893.tif 000019
として定義されてもよい。特定の実施例は、（1）USがUによってカバーされるようなユーザインタフェース要素に関の全部又はほとんどをカバーする場合、（2）USがUによりカバーされるようなユーザインタフェース要素に関して時一考される異なるアクションの全部又はほとんどをカバーする場合、（3）USがUによりカバーされるようなユーザインタフェース要素が使用される異なるシナリオの全部又はほとんどをカバーする場合、及び（4）USを実行するコストが相対的に最小化されている場合に、USを最適であると判断する。これらの目的を達成する場合において、コンポーネントマッピングツールをトレーニングするため、一群のユースケースUから一部のユースケースUSを選択する場合、特定の実施例は、G（US）だけでなくC（US）も最大化しようとする、すなわちR（US）の値を最大化しようとする。したがって、特定の実施例において、一群のユースケースに関し、一群のユースケースから選択されたユースケースの最適な一部分は、一群のユースケースから生じる全ての可能なユースケースの部分の中で、良好度とコストの比率が最も高い又は相対的に高いものである。
【００２６】
任意の一群のユースケースUに関し、Uから一部のユースケースUS（全ての可能なUの部分の中でR（US）の値が最高であるもの）を見出す方法の1つは、Uの全ての可能な部分各々についてR（US）の値を計算し、R（US）の値が最大である部分を選択することである。これは、ブランチアンドバウンド（branch  and  bound）アルゴリズムを用いて行われてもよい。その場合、選択されたユースケースの一部分は、全ての可能なUの部分の中で、良好度とコストの比率R（US）が最高の値を有する。
【００２７】
しかしながら、U内のユースケースの数が比較的大きい場合、Uの可能な部分の数は非常に大きくなる。この場合、全ての可能なUの部分各々についてR（US）の値を確認するために非常に多くのリソース（例えば、計算時間やコンピュータリソース）が必要になり、実際のアプリケーションにおいて必ずしも実用的であるとは言えなくなってしまう。つまり、何らかの一群のユースケースUに関し、Uのサイズ及び複雑さに依存して、Uから最適な一部のユースケースUS（すなわち、R（US）の値が最高になるUの部分集合）を選択することは、しばしばNP完全な演算負担（NP−complete  computational  complexity）の問題を有することになる。そのような場合、事実上、Uから厳密に最適なユースケースの部分を発見することは不可能である或いは非常に困難である。
【００２８】
特定の実施例の場合、従来とは異なり、グリーディ（greedy）アルゴリズムを用いてユースケースの最適な部分を近似する。一群のユースケースUに関し、特定の実施例は、先ず、Uの中から或るユースケース群を選択し、そのユースケース群は、ユーザインタフェース要素をカバーし又はコンポーネント及びアクションの組み合わせを含み、かつ一部のユースケースUSを含んでいる。すなわち、選択された各々のユースケースは、Uの中で唯一のユースケースであり、特定のユーザインタフェース要素をカバーする又は特定のコンポーネント及びアクションの組み合わせを含むものである。次に、特定の実施例は、Uの中の残りのユースケースを一度に一つ検査する。特定の実施例は、Uから残りの1つのユースケースを選択し、仮にUSに追加した場合に、R（US）を最大限増加させる場合（すなわち、R（US）の値を最も大きく増加させる場合）、そのユースケースをUSに追加する。特定の実施例は、仮にUSに追加してもR（US）をさらに増加させるユースケースが残っていなくなるまで、その処理（Uから残っているユースケースを1つ選択し、それを仮にUSに追加した場合にR（US）を最大限増加させる場合、そのユースケースをUSに追加する処理）を反復する。この段階において、特定の実施例は、USを、Uから選択したユースケースの最適な一部分に対する十分な近似であると判断する。したがって、特定の実施例は、異なるユースケースがUSに追加される毎に、上記の数式を用いてR（US）を計算する必要がある。
【００２９】
あるいは、特定の実施例において、焼きなまし法又はシミュレーテッドアニーリング法（Simulated  Annealing）を用いて、ユースケースの最適な部分集合を近似してもよい。特定の実施例において、シミュレーテッドアニーリング法の場合、概して、Uの中からユースケースのシード部分集合（seed  subset）を選択し、ユースケースの部分集合が許容可能なR（US）を有するようになるまで、発見的方法（heuristics）を用いてR（US）の値を反復的に改善することを試みる。許容可能な値を有するに至った段階において、特定の実施例は、USを、Uから選択されたユースケースの最適な部分に対する十分な近似であると判断する。
【００３０】
一群のユースケースの中から選択したユースケースの最適な部分を近似する場合において、特定の実施例は、部分集合USについてのR（US）の値と、所定の閾値又は他の何らかのタイプの条件とを比較してもよい。USについてのR（US）の値がその所定の条件を満たしていた場合、特定の実施例は、USを、コンポーネント及びコードのマッピングツールをトレーニングするために十分に最適なものであると判断する。
【００３１】
特定の実施例において、選択されたユースケースの一部（部分集合）USは、図3のステップ306に示されているように、コンポーネント及びコードのマッピングツールをトレーニング（又は調整）するために使用される。特定の実施例において、ステップ306は図2に示されているシステム200の要素206により実行されてもよい。特定の実施例において、要素206は、ユースケースの部分集合218とコンポーネント及びコードのマッピングツール222とを入力として取得し、選択されたユースケース218を用いてコンポーネント及びコードのマッピングツール222をトレーニング（調整、修正、適合化）し、トレーニングの後にコンポーネント及びコードのマッピングツールを出力として提供する。
【００３２】
特定の実施例において、トレーニング後のコンポーネント及びコードのマッピングツールは、ウェブアプリケーションのユーザインタフェース要素と各自が対応するコードとを対応付けるために使用される。特定の実施例において、ウェブアプリケーションは任意の数のウェブページを含んでもよく、そのウェブページの各々は、任意の数のユーザインタフェース要素（例えば、パネル、フレーム、テキストフィールド、ボタン、チェックボックス又はメニューリスト）を含んでもよい。各ウェブページはドキュメントオブジェクトモデル（Document  Object  Model：DOM）を用いてDOM階層構造又はDOMツリーとして表現されてもよい。この場合、ウェブページに含まれているユーザインタフェース要素の各々は、一群の1つ以上のDOM要素を含むDOMサブツリーとして表現されてもよい。特定の実施例において、DOMサブツリーは、ルートDOMノード及び1つ以上のチャイルドDOMノードを含んでもよい。場合によっては、ルートDOMノード又はサブツリールートノードの1つ以上のチャイルドDOMノードは、対応するユーザインタフェース要素に関するイベントハンドラ（event  handler）を含んでいてもよい。コンポーネント及びコードのマッピングツールは、DOM構造を分析し、具体的な（特定の）ユーザインタフェース要素を表す個々のDOMサブツリーを判定し、ユーザインタフェース要素と各自が対応するコードとを対応付けてもよい。
【００３３】
このようにしてトレーニングされたコンポーネント及びコードのマッピングツールは、多くの実際のアプリケーションに使用されてもよい。例えば、図4は、ソフトウェアアプリケーションを検査して正式に有効にするテスト環境400を示す。特定の実施例において、テスト環境400は、ガイダンスエンジン410、ウェブクローラ（crawler）412、条件生成部416、フォームデータ支援部418及び有効化ツールキット420を含む。テスト環境400のこれらの要素の各々は、ハードウェア、ソフトウェア又はそれらの組み合わせとして実現されてもよい。特定の実施例において、図2に示されているプロセスは、フォームデータ支援部の一部となっていてもよく、ウェブアプリケーション422用のユーザ入力データ430を自動的に生成する。
【００３４】
特定の実施例において、ガイダンスエンジン410の支援とともに、ウェブアプリケーションクローラ412はウェブアプリケーションにアクセス及びクロール（crawl）し、ウェブアプリケーション422のためのナビゲーションモデル421を出力する。特定の実施例において、条件生成部416は、ユーザレベルの有効化条件426（例えば、ユースケース）に少なくとも部分的に基づいて、実施レベルの有効化条件を生成する。特定の実施例において、有効化条件428は有効化ツールキット420の入力として使用され、有効化ツールキット420は、有効化条件428に関してナビゲーションモデル424を用いてウェブアプリケーションを有効化し、有効化の結果434を出力する。特定の実施例において、コンポーネント及びコードのマッピングツールは、条件生成部416の一部分であってもよく、（例えば、ウェブアプリケーション422のような）テストされるソフトウェアアプリケーションのユーザインタフェース要素を確認又は特定し、それらのユーザインタフェース要素と、そのユーザインタフェース要素の機能を実行する各自が関連するコードとを対応付ける(マッピングする)。
【００３５】
特定の実施例はネットワーク環境において使用されてもよい。図5はソフトウェアの有効化をサービスとして提供するのに適したネットワーク環境例500を示す。ネットワーク環境500は、1つ以上のサーバ520と1つ以上のクライアントとを互いに結合するネットワーク510を含む。特定の実施例において、ネットワーク510は、イントラネット、エクストラネット、仮想プライベートネットワーク（VPN）、ローカルエリアネットワーク（LAN）、無線LAN（WLAN）、広域ネットワーク（WAN）、メトロポリタンエリアネットワーク（MAN）、インターネットの一部、他のネットワーク510、又はそのようなネットワーク510の2つ以上の組み合わせである。本願は適切な如何なるネットワーク510をも想定している。
【００３６】
1つ以上のリンク550はサーバ520又はクライアント530とネットワーク510とを結合する。特定の実施例において、1つ以上のリンク550の各々は、1つ以上の有線リンク、無線リンク又は光リンク550を含む。特定の実施例において、1つ以上のリンク550の各々は、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、MAN、インターネットの一部、他のリンク550、又はそのようなリンク550の2つ以上の組み合わせを含む。本願はサーバ520及びクライアント530をネットワークに結合する適切な如何なるリンク550をも想定している。
【００３７】
特定の実施例において、サーバ520の各々は、ユニタリサーバ又は単一のサーバであってもよく、あるいは複数のコンピュータや複数のデータセンタにわたる分散されたサーバでもよい。サーバ520は様々なタイプのものであってよく、例えば、ウェブサーバ、ニュースサーバ、メールサーバ、メッセージサーバ、広告又は通知サーバ、ファイルサーバ、アプリケーションサーバ、交換サーバ、データベースサーバ、又はプロキシサーバ等であるがこれらに限定されない。特定の実施例において、サーバ520の各々は、ハードウェア、ソフトウェア、内蔵論理要素、又はサーバにより実行又はサポートされる適切な機能を実行する2つ以上の要素の組み合わせを含んでいてもよい。例えば、概してウェブサーバはウェブページ又はウェブページの内の特定の要素を含むウェブサイトに対するホスト機能を実行することができる。より具体的には、ウェブサーバは、HTMLファイル又はその他のファイル形式に対するホスト機能を行ってもよいし、あるいは必要に応じてファイルを動的に生成又は構成し、クライアントからのHTTP又は他のリクエストに応じてそれらをクライアントに送信してもよい。メールサーバは、概して、様々なクライアント530に対して電子メールサービスを提供することが可能である。データベースサーバは、概して、1つ以上のデータ記憶部に保存されているデータを管理するためのインタフェースを提供することができる。
【００３８】
特定の実施例において、1つ以上のデータ記憶部540は、1つ以上のリンク550を介して1つ以上のサーバ520に通信可能にリンクされていてもよい。特定の実施例において、データ記憶部540は様々なタイプの情報を保存するのに使用されてもよい。特定の実施例において、データ記憶部540に保存される情報は、特定のデータ構造に従って組織化されていてもよい。特定の実施例において、データ記憶部540の各々はリレーショナルデータベースであってもよい。特定の実施例は、サーバ520又はクライアント530が、データ記憶部540に保存されているデータを管理（例えば、抽出、修正、追加又は削除）することを可能にするインタフェースを提供する。
【００３９】
特定の実施例において、クライアント530の各々は、ハードウェア、ソフトウェア、内蔵論理要素、又はクライアント530により実行又はサポートされる適切な機能を実行する2つ以上の要素の組み合わせであってもよい。例えば、クライアント530は、デスクトップコンピュータシステム、ノートブックコンピュータシステム、ノートブックコンピュータシステム、携帯用電子装置又は移動電話等であるがこれらに限定されない。本願は適切な如何なるクライアント530をも想定している。クライアント530はクライアント530におけるネットワークユーザがネットワーク510にアクセスできるようにする。クライアント530は、クライアントのユーザが、他のクライアント530における他のユーザと通信できるようにする。
【００４０】
クライアント530は、MICROSOFT  INTERNET  EXPLORER（登録商標）、GOOGLE  CHROME（登録商標）又はMOZILIA  FIREFOX(登録商標)のようなウェブブラウザを有し、TOOLBAR（登録商標）又はYAHOO  TOOLBAR（登録商標）のような1つ以上のアドオン（add−ons）、プラグインその他の拡張機能部を有していてもよい。クライアント530におけるユーザは、ユニフォームリソースロケータ（URL）又はその他のアドレスを入力し、ウェブブラウザをサーバ520に仕向け、ウェブブラウザ532はハイパーテキストトランスファプロトコル（HTTP）リクエストを生成し、そのHTTPリクエストをサーバ520に通知する。サーバ520は、HTTPリクエストを受け入れ、そのHTTPリクエストに応じて1つ以上のハイパーテキストマークアップ言語（HTML）ファイルをクライアント530に送信する。クライアント530は、サーバ520からのHTMLファイルに基づいて、ウェブページをユーザに提示するように処理する。本願は適切な如何なるウェブページファイルをも想定している。一例として、ウェブページは、具体的な要請に応じて、HTMLファイルから、拡張可能ハイパーテキストマークアップ言語（XHTML）ファイル又は拡張可能マークアップ言語（XML）ファイルを表示するが、本願はこの形態に限定されない。そのようなページはスクリプトを実行するが、そのスクリプトは、例えば、JAVASCRIPT（登録商標）、JAVA（登録商標）、MICROSOFT  SILBERLIGHT（登録商標）、又はAJAX（非同期JAVASCRIPT及びXML）（登録商標）のようなスクリプト及びマークアップ言語の組み合わせ等であるがこれらに限定されない。ウェブページとして言及されるものは、1つ以上の対応するウェブページファイル（ブラウザがウェブページを表示するのに使用してもよい）を含んでもよいし、必要に応じて逆の関係が成立してもよい。
【００４１】
特定の実施例は1つ以上のコンピュータシステムにおいて実施されてもよい。図6はコンピュータシステム例600を示す。特定の実施例において、1つ以上のコンピュータシステム600は、本願において記述又は説明された1つ以上の方法における1つ以上のステップを実行する。特定の実施例において、1つ以上のコンピュータシステム600は、本願において記述又は説明された機能を発揮する。特定の実施例において、1つ以上のコンピュータシステム600において動作するソフトウェアは、本願において記述又は説明された1つ以上の方法における1つ以上のステップを実行し、本願において記述又は説明された機能を提供する。特定の実施例は、1つ以上のコンピュータシステム600の内の1つ以上の部分を含む。
【００４２】
本願は適切な任意の数のコンピュータシステム600をも想定している。本願は適切な如何なる物理形態のコンピュータシステム600をも想定している。例えば、コンピュータシステム600は、内蔵されたコンピュータシステム、システムオンチップ（SOC）、シングルボードコンピュータシステム（SBC）（例えば、コンピュータオンモジュール（COM）又はシステムオンモジュール（SOM））、デスクトップコンピュータシステム、ラップトップコンピュータシステム、ノートブックコンピュータシステム、インタラクティブキオスク、メインフレーム、メッシュコンピュータシステム、移動電話、パーソナルディジタルアシスタント（PDA）、サーバ、又はそれらの2つ以上の組み合わせ等であるがこれらに限定されない。適切な場合には、コンピュータシステム600は、1つ以上のコンピュータシステム600を含んでもよい：それは、単一のものでもよいし或いは分散されたものでもよいし、複数の場所にわたるものでもよいし、複数の機器（マシン又はコンピュータ）にわたるものでもよいし、クラウドに常駐するものでもよく、クラウドは1つ以上のネットワークにおける1つ以上のクラウド要素を含む。適切な場合には、1つ以上のコンピュータシステム600は、大幅な空間的又は時間的な制約なしに、本願で記述又は説明された1つ以上の方法における1つ以上のステップを実行する。非限定的な一例として、1つ以上のコンピュータシステム600は、リアルタイムで又は分岐モードで、本願において記述又は説明された1つ以上の方法における1つ以上のステップを実行する。1つ以上のコンピュータシステム600は、様々な時間において又は様々な場所において、本願で記述又は説明された1つ以上の方法における1つ以上のステップを実行する。
【００４３】
特定の実施例において、コンピュータシステム600は、プロセッサ602、メモリ604、記憶部又はストレージ606、入力／出力（I／O）インタフェース608、通信インタフェース610及びバス612を含んでいる。本開示は特定の形態において特定の要素を特定の数だけ含む特定のコンピュータシステムを記述又は説明しているが、本願は適切な任意の形態において適切な任意の要素を適切な任意の数だけ含む適切な任意のコンピュータシステムをも想定している。
【００４４】
特定の実施例において、プロセッサ602は、コンピュータプログラムを記述しているような命令を実行するハードウェアを含む。非限定的な一例として、命令を実行する際、プロセッサ602は、内部レジスタ、内部キャッシュ、メモリ604又は記憶部606から命令を抽出（フェッチ）し、それらをデコードして実行し、内部レジスタ、内部キャッシュ、メモリ604又は記憶部606に対して1つ以上の結果を書き込む。特定の実施例において、プロセッサ602は、データ、命令又はアドレスに関する1つ以上の内部キャッシュを含んでいてもよい。本願は必要に応じて適切な任意の内部キャッシュを適切な任意の数だけ含むプロセッサ602をも想定している。非限定的な一例として、プロセッサ602は1つ以上の命令キャッシュ、1つ以上のデータキャッシュ、及び1つ以上のトランスレーションルックアサイドバッファ（TLB）を含んでいてもよい。命令キャッシュにおける命令は、メモリ604及び記憶部606のける命令のコピーでもよく、命令キャッシュはプロセッサ602による命令の取得を高速化する。データキャッシュのデータは、プロセッサ602が実行する命令のためのメモリ604又は記憶部606におけるデータのコピーでもよいし、プロセッサ602で以前に実行され、プロセッサ602で実行する次の命令によりアクセスされる又はメモリ604や記憶部606に書き込まれる結果でもよいし、その他の適切なデータでもよい。データキャッシュはプロセッサによる読み取り又は書き込みの処理を高速化する。TLBはプロセッサ602のための仮想アドレス変換を高速化する。特定の実施例において、プロセッサ602は、データ、命令又はアドレスのための1つ以上の内部レジスタを含む。本願は必要に応じて適切な任意の内部レジスタを適切な任意の数だけ含むプロセッサ602をも想定している。必要に応じてプロセッサ602は1つ以上の論理ユニット（ALU）を含んでいてもよいし、マルチコアプロセッサでもよいし、1つ以上のプロセッサを含んでいてもよい。本願は特定のプロセッサを記述又は説明しているが、本願は適切な如何なるプロセッサをも想定している。
【００４５】
特定の実施例において、メモリ604は、プロセッサ602が実行する命令又はプロセッサが使用するデータを格納するメインメモリを含む。非限定的な一例として、コンピュータシステム600は、記憶部606又は他のソース（例えば、他のコンピュータシステム600）からメモリ604へ命令をロードしてもよい。その後プロセッサ602は命令をメモリ604から内部レジスタ又は内部キャッシュへロードする。命令を実行するため、プロセッサ602は、内部レジスタ又は内部キャッシュから命令を抽出し、それをデコード又は解読する。命令を実行している最中に又はその後に、プロセッサ602は、1つ以上の結果（中間的な結果又は最終的な結果でもよい）を内部レジスタ又は内部キャッシュに書き込む。そしてプロセッサ602は1つ以上のそれらの結果をメモリ604に書き込む。特定の実施例において、プロセッサ602は、1つ以上の内部レジスタや内部キャッシュ又はメモリ604（記憶部606とは異なる又は他の場所）における命令のみを実行し、1つ以上の内部レジスタや内部キャッシュ又はメモリ604（記憶部606とは異なる又は他の場所）におけるデータについてのみ処理を行ってもよい。1つ以上のメモリバス（各々がアドレスバス及びデータバスを含んでいてもよい）は、プロセッサ602をメモリ604に結合する。バス612は後述するように1つ以上のメモリバスを含んでもよい。特定の実施例において、1つ以上のメモリ管理ユニット（MMU）が、プロセッサ602及びメモリ604の間に存在し、プロセッサ602が要求したメモリ604へのアクセスを支援してもよい。特定の実施例において、メモリ604はランダムアクセスメモリ（RAM）を含む。RAMは揮発性メモリである。必要に応じて、RAMはダイナミックRAM（DRAM）又はスタティックRAM（SRAM）でもよい。さらに、必要に応じて、RAMはシングルポート又はマルチポートRAMでもよい。本願は適切な如何なるRAMをも想定している。メモリ604は必要に応じて1つ以上のメモリ604を含んでいる。本願は特定のメモリを記述又は説明しているが、本願は適切な如何なるメモリをも想定している。
【００４６】
特定の実施例において、記憶部606は、データ又は命令のための大容量記憶部を含む。非限定的な一例として、記憶部606は、ハードディスクドライブ（HDD）、フロッピディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、ユニバーサルシリアルバス（USB）ドライブ、又はそれら2つ以上の組み合わせを含んでもよい。記憶部606は必要に応じて取り外し可能な又は取り外し可能でない（すなわち固定された）媒体を含んでもよい。記憶部606は必要に応じてコンピュータシステム600の内部又は外部にあってもよい。特定の実施例において、記憶部606は不揮発性のソリッドステートメモリでもよい。特定の実施例において、記憶部606はリードオンリメモリ（ROM）を含む。このROMは、必要に応じて、マスクプログラムされたROM、プログラマブルROM（PROM）、消去可能なPROM（EPROM）、電気的に消去可能なPROM（EEPROM）、電気的に変更可能なROM（EAPROM）、フラッシュメモリ、又はそれらの2つ以上の組み合わせを含む。本願は適切な任意の物理形態の大容量記憶部606を想定している。記憶部606は、必要に応じて、プロセッサ602及び記憶部606の間の通信を支援する1つ以上のストレージ制御ユニットを含んでいてもよい。必要に応じて記憶部606は1つ以上の記憶部606を含んでいてもよい。本願は特定の記憶部を記述及び説明しているが、本願は適切な任意の記憶部をも想定している。
【００４７】
一実施例において、I／Oインタフェース608は、コンピュータシステム600と1つ以上のI／O装置との間で通信するための1つ以上のインタフェースを提供するハードウェア、ソフトウェア又はそれら双方を含む。コンピュータシステム600は、必要に応じて1つ以上のI／O装置を含んでもよい。1つ以上のI／O装置は人とコンピュータとの間の通信を可能にする。非限定的な一例として、I／O装置は、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、静止カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、その他の適切なI／O装置又はそれら2つ以上の組み合わせを含む。I／O装置は1つ以上のセンサを含んでいてもよい。本願は適切な任意のI／O装置及びそのための適切な任意のI／Oインタフェース608をも想定している。必要に応じて、I／Oインタフェース608は、プロセッサ602が1つ以上のI／O装置を駆動できるようにする1つ以上の装置又はソフトウェアドライブを含んでいてもよい。インタフェース608は必要に応じて1つ以上のI／O装置608を含んでもよい。本願は特定のI／Oインタフェースを記述及び説明しているが、本願は適切な任意のI／Oインタフェースをも想定している。
【００４８】
特定の実施例において、通信インタフェース610は、コンピュータシステム600と1つ以上の他のコンピュータシステム600又は1つ以上のネットワークとの間の通信（例えば、パケット形式の通信）のための1つ以上のインタフェースを提供するハードウェア、ソフトウェア又はそれら双方を含む。非限定的な一例として、通信インタフェース610は、イーサーネット又は他の有線ネットワークと通信するためのネットワークインタフェースコントローラ（NIC）又はネットワークアダプタ、あるいはWi−Fiネットワークのような無線ネットワークと通信するための無線NIC（WNIC）又は無線アダプタを含んでいてもよい。本願は適切な任意のネットワーク及びそのための適切な任意の通信インタフェース610をも想定している。非限定的な一例として、コンピュータシステム600は、アドホックネットワーク、パーソナルエリアネットワーク（PAN）、ローカルエリアネットワーク（LAN）、広域ネットワーク（WAN）、メトロポリタンエリアネットワーク（MAN）、インターネットの一部分、又はそれらの2つ以上の組み合わせ等と通信してもよい。1つ以上のこれらのネットワークのうちの一部分は、有線でもよいし、無線でもよい。一例として、コンピュータシステム600は、無線PAN（WPAN）(例えば、BLUETOOTH  WPAN)、Wi−Fiネットワーク、Wi−MAXネットワーク、セルラ電話網（例えば、移動通信用グローバルシステム（GSM）ネットワーク）、その他の適切な任意の無線ネットワーク、又はそれらの2つ以上の組み合わせ等と通信してもよい。コンピュータシステム600は、必要に応じて、これらのネットワークの内の任意のものに対する適切な任意の通信インタフェース610を含む。通信インタフェース610は、必要に応じて、1つ以上の通信インタフェース610を含んでいてもよい。本願は特定の通信インタフェースを記述及び説明しているが、本願は適切な任意の通信インタフェースをも想定している。
【００４９】
特定の実施例において、バス612は、コンピュータシステム600の要素を互いに結合するハードウェア、ソフトウェア又は双方を含む。非限定的な一例として、バス612は、アクセラレーテッドグラフィックスポート（AGP）又はその他のグラフィックスバス、エンハンストインダストリスタンダードアーキテクチャ（EISA）バス、フロントサイドバス（FSB）、ハイパートラスポート（HYPERTRANSPORT：HT）相互接続、インダストリスタンダードアーキテクチャ（ISA）バス、インフィニバンド（INFINIBAND）相互接続、ローピンカウント（low−pin−count：LPC）バス、メモリバス、マイクロチャネルアーキテクチャ（MCA）バス、ペリフェラルコンポーネント相互接続（PCI）バス、PCIエクスプレス（PCI−X）バス、シリアルアドバンストテクノロジアタッチメント（SATA）バス、ビデオエレクトロニクススタンダードアソシエーションローカル（VLB）バス、その他の適切なバス、又はそれらの2つ以上の組み合わせを含んでもよい。バス612は必要に応じて1つ以上のバス612を含んでもよい。本願は特定のバスを記述及び説明しているが、本願は適切な如何なるバス又は相互接続をも想定している。
【００５０】
本願において、コンピュータ読取可能な媒体が示すものは、1つ以上の一時的なものではない有形のコンピュータ読取可能な記憶媒体処理構造を包含する。非限定的な一例として、コンピュータ読取可能な媒体は、必要に応じて、半導体集積回路又は他の集積回路（例えば、フィールドプログラマブルゲートアレイ（FPGA）又は特定用途向けIC（ASIC））、ハードディスク、HDD、ハイブリッドハードドライブ（HHD）、光ディスク、光ディスクドライブ（ODD）、磁気光ディスク、磁気光ドライブ、フロッピディスク、フロッピディスクドライブ（FDD）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（SSD）、RAMドライブ、セキュアディジタルカード、セキュアディジタルドライブ、その他の適切なコンピュータ読取可能な記憶媒体、又はそれらの2つ以上の組み合わせを含んでもよい。本願において、コンピュータ読取可能な記憶媒体が示すものは35U．S．C．§101により発明保護に適切でない媒体を排除する概念である。本願において、コンピュータ読取可能な記憶媒体が示すものは、35U．S．C．§101により発明保護に適切でない信号伝送における一時的な形態（例えば、伝搬する電気的又は電磁的な信号自体）を排除する概念である。
【００５１】
本願は適切な任意の記憶部を実現する1つ以上のコンピュータ読取可能な記憶媒体を想定している。特定の実施例において、コンピュータ読取可能な記憶媒体は、必要に応じて、プロセッサ602の1つ以上の部分（例えば、1つ以上の内部レジスタ又はキャッシュ）、メモリ604の1つ以上の部分、記憶部606の1つ以上の部分又はそれらの組み合わせを実現する。特定の実施例において、コンピュータ読取可能な記憶媒体は、RAM又はROMを実現する。特定の実施例において、コンピュータ読取可能な記憶媒体は揮発性又は永久メモリを実現する。特定の実施例において、1つ以上のコンピュータ読取可能な記憶媒体はソフトウェアと一体化されている。本願において、ソフトウェアを示すものは、1つ以上のアプリケーション、バイトコード、1つ以上のコンピュータプログラム、1つ以上の実行ファイル、1つ以上の命令、論理（ロジック）、マシンコード、1つ以上のスクリプト、ソースコード等を適切に包含する概念である。特定の実施例において、ソフトウェアは1つ以上のアプリケーションプログラミングインタフェース（API）を含む。本願は適切な任意のプログラミング言語又はプログラミング言語の組み合わせにより書かれた又は表現された適切な任意のソフトウェアをも想定している。特定の実施例において、ソフトウェアはソースコード又はオブジェクトコードとして表現される。特定の実施例において、ソフトウェアは、例えば、C、Perl又はそれらの適切な拡張版等のような上位レベルのプログラミング言語により表現される。特定の実施例において、ソフトウェアは、アセンブリ言語（又はマシンコード）等のような低位レベルのプログラミング言語により表現されてもよい。特定の実施例において、ソフトウェアはJAVAにより表現されている。特定の実施例において、ソフトウェアは、ハイパーテキストマークアップ言語（HTML）、拡張可能マークアップ言語（XML）又は他の適切なマークアップ言語で表現されている。
【００５２】
本願は説明された実施例に対する当業者が理解できる変更、置換、変形、代替及び修正の全てを包含する。同様に、添付の特許請求の範囲は、説明された実施例に対する当業者が理解できる変更、置換、変形、代替及び修正の全てを適切に包含する。
【００５３】
以下、開示される発明の実施形態を例示的に列挙する。
【００５４】
（付記1）
1つ以上のコンピュータ装置により使用される方法であって、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、方法。
【００５５】
（付記2）
【００５６】
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、付記1記載の方法。
【００５７】
（付記3）
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、付記1記載の方法。
【００５８】
（付記4）
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する付記1記載の方法。
【００５９】
（付記5）
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、付記1記載の方法。
【００６０】
（付記6）
ユースケースの前記一部分を用いて、ユーザインタフェース要素のマッピングツールをトレーニングするステップをさらに有し、前記ユーザインタフェース要素のマッピングツールは、第2のユーザインタラクティブソフトウェアアプリケーションの第2のユーザインタフェース要素と、第2のソフトウェアアプリケーションのソースコードの部分とを対応付ける、付記1記載の方法。
【００６１】
（付記7）
ソフトウェアアプリケーションの一群のテストケースの中から、前記一群のユースケースを抽出するステップをさらに有する、付記1記載の方法。
【００６２】
（付記8）
1つ以上のプロセッサにより実行可能な命令を有するメモリと、
前記メモリに結合され、前記命令を実行する1つ以上のプロセッサと
を有するシステムであって、前記命令は前記1つ以上のプロセッサに方法を実行させ、該方法は、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、システム。
【００６３】
（付記9）
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、付記8記載のシステム。
【００６４】
（付記10）
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、付記8記載のシステム。
【００６５】
（付記11）
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する付記8記載のシステム。
【００６６】
（付記12）
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、付記8記載のシステム。
【００６７】
（付記13）
ユースケースの前記一部分を用いて、ユーザインタフェース要素のマッピングツールをトレーニングするステップをさらに有し、前記ユーザインタフェース要素のマッピングツールは、第2のユーザインタラクティブソフトウェアアプリケーションの第2のユーザインタフェース要素と、第2のソフトウェアアプリケーションのソースコードの部分とを対応付ける、付記8記載のシステム。
【００６８】
（付記14）
ソフトウェアアプリケーションの一群のテストケースの中から、前記一群のユースケースを抽出するステップをさらに有する、付記8記載のシステム。
【００６９】
（付記15）
1つ以上のコンピュータ装置に方法を実行させるソフトウェアを有する1つ以上のコンピュータ読取可能な一時的なものではない記憶媒体であって、
ソフトウェアアプリケーションの一群のユースケースにアクセスするステップと、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択するステップと
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、記憶媒体。
【００７０】
（付記16）
ユースケースの前記一部分は、前記一群のユースケースから選択される全ての可能なユースケースの一部分の中で、最良の良好度対コストの比率を有する、付記15記載の記憶媒体。
【００７１】
（付記17）
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出する際に、
ユースケースの前記一部分に属するユースケースの固有のペアについて、ユーザインタフェース要素に関するユースケースのペアの間の第1の距離を算出し、該第1の距離は、前記ユーザインタフェース要素について行うユーザアクションに関し、ユースケースの該ペアにおけるユーザアクション同士の間の相違を示し、
前記第1の距離の総和である第2の距離を算出し、
前記第2の距離に基づいて前記第1の良好度を算出する、付記15記載の記憶媒体。
【００７２】
（付記18）
ユースケースの前記一部分を選択する前記ステップが、
前記一群のユースケースの中で、少なくとも1つの前記ユーザインタフェース要素を固有に使用するユーザアクションを有するユースケースのみ、又はユーザアクション及びユーザインタフェース要素の少なくとも1つの固有の組み合わせをなすユースケースのみに該当する全てのユースケースを、前記一群のユースケースの中から選択し、
選択したユースケースをユースケースの前記一部分に含め、
ユースケースの前記一部分に含めたユースケースに基づいて、ユースケースの前記一部分に対する前記良好度対コストの比率を算出し、
前記一群のユースケース内に残っている1つ以上のユースケースの名から、ユースケースの一部分に対する良好度対コストの比率を最大限増やすユースケースを選択し、選択したユースケースをユースケースの一部分に含めることを、ユースケースの一部分に追加的なユースケースを含めてもユースケースの一部分に対する良好度対コストの比率がもはや増加しなくなるまで反復的に実行するステップ
を有する付記15記載の記憶媒体。
【００７３】
（付記19）
ユースケースの前記一部分を選択する前記ステップにおいて、ブランチアンドバウンドアルゴリズムを利用して、前記一群のユースケースのうちの全ての可能な一部分の中で、最良の良好度対コストの比率をもたらすユースケースの一部分を特定することを反復的に行う、付記15記載の記憶媒体。
【００７４】
（付記20）
ユースケースの前記一部分を用いて、ユーザインタフェース要素のマッピングツールをトレーニングするステップをさらに有し、前記ユーザインタフェース要素のマッピングツールは、第2のユーザインタラクティブソフトウェアアプリケーションの第2のユーザインタフェース要素と、第2のソフトウェアアプリケーションのソースコードの部分とを対応付ける、付記15記載の記憶媒体。
【００７５】
（付記21）
ソフトウェアアプリケーションの一群のテストケースの中から、前記一群のユースケースを抽出するステップをさらに有する、付記15記載の記憶媒体。
【００７６】
（付記22）
ソフトウェアアプリケーションの一群のユースケースにアクセスする手段と、
前記一群のユースケースから、良好度対コストの比率が所定の条件を満たすユースケースの一部分を選択する手段と
を有し、前記ソフトウェアアプリケーションは、該ソフトウェアアプリケーションのユーザが該ソフトウェアアプリケーションとやり取りできるようにする1つ以上のユーザインタフェース要素を有し、
前記一群のユースケースに属するユースケースの各々は、前記ユーザインタフェース要素のうちの特定のものについて行われる1つ以上のユーザアクションを含み、
前記ユーザアクションの各々は該ユーザアクションを実行することに関する第1のコストに関連付けられ、
ユースケースの前記一部分に対する前記良好度対コストの比率を算出する際、
ユースケースの前記一部分に属するユースケース各々について、ユースケースのユーザアクションに関する前記第1のコストの総和である第2のコストを算出し、
前記第2のコストの総和である第3のコストを算出し、
ユースケースの前記一部分に属する少なくとも1つのユースケースにおける少なくとも1つのユーザアクションにより使用されるユーザインタフェース要素の各々について、ユースケースの前記一部分がユーザインタフェース要素についてもたらすユーザアクションカバレッジのレベルを示す第1の良好度を算出し、
前記第1の良好度の総和である第2の良好度を算出し、
前記第2の良好度と前記第3のコストとの比率である前記良好度対コストの比率を算出する、システム。
【符号の説明】
【００７７】
100  表示
102  パネル
104  フレーム
106、108、110  テキストフィールド
112、114  ボタン
116  ウィンドウ
【図１】
2011248893.tif 000020
【図２】
2011248893.tif 000021
【図３】
2011248893.tif 000022
【図４】
2011248893.tif 000023
【図５】
2011248893.tif 000024
【図６】
2011248893.tif 000025