JP2017522639A - 開発システムにおける意味論的なコンテンツアクセス - Google Patents

開発システムにおける意味論的なコンテンツアクセス Download PDF

Info

Publication number
JP2017522639A
JP2017522639A JP2016568687A JP2016568687A JP2017522639A JP 2017522639 A JP2017522639 A JP 2017522639A JP 2016568687 A JP2016568687 A JP 2016568687A JP 2016568687 A JP2016568687 A JP 2016568687A JP 2017522639 A JP2017522639 A JP 2017522639A
Authority
JP
Japan
Prior art keywords
search
type
user
elements
development
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016568687A
Other languages
English (en)
Other versions
JP6639418B2 (ja
JP2017522639A5 (ja
Inventor
シャキルチアノフ,アントン
ナラヤナン,スリヤ
ユ,リアン
カミンスキ,トマシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017522639A publication Critical patent/JP2017522639A/ja
Publication of JP2017522639A5 publication Critical patent/JP2017522639A5/ja
Application granted granted Critical
Publication of JP6639418B2 publication Critical patent/JP6639418B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/36Creation of semantic tools, e.g. ontology or thesauri
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Abstract

開発システムは、一例では、ユーザ開発入力を感知し、ユーザ開発入力に基づいて、コンピュータシステムの要素を変化させる、開発モジュールを備える。これら要素は、コンピュータシステムにおいてモデル化されたタイプを備える。ユーザインターフェースモジュールは、ユーザ入力メカニズムを用いてユーザインターフェースディスプレイを生成し、コンピュータシステムの要素を探索するためのユーザ探索クエリを示す、ユーザ入力メカニズムを介して受け取られたユーザ探索入力を感知する。探索エンジンは、ユーザ探索クエリのためのタイプベースの探索パラメータを識別する。探索エンジンは、タイプベースの探索パラメータに基づいて、タイプベースの探索構成要素を活性化するように制御される。タイプベースの探索構成要素は、ユーザインターフェースディスプレイにおいて、探索結果のセットを返すために、要素探索を実行する。

Description

[0001] コンピュータプログラムは、様々な開発ツールにおいて開発される。たとえば、多くのソフトウェア開発者は、ソフトウェアを開発するために、インタラクティブ(または統合)開発環境(IDE)を使用する。開発者は、コンピュータシステム内でタイプのモデルを開発するため、および、これらモデルをカスタマイズするために、IDEを使用する。
[0002] 典型的なインタラクティブ開発環境は、開発者が、開発される必要のあるコードを開発および試験できるように、および、コンピュータシステムを所望されるようにカスタマイズするために、複数の異なるツールを含む。例によって、IDEは、ソースコードエディタ、1つまたは複数のビルド自動化ツール、および、コンピュータプログラマがソフトウェアを開発することを可能にするデバッガを含み得る。いくつかのIDEは、例示的に、コンパイラ、インタプリタ、またはその両方を含む。それらは、グラフィックユーザインターフェースの構築を簡素化するためのバージョン制御システムおよび様々なツールを含み得る。それらはまた、オブジェクト指向ソフトウェア開発とともに使用するためのクラスブラウザ、オブジェクトブラウザ、およびクラス階層図を含み得る。したがって、開発者は、コードおよびメタデータを生成するために、コードおよびメタデータへのカスタマイズ化とともに、IDEを使用し得る。これは、所与の組織において使用するためにシステムを開発する際に利用され得る。たとえば、開発者は、アプリケーション要素に関連するソースコードおよびメタデータファイルを用いて作業し得る。1つのアプリケーションは、メタデータと、様々な方式でメタデータを使うコードとの両方を、生成または変更することを必要とし得る。
[0003] IDEを使用してソフトウェアを生成またはカスタマイズする際に、アプリケーション開発者は、アプリケーション内の特定の概念(これは、タイプとして表され得る)をモデル化し、必要な場合、コードを書く。開発者がしばしばそのためにIDEを使用する大規模なアプリケーションは、数千もの異なるタイプを含み得る。
[0004] 例によって、いくつかのコンピュータシステムは、他のシステムの中でも、エンタープライズリソースプラニング(ERP)システム、顧客関係管理(CRM)システム、取扱商品(LOB)システムなどのビジネスシステムを含む。これらのタイプのコンピュータシステムはしばしば、モデル化されカスタマイズされた何千もの異なるタイプを有する。例によって、そのようないくつかのビジネスシステムはしばしば、他の多くのタイプは言うに及ばず、数千もの異なる形式を有する。
[0005] ビジネスシステムは、多くのタイプを有するコンピュータシステムのタイプだけではない。たとえば、ゲームシステム、または、種々様々な他のシステムのタイプもまた、しばしば、ソフトウェアシステムでモデル化された何千もの異なるタイプを有する。
[0006] 上記議論は単に、一般的な背景情報のために提供されており、権利主張された主題の範囲を決定する際の助けとして使用されることは意図されていない。
[0007] ソフトウェア開発中、開発者は、開発処理を促進するための要素を探索する。探索アーキテクチャは、開発者が、ある基準を満足するメタデータおよびコードを探索することを可能にする。探索アーキテクチャは、開発者のクエリに適切である結果を返すために、意味論的な要素情報を導入する。
[0008] 開発システムは、一例では、ユーザ開発入力を感知し、ユーザ開発入力に基づいて、コンピュータシステムの要素を変化させる、開発モジュールを備える。これら要素は、コンピュータシステムにおいてモデル化されたタイプを備える。ユーザインターフェースモジュールは、ユーザ入力メカニズムを用いてユーザインターフェースディスプレイを生成し、コンピュータシステムの要素を探索するためのユーザ探索クエリを示す、ユーザ入力メカニズムを介して受け取られたユーザ探索入力を感知する。探索エンジンは、ユーザ探索クエリのためのタイプベースの探索パラメータを識別する。探索エンジンは、タイプベースの探索パラメータに基づいて、タイプベースの探索構成要素を活性化するように制御される。タイプベースの探索構成要素は、ユーザインターフェースディスプレイにおいて、探索結果のセットを返すために、要素探索を実行する。
[0009] この要約は、発明を実施するための形態において以下にさらに説明される概念の選択をより簡単な形式で導くために提供される。この概要は、権利主張された主題の主要な特徴または本質的な特徴を特定することは意図されておらず、また、権利主張された主題の範囲を決定する際における助けとして使用されることも意図されていない。権利主張された主題は、背景技術において注目された何れかまたはすべての欠点を解決する実施に限定されない。
[0010]意味論的な探索アーキテクチャの一例のブロック図である。 [0011]意味論的な探索構成要素を生成するためのメソッド(方法)の一例を例示するフロー図である。 [0012]一例における意味論的な探索機能を例示するブロック図である。 [0013]意味論的な探索構成要素を使用して探索を実行するためのメソッド(方法)の一例を例示するフロー図である。 [0014]ユーザインターフェースディスプレイの一例を例示する図である。 [0015]ユーザインターフェースディスプレイの一例を例示する図である。 [0016]クラウドコンピューティングアーキテクチャにおいて展開された、図1に例示されるアーキテクチャの一例を図示するブロック図である。 [0017]図1に図示されるアーキテクチャとともに使用され得るモバイルデバイスの様々な例を図示する図である。 図1に図示されるアーキテクチャとともに使用され得るモバイルデバイスの様々な例を図示する図である。 図1に図示されるアーキテクチャとともに使用され得るモバイルデバイスの様々な例を図示する図である。 図1に図示されるアーキテクチャとともに使用され得るモバイルデバイスの様々な例を図示する図である。 図1に図示されるアーキテクチャとともに使用され得るモバイルデバイスの様々な例を図示する図である。 [0018]一例のコンピューティング環境のブロック図である。
[0019] 図1は、意味論的な探索アーキテクチャ100の一例のブロック図である。アーキテクチャ100は、開発機能104を有するインタラクティブ開発システム(たとえば、IDE)102を含む。図1は、開発者106が、コンピュータシステムにおいて実行されているアプリケーション要素107の開発および/またはカスタマイズを実行するために、システム102とインタラクトすることを図示する。たとえば、アプリケーション要素の各々は、メタデータ109を含み、コード111も同様に含み得る。例によって、開発者106は、メタデータ109およびコード111を生成または変更することによって、アプリケーションのための要素107を開発するために、機能104を使用する。限定によってではなく、一例では、要素107は、オブジェクト指向プログラミング環境におけるオブジェクトを備える。任意の適切なプログラミング言語が、システム102において利用され得る。
[0020] 例示された例では、モデルストア108は、様々な異なるアプリケーション要素のタイプ(たとえば、type)に対応するメタデータおよびコードを記憶し、たとえば、システム102および探索構成要素コード生成器(search component code generator)130によってアクセス可能である。「type」は、システムにおいてモデル化されたコンセプトを表す抽象的概念を称する。たとえば、ビジネスシステムでは、要素タイプは、いくつか名前を挙げると、形式、エンティティ、クラス、テーブル、メニューアイテム、セキュリティ役割、および/または、許可を含み得る。一例では、テーブルオブジェクトは、データベース内にアプリケーションデータを維持するためのメタデータおよびコードを含む。別の例では、形式オブジェクトは、アプリケーションユーザが、情報を使い、アプリケーションとインタラクトするために、様々なデバイスにおいて表示されるべき情報コンテンツを説明するためのメタデータおよびコードを含む。
[0021] 一例では、アプリケーション要素107を開発するために開発機能104を利用している場合、開発者106は、アプリケーション要素107をコーディングするための統合された、すなわちIDEビューを提示される。単純化された一例が、例示のために以下の表1に図示される。
Figure 2017522639
[0022] このように、アプリケーション要素107を開発するために開発者106によってオーサリングされるコードおよびメタデータは、たとえば、アプリケーション要素107をコーディングするためのユーザフレンドリなインターフェースを提供するコードエディタビューにおいて、第1のフォーマットで表される。しかしながら、開発者106が、第1のフォーマットで、コードおよびメタデータをビューおよびオーサリングする一方、インタラクティブ開発システム102は、第1のフォーマットとは異なる第2のフォーマットで、開発されたアプリケーション要素のソースコード表現を維持し、このソースコード表現において動作する。一例では、コードおよびメタデータを備えるシリアル化された表現は、各要素のためにシステム102によって維持される。第2のフォーマットは、マシン読取可能であり、システム102による実行に対して従順である。一例では、限定によってではなく、モデルストア108は、ソースコード表現をXMLファイルとして記憶するファイルシステムを備える。メタデータおよびコードXMLは、各々が自身のタイプを有するシリアル化された要素構造(element structure)を備える。以下の表2は、表1に図示された統合ビューに対応する例示的なXMLファイルを図示する。
Figure 2017522639
Figure 2017522639
Figure 2017522639
[0023] 上記例において、メタデータおよびコードは、1つのXMLファイルへシリアル化される。すなわち、コードの断片(すなわち、構造化されていない文字列)とメタデータの断片(すなわち、構造化されたプロパティおよび値のセット)が、XMLファイルに点在する。しかしながら、当業者であれば、他のフォーマットが利用され得ることを理解する。
[0024] 開発者106は、(パーソナルコンピュータ、タブレット、別のモバイルデバイス等のような)個別の開発者デバイスを介して、またはダイレクトに、インタラクティブ開発システム102とインタラクトし得る。開発者106はまた、ネットワークを介して(たとえば、遠隔的に)システム102とインタラクトし得る。開発者106は、例示のみのために、図1におけるシステム102とダイレクトに(たとえば、ローカルに)インタラクトしていることが図示される。
[0025] インタラクティブ開発システム102は、一例では、プロセッサ110およびユーザインターフェースモジュール112を含む。ユーザインターフェースモジュール112は、開発者106によるインタラクションのために、ユーザ入力メカニズム118を用いてユーザインターフェースディスプレイ116を生成する。開発者106は、インタラクティブ開発システム102を制御および操作するために、ユーザ入力メカニズム118とインタラクトする。一例では、開発者106は、開発機能104を実施するためのみならず、探索モジュール120およびナビゲーションモジュール122を使用するために、これを行い得る。システム102は、同様に他のアイテム114も含み得る。
[0026] 開発者106は、モデルストア108における既存のコードとメタデータを使用し得るか、または、新たなコードとメタデータ、または、既存および新たなコードとメタデータとの組合せを生成し得る。そうする際に、モデルストア108における既存の要素が、変更または消去され、新たな要素が追加され得る。開発を促進するために、開発者106は、興味のある要素を発見するために、モデルストア108の探索を所望し得る。たとえば、開発者106は、アプリケーション内でカスタマイズするための特定の要素を位置決めすることを所望し得る。
[0027] しかしながら、しばしば極めて大きな、コードベースのサイズに部分的に起因して、ある開発者探索基準を満足する要素を発見することは困難であり得る。1つの探索実施は、事前にインデクスをビルドすることに依存する。これに対して開発者クエリが実行される。たとえば、コンテンツをナビゲートしインデクスをビルドするクローラが存在する。これは、その後、探索するために使用される。開発プラットフォームのケースでは、いったん要素が変更または追加されると、インデクスは、期限切れになる。さらに、コードベースのサイズを考慮すると、インデクスを繰り返しリビルドすることは、多大な時間を費やす。
[0028] 例示された例では、意味論的な探索アーキテクチャ100は、探索モデル108が要素の名前、タイプ、および/または、プロパティを意味論的に考慮するために、探索モジュール120を使用することによって探索結果を取得する。この探索は、要素タイプの構造と、要素タイプおよびこれら要素タイプ内のプロパティの意味との理解を導入するという点において意味論的である。以下にさらに詳細に議論されるように、要素タイプの特定の構造は、モデルストア108の要素を探索することに関連し得る。限定によってではなく、例示によって、各要素タイプは、その要素タイプの要素のためのランタイム挙動を定義するプロパティ、メソッド、および/または、計算の特定の構造を有する。たとえば、テーブル要素タイプは、名前(たとえば、「customer table」)、およびカスタマのための属性を識別するプロパティ(たとえば、カスタマID、アドレス等)のセットを含み得る。また、この例では、テーブル要素タイプは、カスタマのための値を計算するためのメソッド、および/または、この値を表示するためのメソッドを含み得る。
[0029] アーキテクチャ100の全体動作をより詳細に説明する前に、概要が提供されるであろう。一例では、探索モジュール120は、1つまたは複数のトークンの形式で探索基準を定義するユーザ探索クエリを受け取る探索エンジンを備える。トークンは、探索パラメータを定義し、文字列または用語を形成する1つまたは複数のキャラクタを含み得る。探索エンジンは、意味論的な探索パラメータまたは制約を識別するために、開発者106からの探索クエリをパースし、開発者106へ提供される探索結果のセットを取得するために、モデルストア108に対する探索クエリを実行する。一例では、クエリを実行することは、アプリケーション要素において、1つまたは複数のトークンを、プロパティおよび/またはメソッドに対して一致させることを含む。
[0030] 意味的な探索パラメータは、探索クエリ自身において明示的に提供され得るか、または、探索クエリから示唆または導出され得る。たとえば、図5に関して以下に説明される例では、開発者106は、
type:table、method name:insert perperty:“source=crosscompany”
からなる探索クエリを入力する。
[0031] 本明細書で、クエリから識別された意味論的な探索パラメータは、タイプベースの制約を備える。すなわち、開発者106は、要素タイプ「table」からなる要素が、トークン「insert」に一致する名前と、トークン「crosscompany」に一致する値を有するソースプロパティとを有するメソッドを有することを所望する。本明細書では、実施形態がタイプベースの制約のコンテキストで議論されているが、他の意味論的な探索パラメータまたは制約が使用され得ることが注目される。
[0032] 例示された例では、探索を実行するために、探索モジュール120が、探索構成要素コード生成器130によって生成された複数の探索構成要素(すなわち、探索構成要素124および126)を記憶する探索構成要素ストア128にアクセスする。探索構成要素コード生成器130を使用して探索構成要素を生成する一例が、図2に関して以下にさらに詳細に議論される。手短に言えば、探索構成要素コード生成器130は、モデルストア108においてモデル化された異なる各要素タイプのための探索構成要素を生成するように構成されたプロセッサ131を含む。各探索構成要素は、要素タイプのうちの特定の1つのために生成される。このように、各探索構成要素は、そのために生成された特定の要素タイプの構造に特有である。一例では、探索構成要素は、開発者106によって使用され得るすべての可能な要素タイプのために生成され、ストア128に記憶される。たとえば、一例では、あらかじめ定義された要素タイプのセットが、開発者106に利用可能であり、任意の新たな要素タイプが、システム102への更新を介して、システム102へ追加される。
[0033] 探索モジュール120は、モデルストア108内の要素から、結果のリストを返すために使用されるべき探索構成要素ストア128からの探索構成要素のうちの1つまたは複数を識別するために、探索クエリからのタイプベースの探索制約を使用する。探索構成要素を使用する探索モデルストア108の一例が、図4に関して以下にさらに詳細に議論される。手短に言えば、探索モジュール120は、各タイプベースの探索制約のための対応する探索構成要素を識別する。上記例において、探索モジュール120は、テーブル要素タイプのために生成された探索構成要素(すなわち、探索構成要素124または126)を識別する。識別された探索構成要素は、探索クエリにおけるメソッド名およびプロパティ値に一致する要素を識別するために、テーブル要素タイプを有するモデルストア108内の要素ごとにインスタンス化される。探索モジュール120は、インスタンス化された探索構成要素から取得された探索結果を集約する。ナビゲーションモジュール122は、探索結果のユーザナビゲーションを容易にする。
[0034] したがって、探索アーキテクチャ100は、事前にインデクスをビルドまたは維持する必要なく、モデルストア108の探索を実行する際に、アプリケーション要素107に関する意味論的な情報を導入する。これは、開発システムにおける探索機能を実行する際における処理負荷および時間、ならびにメモリ要件を低減し得、ユーザのクエリに対する探索結果関連性を改善し得る。
[0035] 例示のために、図1の例では、異なる各タイプのアプリケーション要素のために、アーキテクチャ100は、その要素タイプのモデルストア108の既存の要素を探索するように構成された特定の探索構成要素を維持する。しかしながら、これらの探索要素はまた、新たな要素のタイプ(すなわち、すべての要素タイプは、あらかじめ定義された探索構成要素を有する)または特定のプロパティに関わらず、開発者106によってモデルストア108へ追加された任意の新たな要素を探索することができる。逆に、インデクスされた探索システムのケースでは、モデルストア108へ新たな要素を追加することは、インデクスが、新たな要素を含めるように更新されることを要求するであろう。
[0036] さらなる例示のために、モデルストア108が、2つの異なる要素タイプ(すなわち、テーブル要素タイプ132および形式要素タイプ134)を含むと仮定されたい。第1の探索構成要素124は、要素タイプ132のために生成され、第2の探索構成要素126は、要素タイプ134のために生成される。図1の例では、コード生成器130は、各要素タイプのための一度だけ実行される必要がある。このように、探索構成要素124および126が生成されると、コード生成器130は、たとえ、モデルストア108内の既存のタイプ132および134の要素が修正されても、および/または、モデルストア108に、新たなタイプ132および134の要素が追加されても、これらを再生成または修正する必要はない。
[0037] 探索構成要素124は、探索モジュール120が、タイプ132の要素を探索する場合にインスタンス化され、探索構成要素126は、探索モジュール120が、タイプ134の要素を探索する場合にインスタンス化される。一例において、要素タイプ132および134の両方が探索されている場合、探索構成要素124および126は、探索時間を短縮するために並列的に動作し得る。図1には、2つの要素タイプとタイプベースの探索構成要素しか図示されていないが、任意の数の要素タイプおよび意味論的な探索構成要素が実施され得ることが注目される。
[0038] モデルストア108および探索構成要素ストア128は、図1では、インタラクティブ開発システム102と分離しているとして例示されているが、モデルストア108および/または探索構成要素ストア128は、インタラクティブ開発システム102の一部であり得ることが注目される。しかしながら、帯域幅およびレイテンシの考慮によって、いくつかの実施では、モデルストア108および探索構成要素ストア128は、同じコンピューティングシステムにおいて維持され得る。しかし、これは単なる一例である。このように、探索要求および結果は、ネットワークを介して送信され得る一方、探索アーキテクチャ100は、モデルストア108の送信を必要としない。繰り返すが、これはアーキテクチャの単なる一例である。
[0039] また図1は、種々の異なる機能ブロックを図示する。ブロックは、より多くの機能が各ブロックによって実行されるように、統合され得るか、または、これら機能がさらに分散されるように、分割され得ることが注目されるであろう。
[0040] 上記議論は、モデルストア108および探索構成要素ストア128を含む多くのデータストアを図示していることが注目されるべきである。これらは2つの独立したデータストアとして図示されているが、単一のデータストア内においても形成され得る。それに加えて、これらデータストアにおけるデータは、追加の多くのデータストア内にも同様に記憶され得る。また、データストアは、それらにアクセスする環境、エージェント、モジュール、および/または、構成要素に対してローカルであり得るか、または、そこから離れており、これら環境、エージェント、モジュール、および/または、構成要素によってアクセス可能であり得る。同様に、いくつかは局所的であり得る一方、他は遠隔的である。
[0041] 例示された例では、プロセッサ110および131は、関連付けられたメモリおよびタイミング回路(個別に図示されていない)を備えたコンピュータプロセッサを備える。これらは、これらが属するエージェントまたは環境の機能的な部分であり、その環境またはエージェントにおける他のアイテムによって例示的に活性化され、その環境またはエージェントにおける他のアイテムの機能を容易にする。
[0042] 図2は、意味論的な探索構成要素を生成するためのメソッド200の一例を例示するフロー図である。例示のために、限定によってではなく、メソッド200は、アーキテクチャ100がタイプベースの探索構成要素を生成するコンテキストにおいて説明されるであろう。
[0043] メソッド200は、定期的に、および/または、条件またはイベントに応じて開始され得る。たとえば、メソッド200は、システム102によってサポートされている要素タイプを追加または修正するシステム102への更新に応じて開始され得る。別の例では、メソッド200は、(たとえば、開く、閉じる、保存する等のような制御を、ユーザインターフェース116上において選択することによって)開発者106からの入力に応じて開始され得る。
[0044] ステップ202において、探索構成要素コード生成器130が、モデルストア108にアクセスし、ステップ204において、タイプベースの探索構成要素を生成するための新たな任意の要素タイプが存在するか否かを判定する。一例では、探索構成要素コード生成器130は、モデルストア108内の要素のうちのいくつか(たとえば、直近の変更および追加)またはすべてを分析し、これら要素を、既存のまたは既知の要素タイプ(すなわち、タイプ132および134)と比較する。たとえば、探索構成要素コード生成器130は、開発者106によって変更または追加された要素を識別する。
[0045] 新たな要素タイプが識別されると、探索構成要素コード生成器130は、ステップ208において、新たな要素タイプのためのタイプベースの探索構成要素を生成するために、ステップ206において、新たな要素タイプの構造を分析する。一例では、探索構成要素コード生成器130は、新たな要素タイプの構造を、任意のサブタイプへパースし、タイプおよび/またはサブタイプがどのプロパティを含んでいるのか、任意の子要素タイプ、要素タイプからどの要素タイプが由来するのか、および要素タイプのプロパティゲッタのための実施を決定する。各プロパティゲッタは、たとえば、要素タイプにおけるプロパティの場所、および/または、他のプロパティに対する関係に基づいて、要素タイプのプロパティを取得するための機能を定義する。一例では、探索構成要素コード生成器130は、要素タイプ構造の異なる部分を探索するために、異なるプロパティゲッタコードを生成する。たとえば、コードの1ピースは、与えられた要素の部分におけるメソッドを探索し得、コードの1ピースは、制御等を見得る。上記で議論されたカスタマテーブル要素タイプの例に関して、1つのプロパティゲッタは、「customer ID」プロパティを返すように構成され得、別のプロパティゲッタは、「address」プロパティを返すように構成され得る。
[0046] 各探索構成要素は、探索構成要素が生成される要素タイプに基づく、定義された要素パターン(たとえば、子要素のパターン、プロパティ、メソッド等)に従うように構成される。たとえば、限定によってではなく、図1では、要素タイプ132および134は、互いに異なる子要素のパターンを有する。探索構成要素124は、要素タイプ132に関連付けられた子要素の値を検証し返すための探索メソッドを呼び出すように構成され、探索構成要素126は、要素タイプ134に関連付けられた子要素の値を検証し返すための探索メソッドを呼び出すように構成される。
[0047] 例によって、1つのメタデータ要素は、ツリーデータ構造を備え、名前およびメタデータ要素タイプによって定義される。メタデータ要素タイプはさらに、プロパティのセットによって定義され、各プロパティは、プロパティ値の名前およびタイプによって定義される。プロパティ値のタイプは、たとえば、限定によってではなく、(文字列(はいいいえ、日付、タグ等)に変換可能な)プリミティブであり得る。そのようなプロパティは「simple property」と称される。プロパティ値の別のタイプは、子メタデータ要素を含むメタデータ要素タイプである。そのようなプロパティは「node property」と称され得る。ルートメタデータ要素は、メタデータストレージにダイレクトに記憶され、親を有していない要素である。子メタデータ要素は、他の要素ノードプロパティのいくつかに含まれる要素である。メタデータパスは、メタデータ要素をユニーク識別し、メタデータ要素の位置決めを容易にする文字列を備える。一例では、パスの形式は以下の通りである。
dynamics://<Root_type>/<Root_element_name>[/<Subtype_1>/<Subelement_name_1>[/<Subtype_2>/<Subelement_name_2>[...]]]
ここで、
<Root_type>−ルートメタデータ要素のタイプ
<Root_element_name>−ルート要素の名前
<Subtype_i>−ツリーにおける各子メタデータ要素のタイプ
<Subelement_name_i>−ツリーにおける各子メタデータ要素の名前
[0048] ステップ210では、生成された意味論的な探索構成要素が、探索構成要素ストア128に記憶される。任意の追加の新たな要素タイプが、ステップ212において識別されると、ステップ206、208、および210が、新たな要素タイプのために繰り返される。
[0049] 図3は、一例における、意味論的な探索機能を例示するブロック図である。例示のために、限定によってではなく、図3は、アーキテクチャ100における意味論的な探索機能のコンテキストにおいて説明されるであろう。
[0050] ブロック250は、インタラクティブ開発システム102へインターフェースを提供する。ブロック250によって、探索モジュール120は、ブロック252におけるクエリパーサへ提供される探索クエリを受け取る。クエリは、フィルタを定義する1つまたは複数の探索基準を提供し、任意の適切な構文または文法を有し得る。
[0051] 1つの比較的単純な構文の例が以下に提供される。
探索クエリは、search_stringであり、ここで、
search_string=empty_string
search_string=text_without_colon
search_string=filter
search_string=search_string filter
filter=filter_name:filter_value
filter_value=text_without_comma
filter_value=“any_text”
filter_value=filter_value,filter_value
filter_name=name OR type OR model OR property
したがって、探索文字列は、一般的な形式においてフィルタのセットからなる。
<filter_1>:<filter_1_value>[<filter_2>:<filter_2_value〉...[<filter_N>:<filter_N_value>]]
ここで、<filter_i>は、許容可能なフィルタ名のうちの1つであり、<filter_i_value>は、カンマ区切りされ、可能な引用符付きのフィルタリング値である。
[0052] 上記に例示され図3に図示されるように、ユーザ探索基準の一例は、要素名である。これは、1つの文字列または文字列のセットを指定し得る。要素の名前が、文字列のうちの少なくとも1つを含むのであれば、要素は、この基準を満足していると考慮される。カンマ区切りされた各値は、許容可能な要素名であり得る。一例では、要素名は、デフォルトフィルタである。したがって、探索クエリが、単一のトークンを含んでいるのであれば、それは要素名であると仮定される。この例では、タイプベースの制約が識別されないと、探索アーキテクチャは、利用可能なすべての要素タイプのための探索構成要素をインスタンス化し得る。
[0053] 別の例示的な基準は、要素タイプである。これは、1つの要素タイプまたは要素タイプのセットを指定し得る。要素は、それが、指定されたタイプのうちの1つであれば、この基準を満足していると考慮される。カンマ区切りされた各値は、要素タイプ(すなわち、テーブル、クラス、フィールド)のうちの1つの名前であり得る。探索クエリは、ルートとサブタイプの両方を、値として指定し得る。一例では、フィルタリングロジックは以下の通りであり得る。
(roottype_1 OR roottype_2 OR...OR roottype_N)AND(subtype_1 OR subtype_2 OR...OR subtype_N)
[0054] 別の例示的な基準は、要素プロパティである。これは、キー値ペアのセット“property’s name−property’s value”を指定し得る。要素は、各ペアについて、a)要素が、指定された名前の「simple」プロパティを含むこと、および、b)文字列へ変換されたこのプロパティの値が、指定された値を含むことが真であれば、基準を満足していると考慮される。カンマ区切りされた各値は、property_name=property_valueの形式であり得る。
[0055] ブロック254では、1つまたは複数のタイプベースの探索構成要素(たとえば、構成要素124および/または126)が、識別された要素タイプに基づいてインスタンス化される。たとえば、これは、パーサブロック252からのタイプフィルタ基準に基づいて、ブロック256において(たとえば、タイプベースの探索構成要素ストア128からの)タイプ情報にアクセスすることによって実行され得る。ブロック256は、限定されないが、タイプがどのプロパティを含んでいるか、要素タイプの子要素のタイプ、要素タイプからどの要素タイプが由来しているか、および、要素タイプのためのプロパティゲッタの実施、を含む要素タイプに関する情報を提供する。
[0056] 一例では、ブロック254は、タイプ基準を、プロパティ基準に一致させるために、探索オプションを処理するためにブロック256によって提供されたタイプ情報を使用する。探索基準が、1つまたは複数のプロパティを含んでいるのであれば、タイプ情報ブロック254を使用することは、探索されたプロパティを含むことができないすべての要素タイプをフィルタアウトし得る。
[0057] 探索されるべき各要素タイプについて、対応するタイプベースの探索構成要素が、コード生成器130によって生成されたコードに従ってインスタンス化される。
[0058] ブロック258では、モデルストア108における要素に対する参照が、ブロック254からの探索基準と、ブロック256においてインスタンス化された意味論的な探索構成要素とに従って取得される。たとえば、メタデータ要素参照は、ルート要素の名前を取得すること(ストレージアクセスに関係しない迅速な動作)、および/または、要素をロードすること(ストレージアクセスに関係のある比較的長い動作)を容易にし得る。
[0059] ブロック260では、ブロック258で取得された要素参照は、たとえば、要素の名前または他のヒューリスティックスの指定された基準に基づいて、チャンク(chunk)へ優先付けられる。たとえば、探索された名前のうちの何れかを含む名前を有するルート要素は、この名前を含まないルート要素の前に処理されるであろう。
[0060] ブロック262は、モデルストア108における特定の要素が探索基準を満足するのであれば、モデルストア108における特定の要素を処理する。一例では、要素のタイプが、ブロック254において指定された、要求されたタイプ、すなわち、要素の名前が、要求された名前またはその一部のうちの1つを含む、探索基準によって指定された各ペア“property’s name−property’s value”について、要素が、そのような名前を持つプロパティを含んでいることが真である、および、このプロパティの値が、指定されたプロパティの値を含む、のうちの1つであれば、要素は、探索基準を満足していると考慮される。
[0061] 一例では、ブロック262は、ブロック264から、要素述語関数または他の情報を取得する。これは、要素が探索基準を満足しているか否かを判定するために使用される。ブロック264は、262によって提供された要素タイプの各々の述語関数を、ブロック256からの情報を使用して生成する。たとえば、ブロック264は、ブロック256へ要素タイプを提供し、各要素タイプのためのプロパティゲッタの実施に関する情報を受け取る。
[0062] モデルストア108における要素が、探索基準を満足するのであれば、その結果は、インターフェースブロック250を介して開発者260へ提供される。
[0063] 図4は、意味論的な探索構成要素を使用して、探索を実行するためのメソッド300の一例を例示するフロー図である。例示のために、限定によってではなく、メソッド300は、アーキテクチャ100がタイプベースの探索構成要素を使用して探索を実行するコンテキストにおいて説明されるであろう。
[0064] ステップ302では、たとえばユーザインターフェースディスプレイ116を使用して、開発外観が表示される。ステップ304では、探索入力が受け取られ、ステップ306では、探索基準を識別するために探索入力がパースされる。探索基準の例は、限定されないが、タイプベースの制約、メソッド名、およびプロパティ値を含む。その後、探索モジュール120は、探索基準を満足する要素を求めて、モデルストア108を探索する。
[0065] ステップ308では、モデルストア108を探索するために、1つまたは複数のタイプベースの探索構成要素が識別されインスタンス化される。たとえば、図3に関して上記で議論されたように、タイプベースの探索制約は、探索入力において明示的に定義され得る。別の例では、タイプベースの探索制約が、探索入力において提供されたトークンから推論され得る。たとえば、探索入力において提供されたプロパティ値について、ステップ308は、どの要素タイプが、対応するプロパティを有しているのかを判定し得る。
[0066] その後、1つまたは複数のタイプベースの探索構成要素は、探索クエリに基づいてモデルストア108における要素を探索するために、探索モジュール120によってインスタンス化される。一例では、対応する要素タイプの各要素について、探索構成要素の個別の事例が生成される。
[0067] インスタンス化された探索構成要素は、ステップ310において、モデルストア108内の要素を探索するため、および、ステップ312において、ステップ306から識別された基準を満足する要素を識別するために使用される。上記で議論されたように、一例では、探索構成要素は、開発者106によって開発された要素をダイレクトに探索するのではなく、シリアル化された要素の表現(たとえば、XMLファイル)を探索し得る。
[0068] 例によって、限定によってではなく、モデルストア108におけるシリアル化された要素の表現を探索している間、探索構成要素は、シリアル化された表現における対応する要素に対する参照(たとえば、行および列番号位置)を発見することによって、探索基準を満足する要素の部分を識別する。探索構成要素は、コードをメタデータと区別し、シリアル化された表現において識別された一致について、あたかも開発者へ提示された統合されたコードビューを探索したかのように、コードにおける位置を計算する。したがって、開発者106の観点から、探索モジュール120は、シリアル化された表現ではなく、コードエディタ、および/または、メタデータエディタビュー内で探索し、結果を返す。
[0069] 一例では、探索構成要素は、この要素を読み取り、オブジェクト指向表現へ変換し、そのプロパティゲッタを適用して、プロパティを識別し、探索クエリからのプロパティベースの探索基準に対して一致させる。探索構成要素は、一致されたプロパティを、オブジェクト内のプロパティをユニークに識別する対応するパスへ変換する。たとえば、このパスは、ユニフォームリソース識別子(URI)を備える。これは、上記で議論されたように、メタデータパスであり得る。
[0070] ステップ314では、探索基準に一致する要素を示すリンクのセットとして結果が返される。たとえば、探索構成要素は、対応するURIを、探索モジュール120のアグリゲータ構成要素へ返すことによって要素一致を識別する。アグリゲータURIは、開発者106へ提示されるために、ユーザインターフェースモジュール112へ提供される。
[0071] ステップ316では、特定のURIの開発者106による選択が、たとえば、マウスクリックまたは他のユーザ入力のようなユーザインタラクションを介して、受け取られる。ナビゲーションモジュール122は、対応する要素位置を識別するために、選択されたURIを復号する。一例では、URIは、別のプロパティへの参照(たとえば、"source=crosscompany")を備える。URIの選択は、URLによって識別された場所においてメタデータエディタを開く。別の例では、URIは、値を含むメソッドボディへの参照を含む。ここでは、URIの選択は、コードエディタを開く。
[0072] 一例では、探索結果は、非同期的に取得および表示される。これは、矢印320によって図4において表される。すなわち、ステップ312において、インスタンス化された意味論的な探索構成要素が、探索基準を満足する要素を識別すると、識別された要素のURIが開発者へ表示される一方、探索はバックグランドで継続する。
[0073] 図5は、開発者106が、アーキテクチャ100を使用して、アプリケーション要素を開発し、探索を実行する開発外観を提供するユーザインターフェースディスプレイ400の一例を例示する。例示のために、限定によってではなく、ユーザインターフェースディスプレイ400は、アーキテクチャ100のコンテキストで説明されるであろう。
[0074] ユーザインターフェースディスプレイ400は、アプリケーション要素107をオーサリングするための開発者入力を受け取るコードエディタビュー402と、開発者探索クエリを受け取る意味論的な探索インターフェース404とを含む。例によって、以下の探索クエリが、要素404に入力された。
type:table,method name:insert property:“source=crosscompany”
[0075] 図3に関して説明された例示的な構文を使用して、探索クエリは、「table」であるタイプフィルタ、「insert」であるメソッド名フィルタ、および「crosscompany」であるプロパティ名フィルタを指定する。探索モジュール120は、テーブルタイプに対応するタイプベースの探索構成要素をインスタンス化する。探索クエリは、非同期的に実行され得、これは、探索結果URIが取得されると、結果ウィンドウ406に、探索結果URIを入力する。すなわち、この探索は、1つまたは複数の探索結果URIをウィンドウ406内に表示させることによって始まり、その後、追加の探索結果URIが取得されると、ウィンドウ406へ、追加の探索結果URIを追加する。このように、開発者106は、ビュー402を、対応する探索結果へ向けるために、たとえば所望されるURIをクリックすることによって、ユーザインターフェースディスプレイ400とインタラクトし続け、その間、探索は、任意の追加の結果を返すためにバックグランドで実行し続ける。例示された例では、各URIは、ラベル情報408と、要素および要素の場所を識別する場所情報410とを含む。
[0076] 一例では、探索モジュール120の探索能力が、アプリケーションプログラミングインターフェース(API)として、探索クエリ構文とは独立したオブジェクトモデルとともに表される。APIを使用して、探索動作は、複数の異なるデバイスのうちの何れかから(たとえば、アクセス権利およびセキュリティに従って)遠隔的に使われ得るネットワークにおけるサービスとして起動され得る。探索APIのためのパラメータは、オブジェクトモデルにおけるオブジェクトであり、構文に一致させるためのクエリ文字列ではない。したがって、探索クエリ構文は、探索部からデカップルされる。
[0077] 例によって、オブジェクトモデルのためのクラス図解は、複数の異なるクラスを含み得る。各クラスは、1つまたは複数の意味的な探索制約と、対応する要素を探索および検査するために呼び出されるべきメソッドとを定義する。オブジェクトモデルクラスによって定義された意味論的な探索制約の例は、限定されないが、タイプ制約、プロパティ制約、コード制約、および名前制約を含む。
[0078] 図6は、探索APIを使用して探索結果をレンダリングする例示的なユーザインターフェース450を例示する。ユーザインターフェース450は、探索パラメータを定義する探索クエリを受け取るクエリ入力フィールド452と、探索モジュールから返された対応するクエリ結果を表示するクエリ結果フィールド454とを含む。例示された例では、探索パラメータは、コード制約クラスを含み、コード制約のための文字列(すなわち、「選択中」)を識別する。コード制約クラスは、文字列を一致させ、探索を優先度付ける等のためのメソッドを含む。探索モジュールは、コード制約クラスのオブジェクトをインスタンス化し、モデルストアに対する探索を実行する。
[0079] 一例では、探索が開始されるデバイスに依存して、異なる構文が提供され得る。たとえば、開発者は、より大きなフォーム・ファクタ・スクリーン(form factor screen)を備えた開発者デスクトップコンピュータから、フォーマルな構文でクエリ文字列を入力することを可能とされ得る。一方、フォーマルな構文における入力は、より小さなフォーム・ファクタを備えたモバイルデバイスからは、開発者にとってより困難であり得る。探索アーキテクチャは、より単純な形式でクエリ入力を容易にするように構成され得る。たとえば、モバイルデバイス等を使用する場合、開発者は、特定の探索制約(たとえば、特定のタイプベースの探索)のセットに割り当てられたボタンのようなあらかじめ定義された探索機能を有する制御とともに提示され得る。
[0080] 本議論は、プロセッサおよびサーバに言及する。一例では、プロセッサおよびサーバは、個別に図示されていないが、関連付けられたメモリおよびタイミング回路を備えたコンピュータプロセッサを含む。これらは、これらが属するシステムまたはデバイスの機能部分であり、これらシステムにおける他のモジュール、構成要素、および/または、アイテムの機能性によって起動され、これらシステムにおける他のモジュール、構成要素の機能、および/または、アイテムの機能性を容易にする。
[0081] また、多くのユーザインターフェースディスプレイが議論された。それらは、種々様々な異なる形式を採り得、そこに配置された種々様々な異なるユーザ起動可能な入力メカニズムを有し得る。たとえば、ユーザ起動可能な入力メカニズムは、テキストボックス、チェックボックス、アイコン、リンク、ドロップダウンメニュー、探索ボックス等であり得る。これらはまた、種々様々な異なる方式で起動され得る。たとえば、これらは、(トラックボールまたはマウスのような)ポイントおよびクリックデバイスを使用して起動され得る。これらは、ハードウェアボタン、スイッチ、ジョイスティックまたはキーボード、サムスイッチ、またはサムパッド等を使用して起動され得る。これらはまた、仮想的なキーボードまたは他の仮想的なアクチュエータを使用して起動され得る。それに加えて、これらが表示されるスクリーンがタッチセンサ式スクリーンである場合、これらはタッチジェスチャを使用して起動され得る。また、これらを表示するデバイスが音声認識構成要素を有する場合、これらは音声コマンドを使用して起動され得る。
[0082] 多くのデータストアも議論された。これらは各々の、多数のデータストアへ分割され得ることが注目されるであろう。すべてが、これらにアクセスするシステムに局所的であり得、すべてが、遠隔的であり得、または、いくつかが、局所的であり得る一方、他が、遠隔的である。本明細書では、これらの構成のすべてが考慮される。
[0083] また、図面は、各ブロックへ割り当てられた機能性を備えた多くのブロックを図示する。より少ない構成要素によって機能性が実行されるように、より少ないブロックが使用され得ることが注目されるであろう。また、より多くのブロックが、より多くの構成要素にわたって分散された機能とともに使用され得る。
[0084] 図7は、その要素がクラウドコンピューティングアーキテクチャ500に配置されていることを除いた、図1に図示されたアーキテクチャ100のブロック図である。クラウドコンピューティングは、サービスを提供するシステムの物理的な場所または構成をエンドユーザが知ることを必要としない計算、ソフトウェア、データアクセス、およびストレージサービスを提供する。様々な例において、クラウドコンピューティングは、適切なプロトコルを使用して、インターネットのような広域ネットワークを介してサービスを提供する。たとえば、クラウドコンピューティングプロバイダは、広域ネットワークを介してアプリケーションを提供し、これらは、ウェブブラウザまたは他の任意のコンピューティング構成要素を介してアクセスされ得る。アーキテクチャ100のソフトウェア、モジュール、または構成要素のみならず、対応するデータが、遠隔場所におけるサーバに記憶され得る。クラウドコンピューティング環境におけるコンピューティングリソースは、遠隔のデータセンタ場所において統合され得るか、または、分散され得る。クラウドコンピューティングインフラストラクチャは、たとえユーザにとって単一のアクセスのポイントとして見えようとも、共有データセンタを介してサービスを提供し得る。したがって、本明細書で説明されたモジュール、構成要素、および機能は、クラウドコンピューティングアーキテクチャを使用して遠隔場所におけるサービスプロバイダから提供され得る。あるいは、これらは、従来式のサーバから提供され得るか、または、クライアントデバイスにダイレクトに、または他の方式でインストールされ得る。
[0085] 本説明は、公衆のクラウドコンピューティングおよび個人のクラウドコンピューティングの両方を含むことが意図される。クラウドコンピューティング(公衆および個人の両方)は、実質的にシームレスなリソースのプールのみならず、根底をなすハードウェアインフラストラクチャを管理および構成するための低減された必要性を提供する。
[0086] 公衆のクラウドは、ベンダによって管理され、典型的には、同じインフラストラクチャを使用して多くのコンシューマをサポートする。また、公衆のクラウドは、個人のクラウドとは逆に、エンドユーザを、ハードウェアを管理することから解放し得る。個人のクラウドは、組織自身によって管理され得、インフラストラクチャは、典型的には、他の組織と共有されない。組織はまだ、インストールおよび修理等のように、ハードウェアをある程度維持する。
[0087] 図7に図示される例では、いくつかのアイテムは、図1に図示されるこれらに類似しており、これらは同様に付番されている。図7は特に、インタラクティブ開発システム102、モデルストア108、探索構成要素ストア128、および探索構成要素コード生成器130が、(公衆、個人、または、一部が公衆であり他が個人である組合せであり得る)クラウド502に配置され得る。したがって、開発者106は、クラウド502を介してこれらシステムへアクセスするためにユーザデバイス504を使用する。
[0088] 図7はまた、クラウドアーキテクチャの別の例を図示する。図7は、アーキテクチャ100のいくつかの要素がクラウド502に配置され、他は配置されないことも考慮されることを図示する。例によって、モデルストア108は、クラウド502の外部に配置され得、クラウド502を介してアクセスされ得る。別の例では、探索構成要素ストア128もまた、クラウド502の外部であり得る。別の例において、探索構成要素コード生成器130もまた、クラウド502の外部であり得る。これらがどこに配置されているかに関わらず、これらは、(広域ネットワークまたはローカルエリアネットワークの何れかである)ネットワークを介してデバイス504によってダイレクトにアクセスされ得、これらは、サービスによって遠隔サイトにおいてホストされ得るか、または、クラウドを介したサービスとして提供され得るか、または、クラウドに存在する接続サービスによってアクセスされ得る。これらアーキテクチャのすべてが本明細書で考慮される。
[0089] アーキテクチャ100またはその一部は、種々様々な異なるデバイス上に配置され得ることもまた注目されるであろう。これらのデバイスのうちのいくつかは、サーバと、デスクトップコンピュータと、ラップトップコンピュータと、タブレットコンピュータと、または、パームトップコンピュータ、セル電話、スマートフォン、マルチメディアプレーヤ、携帯情報端末等のような他のモバイルデバイスとを含む。
[0090] 図8は、本システム(またはその一部)が展開され得る、ユーザのまたはクライアントのハンドヘルドデバイス16として使用され得るハンドヘルドデバイスまたはモバイルコンピューティングデバイスの一例の簡略ブロック図である。図9〜図12は、ハンドヘルドデバイスまたはモバイルデバイスの例である。
[0091] 図8は、アーキテクチャ100のモジュールまたは構成要素を実行し得る、または、アーキテクチャ100とインタラクトする、またはその両方を行うクライアントデバイス16の構成要素の一般的なブロック図を提供する。デバイス16では、ハンドヘルドデバイスが他のコンピューティングデバイスと通信することを可能にし、いくつかの例では、たとえばスキャニングによって、情報を自動的に受信するためのチャネルを提供する、通信リンク13が提供される。通信リンク13の例は、赤外線ポート、シリアル/USBポート、イーサネットポートのようなケーブルネットワークポート、および、ネットワークへセルラアクセスを提供するために使用されるワイヤレスサービスである汎用パケット無線サービス(GPRS)、LTE、HSPA、HSPA+、および他の3Gおよび4G無線プロトコル、lXrtt、およびショートメッセージサービスのみならず、ネットワークへローカルワイヤレス接続を提供する802.11および802.11b(Wi-Fi)プロトコル、およびBluetoothプロトコルを含む1つまたは複数の通信プロトコルを介した通信を可能にするワイヤレスネットワークポートを含む。
[0092] 他の例では、アプリケーションまたはシステムは、セキュアデジタル(SD)カードインターフェース15へ接続されたリムーバブルなSDカードにおいて受け取られる。SDカードインターフェース15および通信リンク13は、メモリ21および入力/出力(I/O)構成要素23のみならず、クロック25および位置決めシステム27にも接続されているバス19に沿ってプロセッサ17(これは、図1からのプロセッサ110をも具体化し得る)と通信する。
[0093] I/O構成要素23は、一例では、入力操作および出力操作を容易にするように提供される。デバイス16の様々な例のためのI/O構成要素23は、ボタン、タッチセンサ、マルチタッチセンサ、光またはビデオセンサ、音声センサ、タッチスクリーン、近接センサ、マイクロホン、チルトセンサ、および重力スイッチのような入力構成要素と、ディスプレイデバイス、スピーカ、およびまたはプリンタポートのような出力構成要素とを含み得る。他のI/O構成要素23もまた同様に使用され得る。
[0094] クロック25は、時間と日付を出力するリアルタイムクロック構成要素を備える。それはプロセッサ17のためのタイミング機能をも提供し得る。
[0095] 位置決めシステム27は、デバイス16の現在の地理的位置を出力する構成要素を含む。これは、たとえば、全地球測位システム(GPS)受信機、LORANシステム、推測航法システム、セルラ三角測量システム、または他の測位システムを含み得る。それはたとえば、所望される地図、ナビゲーションルート、および他の地理的機能を生成するマッピングソフトウェアまたはナビゲーションソフトウェアをも含み得る。
[0096] メモリ21は、オペレーティングシステム29、ネットワーク設定31、アプリケーション33、アプリケーション構成設定35、データストア37、通信ドライバ39、および通信構成設定41を記憶する。それはまた、アーキテクチャ100の一部またはすべてであり得るクライアントシステム24を記憶し得る。メモリ21は、すべてのタイプの有形的な揮発性および不揮発性のコンピュータ読取可能なメモリデバイスを含み得る。それはまた、(以下に説明される)コンピュータ記憶媒体をも含み得る。メモリ21は、プロセッサ17によって実行された場合、プロセッサに対して、コンピュータ実施されるステップまたは機能を、命令に従って実行させるコンピュータ読取可能な命令を記憶する。プロセッサ17は、それらの機能性を容易にするために他のモジュールまたは構成要素によっても活性化され得る。
[0097] ネットワーク設定31の例は、プロキシ情報、インターネット接続情報、およびマッピングのようなものを含む。アプリケーション構成設定35は、特定の企業またはユーザのためのアプリケーションを調整する設定を含む。通信構成設定41は、他のコンピュータと通信するためのパラメータを提供し、GPRSパラメータ、SMSパラメータ、接続ユーザ名、およびパスワードのようなアイテムを含む。
[0098] アプリケーション33は、デバイス16に以前に記憶されていたアプリケーション、または、使用中にインストールされたアプリケーションであり得るが、これらは、オペレーティングシステム29の一部であり得るか、またはデバイス16に対して外部にも同様にホストされ得る。
[0099] 図9は、デバイス16がタブレットコンピュータ600である一例を図示する。図9では、コンピュータ600は、ユーザインターフェースディスプレイスクリーン602を備えて図示される。スクリーン602は、タッチスクリーン(したがって、アプリケーションとインタラクトするために、ユーザの指からのタッチジェスチャが使用され得る)、または、ペンまたはスタイラスから入力を受け取るペン対応インターフェースであり得る。それはまた、スクリーン上の仮想的なキーボードをも使用し得る。もちろん、それはまた、たとえばワイヤレスリンクまたはUSBポートのような適切なアタッチメントメカニズムを介してキーボードまたは他のユーザ入力デバイスへ取り付けられ得る。コンピュータ600はまた、音声入力をも受け取り得る。
[00100] 図10および図11は、使用され得るデバイス16の追加の例を提供するが、他のものもまた同様に使用され得る。図10では、フィーチャフォン、スマートフォン、またはモバイル電話45が、デバイス16として提供される。電話45は、電話番号をダイヤルするためのキーパッド47のセットと、アプリケーション画像、アイコン、ウェブページ、写真、およびビデを含む画像を表示することが可能なディスプレイ49と、ディスプレイ上に図示されたアイテムを選択するための制御ボタン51とを含む。電話は、汎用パケットラジオサービス(GPRS)および1Xrttのようなセルラ電話信号と、ショートメッセージサービス(SMS)信号とを受信するためのアンテナ53を含む。いくつかの例では、電話45はまた、セキュアデジタル(SD)カード57を受け取るSDカードスロット55をも含む。
[00101] 図11のモバイルデバイスは、携帯情報端末(PDA)59またはマルチメディアプレーヤまたはタブレットコンピューティングデバイス等(以下PDA59と称される)である。PDA59は、スタイラス63がスクリーンの上方に位置された場合、スタイラス63(または、ユーザの指のような他のポインタ)の位置を感知する誘導スクリーン61を含む。これによって、ユーザは、スクリーン上のアイテムの選択、強調、および移動のみならず、描画、および書込も可能となる。PDA59はまた、多くのユーザ入力キーまたはボタン(たとえば、ボタン65)を含む。これによって、ユーザは、ディスプレイ61上に表示されたメニューオプションまたは他のディスプレイオプションをスクロールすることが可能となり、また、ユーザは、ディスプレイ61に触れることなく、アプリケーションを変更したり、または、ユーザ入力機能を選択することが可能となる。図示されないが、PDA59は、他のコンピュータとのワイヤレス通信を可能にする内部アンテナおよび赤外線送信機/受信機のみならず、他のコンピューティングデバイスへのハードウェア接続を可能にする接続ポートを含み得る。そのようなハードウェア接続は典型的には、シリアルまたはUSBポートを介して他のコンピュータへ接続するクレードルによってなされる。そのため、これらの接続は、非ネットワーク接続である。一例では、モバイルデバイス59はまた、SDカード69を受け取るSDカードスロット67を含む。
[00102] 図12は、電話がスマートフォン71であることを除いて図10に類似している。スマートフォン71は、アイコンまたはタイルまたは他のユーザ入力メカニズム75を表示するタッチセンサ式ディスプレイ73を有する。メカニズム75は、アプリケーションの実行、通話、データ転送操作の実行等のためにユーザによって使用され得る。一般に、スマートフォン71は、モバイルオペレーティングシステム上にビルドされ、フィーチャフォンよりもより進んだコンピューティング能力および接続性を提供する。
[00103] 他の形式のデバイス16が可能であることに注目されたい。
[00104] 図13は、アーキテクチャ100、またはその一部が(たとえば)展開され得るコンピューティング環境の一例である。図13を参照して示すように、いくつかの例を実施するための典型的なシステムは、コンピュータ810の形式である汎用コンピューティングデバイスを含む。コンピュータ810の構成要素は、限定されないが、(プロセッサ110を備え得る)処理ユニット820、システムメモリ830、および、システムメモリを含む様々なシステム構成要素を処理ユニット820へ結合するシステムバス821を含み得る。システムバス821は、メモリバスまたはメモリコントローラ、周辺バス、および、種々のバスアーキテクチャのうちの何れかを使用したローカルバスを含むいくつかのタイプのバス構造のうちの何れかであり得る。例によって、限定することなく、そのようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクス標準化団体(VESA)ローカルバス、および、Mezzanineバスとしても知られている周辺機器インターコネクト(PCI)バスを含む。図1に関して説明されたメモリおよびプログラムは、図13の対応する部分において展開され得る。
[00105] コンピュータ810は、典型的には、様々なコンピュータ読取可能な媒体を含む。コンピュータ読取可能な媒体は、コンピュータ810によってアクセスされ得、揮発性および不揮発性の媒体、リムーバブルおよび非リムーバブルの媒体の両方を含む利用可能な任意の媒体であり得る。例によって、限定せず、コンピュータ読取可能な媒体は、コンピュータ記憶媒体および通信媒体を備え得る。コンピュータ記憶媒体は、変調されたデータ信号または搬送波とは異なり、変調されたデータ信号または搬送波を含まない。それは、コンピュータ読取可能な命令、データ構造、プログラムモジュール、または他のデータのような情報の記憶のための任意の方法または技術において実施される揮発性および不揮発性の、リムーバブルおよび非リムーバブルの両方の媒体を含むハードウェア記憶媒体を含む。コンピュータ記憶媒体は、限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶デバイス、または、所望された情報を記憶するために使用され得、コンピュータ810によってアクセスされ得る他の任意の媒体、を含む。通信媒体は典型的には、伝送メカニズムにおいて、コンピュータ読取可能な命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報伝送媒体を含む。「変調されたデータ信号」という用語は、信号における情報をエンコードするような方式で設定または変更されたその特性のうちの1つまたは複数を有する信号を意味する。例によって、限定することなく、通信媒体は、ワイヤネットワークまたはダイレクトワイヤ接続のようなワイヤ媒体、および、音響、RF、赤外線、および他のワイヤレス媒体のようなワイヤレス媒体を含む。上記のうちの任意の組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
[00106] システムメモリ830は、読取専用メモリ(ROM)831およびランダムアクセスメモリ(RAM)832のような揮発性および/または不揮発性メモリの形式のコンピュータ記憶媒体を含む。起動中のような、コンピュータ810内の要素間の情報の転送を助ける基本ルーチンを含む基本入力/出力システム833(BIOS)は、典型的に、ROM831に記憶される。RAM832は典型的には、処理ユニット820に直ちにアクセス可能な、および/または、処理ユニット820によって現在操作されている、データおよび/またはプログラムモジュールを含む。例によって、限定ではなく、図13は、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、およびプログラムデータ837を例示する。
[00107] コンピュータ810はまた、他のリムーバブル/非リムーバブルな揮発性/不揮発性のコンピュータ記憶媒体を含み得る。例のみによって、図13は、非リムーバブルな不揮発性磁気媒体からの読取、または、この不揮発性磁気媒体への書込を行うハードディスクドライブ841と、CD ROMまたは他の光学媒体のようなリムーバブルな不揮発性光ディスク856からの読取、または、この不揮発性光ディスク856への書込を行う光ディスクドライブ855とを例示する。典型的なオペレーティング環境において使用され得る他のリムーバブル/非リムーバブルな揮発性/不揮発性コンピュータ記憶媒体は、限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM等を含む。ハードディスクドライブ841は典型的には、インターフェース840のような非リムーバブルなメモリインターフェースを介してシステムバス821へ接続され、光ディスクドライブ855は典型的には、インターフェース850のようなリムーバブルなメモリインターフェースによってシステムバス821へ接続される。
[00108] あるいは、またはそれに加えて、本明細書で説明された機能性は、1つまたは複数のハードウェア論理構成要素によって少なくとも部分的に実行され得る。たとえば、限定なしで、使用され得るハードウェア論理構成要素のタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定プログラム向け集積回路(ASIC)、特定プログラム向け基準製品(ASSP)、システムオンチップシステム(SOC)、コンプレックスプログラマブル論理デバイス(CPLD)等を含む。
[00109] 上記で議論され図13に例示されたドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ読取可能な命令のストレージ、データ構造、プログラムモジュール、およびコンピュータ810のための他のデータを提供する。図13では、たとえば、ハードディスクドライブ841は、オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、およびプログラムデータ847を記憶するとして例示される。これら構成要素は、オペレーティングシステム834、アプリケーションプログラム835、他のプログラムモジュール836、およびプログラムデータ837と同じ、または、異なるかの何れかであり得る。オペレーティングシステム844、アプリケーションプログラム845、他のプログラムモジュール846、およびプログラムデータ847は、最小でも、これらが異なるコピーであることを例示するために、本明細書では異なる番号を付される。
[00110] ユーザは、コマンドおよび情報を、キーボード862、マイクロホン863、および、マウスやトラックボールまたはタッチパッドのようなポインティングデバイス861のような入力デバイスを介してコンピュータ810へ入力し得る。他の入力デバイス(図示せず)は、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナ等を含み得る。これらおよび他の入力デバイスはしばしば、システムバスへ結合されたユーザ入力インターフェース860を介して処理ユニット820へ接続されるが、他のインターフェースと、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)のようなバス構造とによって接続され得る。ビジュアルディスプレイ891または他のタイプのディスプレイデバイスも、ビデオインターフェース890のようなインターフェースを介してシステムバス821へ接続される。モニタに加えて、コンピュータはまた、スピーカ897およびプリンタ896のように、出力周辺インターフェース895を介して接続され得る他の周辺出力デバイスを含み得る。
[00111] コンピュータ810は、遠隔コンピュータ880のような1つまたは複数の遠隔コンピュータへの論理的な接続を使用してネットワーク化された環境で操作される。遠隔コンピュータ880は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他の共通のネットワークノードであり得て、典型的には、コンピュータ810に関して上記説明された要素のうちの多くまたはすべてを含む。図13に描写される論理的な接続は、ローカルエリアネットワーク(LAN)871および広域ネットワーク(WAN)773を含むが、他のネットワークをも含み得る。そのようなネットワーキング環境は、オフィス、企業ワイドなコンピュータネットワーク、イントラネット、およびインターネットにおいて普通である。
[00112] LANネットワーク環境で使用される場合、コンピュータ810は、ネットワークインターフェースまたはアダプタの870を介してLAN871へ接続される。WANネットワーク環境で使用される場合、コンピュータ810は典型的には、モデム872、または、インターネットのようなWAN873を介して通信を確立するための他の手段を含む。内部または外部であり得るモデム872は、ユーザ入力インターフェース860または他の適切なメカニズムを介してシステムバス821へ接続され得る。ネットワーク化された環境では、コンピュータ810またはその一部に関して描写されたプログラムモジュールは、遠隔メモリ記憶デバイスに記憶され得る。例によって、限定なく、図13は、遠隔アプリケーションプログラム885を、遠隔コンピュータ880上に存在するものとして例示する。図示されたネットワーク接続は、例示的であり、コンピュータ間の通信リンクを確立する他の手段が使用され得ることが認識されるであろう。
[00113] 本明細書で説明された異なる実施形態が、異なる方式で結合され得ることもまた注目されるべきである。すなわち、1つまたは複数の実施形態の一部が、1つまたは複数の他の実施形態の一部と結合され得る。このすべてが本明細書で考慮される。
[00114] 例1は、ユーザ開発入力を感知し、ユーザ開発入力に基づいてコンピュータシステムの要素を変化させる開発モジュールを備える開発システムである。これら要素は、コンピュータシステムにおいてモデル化されたタイプを備える。ユーザインターフェースモジュールは、ユーザ入力メカニズムを用いてユーザインターフェースディスプレイを生成し、コンピュータシステムの要素を探索するためのユーザ探索クエリを示す、ユーザ入力メカニズムを介して受け取られたユーザ探索入力を感知する。探索エンジンは、ユーザ探索クエリのためのタイプベースの探索パラメータを識別する。探索エンジンは、タイプベースの探索パラメータに基づいて、タイプベースの探索構成要素を活性化するように制御される。タイプベースの探索構成要素は、ユーザインターフェースディスプレイにおける探索結果のセットを返すために、要素探索を実行する。
[00115] 例2は、任意またはすべての以前の例の開発システムであり、開発モジュールは、インタラクティブ開発環境(IDE)の一部である。
[00116] 例3は、任意またはすべての以前の例の開発システムであり、ユーザは開発者であり、コンピュータシステムの要素は、開発者によってカスタマイズされたアプリケーション要素を備える。
[00117] 例4は、任意またはすべての以前の例の開発システムであり、タイプベースの探索パラメータは、コンピュータシステムにおいてモデル化されたタイプから選択された特定の要素タイプを識別し、探索エンジンは、要素探索を、特定の要素タイプを有する要素へ制約するように制御される。
[00118] 例5は、任意またはすべての以前の例の開発システムであり、ユーザ探索クエリは、キャラクタ文字列および特定の要素タイプを含む。
[00119] 例6は、任意またはすべての以前の例の開発システムであり、探索結果のセットは、キャラクタ文字列に一致するプロパティ値を有する特定の要素タイプの要素を備える。
[00120] 例7は、任意またはすべての以前の例の開発システムであり、コンピュータシステムの要素は、複数の異なるタイプを備え、各タイプは、その要素タイプの要素のためのランタイム挙動を定義するプロパティおよびメソッドのセットを有する。システムはさらに、複数の探索構成要素を記憶する探索構成要素ストアを備え、各探索要素は、異なるタイプのうちの所与の1つに対応し、所与のタイプの要素のプロパティおよびメソッドのセットを探索するように構成されている。
[00121] 例8は、任意またはすべての以前の例の開発システムであり、探索エンジンは、特定の要素タイプに対応する探索構成要素ストアからタイプベースの探索構成要素を識別し、特定の要素タイプを有するコンピュータシステムの複数の要素の各々を識別し、識別された要素を、識別された探索構成要素を使用して、ユーザ探索クエリに基づいて探索する。
[00122] 例9は、任意またはすべての以前の例の開発システムであり、識別された探索構成要素は、特定の要素タイプを有する複数の識別された要素の各々についてインスタンス化され、探索エンジンは、インスタンス化された複数の探索構成要素からの探索結果を集約することによって探索結果のセットを取得し、集約された探索結果を、ユーザインターフェースディスプレイにおいて表示する。
[00123] 例10は、任意またはすべての以前の例の開発システムであり、探索結果のセットが、非同期的に取得および表示される。
[00124] 例11は、任意またはすべての以前の例の開発システムであり、要素のコードおよびメタデータを備える要素のシリアル化された表現を、要素の各々について記憶するモデルストアをさらに備える。探索エンジンは、モデルストア内のシリアル化された表現へアクセスすることによって要素探索を実行する。
[00125] 例12は、任意またはすべての以前の例の開発システムであり、探索エンジンは、要素のうちの所与の1つに対応するモデルストアにおける特定のシリアル化された表現を、タイプベースの探索パラメータに基づいて識別し、ユーザ探索クエリに基づいて、特定のシリアル化された表現を探索する。
[00126] 例13は、任意またはすべての以前の例の開発システムであり、探索エンジンは、ユーザ探索クエリに一致する所与の要素の一部を、特定のシリアル化された表現から識別し、所与の要素の一部をユニークに識別するパス情報を識別する。
[00127] 例14は、任意またはすべての以前の例の開発システムであり、パス情報は、ユニフォームリソース識別子(URI)を備え、ユーザインターフェースモジュールは、URIのユーザ選択可能な表現を生成する。それは、エディタユーザインターフェースにおいて所与の要素の一部を示すために選択可能である。
[00128] 例15は、複数の異なる要素タイプをモデル化するデータストアと、開発者入力を感知し、開発者入力に基づいて、異なる要素タイプのアプリケーション要素を変化させる開発者モジュールと、データストアにおいてモデル化された要素タイプの各々のために異なる探索構成要素を生成する探索構成要素生成器とを備える開発システムである。開発システムはまた、複数の要素タイプのために探索構成要素生成器によって生成された探索構成要素を記憶する探索構成要素ストアと、ユーザ探索入力を感知する探索エンジンであって、要素タイプの所与の1つのアプリケーション要素を探索するために探索構成要素のうちの選択された1つを活性化するように制御される探索エンジンとを備える。
[00129] 例16は、任意またはすべての以前の例の開発システムであり、探索構成要素生成器は、要素タイプの所与の1つの構造を分析し、所与の要素タイプの構造に基づいて、対応する探索機能を生成することによって、各探索構成要素を生成するように構成される。
[00130] 例17は、任意またはすべての以前の例の開発システムであり、所与の要素タイプの構造は、所与の要素タイプを有する要素のランタイム挙動を定義するプロパティおよびメソッドのセットによって定義される。
[00131] 例18は、任意またはすべての以前の例の開発システムであり、探索エンジンは、少なくとも1つの探索用語を有する探索クエリを受け取り、探索クエリのためのタイプベースの探索パラメータを識別し、タイプベースの探索パラメータに基づいて、探索構成要素ストアから探索構成要素のうちの1つを識別する。識別された探索構成要素は、探索用語に基づいて、アプリケーション要素のうちの1つまたは複数を探索するためにインスタンス化される。
[00132] 例19は、コンピュータシステムの要素を開発し、これら要素の探索を制御するためのコンピュータによって実施される方法である。この方法は、開発者ユーザ入力を感知し、開発者ユーザ入力に基づいて、コンピュータシステムの要素を変化させるステップを含む。コンピュータシステムは、複数の異なる要素タイプを備え、各要素タイプは、要素タイプの要素のためのプロパティ構造によって定義されている。この方法は、探索インターフェースディスプレイを生成するステップと、コンピュータシステムの要素を探索するために、ユーザ探索クエリを示すユーザ入力を、探索インターフェースディスプレイを介して感知するステップとを含む。この方法は、ユーザ探索クエリと、コンピュータシステムの要素のプロパティ構造に基づく意味論的な探索制約とに基づいて、コンピュータシステムの要素の探索を制御するステップを含む。この方法は、探索から探索結果を返すステップと、探索結果を表示する結果ディスプレイを生成するステップとを含む。
[00133] 例20は、任意またはすべての以前の例のコンピュータによって実施される方法であり、さらに、複数の異なる要素タイプをモデル化するデータストアへアクセスするステップと、異なる各要素タイプのために、要素タイプのプロパティ構造に基づいて、対応するタイプベースの探索構成要素を生成するステップとを含む。この方法は、ユーザ探索クエリに基づいてデータストアを探索するために、意味論的な探索制約に基づいて選択された、生成されたタイプベースの探索構成要素のうちの少なくとも1つを使用するステップを含む。
[00134] これら主題は、構造的な特徴および/または方法的な動作に特有の文言で記述されているが、添付された特許請求の範囲で定められた主題は、必ずしも上記説明された特定の特徴または動作に限定される必要はないことが理解されるべきである。むしろ、上記説明された特定の特徴および動作は、特許請求の範囲を実施する例示的な形式で開示され、他の均等な特徴および動作が、特許請求の範囲の範囲内にあるべきことが意図されている。

