(57)【特許請求の範囲】
【請求項１】
ソフトウェア問題報告を管理するためのコンピュータ実装されたシステムであって：
１つまたは複数のコンピュータプロセッサと；
前記コンピュータプロセッサによってアクセス可能であり、前記１つまたは複数のコンピュータプロセッサによって実行される時、
多数の異なる開発者組織からの複数のソフトウェアアプリケーション開発者を登録するように構成された登録サブシステムと；
前記複数のソフトウェアアプリケーション開発者からのオンラインアプリケーションストアに提供された複数のアプリケーションを、コンピュータサーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへの分散に利用可能にする前記オンラインアプリケーションストアであって、前記複数のユーザおよび前記多数の異なる開発者組織は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記オンラインアプリケーションストアと；
前記オンラインアプリケーションストアを使用して分散された前記複数のアプリケーションのアプリケーションに関する問題の報告を受信するように、前記問題に関するデータを受信するように、および前記複数のアプリケーションのうち特定のアプリケーションまたは前記特定のアプリケーションのうち特定のソフトウェアアプリケーション開発者に前記データを関連付けるように、プログラムされたアプリケーションバグ追跡装置と；
前記問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すか否かを判断するために、多数のアプリケーションにわたる問題の報告を分析するようにプログラムされたバグ分析装置と；
前記複数のアプリケーションのうち１つまたは複数のアプリケーションを提供したソフトウェアアプリケーション開発者に対する１つまたは複数の問題報告を生成するための報告生成装置であって、前記１つまたは複数の問題報告は、前記ソフトウェアアプリケーション開発者によって前記オンラインアプリケーションストアへ提供された、前記１つまたは複数のアプリケーションの、特定のアプリケーションに関する問題に関する前記データについての情報を含む、報告生成装置と；
を実装する命令を格納する１つまたは複数のコンピュータ読取可能なデバイスと；
を具備することを特徴とするシステム。
【請求項２】
ソフトウェア問題報告を管理するためのコンピュータ実装されたシステムであって：
１つまたは複数のコンピュータプロセッサと；
前記コンピュータプロセッサによってアクセス可能であり、前記１つまたは複数のコンピュータプロセッサによって実行される時、
多数の異なる開発者組織からの複数のソフトウェアアプリケーション開発者を登録するように構成された登録サブシステムと；
前記複数のソフトウェアアプリケーション開発者からのオンラインアプリケーションストアに提供された複数のアプリケーションを、コンピュータサーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへの分散に利用可能にする前記オンラインアプリケーションストアであって、前記複数のユーザおよび前記多数の異なる開発者組織は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記オンラインアプリケーションストアと；
前記オンラインアプリケーションストアを使用して分散された前記複数のアプリケーションのアプリケーションに関する問題の報告を受信するように、前記問題に関するデータを受信するように、および前記複数のアプリケーションのうち特定のアプリケーションまたは前記特定のアプリケーションのうち特定のソフトウェアアプリケーション開発者に前記データを関連付けるように、プログラムされたアプリケーションバグ追跡装置と；
前記複数のアプリケーションのうち１つまたは複数のアプリケーションを提供したソフトウェアアプリケーション開発者に対する１つまたは複数の問題報告を生成するための報告生成装置であって、前記１つまたは複数の問題報告は、前記ソフトウェアアプリケーション開発者によって前記オンラインアプリケーションストアへ提供された、前記１つまたは複数のアプリケーションの、特定のアプリケーションに関する問題に関する前記データについての情報を含む、報告生成装置と；
を実装する命令を格納する１つまたは複数のコンピュータ読取可能なデバイスと；
を具備し、
前記システムは、前記開発者が取得する権利を有する前記特定のアプリケーションのユーザに関する情報がどれくらいあるのか判断する信用レベルに基づき、前記開発者に提供される情報を制限するように構成されることを特徴とするシステム。
【請求項３】
ソフトウェア問題報告を管理するためのコンピュータ実装されたシステムであって：
１つまたは複数のコンピュータプロセッサと；
前記コンピュータプロセッサによってアクセス可能であり、前記１つまたは複数のコンピュータプロセッサによって実行される時、
多数の異なる開発者組織からの複数のソフトウェアアプリケーション開発者を登録するように構成された登録サブシステムと；
前記複数のソフトウェアアプリケーション開発者からのオンラインアプリケーションストアに提供された複数のアプリケーションを、コンピュータサーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへの分散に利用可能にする前記オンラインアプリケーションストアであって、前記複数のユーザおよび前記多数の異なる開発者組織は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記オンラインアプリケーションストアと；
前記オンラインアプリケーションストアを使用して分散された前記複数のアプリケーションのアプリケーションに関する問題の報告を受信するように、前記問題に関するデータを受信するように、および前記複数のアプリケーションのうち特定のアプリケーションまたは前記特定のアプリケーションのうち特定のソフトウェアアプリケーション開発者に前記データを関連付けるように、プログラムされたアプリケーションバグ追跡装置と；
前記複数のアプリケーションのうち１つまたは複数のアプリケーションを提供したソフトウェアアプリケーション開発者に対する１つまたは複数の問題報告を生成するための報告生成装置であって、前記１つまたは複数の問題報告は、前記ソフトウェアアプリケーション開発者によって前記オンラインアプリケーションストアへ提供された、前記１つまたは複数のアプリケーションの、特定のアプリケーションに関する問題に関する前記データについての情報を含む、報告生成装置と；
を実装する命令を格納する１つまたは複数のコンピュータ読取可能なデバイスと；
を具備し、
前記システムは、前記開発者が、特定の問題が生じたデバイスに関するオペレーティングシステムを管理する組織からのコアアプリケーションの開発者であるか否かに基づき、前記開発者に提供される情報を制限するようにプログラムされることを特徴とするシステム。
【請求項４】
ソフトウェア問題報告を管理するためのコンピュータ実装されたシステムであって：
１つまたは複数のコンピュータプロセッサと；
前記コンピュータプロセッサによってアクセス可能であり、前記１つまたは複数のコンピュータプロセッサによって実行される時、
多数の異なる開発者組織からの複数のソフトウェアアプリケーション開発者を登録するように構成された登録サブシステムと；
前記複数のソフトウェアアプリケーション開発者からのオンラインアプリケーションストアに提供された複数のアプリケーションを、コンピュータサーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへの分散に利用可能にする前記オンラインアプリケーションストアであって、前記複数のユーザおよび前記多数の異なる開発者組織は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記オンラインアプリケーションストアと；
前記オンラインアプリケーションストアを使用して分散された前記複数のアプリケーションのアプリケーションに関する問題の報告を受信するように、前記問題に関するデータを受信するように、および前記複数のアプリケーションのうち特定のアプリケーションまたは前記特定のアプリケーションのうち特定のソフトウェアアプリケーション開発者に前記データを関連付けるように、プログラムされたアプリケーションバグ追跡装置と；
前記複数のアプリケーションのうち１つまたは複数のアプリケーションを提供したソフトウェアアプリケーション開発者に対する１つまたは複数の問題報告を生成するための報告生成装置であって、前記１つまたは複数の問題報告は、前記ソフトウェアアプリケーション開発者によって前記オンラインアプリケーションストアへ提供された、前記１つまたは複数のアプリケーションの、特定のアプリケーションに関する問題に関する前記データについての情報を含む、報告生成装置と；
を実装する命令を格納する１つまたは複数のコンピュータ読取可能なデバイスと；
を具備し、
前記システムは、特定の問題が生じたデバイスに関するデバイスタイプおよびオペレーティングシステム識別子を示す情報を、問題報告で提供するように構成されることを特徴とするシステム。
【請求項５】
前記問題は、アプリケーションクラッシュ、アプリケーションフリーズ、過度のバッテリ使用、および手動で起動されたコンピューティングデバイスユーザコメントのうち少なくとも１つを含むことを特徴とする請求項１〜４の何れか一項に記載のシステム。
【請求項６】
前記バグ分析装置は、特定のデバイスモデルまたはオペレーティングシステムバージョンに関して統計的に比較的高い報告頻度で判断することによって、問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すことを判断することを特徴とする請求項１に記載のシステム。
【請求項７】
前記システムは、問題のタイプに従って問題に関する情報をグループ化するように構成されることを特徴とする請求項１〜４の何れか一項に記載のシステム。
【請求項８】
開発者からのアプリケーションのアップロードを受け入れ、前記アップロードされたアプリケーションの各アプリケーションと前記アプリケーションがアップロードされた開発者アカウントとを関連付ける開発者アップロードインタフェースをさらに具備することを特徴とする請求項１〜４の何れか一項に記載のシステム。
【請求項９】
前記システムは、前記開発者に関して異なるバグが生じる割合から判断される深刻度レベルによってソートされたバグを前記開発者に提示するようにプログラムされることを特徴とする請求項１〜４の何れか一項に記載のシステム。
【請求項１０】
ソフトウェア問題報告を管理するためのコンピュータ実装された方法であって：
中央サーバシステム上で動作するオンラインアプリケーションストアから、前記中央サーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへ、複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すか否かを判断するために、多数のアプリケーションにわたる問題の報告を分析する段階と；
前記複数のコンピューティングデバイスの１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバシステムで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションに、前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告を関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
１人または複数人の特定のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備することを特徴とするコンピュータ実装された方法。
【請求項１１】
ソフトウェア問題報告を管理するためのコンピュータ実装された方法であって：
中央サーバシステム上で動作するオンラインアプリケーションストアから、前記中央サーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへ、複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスの１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバシステムで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションに、前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告を関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
１人または複数人の特定のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備し、
前記開発者が取得する権利を有する前記特定のアプリケーションのユーザに関する情報がどれくらいあるのか判断する信用レベルに基づき、前記開発者に提供される情報が制限されることを特徴とするコンピュータ実装された方法。
【請求項１２】
ソフトウェア問題報告を管理するためのコンピュータ実装された方法であって：
中央サーバシステム上で動作するオンラインアプリケーションストアから、前記中央サーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへ、複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスの１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバシステムで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションに、前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告を関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
１人または複数人の特定のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備し、
前記開発者が、特定の問題が生じたデバイスに関するオペレーティングシステムを管理する組織からのコアアプリケーションの開発者であるか否かに基づき、前記開発者に提供される情報が制限されることを特徴とするコンピュータ実装された方法。
【請求項１３】
ソフトウェア問題報告を管理するためのコンピュータ実装された方法であって：
中央サーバシステム上で動作するオンラインアプリケーションストアから、前記中央サーバシステムから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスへ、複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスの１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバシステムで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションに、前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告を関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
１人または複数人の特定のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備し、
特定の問題が生じたデバイスに関するデバイスタイプおよびオペレーティングシステム識別子を示す情報が、問題報告で提供されることを特徴とするコンピュータ実装された方法。
【請求項１４】
前記複数のソフトウェアアプリケーション問題報告は、フリーズ、クラッシュ、およびユーザ生成されたコメントのうち少なくとも１つに関する報告を具備することを特徴とする請求項１０〜１３の何れか一項に記載のコンピュータ実装された方法。
【請求項１５】
前記複数のソフトウェアアプリケーション問題報告は、特定の問題報告を生成したデバイスに対するトレースデータ、および前記デバイスの構成に関する情報を含むことを特徴とする請求項１０〜１３の何れか一項に記載のコンピュータ実装された方法。
【請求項１６】
前記複数のソフトウェア開発者からのソフトウェアアプリケーションアップロードを受信し、前記アプリケーションに関する開発者アカウントに各アップロードされたアプリケーションを関連付け、前記アップロードされたアプリケーションの特定の１つと受信した問題報告とを関連付けることをさらに具備することを特徴とする請求項１０〜１３の何れか一項に記載のコンピュータ実装された方法。
【請求項１７】
命令を記録する１つまたは複数の有形で非一時的な記録可能なメディアであって、１つまたは複数のプロセッサによって実行される時：
中央サーバ上で動作するオンラインアプリケーションストアから、前記中央サーバから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスに複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスのうち１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバで受信する段階と；
前記問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すか否かを判断するために、多数のアプリケーションにわたる問題の報告を分析する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションと前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告とを関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
前記複数のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備する動作を前記プロセッサに実行させることを特徴とする有形で非一時的なメディア。
【請求項１８】
命令を記録する１つまたは複数の有形で非一時的な記録可能なメディアであって、１つまたは複数のプロセッサによって実行される時：
中央サーバ上で動作するオンラインアプリケーションストアから、前記中央サーバから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスに複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスのうち１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションと前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告とを関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
前記複数のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備する動作を前記プロセッサに実行させ、
前記開発者が取得する権利を有する前記特定のアプリケーションのユーザに関する情報がどれくらいあるのか判断する信用レベルに基づき、前記開発者に提供される情報が制限されることを特徴とする有形で非一時的なメディア。
【請求項１９】
命令を記録する１つまたは複数の有形で非一時的な記録可能なメディアであって、１つまたは複数のプロセッサによって実行される時：
中央サーバ上で動作するオンラインアプリケーションストアから、前記中央サーバから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスに複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスのうち１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションと前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告とを関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
前記複数のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備する動作を前記プロセッサに実行させ、
前記開発者が、特定の問題が生じたデバイスに関するオペレーティングシステムを管理する組織からのコアアプリケーションの開発者であるか否かに基づき、前記開発者に提供される情報が制限されることを特徴とする有形で非一時的なメディア。
【請求項２０】
命令を記録する１つまたは複数の有形で非一時的な記録可能なメディアであって、１つまたは複数のプロセッサによって実行される時：
中央サーバ上で動作するオンラインアプリケーションストアから、前記中央サーバから遠隔にあって複数のユーザに関連付けられる複数のコンピューティングデバイスに複数のソフトウェアアプリケーションを分散する段階であって、前記複数のソフトウェアアプリケーションは、複数のソフトウェア開発者によって前記オンラインアプリケーションストアからの分散のために提供され、前記複数のユーザおよび前記複数のソフトウェア開発者は、互いに独立し、前記オンラインアプリケーションストアを経営する組織から独立している、前記分散する段階と；
前記複数のコンピューティングデバイスのうち１つまたは複数の特定のコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を前記中央サーバで受信する段階と；
前記複数のソフトウェアアプリケーションのうち特定のソフトウェアアプリケーションと前記複数のソフトウェアアプリケーション問題報告のうち特定のソフトウェアアプリケーション問題報告とを関連付ける段階と；
前記複数のソフトウェア開発者のうち特定のソフトウェア開発者から識別情報を受信する段階と；
前記特定のソフトウェア開発者からの前記識別情報の受信に応じて、前記特定のソフトウェア開発者の各アカウントに対して、前記特定のソフトウェア開発者によって提供された前記オンラインアプリケーションストアによって分散されたアプリケーションを関連付ける段階と；
前記複数のソフトウェア開発者によって提供された各ソフトウェアアプリケーションに関連付けられた１つまたは複数のソフトウェアアプリケーション問題報告を記述する情報を、前記特定のソフトウェア開発者の１人または複数人に提供する段階と；
を具備する動作を前記プロセッサに実行させ、
特定の問題が生じたデバイスに関するデバイスタイプおよびオペレーティングシステム識別子を示す情報が、問題報告で提供されることを特徴とする有形で非一時的なメディア。
【請求項２１】
前記複数のソフトウェアアプリケーション問題報告は、フリーズ、クラッシュ、およびユーザ生成されたコメントのうち少なくとも１つに関する報告を具備することを特徴とする請求項１７〜２０の何れか一項に記載の有形で非一時的なメディア。
【請求項２２】
前記複数のソフトウェアアプリケーション問題報告は、特定の問題報告を生成したデバイスに対するトレースデータ、および前記デバイスの構成に関する情報を含むことを特徴とする請求項１７〜２０の何れか一項に記載の有形で非一時的なメディア。
【請求項２３】
前記動作は、前記複数のソフトウェア開発者からのソフトウェアアプリケーションアップロードを受信し、前記アプリケーションに関する開発者アカウントと各アップロードされたアプリケーションとを関連付け、前記アップロードされたアプリケーションの特定の１つと受信した問題報告とを関連付けることをさらに具備することを特徴とする請求項１７〜２０の何れか一項に記載の有形で非一時的なメディア。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２０１０年５月１９日に出願された米国仮出願シリアルＮｏ．６１／３４６４５３、発明の名称が“バグクリアリングハウス”の優先権を主張し、その全内容が参照によってここに組み込まれる。
【０００２】
この出願は、ソフトウェアアプリケーションに対する問題に関する情報の管理および分散に関する。
【背景技術】
【０００３】
ソフトウェア開発は、困難なビジネスである。将来のソフトウェア開発者は先ず、ソフトウェアのアーキテクチャリングおよびプログラミングについて訓練する必要がある。その後、絶え間なく変わるプログラミング言語および技術を最新のものに維持する必要がある。そして、アイデアを有する必要がある。開発者は次いで、対象のコンピューティングプラットフォーム上で利用可能なリソース内で、および自分の時間ないしは資金的制約内で、プログラミングを介してどのようにアイデアを実装するかを考え出す必要がある。また、異なる設定でプログラムを人々に対して検証して、プログラムのバグを修正するように訂正を行う必要がある。次いで、開発者はどのように、ソフトウェアの値段を付けて、分散（distribute）して、人々にその興味を持たせるかを考え出す必要がある。
【０００４】
高度なプログラミング環境は、これらの問題の一部を解決するのに役立ち、即ち組織を設立し、コードのタイピングをより自動化することである。また、スマートフォンおよびネットブックのようなワイヤレスコンピューティングデバイスに関するオンラインアプリケーションストアの最近の到来は、規模の小さい開発者にとってより簡単にソフトウェアを市場に出して販売することを可能にした。これらの開発の両方によって、ソフトウェア開発者およびそのソフトウェアを購入する人々の生活をより良いものにした。一方で、ソフトウェア開発者の生活が辛い一面もある。例えば、プログラムのユーザからフィードバックを取得して、効果的な方法でそのフィードバックを分析するのが困難なことがある。例えば、多数の開発者は、消費者がフィードバックを提供できるアプリケーションを電子メールリンクに提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本明細書は、ソフトウェア開発者に対して、特にスマートフォン等のワイヤレス携帯コンピューティングデバイスのユーザのための第三者オンラインアプリケーションストアを介してアプリケーションを販売および分散するソフトウェア開発者に対して、問題、即ちバグの報告を管理するためのシステムおよび技法を検討する。例えば、開発者は、一般のアプリケーションストアを提供するシステムで登録される個人のプログラマでもよく、それにより開発者は、全て精通した周知の方法で、アプリケーションストアから購入を行うために登録されている一般のメンバーに対するアプリケーションの分散のために、アプリケーションストアにアプリケーションをアップロードできる。特定のソフトウェアアプリケーション、および／または１つまたは複数の携帯コンピューティングデバイス上で実行するオペレーティングシステムは、問題、即ちバグ（例えば、アプリケーションクラッシュまたはフリーズ、過度の電力消費量、またはデバイスのユーザがアプリケーションを改善するための問題またはアイデアを手動で報告すること）がある時、情報を収集するようにプログラムされてもよく、アプリケーションストアに関連付けられ、アプリケーションストアを経営する同一の組織によって経営される報告サブシステムに、問題に関するデータを送信してもよい。
【０００６】
報告サブシステムは、（デバイスによって自動的に生成されるか、またはデバイスのユーザによって手動で生成される）そのような入力バグ報告の提供の各々を、問題の対象になったコンピュータアプリケーション（例えば、開かれたアプリケーションおよび／またはフリーズまたはクラッシュが生じた時のオペレーティングシステムの焦点）に関連付けることができ、問題を特徴付ける情報を格納できる。情報は、アプリケーションに対して、および拡張によりアプリケーションの開発者に対して関連付けられるような方法で格納されてもよい。開発者（アプリケーションストアにソフトウェアを提供した個人またはその個人のエージェントでもよい）は、次にシステムにログオンする時、開発者は、自分がアップロードしたソフトウェアアプリケーションに関する報告を引き出すことができ、ここで報告は、そのようなソフトウェアアプリケーションの各々に関する全ての報告された問題に対する全データを集約し、またアプリケーションに関する問題の種類および程度を示す。
【０００７】
そのような報告は、例えば携帯コンピューティングデバイスが問題を経験して対応するデータを生成したユーザに関するプライバシーを維持するために、報告サブシステムによってそこから除去された特定の情報を有することがある。サブシステムによって開発者に提供される情報のレベルはまた、サブシステムが開発者に対して有する信用のレベルに依存することができる。また、ユーザは、共有されうる情報のレベルに関して通知されてもよく、そのような情報の使用を許可または不許可するかを選択してもよい。
【０００８】
報告は、アプリケーションまたは複数のアプリケーションに関する問題の発生の頻度を示す要約報告、アプリケーションに関する特定タイプの全問題をリストし、問題（例えば、どのコード部分に問題が生じたか）を記述するデータを提供するエラー報告、および問題がデバイス上で生じた時に各コンピューティングデバイスの状態に関する情報を示すスタックトレース等、各種精通した形式を取ってもよい。
【０００９】
また、システムは、多数のアプリケーションにわたって第三者プロバイダにより広く役立つデータを生成してもよい。例えば、アプリケーションストアを経営する組織は、アプリケーションストアにアクセスする携帯デバイスにオペレーティングシステムを提供し、多数のアプリケーションに関する問題データは、各種方法で“ロールアップ（roll  up）”されて集約データおよび結果報告を生成し、オペレーティングシステムに関する問題があるかを判断してもよい。例えば、そのようなデータは、特定のオペレーティングシステムまたはインタフェースにアクセスする時に多数の異なるアプリケーションがフリーズを経験していることを示す場合、第三者プロバイダは、サービスまたはインタフェースに関するコードに問題の可能性があることを警告されうる。
【００１０】
そのようなシステムおよび技法は、特定の実施形態で１つまたは複数の利点を提供しうる。例えば、開発者は、単に特定の開発環境を使用して、自分の持つバグ追跡システムを設定する高度な会社にのみ利用可能な診断機能を備えてよい。デバイスのユーザは、各種開発者から改善されたアプリケーションを受信でき、多数の異なる開発者からの多数の異なるアプリケーションにわたって一貫している都合の良い方法でバグ報告を可能にする。そしてオペレーティングシステムおよび／または関連アプリケーションストアのようなプラットフォームのプロバイダは、開発者およびデバイスのユーザに対するそのプラットフォームの望ましさ（desirability）を改善しうる。
【００１１】
１つの実施形態では、ソフトウェア問題報告を管理するためのコンピュータ実装されたシステムが検討される。システムは、多数の異なる開発者組織からのソフトウェア開発者を登録するために登録サブシステムを含む。システムはまた、複数のアプリケーション開発者からの複数のアプリケーションを一般のメンバーが獲得できるようにするアプリケーションストアを含む。システムはまた、アプリケーションストアを使用して分散されたアプリケーションに関する問題の報告を受信し、問題に関するデータを受信し、特定の開発者または特定のアプリケーションの開発者にデータを関連付けるようにプログラムされたアプリケーションバグ追跡装置を含む。また、システムは、１つまたは複数のアプリケーションを提供した開発者に関する１つまたは複数の問題報告を生成するために報告生成装置を含み、問題報告は、開発者によってアプリケーションストアに提供された特定のアプリケーションに関する問題に関するデータについての情報を含む。
【００１２】
実施形態は、以下の特徴の全てを含むかまたは含まなくてもよい。問題の報告は、アプリケーションクラッシュ、アプリケーションフリーズ、過度のバッテリ使用、および手動で起動されたコンピューティングデバイスのユーザコメントからなるグループから選択された問題を含むことができる。システムはまた、問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すか否かを特定するために多数のアプリケーションにわたって問題の報告を分析するようにプログラムされたバグ分析装置を含むことができる。バグ分析装置はまた、特定のデバイスモデルまたはオペレーティングシステムバージョンに関して統計的に比較的高い報告頻度を特定することによって、問題の報告が特定のコンピューティングデバイスモデルまたはコンピュータオペレーティングシステムに関する問題を示すことを特定できる。システムは、開発者が取得する権利を有する特定のアプリケーションのユーザに関する情報がどれくらいあるかを特定する信用レベルに基づき、開発者に提供される情報を制限するように配列されうる。システムはまた、開発者が、特定の問題が生じた装置に対するオペレーティングシステムを管理する組織からのコアアプリケーションの開発者であるか否かに基づき、開発者に提供される情報を制限するようにプログラムされうる。
【００１３】
また、システムは、問題のタイプに従って、問題に関する情報をグループ化するように配列されうる。システムは、特定の問題が生じたデバイスに対するオペレーティングシステム識別子およびデバイスタイプを示す情報を提供するように配列されうる。システムはまた、開発者からのアプリケーションのアップロードを受け入れ、アプリケーションがアップロードされた開発者アカウントに各アプリケーションを関連付ける、開発者アップロードインタフェースを含みうる。システムは、特定の開発者に対する異なるバグの割合から判断される深刻レベルによってソートされるバグを、開発者に提供するようにプログラムされうる。
【００１４】
１つの局面では、ソフトウェア問題を管理するためのコンピュータ実装された方法は、中央サーバシステムから離れた複数の異なるコンピューティングデバイスから複数のソフトウェアアプリケーション問題報告を中央サーバシステムで受信することを含む。システムはまた、特定のソフトウェア開発者によって提供された特定のアプリケーションに、問題報告の特定の１つを関連付けることを含む。また、システムは、特定の開発者の１人から識別情報を受信することを含む。システムはまた、識別情報の受信に応じて、１人の開発者によって中央サーバシステムで管理される特定のアプリケーションに関する問題報告を記述する情報を、特定の開発者の１人に提供することを含む。
【００１５】
実施形態は、以下の特徴の全てを含むか、または含まなくてもよい。ソフトウェアアプリケーション問題報告は、フリーズ、クラッシュ、およびユーザにより生成されたコメントに関する報告を含みうる。また、ソフトウェアアプリケーション問題報告は、特定の問題報告を生成したデバイスに関するトレースデータ、およびデバイスの構成に関する情報を含みうる。システムはまた、複数のソフトウェア開発者からソフトウェアアプリケーションアップロードを受信し、アプリケーションに関する開発者アカウントに各アプリケーションを関連付けることを含みうる。
【図面の簡単な説明】
【００１６】
【図１Ａ】図１Ａは、多数の開発者からのソフトウェアを分散し、ソフトウェアの動作に関する情報を集めるためのシステム１００を示す概念図である。
【図１Ｂ】図１Ｂは、ソフトウェアアプリケーションの動作上のフィードバックを提供するための動作を示すフロー図である。
【図２】図２は、それらデバイス上のソフトウェアアプリケーションの動作に関するコンピューティングデバイスからの提供を追跡するためのシステム２００の概略図である。
【図３】図３は、ソフトウェア問題報告を管理するためのプロセスのフローチャートである。
【図４】図４は、多数の開発者からのソフトウェアに関する問題の提供を管理するためのプロセスのスイムレーン図である。
【図５Ａ】図５Ａは、ソフトウェアアプリケーションに関して動作上の問題を受けた携帯コンピューティングデバイスの例示的なスクリーンショットである。
【図５Ｂ】図５Ｂは、ソフトウェアアプリケーションに関して動作上の問題を受けた携帯コンピューティングデバイスの例示的なスクリーンショットである。
【図６Ａ】図６Ａは、ソフトウェア追跡システムによって生成される開発者報告の例示的なスクリーンショットである。
【図６Ｂ】図６Ｂは、ソフトウェア追跡システムによって生成される開発者報告の例示的なスクリーンショットである。
【図６Ｃ】図６Ｃは、ソフトウェア追跡システムによって生成される開発者報告の例示的なスクリーンショットである。
【図７】図７は、包括的なコンピュータデバイス７００および包括的な携帯コンピュータデバイス７５０の例を示す。
【発明を実施するための形態】
【００１７】
本明細書は、ソフトウェアアプリケーションの動作上のフィードバックを提供するために使用されうる各種技術および技法を開示する。具体的な例では、互いに独立している（例えば、同じ会社で働いていない、同じドメインから働いていない、または共通のソフトウェア開発システムを共有していない）ソフトウェア開発者の分散したグループは、コンピューティングデバイスの各種ユーザがアプリケーションをレビューおよびダウンロードし、しばしばアプリケーションを購入またはライセンスの料金を払うことができる（各開発者が支払いの割り当てを受け取る）アプリケーションストアにそのソフトウェアアプリケーションをアップロードすることがある。デバイス上のオペレーティングシステムは、スタックトレースを維持し、そのような情報を、デバイスに問題、即ちバグがある時、中央サーバシステムにそのような情報を報告することを含む、デバイス上の問題の一般的なエラー処理を実行することができる。そのような情報は、改善策を取ることができ、関連するソフトウェアコードが訂正および更新できるように、問題の原因を診断しようと試みる訓練された個人によって共通に使用される。
【００１８】
ここに開示される例では、各種コンピューティングデバイスから提供されるデータの一部はまた、問題を起こしたか、または問題が生じた時にアクティブだったコードを提供した開発者がレビューできるように作成されうる。そのような動作は、問題が生じた時に関連するアプリケーションまたは複数のアプリケーションを特定し、問題に関する情報をアプリケーションまたは複数のアプリケーションを特定する情報とともに、中央サーバシステムに提供するオペレーティングシステムによって生じうる。中央サーバシステムは次いで、ソフトウェアアプリケーション識別子に関連してデータを格納でき、そのような識別子はまた、アプリケーションの開発者を特定するために使用されうる。（アプリケーションストアまたはオペレーティングシステムの経営者と比較して全く異なる個人または組織でありうる）そのような開発者がシステムにログインし、自分のコードに関する問題の報告を要求する時、システムは、問題データが格納されているデータベースに問合せて特定の開発者に関する全データを発見し、各種方法でデータをフィルタ処理してグループ化する１つまたは複数の報告を生成できる。一例として、個人的に特定可能な情報は、報告に提供されるデータから除去されうるか、または曖昧(obscure)にされうる。また、データは、各アプリケーションに従って格納できるので、開発者は、多数のそのようなアプリケーションを有する場合に、自分の各アプリケーションの相対的な動作に関する理解を素早く得ることができる。
【００１９】
図１Ａは、多数の開発者からのソフトウェアを分散し、ソフトウェアの動作に関する情報を集めるためのシステム１００を示す概念図である。一般に、システム１００は、開発者のグループとユーザのグループ（勿論、開発者の一部がユーザでもよく、その逆でもよい）との間に位置する中央サーバシステムを含む。中央サーバシステムは、開発者からソフトウェアコードアップロードを受信し、ユーザにコードダウンロードを提供し、ユーザからエラーまたは問題データを受信し、開発者への提示のためにそのようなデータをフィルタ処理および整理（organize）する。
【００２０】
図をさらに詳細に参照すると、中央サーバシステムは、アプリケーションセンター１０２の形式でここに示される。アプリケーションセンター１０２は、ユーザセンター１０８および開発者センター１１０をなす物理的構成要素および論理的構成要素を含む。そのような構成要素は例えば、それぞれユーザおよび開発者にサービスを提供するためのユーザインタフェースを生成するフロントエンドまたはウェブサーバを含むことができる。ユーザセンター１０８はこの例では、アプリケーションセンター１０２の経営者によって開発された特定のソフトウェアオペレーティングシステムを動作させる携帯電話またはアプリケーション電話（app  phone）を獲得しているそれぞれ個人であるユーザ１０４と通信する。オペレーティングシステムを備えた全サービスの一部として、経営者は、携帯デバイスに関するソフトウェアアプリケーションのレビューおよび購入にアプリケーションセンター１０２が利用できるようにする。故に例えば、ユーザＡ（例えば、１０代）は、複数のビデオゲームをダウンロードした可能性があり、ユーザＢ（例えば、女性社員）は、ホストされたクラウドベースのコンピューティングプラットフォームを利用する各種ビジネスアプリケーションをダウンロードした可能性があり、ユーザＣ（例えば、大学生）は、（複数の電子書籍教科書と共に）電子書籍リーダアプリケーションおよび各種テスト準備アプリケーションを、数学モデル化アプリケーションと共にダウンロードした可能性がある。各状況では、関連するユーザは、（自分の電話と共に出荷されたアプリケーションを補足しうる）自分のダウンロードしたアプリケーションの各々を立ち上げ、類似の方法でそれと対話しうる。ユーザはまた、必要が生じる時、追加アプリケーションを発見してダウンロードするために、アプリケーションセンター１０２を再訪問することができる。
【００２１】
時々、問題は、ユーザの１０４デバイスの各々上で生じることがある。例えば、ユーザは、複数のアプリケーションを同時に動作していることがあり、アプリケーションの１つにクラッシュを引起こすメモリオーバフロー条件を作り出すことがある。代わりに、アプリケーションは、それを閉じさせる動作を実行することにより、ユーザは、アプリケーションが実行しているプロセスを終了する必要がある。代わりに、デバイスのユーザは、問題提供プロセスを呼び出すことができ、それによりユーザは、アプリケーションのエラーを特定するために、またはアプリケーションに対して改善された機能を提供するために、フォームに書き込むことができる。これらのインスタンスおよび類似のインスタンスの各々は、バグとしてここに集められて記載され、その点では、フィードバックがアプリケーションの開発者に与えられる必要があるソフトウェアアプリケーションに関する問題を示す（但し、問題は結局、オペレーティングシステム、デバイスハードウェア、または別のアプリケーションに起因すると判断されることがある）。
【００２２】
ここで示す通り、アプリケーションは、アプリケーションストア１１２から獲得でき、それは、（アプリケーションストア１１２の経営者によって提供される最上位アプリケーションの一部に追加して）第三者によって提供されるアプリケーションが、ウェブページの一部として表示可能なウェブサイト等の類似の形式を取ることができ、そのウェブページ上には、ユーザによって選択された時、システム１００でユーザのアカウントにログインされるデバイスに、特定の選択されたアプリケーションを供給またはダウンロードさせる制御が表示される。
【００２３】
ユーザセンター１０８はまた、バグ収集装置１１６を含み、それは、直接、またはアプリケーションのインスタンスの動作に関して報告するオペレーティングシステム構成要素を介して、ユーザの１０４デバイスに分散されるアプリケーションのインスタンスと自動的に通信するための構成要素を含む。バグ収集装置はまた、提供の時間および日付、デバイスに関するオペレーティングシステムおよびバージョン、デバイスの製造およびモデル、問題イベントが生じた時にデバイス上で実行していた他のアプリケーション、最近のデバイスアクティビティのトレース、デバイスの構成データ、および他の類似の情報等の情報を含む１つまたは複数のデータベースにデータを配列する等により、永続ストレージ（persistent  storage）に集められた情報を再フォーマットすることができる。
【００２４】
アプリケーションセンター１０２の他の“サイド”には、開発者１０６が示され、それは、ユーザ１０４のように、かなり多数存在し、地理的に分布されてもよい。特に、ユーザ１０４および開発者１０６は、世界中に広がっていてもよく、インターネットを含む各種ネットワークを介してアプリケーションセンター１０２にアクセスできる。一例として、システム１００は、何千または何万ものアクティブな開発者１０６および何十万または何百万（または一億）ものアクティブなユーザ１０４を有することができる。ここで示す技法は特に、比較的大きなユーザのデータが各開発者に供給され、そのようなシステムの開発者は、比較的小規模であり、独自のバグ報告システムを開発できないような、大きな開発者の基盤を備えたシステムで、都合よく作動する。
【００２５】
開発者センター１１０の第１のメイン構成要素は、アプリケーションマネージャ１１４である。この構成要素は、ユーザに関するアプリケーションストア１１２の反対側でもよい。特に、アプリケーションマネージャ１１４は、システム１００の正当な開発者メンバーとして登録するために、および自分が開発したアプリケーションに関するコードまたは自分が商品流通を管理しているコードを後でアップロードするために、開発者がアクセスまたは対話しうるウェブサーバおよび関連するソフトウェアを含むことができる。アプリケーションマネージャ１１４はまた、複数の追加サービスを提供でき、それは一般に、開発者と対話することで周知であり、開発者が自分のアプリケーションを都合よく管理できるようにする。
【００２６】
バグ報告装置１１８は、バグ収集装置１１６に対する開発者サイドのものとして機能し、（楽観的な開発者は、問題を機会としてみなすかもしれないが）問題がソフトウェアに関して生じる時、ソフトウェア分散を達成し、および開発者１０６で開始し、アプリケーションマネージャ１１４およびアプリケーションストア１１２に移動し、次いでアプリケーションを獲得および実行するユーザ１０４に移動し、バグ収集装置１１６、バグ報告装置１１８、および開発者１０６に戻るフィードバックサイクルを達成する。
【００２７】
バグ報告装置１１８は特に、開発者１０６との対話のためのウェブサーバシステムと、各開発者に対応するアプリケーションに関して、ユーザの１０４デバイスによって経験された問題に関するデータを提供するための報告生成機能とを提供する。報告は、標準（standard）またはカスタムフォーマットでもよい。標準報告は、（ここでは単一のエンティティとして示されるが、互いに協働する多数の異なる組織によって経営されうる）アプリケーションセンター１０２の経営者によって開発されてもよく、どのように自分の各アプリケーションが実行しているかを見ている開発者によって簡単にアクセスおよび生成されてもよい。カスタム報告は、各個人の開発者によって形成されてもよく、周知のグラフィカル報告開発ツールを使用してもよい。例えば、開発者は、自分の報告で見たいデータの特定のフィールドを選択することがあり、自分の報告の視覚的様子を定義してもよい。開発者はまた、生データの形式で（報告行為がユーザ１０４間で生じた時にバッチ形式およびリアルタイムの両方で）報告を受信し、自分の機器を使用してデータに関して操作および報告してもよい。また、開発者１０６は、自分が見たい集約報告を定義してもよい。例えば、開発者が一式の製品（例えば、業績の一式）を開発した場合、開発者は、一式の各構成要素に共通なパラメータに関するセクションと、各構成要素および特定の構成要素に固有なデータに関する分離セクションとを含む報告を望むことができる。
【００２８】
これらの方法では、システム１００は、注意を必要としうる開発者のソフトウェア内のバグに関する拡張した役立つフォーマットデータを開発者１０６に提供できる。特定の開発者は、（オペレーティングシステムが、実行している時にアプリケーションを特定できるメカニズムを提供するのではなく、）特定のデータを得るために、自分のソフトウェアに関して何もしないでよい。特定のインスタンスでは、開発者は、APIを介して等、追加のデータを報告させてもよいが、再び、開発者は、バグ提供（bug  submission）を受信するために、クライアントデバイス上のデータを収集するために、および全アプリケーションメンテナンスシステムをも実装するために、全システムを実装する必要がない。結果として、入門レベルの開発者は、自分のアプリケーションを改善するためにプログラムの利益を得ることができ、アプリケーションの消費者は、同様に利益になる。
【００２９】
図１Ｂは、ソフトウェアアプリケーションの動作上のフィードバックを提供するための動作を示すフロー図である。一般に、アプリケーション開発者が自分のソフトウェアアプリケーションを一般の人に利用可能にして、アプリケーションの動作上のフィードバックを受信し、それによりアプリケーションを容易に、および迅速に改善できる例を説明するために、グラフィカルな時系列がここで示され、左上の角で開始し、右下の方で終了する。
【００３０】
動作１２０では、アプリケーション開発者は、携帯アプリケーションマーケットにアプリケーションを提供する。提供は、各種適切な方法でもよく、開発者は、アプリケーションを正当化するのを助ける自己署名証明書をアプリケーションに提供し、システムにセキュリティを提供できる。動作１２２は、同じ開発者によって、または他の開発者によって先にアップロードされた可能性がある３つの他のアプリケーションと共に、携帯アプリケーションマーケット内のアプリケーションの存在を示す。アプリケーションの“所有権”は、アプリケーションをアップロードした、通常は実際の開発者か、または開発者の代わりに働く者でありうるユーザのアカウントにアプリケーションを関連付けることによって維持できる。
【００３１】
動作１２４では、携帯コンピューティングデバイス（例えば、スマートフォンまたはアプリケーション電話）のユーザは、携帯アプリケーションマーケットを訪問し、自分のアカウント下でシステムにログインすることにより自分自身を特定している。ユーザは次いで、動作１２０でアップロードされたアプリケーションを選択し、アプリケーションは、インストールされ、周知の方法で、携帯デバイスのユーザによる実行に備えている。
【００３２】
動作１２６では、爆発のアイコンは、アプリケーションが携帯デバイス上で動作している間、エラーの発生を示す。エラーは、クラッシュまたは動かなくなる状況を含んでよく、またはアプリケーションに関するフィードバックを提供する意図を手動で示すデバイスのユーザに起因することがある。そのようなイベントは、装置上で実行するオペレーティングシステムの構成要素によって等、イベントに関する診断情報を装置上に収集させうる。
【００３３】
動作１２８では、エラーに関する報告は、携帯デバイス１２８上に収集され、それは、携帯デバイスの動作およびデバイス上の各種アプリケーションを管理したオペレーティングシステムの制御下で生じうる行為である。例えば、オペレーティングシステムは、プロセスがデバイス上で終了するのに失敗した時を認識するためにプログラムされてもよく、そのようなイベントは、オペレーティングシステムによって動作を収集およびフォーマットする複数のデータをトリガしうる。例えば、トレース、スタック、レジスタ、または他のエンティティの現在のコンテンツは、エラーが生じた時にデバイス上で実行していた全ソフトウェア構成要素に関する識別子として判断されてもよい。そのような情報は次いで、合意標準（agree-upon  standard）に従って、情報の所定パケットへ共に収集されてもよい。
【００３４】
動作１３０では、報告または提供は、少なくとも概念的に、そのような報告に関して追跡および報告のタスクを行う中央サーバシステム上で存在するかのように示される。この例では、報告は、アプリケーションに対する特定のバグに対応するとして分類されており、そこでは、３つの異なるバグが特定されている。そのような分類は例えば、関連するエラーが生じた時にどの部分のコードが実行していたかを特定して、そのコード部分に関する識別子を提供することによって生じることがあり、それにより特定の報告は、バグ報告の生成で共に加えられうる。特定のエラー提供（error  submission）に割り当てられるべきバグの特定は、バグトレースシステムのユーザの手動分類によることを含む、他の方法でも実行できる。ここで示す通り、２つの他のバグは、特定されており、それらのバグに関して、それぞれ２および３つのエラー提案がある。故に、この例では、長期にわたり、初期アプリケーションは、８つの異なるエラー提案に対応するとして特定されている。
【００３５】
そのような情報は、アプリケーションの開発者が知るのに重要なことがある。例えば、３つのバグのうち１つは、アプリケーションのユーザの満足度に重要なことがある。開発者がそのようなバグの種類を迅速に確認できた場合、開発者は、それを迅速に訂正して、コードに関する“パッチ”を供給できる（パッチは、アプリケーションをダウンロードした全ユーザへ自動的に押し出されるが、ユーザには、そのような更新を拒絶するための機会が与えられうる）。
【００３６】
動作１３２および１３４では、そのような開発者は、全てのその開発者のバグ提供に関する報告を見ることを選択している。この例では、３つのバグが全システムで追跡されているが、動作１３４に示す通り、バグのうち２つは、動作１２０からのアプリケーションに関連付けられた。携帯アプリケーションマーケットまたは類似のサブシステムは、この例では故に、特定のエラーに関する情報と、システムによって追跡されているバグの種類を開発者に特定する情報とを示す報告を容易に生成しうる。
【００３７】
特定のインスタンスでは、最終報告で提供されるデータは、携帯デバイスからの提供でアップロードされるデータとは実質的に異なることがある。例えば、個人的に識別可能な情報は、アップロードされたデータから引き離されてもよく、それにより開発者は、デバイスのユーザに関して特定の判断を行えない。一例では、スタックトレースおよびクラッシュ時のデバイスに関する類似の情報は、提供されるが、他の情報（例えば、問題が生じた時にユーザが操作していたデータを反映しうる情報）が渡されないことがある。また、詳細の特定レベルは、中央システムに関連するが、ほとんどの開発者に無関係であり、故に動作１３４で報告から引き離されてもよい。
【００３８】
図２は、それらデバイス上のソフトウェアアプリケーションの動作に関するコンピューティングデバイスからの提供を追跡するためのシステム２００の概略図である。システム２００は、図１Ａおよび１Ｂに関して上記で検討したそれらのように行為を実行するために使用されうる。システム２００は、かなり単純な形式で明確性のために示され、特定の物理的実装では、かなり多数の追加の構成要素を含みうる。
【００３９】
図を参照すると、システム２００が示され、例えばラップトップおよびデスクトップコンピュータを使用しているとして示される各種開発者２１２は、アプリケーションサーバシステム２０２にアプリケーションを提供でき、見返りにお金と、その特定の各提供されたアプリケーションの動作に関するフィードバックとを受け取る。そのようなアプリケーションは、ここではアプリケーションをダウンロードおよび実行可能なワイヤレス携帯デバイスを介して示される、各種ユーザ２１０によって購入または取得されうる。
【００４０】
開発者２１２およびユーザ２１０（またはより技術的には、そのデバイス）は一般に、直接互いに通信しないが、代わりにインターネット等のネットワーク２０４を使用して、アプリケーションサーバシステム２０２を介して通信しうる。そのようなオープン通信（open  communication）により、広範囲の各種開発者タイプおよびユーザは、システム２００を使用できるようになる。
【００４１】
アプリケーションサーバシステム２０２の特定の構成要素は、システム２００によってソフトウェアアプリケーションの使用を配置および追跡する機能を提供することができる。例えば、マーケットプレースフロントエンド２１４は、ユーザ２１０に利用可能なアプリケーションを表示するユーザインタフェースを生成でき、それによりユーザは、そのようなアプリケーションをレビュー、試行（try）、およびダウンロード可能になる。マーケットプレースマネージャ２１８は、購入を追跡し、ユーザ２１０への請求および開発者２１２への送金額を生成し、およびアプリケーションストア実装の他の周知の機能により等、マーケットプレースフロントエンド２１４に対してバックエンドサポートを提供することができる。
【００４２】
開発者フロントエンド２１６は、上記および下記で説明する通り、開発者がシステム２００に登録し、アプリケーションをアップロードし、自分のアプリケーションを管理し（例えば、アプリケーションをアップデート、追加、削除し、自分のアプリケーションの売上額を確認し）、自分のアプリケーションの動作上のフィードバックを受信できるようにするユーザインタフェースを生成できる。そのようなフィードバックを提供するにおいて、フロントエンド２１６は、（例えば、クラッシュ、フリーズ、おおび手動のユーザ報告によって特定されるような）バグが生じた携帯デバイスからのデータのアップロードを管理しうるバグ報告生成装置２２０にアクセスできる。例えば、バグ報告生成装置は、ユーザデバイスからバグ報告データを受信する機能を持つことができ、バグレポジトリ２２２のようなストレージに適するようにそれをフォーマットし、次いで開発者が自分の特定のアプリケーションに関する報告確認を要求する時、格納されたデータの全部または一部を読み出す。
【００４３】
バグ報告生成装置２２０または開発者フロントエンド２１６、またはその２つの組み合わせは、開発者への配信に適するようにそのようなデータをフィルタ処理し、およびフォーマットしうる。例えば、２つの構成要素は、ウェブページを生成するために協働し、報告に対する開発者の要求に応じて開発者にページを送信できる。同様に、データは、データの配給されたフィードを要求した開発者に効率的にストリームされうるので、開発者は、自分がシステム２００に到達するとリアルタイムでバグ報告を確認できる。そのようなリアルタイム報告は、開発者へのSMSメッセージ、XML転送（それにより例えば、開発者は、独自のシステムで分析ツールを使用して、各種バグ報告を整理できる）、および他のそのようなメカニズム等、各種方法で生じることができる。
【００４４】
各種データストアはまた、システム２００によって格納、アクセス、および管理されうるデータの例示的形式で図示される。例えば、上記の通り、バグレポジトリは、ユーザ２１０から生じたバグ報告に関する情報を格納できる。バグ情報は、バグイベントが生じた時に何が問題だったかを開発者または他の技術者が（少なくとも一部、少なくとも時々、または他のバグ報告と組み合わせて）推測できるようにする診断情報を含みうる。バグレポジトリはまた、特定の環境では、開発者２１２ではなくシステム２００の内部にアクセス可能であるべき情報を含みうる。そのような情報は、例えばバグ報告生成装置２２０および／または開発者フロントエンド２１６によって、適切な方法でフィルタ処理されうる。
【００４５】
認証データベース２２４は、開発者２１２およびユーザ２１０に関する認証情報を格納できる。認証により、各種人々は、自分のアカウントに関連付けられた関連情報にアクセスし、システム２００を介してアプリケーションの売買においてお金を支払い、または受け取ることができるようになる。また、認証は、特定のデータに対する特定のユーザによるアクセスの適切なレベルを判断するために使用されうる。例えば、第三者の開発者は、制限されたアクセスレベルに関連付けられた自分の認証を有することがあるので、自分のアプリケーションに対するバグの報告を要求する時、個人情報は、アプリケーションのユーザに対して匿名性を維持するためにフィルタ処理される。これに対し、内部のユーザは、ユーザデバイス上の欠陥に関するデータへ比較的アクセスしやすい。
【００４６】
最後に、アプリケーションデータストア２２６は、開発者２１２によってアップロードされたアプリケーション、およびシステム２００の経営者によって初期にマーケットプレース上に置かれたアプリケーションを含む、ユーザ２１０に利用可能に作成されるアプリケーションを格納する。
【００４７】
サーバシステム２０２の外側では、ローカル開発者２０６がこの例でさらに示され、アプリケーションサーバシステム２０２と同じドメイン内でもよく、アプリケーションサーバシステム２０２に対してプライベートネットワーク２０８上で通信しうる。ローカル開発者は、アプリケーションサーバシステムを動作させる組織の従業員等、アプリケーションサーバシステム２０２の経営者によって信用されているプログラマでもよい。そのようなユーザは、各種方法でアプリケーションサーバシステム２０２によって特定されてもよく、開発者フロントエンド２１６は故に、開発者２０６がエラーデータへ比較的アクセスしやすくし、データを分析するためのより強固なツールへアクセスできる。即ち、開発者２０６は、開発者としてシステム２００によって扱われるが、他の開発者２１２とは異なって扱われる。
【００４８】
一例として、ユーザ２１０の一部は、アプリケーションサーバシステム２０２を提供した組織に提供される特定の個人識別可能なデータを有することに同意しているが、そのような情報を第三者と共有することを拒否している。ローカル開発者２０６は、開発者２１２よりもそのような状況で多くの情報にアクセスできる。そのような状況は、ユーザ２１０の視点から特に好ましいことがあり、その理由は、しばしばローカル開発者２０６は、システムで最も役立ち、普遍的に配置されているアプリケーションのいくつか（例えば、ワード処理および電子メール）を生成し、ユーザは、自分がプログラムを改善する必要がある全ての事項をそのような開発者に与えたいからである。
【００４９】
図３は、ソフトウェア問題報告を管理するためのプロセスのフローチャートである。一般に、プロセスは、アプリケーションの開発者から各種コンピュータアプリケーションに関するコンピュータコードを受信し、アプリケーションマーケットプレースの一般のメンバーによってダウンロードおよび将来的に購入させるために利用可能なアプリケーションを作成することを含む。各種アプリケーションがシステムの登録ユーザに関する各種コンピュータ上にインストールされた後、アプリケーションは、（例えば、クラッシュまたは他の問題がある時に）警告を生成し始め、そのような警告の情報は、アプリケーションマーケットプレースの経営者に中継して返されることができ、情報は、イベントを有した特定のアプリケーションを提供した対応する開発者に利用可能に作成できるので、その開発者は、自分のアプリケーションに関するコードを改善および編集できる。
【００５０】
プロセスは、ボックス３０２で開始し、プロセスは、開発者によるアプリケーションのアップロードを受信する。開発者は例えば、大工のための計算器、特定の専門職に対する検索ツール、または携帯コンピューティングデバイス上で実行できる他の類似のアプリケーション等、特定分野の特定のニッチ問題（niche  problem）を解決するために単一のアプリケーションを書いた、自分の家で仕事をする個人のプログラマでもよい。開発者は代わりに、アプリケーションマーケットプレース上で販売されるようなアプリケーションの開発を事業とする小さなソフトウェア会社のような、個人のグループを含んでもよい。一般に、開発者は、アプリケーションの販売によって生まれる収入、または各種ユーザにアプリケーションを分散することからもたらされる利益に対して正当な権利を主張する団体である。
【００５１】
ボックス３０４では、アプリケーションは、マーケットプレース上で利用可能に作成される。そのような動作は、類似の方法で生じることができ、アプリケーションのアイコンおよびテキスト記述のポスティングを含んでもよく、その両方は、開発者によってマーケットプレースに提供される。アプリケーションは、支払いにより購入できるように作成され、または周知技術のフリーダウンロードができるように作成されうる。
【００５２】
ボックス３０６で、アプリケーションのインスタンスは、アプリケーションのコピーを受信する権利（interest）を通信する購入者に配信される。結果として、アプリケーションのコピーは、アプリケーションストアまたはマーケットプレースにアクセスしているユーザのユーザアカウントに関連付けられた携帯デバイスにダウンロードされうる。ユーザは次いで、自分がアプリケーションを購入したのと同時に、またはその後か、しばらく経った後、アプリケーションをインストールし、自分のデバイス上でそれを実行するために、適切な行為をとりうる。故に、特定のアプリケーションをダウンロードしたデバイスのユーザ、およびアプリケーションをダウンロードした他のユーザは、アプリケーションにアクセスし、自由にアプリケーションと対話しうる。
【００５３】
アプリケーションのそのような対話は、アプリケーションの動作に対して問題のある結果をもたらすことがある。１つのそのような結果は、クラッシュをもたらすことがあるアプリケーションの故障、またはアプリケーションのハングアップ（またはアプリケーションが実行しているプロセス）を含む。もう１つの結果は、ユーザによるアプリケーションに対する不満足であり、その理由は、アプリケーションが不正確に実行されているからであり、またはアプリケーションが特定の改善で良好に実行するとユーザが思うからである。そのような状況では、ユーザの特定のクライアントデバイスは、デバイスから自動的に、またはユーザから手動でデータを収集し、イベントのパラメータを特徴づけることができる。上記説明した各種データは、オペレーティングシステムの構成要素またはアプリケーションによって特定の実装で収集でき、イベント時におけるデバイスの現在のスクリーンショットのような他のデータに追加して、上記検討したような情報と、ユーザがアプリケーションに追加したい一部の機能を示すワードのような、デバイスのユーザによってデバイスに入力されうる情報とを含むことができる。１度そのような診断情報が収集されると、それは、クライアントデバイスからサーバシステムに送信でき、サーバシステムは次いで、警告および他のクライアントデバイスから受信した他の警告に関する情報をフォーマットおよび保存できる（ボックス３１０）。
【００５４】
そのようなフォーマットおよびフィルタ処理の実行では、中央サーバシステムはまた、アプリケーションに対して生じる同じバグを示すイベントを特定するために、異なるイベントのデータ間で共通のパラメータを特定できる。例えば、２つの異なるイベントに対するトレース情報が互いにかなり近く一致する場合、システムは、両方のイベントが共通のバグの結果だったと推測できる。２つのイベントが同じバグから生じたかどうかを判断するための特定のパラメータは、重み付けされてもよく、その一方で他のパラメータは、イベントが分類されるバグが特定のパラメータに関連するかどうかを判断するものでもよい。そのように特定されるバグの各々には、識別番号が割り当てられてもよく、その番号は、共通のバグを有すると判断される異なる警告データ間の相関関係を生成し、システムのソフトウェアの開発者に対して警告およびバグを記録するグループを提供するために後で使用されてもよい。
【００５５】
ボックス３１２では、プロセスは、自分の対応するアプリケーションまたは複数のアプリケーションに関するバグ情報を、特定のアプリケーションまたは複数のアプリケーションの開発者に対してフォーマットおよび配信する。上記検討した通り、報告は、ウェブページの印刷報告、XLM形式のようなデータのブロック、またはイベント若しくはイベントのグループがアプリケーションを動作している各種クライアントデバイスによってプロセスに報告される毎にデータ送信することを含むデータのストリームを含む、各種形式を取ることができる。このように、開発者は、ユーザのデバイス上に生じるバグ生成イベントに関する情報を取得でき、およびユーザおよび／またはユーザのデバイスがその情報を提供できる。
【００５６】
図４は、多数の開発者からのソフトウェアに関する問題の提供を管理するためのプロセスのスイムレーン図であり、ソフトウェアは、多数の携帯コンピューティングデバイスにわたってインストールされる。このプロセスは、図３のプロセスに類似するが、システムの特定の構成要素によって実行されうる特定の例示的動作に関して詳述される。プロセスは、ボックス４０２で開始し、開発者は、ソフトウェアアプリケーションを開発する。そのような開発は、アプリケーションのアーキテクチャ、アプリケーションに対するコードのドラフト、およびアプリケーションに対するコードの一部をパッケージおよび配列することを含みうる。一度アプリケーションが直ちに使用できるようになると、開発者は、類似の方法でアプリケーション格納サーバシステムに登録およびログインし（ボックス４０４）、サーバシステムは、この方法で開発者に対する対話型セッションを開始しうる（ボックス４０６）。アプリケーションのタイトル、アプリケーションに課せられる価格、アプリケーションのテキスト記述、ユーザのデバイスおよびアプリケーションストア上で提供されるべきアプリケーションのアイコン、および他の適切なデータ等、アプリケーションに関するメタデータの適切な形式を提供した後、ユーザまたは開発者は、必要なメタデータで自分のアプリケーションまたは複数のアプリケーションをアップロードしうる。
【００５７】
ボックス４１０では、アプリケーションストアサーバは、アプリケーションを登録し、アプリケーションのパラメータを記述するデータとともにそれを格納するためのスペースを生成し、アプリケーションストア上で利用可能な方法でアプリケーションをホストする。
【００５８】
しばらく経ったある時点で、アプリケーションストアを閲覧しているユーザは、アプリケーションを発見し、それを購入したいと思う。ボックス４１４では、ユーザは、アプリケーションストアに対して登録およびログインし、その後ユーザとのセッションを開始する（ボックス４１６）。
【００５９】
ボックス４１８では、ユーザは、アプリケーションのアイコン上をクリックする等、アプリケーションをダウンロードするコマンドを供給し、次いでユーザがアプリケーションを購入および取得したいことを確認するために特定のスクリーン上の選択可能な制御を選択する。ボックス４２０では、アプリケーションストアは、ユーザの認証をチェックし、ユーザがアプリケーションストアに対するアカウントを有することを確かめ、次いでユーザがそのようなアカウントを有する場合、ユーザにアプリケーションを提供する。代わりに、サーバは、ユーザがアカウントを有さないと判断することがあり、将来ダウンロードしたアプリケーションに対して支払うユーザからクレジットカード情報を要求することを含む、従来の方法でユーザからのそのような情報を要求しうる。
【００６０】
一度ユーザがアプリケーションをダウンロードすると、ユーザがそれの使用を開始し、そのような使用は、特定の環境では、ボックス４２２に示す通り、エラーまたは問題となるイベントを生成することがある。エラーイベントの例は、上記にて提供され、デバイスのフリーズ、デバイスのクラッシュ、またはアプリケーションに関して提供された改善または問題に関するユーザからの手動の報告を含んでもよい。ユーザのデバイスは次いで、ボックス４２４でバグサーバに対して、イベントに関する診断情報と共にそのようなイベントを報告し、データは、受信および記録されうる。クライアントデバイスからのそのような送信は、イベントを被る特定のアプリケーションによって、またはデバイス上に常駐する異なるアプリケーションによって、オペレーティングシステム構成要素を介して生じうる。デバイスおよびバグサーバ間の特定の対話は、API標準によって確立されてもよく、データが適切に送信されるような標準に従ってもよい。
【００６１】
プロセスは次いで、しばらく待機してもよく、他のユーザは、自分のデバイス上でアプリケーションを実行してもよく、その後それらデバイス上の問題に関するデータを報告してもよい。しかし、しばらく経ったある時点で、開発者は、アプリケーションが適切に開いているかを確認したいと望むことがあり、故に最後にログインし（ボックス２２６）、この時でも、開発者は、バグサーバからの情報を備えることができ、ボックス４２８でセッションを開始しうる。１つの共通の対話は、開発者によって動作されるコンピューティングデバイスによって作成される１つまたは複数の報告の要求（ボックス４３０）を含んでもよく、バグサーバはボックス４３２で、要求された報告を開発者に戻す機能があってもよい。そのような機能は、バグサーバによって特定された特定のポストに従ってエラーイベントデータを整理すること、および開発者が知らされた判断を作成するために必要なデータのみを受信し、アクセスする必要のないデータを受信しないように、データをフィルタ処理することを含む。最後に、ボックス４３４では、開発者のデバイスは、ウェブページ等の上に記録または報告を表示し、それにより開発者は、１つまたは複数のデバイス上で生じうるエラーに対処するために、それらをレビューでき、自分のソフトウェアを更新するか否かおよびその方法に関する判断を行うことができる。
【００６２】
図５Ａおよび５Ｂは、ソフトウェアアプリケーションに関して動作上の問題を受けた携帯コンピューティングデバイスの例示的なスクリーンショットである。一般に、これらのスクリーンショットは、エラーイベントが生じた時、オペレーティングシステム構成要素によって、またはアプリケーションによって等、クライアントデバイス上で生成されうるスクリーンの２つの例を示す。図５Aのスクリーンショットは、特定のプロセスが予想外に停止したことによって、生成されている警告スクリーンを示す。スクリーンショットは、何が発生したかについてユーザに示し、次いで対応するための２つのオプションをユーザに与える。特に、“強制終了（force  close）”を選択して、ユーザは、プロセスをシャットダウンするか、ひいてはユーザがデータを失うかもしれないことを理解した上でアプリケーションをシャットダウンできる。ユーザはまた、問題に関する情報を報告することを選択でき、ユーザは、偏見がなく、アプリケーションの開発者を援助したいと思うか、またはオペレーティングシステムがソフトウェアを改善することで、類似の予想外の停止が将来発生しないようにする。
【００６３】
ユーザが“報告”オプションを選択すると、図５Ｂのスクリーンショットを表示させる。ここで、ユーザは、どのように問題が中央サーバシステムに報告されるのかを制御するパラメータが示される。特に、送信に適用される適切な個人情報保護（privacy  policy）は、ユーザレビューのために表示されることがあり、ユーザは、個人情報保護を訂正または更新するために適切な制御を行うことができる。また、ユーザには、空テキストボックスが提示され、問題のコンテキストをオプションとして記述でき、例えば、“私は、abcアプリケーションにｘｙｚをタイプし、一方同時に電話で話をして、Handbrakeでビデオを変換し、SETIに関してナンバークランチングを行い、フルレス（full  res）一人称シューティングゲームをプレイしていて、これといった理由もなく、アプリケーションが私の前で停止した。”そのようなテキストは、問題に関する他の診断情報を備えるフィールドとしてやり過ごされてもよい。特定の環境では、ユーザは、バグが特に処理しにくく、開発者がユーザへの電子メールまたは電話を必要とする場合、自分の連絡先を開発者に提供する機会が与えられてもよい。代わりに、ユーザは、初めから任意の連絡先を提供するように尋ねられないが、開発者は、コメントをレビューする時、連絡先に関する要求を置くことができ、システムは次いで、（thew）ユーザが応答しうるメッセージを生成する。
【００６４】
ユーザは次いで、問題に関してアップロードされる全データのビューが与えられる“プレビュー”ボタン、または情報のそのようなアップロードを引き起こす“送信”を選択できる。
【００６５】
図６Ａ〜６Ｃは、ソフトウェア追跡システムによって生成される開発者報告の例示的なスクリーンショットである。図６Ａは、application  com.android.launcher2のバグに関する要約統計である。例えば、クライアントデバイスからの報告または提供の全数が、フリーズおよびクラッシュの両方に対する提供の現在比率として示される。
【００６６】
もう１つのインスタンスでは、デバイスのバッテリ電力および使用量に関する情報は、実行アプリケーションに関する情報と共に報告されうる。例えば、バッテリの電力が突然下がる場合、診断情報は、デバイスからアップロードできるので、中央の研究者（central  researcher）は、選挙需要（electoral  demand）の原因を判断できる。例えば、特定のアプリケーションは、そのようなイベントが生じた時はいつでもアクティブであるとしてしばしば示される場合、中央システムは、アプリケーションがバッテリ消耗の原因であると推測しうる。
【００６７】
図６Ｂは、複数の異なるアプリケーションまたはコードファイルに関するが、類似する要約報告である。例えば、コード名は、それが失敗した時にそのコンテキストと、そのような失敗に関する報告数と、そのようなイベントの現在比率と共に示される。
【００６８】
図６Ｃは、特定のアプリケーションの特定の失敗に関する詳細報告を示し、そして失敗のコンテキストに関するさらなる情報を示す。例えば、デバイスに関するスタックトレースは、特定の他の有益な情報として報告で示される。情報の一部は、ハイパーリンクされてもよく、それによりユーザは、何がここで表示されているかに関する追加のソースデータを確認できる。
【００６９】
図７は、包括的なコンピュータデバイス７００および包括的な携帯コンピュータデバイス７５０の例を示し、ここで説明される技術に使用されうる。コンピューティングデバイス７００は、ラップトップ、デスクトップ、ワークステーション、個人デジタル補助装置、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータ等、デジタルコンピュータの各種形式を示すことを意図する。コンピューティングデバイス７５０は、個人デジタル補助装置、セルラー電話、スマートフォン、および他の類似のコンピューティングデバイス等、携帯デバイスの各種形式を示すことを意図する。ここに示す構成要素、その接続および関係、およびその機能は、単に例示目的であって、本明細書で説明および／または請求される発明の実施形態を限定することを目的としない。
【００７０】
コンピューティングデバイス７００は、プロセッサ７０２、メモリ７０４、格納デバイス７０６、メモリ７０４と高速拡張ポート７１０とに接続する高速インタフェース７０８、および低速バス７１４と格納デバイス７０６とに接続する低速インタフェース７１２を含む。構成要素７０２、７０４、７０６、７０８、７１０、および７１２の各々は、各種バスを使用して相互接続され、共通のマザーボード上または他の適切な方法で搭載されうる。プロセッサ７０２は、メモリ７０４内または格納デバイス７０６上に格納される命令を含む、コンピューティングデバイス７００内で実行に関する命令を処理し、高速インタフェース７０８に連結されるディスプレイ７１６のような外部入／出力デバイス上にGUIに関するグラフィカル情報を表示することができる。他の実施形態では、多数のメモリおよびメモリの種類と共に、多数のプロセッサおよび／または多数のバスを適切に使用できる。また、多数のコンピューティングデバイス７００は、必要な動作の一部を提供する各デバイス（例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステム）に接続されてもよい。
【００７１】
メモリ７０４はコンピューティングデバイス７００内に情報を格納する。１つの実施形態では、メモリ７０４は、揮発性メモリユニットまたは複数のユニットである。もう１つの実施形態では、メモリ７０４は、不揮発性メモリユニットまたは複数のユニットである。メモリ７０４はまた、磁気または光学ディスク等、コンピュータ読取可能な媒体の他の形式でもよい。
【００７２】
格納デバイス７０６は、コンピューティングデバイス７００に大容量ストレージを提供できる。１つの実施形態では、格納デバイス７０６は、フロッピー（登録商標）ディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の類似の個体メモリデバイス、またはストレージエリアネットワークまたは他の構成のデバイスを含むデバイスアレイ等、コンピュータ読取可能な媒体であるか、または含んでもよい。コンピュータプログラム製品はまた、情報キャリアに有形に具現されうる。コンピュータプログラム製品はまた、上記説明したような１つまたは複数の方法を実行時に行う命令を含みうる。情報キャリアは、メモリ７０４、格納デバイス７０６、プロセッサ７０２上のメモリ、または伝搬信号等、コンピュータまたは機械読取可能な媒体である。
【００７３】
高速コントローラ７０８は、コンピューティングデバイス７００に対する帯域幅集中動作（bandwidth-intensive  operation）を管理し、一方低速コントローラ７１２は、比較的低い帯域幅集中動作を管理する。機能のそのような割り当ては、単なる例示である。１つの実施形態では、高速コントローラ７０８は、メモリ７０４、（グラフィックプロセッサまたはアクセラレータを介して）ディスプレイ７１６、および高速拡張ポート７１０に連結され、ポート７１０は、各種拡張カード（図示せず）を受け入れることができる。実施形態では、低速コントローラ７１２は、格納デバイス７０６および低速拡張ポート７１４に連結される。各種通信ポート（例えば、ＵＳＢ、ブルートゥース、イーサネット（登録商標）、ワイヤレスイーサネット（登録商標））を含みうる低速拡張ポートは、キーボード、ポインティングデバイス、スキャナ、または例えばネットワークアダプタを介するスイッチまたはルータのようなネットワークデバイス等、１つまたは複数の入／出力デバイスに連結できる。
【００７４】
コンピューティングデバイス７００は、図示の通り、複数の異なる形式で実装されうる。例えば、それは、標準サーバ７２０として、またはそのようなサーバのグループで複数回実装されてもよい。それはまた、ラックサーバシステム７２４の一部として実装されてもよい。また、それは、ラップトップコンピュータ７２２のような個人コンピュータで実装されてもよい。代わりに、コンピューティングデバイス７００からの構成要素は、デバイス７５０のような携帯デバイスの他の構成要素（図示せず）に結合されてもよい。そのようなデバイスの各々は、１つまたは複数のコンピューティングデバイス７００、７５０を含んでもよく、全システムは、互いに通信する多数のコンピューティングデバイス７００、７５０から構成されてもよい。
【００７５】
コンピューティングデバイス７５０は、他の構成要素の中で、プロセッサ７５２、メモリ７６４、ディスプレイ７５４のような入／出力デバイス、通信インタフェース７６６、およびトランシーバ７６８を含む。デバイス７５０はまた、追加のストレージを提供するためにマイクロドライブまたは他のドライブのような格納デバイスを提供してもよい。各構成要素７５０、７５２、７６４、７５４、７６６、および７６８は、各種バスを使用して相互接続され、いくつかの構成要素は、共通のマザーボード上、または他の適切な方法で搭載されうる。
【００７６】
プロセッサ７５２は、メモリ７６４に格納される命令を含む命令を、コンピューティングデバイス７５０内で実行できる。プロセッサは、分離した多数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実装されてもよい。プロセッサは例えば、ユーザインタフェース、デバイス７５０によって動作するアプリケーション、およびデバイス７５０によるワイヤレス通信の制御等、デバイス７５０他の構成要素の調整を提供しうる。
【００７７】
プロセッサ７５２は、ディスプレイ７５４に連結される制御インタフェース７５８およびディスプレイインタフェース７５６を介してユーザと通信しうる。ディスプレイ７５４は例えば、ＴＦＴ  ＬＣＤ（薄膜トランジスタ液晶ディスプレイ）またはＯＬＥＤ（有機光ダイオード）ディスプレイ、または他の適切なディスプレイ技術でもよい。ディスプレイインタフェース７５６は、グラフィカルおよび他の情報をユーザに提示するために、ディスプレイを駆動する適切な回路を含みうる。制御インタフェース７５８は、ユーザからコマンドを受け取り、プロセッサ７５２へ提供するためにそれらを変換しうる。また、外部インタフェース７６２は、プロセッサ７５２と通信するよう提供され、他のデバイスに対するデバイス７５０の近接通信を可能にする。外部インタフェース７６２は例えば、いくつかの実施形態でワイヤード通信を提供し、または他の実施形態でワイヤレス通信を提供してもよく、多数のインタフェースがさらに使用されてもよい。
【００７８】
メモリ７６４は、コンピューティングデバイス７５０内に情報を格納する。メモリ７６４は、１つまたは複数のコンピュータ読取可能な媒体またはメディア、揮発性メモリユニットまたは複数のユニット、または不揮発性メモリユニットまたは複数のユニットとして実装されてもよい。拡張メモリ７７４がさらに提供され、拡張インタフェース７７２を介してデバイス７５０に接続でき、拡張インタフェース７７２は例えば、ＳＩＭＭ（シングルインラインメモリモジュール）カードインタフェースを含んでもよい。そのような拡張メモリ７７４は、デバイス７５０に対して追加の格納スペースを提供してもよく、またはさらにデバイス７５０に関するアプリケーションまたは他の情報を格納してもよい。特に、拡張メモリ７７４は、上記説明したプロセスを実行または補足するための命令を含むことができ、セキュア情報も含みうる。故に例えば、拡張メモリ７７４は、デバイス７５０に関するセキュリティモジュールとして提供されてもよく、デバイス７５０の安全な使用を可能にする命令でプログラムされてもよい。また、セキュアアプリケーションは、ハッキング不可能な方法でＳＩＭＭカード上に識別情報を設定する等、追加情報と共にＳＩＭＭカードを介して提供されてもよい。
【００７９】
メモリは例えば、下記の通り、フラッシュメモリおよび／またはＮＶＲＡＭメモリを含んでもよい。１つの実施形態では、コンピュータプログラム製品は、情報キャリアに有形に具現される。コンピュータプログラム製品は実行時、上記説明したような１つまたは複数の方法を行う命令を含む。情報キャリアは、メモリ７６４、拡張メモリ７７４、プロセッサ７５２上のメモリ、例えばトランシーバ７６８または外部インタフェース７６２上で受信可能な伝搬信号等、コンピュータまたは機械読取可能な媒体である。
【００８０】
デバイス７５０は、通信インタフェース７６６を介してワイヤレス通信でき、インタフェース７６６は、必要に応じてデジタル信号処理回路を含みうる。通信インタフェース７６６は、ＧＳＭ（登録商標）音声呼、ＳＭＳ、ＥＭＳ、またはＭＭＳメッセージング、ＣＤＭＡ，ＴＤＭＡ、ＰＤＣ、ＷＣＤＭＡ、ＣＤＭＡ２０００またはＧＰＲＳその他等、各種モードまたはプロトコル下の通信を提供できる。そのような通信は例えば、無線周波トランシーバ７６８を介して生じうる。また、短距離通信は、ブルートゥース、ＷｉＦｉ、または他のそのようなトランシーバ（図示せず）を使用する等で生じうる。また、ＧＰＳ（全地球測位システム）受信モジュール７７０は、デバイス７５０に追加のナビゲーションおよび位置関連ワイヤレスデータを提供でき、デバイス７５０上で動作するアプリケーションによって適切に使用されうる。
【００８１】
デバイス７５０は、音声コーデック７６０を使用して音声認識可能に通信でき、そのコーデックは、ユーザから話された情報を受信して有益なデジタル情報にそれを変換しうる。音声コーデック７６０は同様に、スピーカー、例えばデバイス７５０のハンドセット等を介して、ユーザに対して音声認識可能な音を生成しうる。そのような音は、音声電話呼からの音を含んでもよく、記録された音（例えば、音声メッセージ、音楽ファイル等）を含んでもよく、またデバイス７５０上で動作するアプリケーションによって生成された音を含んでもよい。
【００８２】
コンピューティングデバイス７５０は、図示の通り、複数の異なる形式で実装されてもよい。例えば、携帯電話７８０として実装されてもよい。また、スマートフォン７８２、個人デジタル補助装置、または他の類似の携帯デバイスの一部として実装されてもよい。
【００８３】
ここに記載したシステムおよび技法の各種実装は、デジタル電子回路、集積回路、専用に設計されたＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはその組み合わせで実現できる。これら各種実装は、少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および／または解釈可能な１つまたは複数のコンピュータプログラムでの実装を含むことができ、それは、専用または汎用目的でもよく、格納システム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスに対して、データおよび命令を受信し、データおよび命令を送信するように結合される。
【００８４】
これらコンピュータプログラム（また、プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとして知られる）は、プログラマブルプロセッサに対する機械命令を含み、高レベルプロシージャおよび／またはオブジェクト指向プログラム言語、および／またはアセンブリ／機械言語で実装されうる。ここで使用される通り、用語“機械読取可能な媒体”は、機械読取可能な信号として機械命令を受信する機械読取可能な媒体を含む、プログラマブルプロセッサに機械命令および／またはデータを提供するために使用される任意のコンピュータプログラム製品、装置、および／またはデバイス（例えば、磁気ディスク、光学ディスク、メモリ、プログラマブル論理デバイス（ＰＬＤ））に言及する。用語“機械読取可能な信号”は、プログラマブルプロセッサに機械命令および／またはデータを提供するために使用される任意の信号に言及する。
【００８５】
ユーザとの対話を提供するために、ここで説明されたシステムおよび技法は、ユーザに情報を表示するためのディスプレイデバイス（例えば、ＣＲＴ（ブラウン管）またはＬＣＤ（液晶ディスプレイ）モニタ）、およびユーザがコンピュータに入力を提供できるポインティングデバイス（例えば、マウスまたはトラックボール）を有するコンピュータ上で実装されうる。他の種類のデバイスを使用してユーザとの対話を提供してもよく、例えば、ユーザに提供されるフィードバックは、感覚フィードバックの任意形式（例えば、視覚フィードバック、音声フィードバック、または触覚フィードバック）でもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意形式で受信されうる。
【００８６】
ここで説明されたシステムおよび技法は、コンピューティングシステムで実装でき、それは、バックエンド構成要素（例えば、データサーバ）を含み、ミドルウェア構成要素（例えば、アプリケーションサーバ）を含み、フロントエンド構成要素（例えば、ユーザがここで説明されたシステムおよび技法の実装と対話できるグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータ）を含み、またはそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組み合わせを含む。システムの構成要素は、デジタルデータ通信の任意形式（例えば、通信ネットワーク）または媒体によって相互接続されてもよい。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、およびインターネットを含む。
【００８７】
コンピューティングシステムは、クライアントおよびサーバを含みうる。クライアントおよびサーバは一般に、互いに離れており、通信ネットワークを介して通常、対話する。クライアントおよびサーバの関係は、各コンピュータ上で動作し、互いにクライアント‐サーバ関係を有するコンピュータプログラムによって生じる。
【００８８】
複数の実施形態が説明された。一方で、各種修正が本発明の精神および範囲から逸脱しないで行えることが分かる。例えば、この明細書の大部分は、電話ダイヤリングアプリケーションに関して説明されているが、英数字だけでなく、グラフィカルアイコンおよびマクロを含むキーパッド等、他の形式のアプリケーションおよびキーパッドレイアウトも適用できる。
【００８９】
また、図に示す論理フローは、所望の結果を達成するために、図示されている特定の順番、即ち順次的順番を要しない。また、他のステップが提供されてもよく、即ちステップが、説明されたフローから削除されてもよく、他の構成要素が、説明されたシステムに対して追加または除去されてもよい。従って、他の実施形態は、以下の特許請求の範囲内にある。
【符号の説明】
【００９０】
１０２：アプリケーションセンター
１０８：ユーザセンター
１１０：開発者センター
１１２：アプリケーションストア
１１４：アプリケーションマネージャ
１１６：バグ収集装置
１１８：バグ報告装置
【図１Ａ】
0005937577.tif 000002
【図１Ｂ】
0005937577.tif 000003
【図２】
0005937577.tif 000004
【図３】
0005937577.tif 000005
【図４】
0005937577.tif 000006
【図５Ａ】
0005937577.tif 000007
【図５Ｂ】
0005937577.tif 000008
【図６Ａ】
0005937577.tif 000009
【図６Ｂ】
0005937577.tif 000010
【図６Ｃ】
0005937577.tif 000011
【図７】
0005937577.tif 000012