Claims (15)

  1. コンピュータシステムの要素を開発し、前記要素の探索を制御するための開発システムであって、
    ユーザ開発入力を感知し、前記ユーザ開発入力に基づいて、前記コンピュータシステムの要素を変化させる開発モジュールであって、前記要素は、前記コンピュータシステムにおいてモデル化されたタイプを備える、開発モジュールと、
    ユーザ入力メカニズムを用いてユーザインターフェースディスプレイを生成し、前記コンピュータシステムの前記要素を探索するためのユーザ探索クエリを示す、前記ユーザ入力メカニズムを介して受け取られたユーザ探索入力を感知するユーザインターフェースモジュールと、
    前記ユーザ探索クエリのためのタイプベースの探索パラメータを識別する探索エンジンであって、前記探索エンジンは、前記タイプベースの探索パラメータに基づいて、タイプベースの探索構成要素を活性化するように制御され、前記タイプベースの探索構成要素は、前記ユーザインターフェースディスプレイにおける探索結果のセットを返すために、要素探索を実行する、探索エンジンと、を備える開発システム。
  2. 前記開発モジュールは、インタラクティブ開発環境(IDE)の一部である、請求項1に記載の開発システム。
  3. 前記ユーザは開発者であり、前記コンピュータシステムの前記要素は、前記開発者によってカスタマイズされたアプリケーション要素を備える、請求項1に記載の開発システム。
  4. 前記タイプベースの探索パラメータは、前記コンピュータシステムにおいてモデル化された前記タイプから選択された特定の要素タイプを識別し、前記探索エンジンは、前記要素探索を、前記特定の要素タイプを有する要素へ制約するように制御される、請求項1に記載の開発システム。
  5. 前記ユーザ探索クエリは、キャラクタ文字列および前記特定の要素タイプを含み、探索結果の前記セットは、前記キャラクタ文字列に一致するプロパティ値を有する前記特定の要素タイプの要素を備える、請求項4に記載の開発システム。
  6. 前記コンピュータシステムの前記要素は、複数の異なるタイプを備え、各タイプは、その要素タイプの要素のためのランタイム挙動を定義するプロパティおよびメソッドのセットを有し、前記開発システムはさらに、
    複数の探索構成要素を記憶する探索構成要素ストアであって、各探索構成要素は、前記異なるタイプのうちの所与の1つに対応し、前記所与のタイプの要素のプロパティおよびメソッドの前記セットを探索するように構成される、探索構成要素ストアを備える、請求項4に記載の開発システム。
  7. 前記探索エンジンは、前記特定の要素タイプに対応する前記探索構成要素ストアから、前記タイプベースの探索構成要素を識別し、前記特定の要素タイプを有する前記コンピュータシステムの複数の要素の各々を識別し、前記識別された要素を、前記識別された探索構成要素を使用して、前記ユーザ探索クエリに基づいて探索する、請求項6に記載の開発システム。
  8. 前記識別されたタイプベースの探索構成要素は、前記特定の要素タイプを有する前記複数の識別された要素の各々についてインスタンス化され、前記探索エンジンは、前記インスタンス化された複数の探索構成要素からの探索結果を集約することによって探索結果の前記セットを取得し、前記集約された探索結果を、前記ユーザインターフェースディスプレイにおいて表示する、請求項7に記載の開発システム。
  9. 探索結果の前記セットが、非同期的に取得および表示される、請求項8に記載の開発システム。
  10. 前記要素のコードおよびメタデータを備える前記要素のシリアル化された表現を、前記要素の各々について記憶するモデルストアをさらに備え、
    前記探索エンジンが、前記モデルストア内の前記シリアル化された表現へアクセスすることによって、前記要素探索を実行する、請求項1に記載の開発システム。
  11. 前記探索エンジンは、前記要素のうちの所与の1つに対応する前記モデルストアにおける特定のシリアル化された表現を、前記タイプベースの探索パラメータに基づいて識別し、前記ユーザ探索クエリに基づいて、前記特定のシリアル化された表現を探索する、請求項10に記載の開発システム。
  12. 前記探索エンジンは、前記ユーザ探索クエリに一致する前記所与の要素の一部を、前記特定のシリアル化された表現から識別し、前記所与の要素の一部をユニークに識別するパス情報を識別する、請求項11に記載の開発システム。
  13. 前記パス情報は、ユニフォームリソース識別子(URI)を備え、前記ユーザインターフェースモジュールは、エディタユーザインターフェースにおいて前記所与の要素の一部を示すために選択可能である、前記URIのユーザ選択可能な表現を生成する、請求項12に記載の開発システム。
  14. 複数の異なる要素タイプをモデル化するデータストアと、
    開発者入力を感知し、前記開発者入力に基づいて、前記異なる要素タイプのアプリケーション要素を変化させる開発者モジュールと、
    前記データストアにおいてモデル化された前記要素タイプの各々のために異なる探索構成要素を生成する探索構成要素生成器と、
    前記複数の要素タイプのために前記探索構成要素生成器によって生成された前記探索構成要素を記憶する探索構成要素ストアと、
    ユーザ探索入力を感知する探索エンジンであって、前記要素タイプの所与の1つの前記アプリケーション要素を探索するために前記探索構成要素のうちの選択された1つを活性化するように制御される探索エンジンと、を備える開発システム。
  15. コンピュータシステムの要素を開発し、前記要素の探索を制御するための、コンピュータによって実施される方法であって、
    開発者ユーザ入力を感知し、前記開発者ユーザ入力に基づいて、前記コンピュータシステムの要素を変化させるステップであって、前記コンピュータシステムは、複数の異なる要素タイプを備え、各要素タイプは、前記要素タイプの要素のためのプロパティ構造によって定義される、ステップと、
    探索インターフェースディスプレイを生成するステップと、
    前記コンピュータシステムの前記要素を探索するために、ユーザ探索クエリを示すユーザ入力を、前記探索インターフェースディスプレイを介して感知するステップと、
    前記ユーザ探索クエリと、コンピュータシステムの前記要素の前記プロパティ構造に基づく意味論的な探索制約とに基づいて、前記コンピュータシステムの前記要素の探索を制御するステップと、
    前記探索からの探索結果を返すステップと、
    前記探索結果を表示する結果ディスプレイを生成するステップと、を含む方法。
JP2016568687A 2014-06-02 2015-06-01 開発システムにおける意味論的なコンテンツアクセス Active JP6639418B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462006662P 2014-06-02 2014-06-02
US62/006,662 2014-06-02
US14/539,521 US9377999B2 (en) 2014-06-02 2014-11-12 Semantic content accessing in a development system
US14/539,521 2014-11-12
PCT/US2015/033554 WO2015187567A1 (en) 2014-06-02 2015-06-01 Semantic content accessing in a development system

Publications (3)

Publication Number Publication Date
JP2017522639A true JP2017522639A (ja) 2017-08-10
JP2017522639A5 JP2017522639A5 (ja) 2018-06-14
JP6639418B2 JP6639418B2 (ja) 2020-02-05

Family

ID=54702022

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016568687A Active JP6639418B2 (ja) 2014-06-02 2015-06-01 開発システムにおける意味論的なコンテンツアクセス

Country Status (10)

Country Link
US (1) US9377999B2 (ja)
EP (1) EP3149575B1 (ja)
JP (1) JP6639418B2 (ja)
KR (1) KR102309211B1 (ja)
CN (1) CN106462415B (ja)
AU (1) AU2015270951B2 (ja)
CA (1) CA2948646A1 (ja)
MX (1) MX370231B (ja)
RU (1) RU2679971C2 (ja)
WO (1) WO2015187567A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350201A1 (en) * 2015-05-27 2016-12-01 International Business Machines Corporation Etl data flow design assistance through progressive context matching
US9547482B2 (en) * 2015-06-02 2017-01-17 Sap Portals Israel Ltd. Declarative design-time experience platform for code generation
US11238115B1 (en) * 2016-07-11 2022-02-01 Wells Fargo Bank, N.A. Semantic and context search using knowledge graphs
US11238084B1 (en) 2016-12-30 2022-02-01 Wells Fargo Bank, N.A. Semantic translation of data sets

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0267629A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd ソフトウエア再利用の分散処理方法
JPH06274332A (ja) * 1993-03-24 1994-09-30 Hitachi Software Eng Co Ltd プログラム部品の登録・検索方法
JPH06348471A (ja) * 1993-06-11 1994-12-22 Nippon Steel Corp ソフトウェア部品検索装置
JP2006106948A (ja) * 2004-10-01 2006-04-20 Hitachi Ltd アプリケーションプログラム開発支援方法及びシステム
JP2008533544A (ja) * 2004-09-20 2008-08-21 コダーズ,インコーポレイテッド ソースコード・サーチ・エンジンを操作する方法およびシステム
JP2008242811A (ja) * 2007-03-27 2008-10-09 Hitachi Software Eng Co Ltd ソフトウェア部品ソースコード生成システム
JP2010191858A (ja) * 2009-02-20 2010-09-02 Daikin Ind Ltd ソフトウェア開発支援装置
JP2012123675A (ja) * 2010-12-09 2012-06-28 Hitachi Ltd システム部品の抽出方法およびシステム
US20120254835A1 (en) * 2011-03-31 2012-10-04 Infosys Technologies Ltd. Structural search of source code
US20130124529A1 (en) * 2011-11-15 2013-05-16 Microsoft Corporation Search augmented menu and configuration for computer applications

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050076017A1 (en) * 2003-10-03 2005-04-07 Rein Douglas R. Method and system for scheduling search terms in a search engine account
US20060090154A1 (en) * 2004-10-07 2006-04-27 International Business Machines Corp. System and method for contributing remote object content to an integrated development environment type-ahead
US8566789B2 (en) 2005-08-25 2013-10-22 Infosys Limited Semantic-based query techniques for source code
US7873356B2 (en) * 2005-09-16 2011-01-18 Microsoft Corporation Search interface for mobile devices
US20090063522A1 (en) 2007-08-17 2009-03-05 Oracle International Corporation System and method for managing ontologies as service metadata assets in a metadata repository
US8312437B2 (en) * 2008-12-30 2012-11-13 Microsoft Corporation Structured search in source code
CN101819574A (zh) * 2009-10-13 2010-09-01 腾讯科技(深圳)有限公司 一种搜索引擎系统和信息搜索方法
US8645905B2 (en) 2010-11-15 2014-02-04 Sap Ag Development artifact searching in an integrated development environment
US8701086B2 (en) * 2012-01-17 2014-04-15 NIIT Technologies Ltd Simplifying analysis of software code used in software systems
US9141707B2 (en) 2012-07-19 2015-09-22 Facebook, Inc. Context-based object retrieval in a social networking system
KR101446154B1 (ko) * 2013-01-11 2014-10-01 한남대학교 산학협력단 사용자 질의 확장 기법을 이용한 시맨틱 콘텐츠 검색 시스템 및 방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0267629A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd ソフトウエア再利用の分散処理方法
JPH06274332A (ja) * 1993-03-24 1994-09-30 Hitachi Software Eng Co Ltd プログラム部品の登録・検索方法
JPH06348471A (ja) * 1993-06-11 1994-12-22 Nippon Steel Corp ソフトウェア部品検索装置
JP2008533544A (ja) * 2004-09-20 2008-08-21 コダーズ,インコーポレイテッド ソースコード・サーチ・エンジンを操作する方法およびシステム
JP2006106948A (ja) * 2004-10-01 2006-04-20 Hitachi Ltd アプリケーションプログラム開発支援方法及びシステム
JP2008242811A (ja) * 2007-03-27 2008-10-09 Hitachi Software Eng Co Ltd ソフトウェア部品ソースコード生成システム
JP2010191858A (ja) * 2009-02-20 2010-09-02 Daikin Ind Ltd ソフトウェア開発支援装置
JP2012123675A (ja) * 2010-12-09 2012-06-28 Hitachi Ltd システム部品の抽出方法およびシステム
US20120254835A1 (en) * 2011-03-31 2012-10-04 Infosys Technologies Ltd. Structural search of source code
US20130124529A1 (en) * 2011-11-15 2013-05-16 Microsoft Corporation Search augmented menu and configuration for computer applications

Also Published As

Publication number Publication date
RU2016147085A3 (ja) 2018-12-12
KR102309211B1 (ko) 2021-10-05
MX2016015731A (es) 2017-03-16
WO2015187567A1 (en) 2015-12-10
US9377999B2 (en) 2016-06-28
RU2679971C2 (ru) 2019-02-14
JP6639418B2 (ja) 2020-02-05
AU2015270951B2 (en) 2020-07-30
CA2948646A1 (en) 2015-12-10
AU2015270951A1 (en) 2016-11-17
RU2016147085A (ru) 2018-06-01
EP3149575A1 (en) 2017-04-05
CN106462415A (zh) 2017-02-22
CN106462415B (zh) 2020-06-12
MX370231B (es) 2019-12-06
US20150347533A1 (en) 2015-12-03
KR20170013266A (ko) 2017-02-06
BR112016027820A8 (pt) 2022-11-16
EP3149575B1 (en) 2021-10-06
BR112016027820A2 (pt) 2021-06-08

Similar Documents

Publication Publication Date Title
US11615151B2 (en) Query language for selecting object graphs from application metadata
US9395890B2 (en) Automatic discovery of system behavior
US11093693B2 (en) Hierarchical navigation control
US9690689B2 (en) Test case generation in a development environment
US9280319B2 (en) Integrated visualization for modeled customizations
WO2014159302A2 (en) Process modeling and interface
KR20160074486A (ko) 상호작용 개발 환경으로부터의 소프트웨어 아티팩트의 점진적 컴파일링 기법
JP6639418B2 (ja) 開発システムにおける意味論的なコンテンツアクセス
KR20170016362A (ko) 컴파일 동안 표시 메타데이터를 브라우저 렌더링 가능 포맷으로 변환하는 기법
US20150113498A1 (en) Modeling customizations to a computer system without modifying base elements
US20150113499A1 (en) Runtime support for modeled customizations
WO2015187516A1 (en) Form preview in a development environment
US20160364909A1 (en) Architecture impact analysis
US20150121343A1 (en) Test impact analysis using cross reference data and metadata
US10372844B2 (en) Expressing extensions with customized design time behavior
US10032203B2 (en) Dynamic property surfacing
US10705802B2 (en) Extensible and queryable strong types
BR112016027820B1 (pt) Sistema de desenvolvimento e método implementado por computador para desenvolver elementos de aplicativo de um sistema de computador e controlar uma pesquisa dos elementos
US20150088971A1 (en) Using a process representation to achieve client and server extensible processes

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180426

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180426

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190320

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191224

R150 Certificate of patent or registration of utility model

Ref document number: 6639418

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250