JP2016537755A - インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること - Google Patents

インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること Download PDF

Info

Publication number
JP2016537755A
JP2016537755A JP2016549189A JP2016549189A JP2016537755A JP 2016537755 A JP2016537755 A JP 2016537755A JP 2016549189 A JP2016549189 A JP 2016549189A JP 2016549189 A JP2016549189 A JP 2016549189A JP 2016537755 A JP2016537755 A JP 2016537755A
Authority
JP
Japan
Prior art keywords
type
compilation
computer
compiled
compile
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
JP2016549189A
Other languages
English (en)
Other versions
JP6529505B2 (ja
JP2016537755A5 (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 JP2016537755A publication Critical patent/JP2016537755A/ja
Publication of JP2016537755A5 publication Critical patent/JP2016537755A5/ja
Application granted granted Critical
Publication of JP6529505B2 publication Critical patent/JP6529505B2/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Abstract

インタラクティブ開発環境が、モデル化されたタイプを開発またはカスタマイズするための開発者入力を受け取る。コンパイルエージェントが、開発者が開発またはカスタマイズしているモデル化されたタイプをコンパイルしたいという要求をIDEから受け取る。コンパイルエージェントは、以前にコンパイルされたタイプのキャッシュにアクセスし、開発者によって行われた変更に基づいて、個別にロード可能なタイプのうちのどれが再コンパイルされることになるかを決定し、それらの識別されたタイプのみをコンパイルする。再コンパイルされたタイプも、キャッシュ内に格納される。

Description

[0001] 多くのソフトウェア開発者は、ソフトウェアを開発するためにインタラクティブ開発環境(IDE)を使用する。それらの開発者は、コンピュータシステム内のタイプのモデルを開発するために、およびそれらのモデルをカスタマイズするためにIDEを使用する。
[0002] 例示的な統合開発環境は、例示的には、開発する必要があるコードを開発者が開発およびテストすることができるように、およびコンピュータシステムを要望に応じてカスタマイズするために複数の異なるツールを含む開発ツールまたは開発環境である。例として、IDEは、コンピュータプログラマがソフトウェアを開発することを可能にするソースコードエディタ、1つまたは複数のビルドオートメーションツール、およびデバッガを含むことができる。いくつかのIDEは、例示的には、コンパイラ、インタープリタ、またはそれらの両方を含む。それらは、グラフィカルユーザインターフェースの構築を簡略化するためにバージョンコントロールシステムおよびさまざまなツールを含むことができる。それらは、オブジェクト指向ソフトウェア開発に伴って使用するためにクラスブラウザ、オブジェクトブラウザ、およびクラス階層図を含むこともできる。したがって開発者は、IDEを使用して、コードおよびメタデータを、コードおよびメタデータに対するカスタマイゼーションとともに生成することができ、それらは、所与の組織において使用するためのシステムを開発する際に利用することができる。
[0003] IDEを使用してソフトウェアを生成またはカスタマイズする際に、アプリケーション開発者は、アプリケーション内で特定のコンセプト(タイプとも呼ばれる)をモデル化し、必要な場合には、コードを書く。開発者がしばしばIDEを使用する大きなアプリケーションは、数千の異なるタイプを含むことがある。したがって、これらのタイプを開発およびカスタマイズすることは、比較的大きなタスクである。
[0004] 例として、いくつかのコンピュータシステムは、数ある中でも、エンタープライズリソースプランニング(ERP)システム、顧客関係管理(CRM)システム、基幹業務(LOB)システムなどのビジネスシステムを含む。これらのタイプのコンピュータシステムはしばしば、モデル化およびカスタマイズされる何千もの異なるタイプを有する。例として、いくつかのそのようなビジネスシステムはしばしば、多くのその他のタイプは言うまでもなく、単独で、数千の異なる形態を有する。
[0005] ビジネスシステムは、多数のタイプを有するコンピュータシステムの唯一のタイプではない。たとえば、ゲーミングシステム、またはさまざまなその他のタイプのシステムもしばしば、ソフトウェアシステムにおいてモデル化される何千もの異なるタイプを有する。
[0006] そのようなコンピュータシステムは、インタープリットされたコードまたはコンパイルされたコードによって表すことができる。開発者は、コンパイルされたコードを開発またはカスタマイズしている際にしばしば、その開発またはカスタマイゼーション上で作動を行いたいと望み、次いで、そのコードを稼働させて、それが自分の要望どおりに作動しているということを確かめる。コンパイルされたコード環境においては、これは、新たに開発またはカスタマイズされたコードを用いてシステムを稼働させるためにコンパイラがシステム全体を再コンパイルすることを必要としてきた。その理由は、現在、コンパイラは主として、コンパイルが必要とされる場合に稼働する実行ファイルにすぎないということである。コンパイルが完了したときに、コンパイラは、自分のメモリと、自分が構築したあらゆるキャッシュとを失う。開発環境においては、これは、非常に時間を浪費することがあり、プロジェクトの開発フェーズに時間およびコストを加えることがあり、それは、開発者経験におけるフラストレーションにつながることもある。
[0007] 上述の論考は、一般的な背景情報のために提供されているにすぎず、特許請求される主題の範囲を決定する際の補助として使用されることを意図されているものではない。
[0008] インタラクティブ開発環境が、モデル化されたタイプを開発またはカスタマイズするための開発者入力を受け取る。コンパイルエージェントが、開発者が開発またはカスタマイズしているモデル化されたタイプをコンパイルしたいという要求をIDEから受け取る。コンパイルエージェントは、コンパイラを長期的なサービスとしてホストし、コンパイラは、以前にコンパイルされたタイプのキャッシュを保持し、開発者によって行われた変更に基づいて、個別にロード可能なタイプのうちのどれが再コンパイルされることになるかを決定し、それらの識別されたタイプのみをコンパイルする。再コンパイルされたタイプも、キャッシュ内に格納される。
[0009] 上述の論考は、一般的な背景情報のために提供されているにすぎず、特許請求される主題の範囲を決定する際の補助として使用されることを意図されているものではない。
[0010] この「課題を解決するための手段」は、コンセプトのうちの選択されたものを、簡略化された形式で紹介するために提供されており、それらのコンセプトは、以降の「発明を実施するための形態」においてさらに説明されている。この「発明の概要」は、特許請求される主題の鍵となる特徴または必要不可欠な特徴を識別することを意図されているものではなく、特許請求される主題の範囲を決定する際の補助として使用されることを意図されているものでもない。特許請求される主題は、背景技術において記載されているあらゆるまたはすべての不利な点を解決する実施態様に限定されるものではない。
[0011]1つの例示的な開発アーキテクチャーのブロック図である。 [0012]開発中にコンパイルオペレーションを実行する際の図1において示されているアーキテクチャーのオペレーションの一実施形態を示す流れ図である。 [0013]図1において示されているコンパイルエージェントのための管理コンポーネントの、そのコンパイルエージェントのオペレーションを管理する際の一実施形態を示す流れ図である。 [0014]図1において示されているアーキテクチャーの、クラウドコンピューティングアーキテクチャーにおいて展開されるさまざまな実施形態を示す図である。 図1において示されているアーキテクチャーの、クラウドコンピューティングアーキテクチャーにおいて展開されるさまざまな実施形態を示す図である。 [0015]モバイルデバイスのさまざまな実施形態を示す図である。 モバイルデバイスのさまざまな実施形態を示す図である。 モバイルデバイスのさまざまな実施形態を示す図である。 モバイルデバイスのさまざまな実施形態を示す図である。 モバイルデバイスのさまざまな実施形態を示す図である。 [0016]1つの例示的なコンピューティング環境のブロック図である。
[0017] 図1は、開発アーキテクチャー100の1つの例示的なブロック図を示している。図1は、開発アーキテクチャー100が、インタラクティブ開発環境(IDE)102をコンパイルエージェント104およびメタデータ/コードストア106とともに含むということを示している。図1はまた、IDE102およびコンパイルエージェント104が、IDE102を使用して開発またはカスタマイズされたコンピュータシステムをホストするランタイム環境108と対話することができるということを示している。
[0018] 加えて図1は、開発者110が、例示的には、ランタイム環境108によってサービス提供されるコンピュータシステムにおいて稼働されるアプリケーション要素112(たとえば、タイプ)の開発またはカスタマイゼーションを実行するためにIDE102と対話するということを示している。アプリケーション要素のうちのそれぞれは、例示的にはメタデータ114を含み、コード116も含むことができる。図1はまた、IDE102が、例示的には、プロセッサ118およびデータストア120を含むということを示している。
[0019] コンパイルエージェント104は、例示的には、IDE102によって送信されるコンパイル要求122において要求されるコンパイルオペレーションを実行する。コンパイルエージェント104は、例示的には、キャッシュ124、管理コンポーネント126、およびプロセッサ128を含む。コンパイルオペレーションが実行された後に、エージェント104は、例示的には、応答130をIDE102に提供することができる。これらのオペレーションのすべてについては、以降で図2および図3に関連してさらに詳細に論じる。
[0020] コンパイルエージェント104はまた、例示的には、コンパイルされたタイプ132をランタイム環境108に提供し、ランタイム環境108では、それらのコンパイルされたタイプ132をランタイム中の実行用としてデータストア134内に格納することができる。ランタイム環境108は、例示的には、アプリケーションサーバ136およびランタイムトランスレータ/ロケータ138を含む。ランタイムトランスレータ/ロケータ138は、例示的には、コンピュータシステムを稼働させるのに必要とされるアプリケーション要素に関するタイプを見つけて、それらのタイプを要望に応じてロードする。それらのタイプは、例示的には、データストア134からアプリケーションサーバ136内にロードされ、アプリケーションサーバ136では、それらのタイプをランタイム中に実行することができる。
[0021] メタデータ/コードストア106は、例示的には、さまざまな異なるタイプのアプリケーション要素(たとえば、タイプ)に対応するメタデータおよびコードを格納する。メタデータ/コードストア106は、たとえば、IDE102およびコンパイルエージェント104によってアクセス可能である。
[0022] 図2は、ソフトウェアシステムを開発する際の図1において示されている開発アーキテクチャー100のオペレーションの一実施形態を示す流れ図である。開発者110は、例示的には、ランタイム環境108によって使用されるアプリケーションサーバにおけるデバッギングまたは開発のためにアプリケーション要素を選択するために、IDE102によって生成されたユーザインターフェース表示と対話するということがわかるであろう。開発者110は、別個の開発者デバイス(たとえば、パーソナルコンピュータ、タブレット、別のモバイルデバイスなど)を通じて、または直接IDE102と対話することができる。開発者110は、ネットワークを介してIDE102と対話することもできる。開発者110は、あくまでも例示のために、図1においてはIDE102と直接対話しているところを示されている。
[0023] IDE102は最初に、例示的には、開発者がモデル化またはカスタマイズしたいと望むアプリケーション要素(たとえば、コンパイル可能なタイプ)を識別する開発者入力を受け取る。これは、図2におけるブロック150によって示されている。それに応じて、IDE102は、例示的には、識別されたアプリケーション要素のソースコード表示をメタデータ/コードストア106から、またはランタイム環境108から入手する。これは、図2におけるブロック152によって示されている。そのソースコード表示は、メタデータ114、コード116、またはその他の情報118も含むことができる。
[0024] 任意選択で、コンパイルエージェント104は、例示的には、開発オペレーションまたはカスタマイゼーションオペレーションが実行された後に、開発またはカスタマイズされたコードを開発者110が稼働させるためにロードされることになるすべての必要とされるアプリケーション要素(たとえば、コンパイル可能なタイプ)をプリロードするためにストア106からのメタデータおよびコードにアクセスすることもできる。エージェント104は、例示的には、それらのメタデータおよびコードを、個別にロード可能なタイプへとコンパイルし、それらのタイプをキャッシュ124内にキャッシュする。これは、図2におけるブロック154によって示されている。次いでIDE102は、識別されたアプリケーション要素に関する開発者のカスタマイゼーション入力を受け取り、それによって開発者は、IDE102を使用して、コンパイル可能なタイプを実際にカスタマイズまたは開発する。カスタマイゼーション入力を受け取ること、およびアプリケーション要素をカスタマイズすることは、図4におけるブロック156によって示されている。
[0025] どこかの時点で、開発者110は、既存のモデルに対して所望の数のカスタマイゼーションを行った後に、または複数のモデルをゼロから開発した後に、コードをコンパイルエージェント104によってコンパイルしたいと望む場合がある。これによって、開発者110は、新たに開発またはカスタマイズされたコードを稼働させて、そのコードが要望どおりに稼働するかどうかを見ることができるようになるであろう。コンパイルエージェント104は既に、データストア106からの複数のモデル化されたタイプにアクセスしたこと、およびそれらのタイプをキャッシュ124内にプリロードしたことがある可能性があるということを想起されたい。また、コンパイルエージェント104は、開発者110によって、以前に行われた変更、または以前に実行された開発に基づいてIDE102から受け取られていた複数のコンパイル可能なタイプを既にコンパイルしていた可能性がある。それらのコンパイルされたタイプは、既にキャッシュ124内にある可能性もある。したがって、コンパイルエージェント104は、IDE102からコンパイル要求122を受け取る。一実施形態においては、コンパイルエージェント104は、サービス契約メソッド呼び出しを通じてコンパイル要求122においてコンパイルパラメータを受け取る。例として、明らかにされるサービス契約は、下記のテーブル1において示されているものと同様のものであることが可能である。
Figure 2016537755

[0026] コンパイルエージェント104はその他の方法でもコンパイル要求122を受け取ることができるということがわかるであろう。開発者110によってIDE102において行われた変更または開発を識別するコンパイル要求をコンパイルエージェント104に受け取らせることは、図2におけるブロック158によって示されている。
[0027] 次いでコンパイルエージェント104は、開発者110によって行われた開発およびカスタマイゼーションを開発者110によって稼働させることおよび点検することが可能になるようにコンパイルされることを必要とする要素(たとえば、モデル化されたタイプ)を識別するためにキャッシュ124にアクセスする。一実施形態においては、コンパイルエージェント104は、どの特定のモデル化されたタイプが開発者110によって変更されたか、またはどれが加えられたかを識別することによってこれを行い、それらのモデル化されたタイプのみを、および開発またはカスタマイズされたコードが稼働されるためにはコンパイルされなければならないその他の任意のモデル化されたタイプをコンパイルする。
[0028] コンパイルエージェント104は、キャッシュ124を検査して、コンパイルされることになるモデル化されたタイプのうちのいずれかが既にコンパイルされてキャッシュ124内に格納されているかどうかを決定する。それらのタイプが既にコンパイルされてキャッシュ124内に格納されている場合には、それらのタイプを再コンパイルする必要はない。これは、それらのモデル化されたタイプが、独立してロード可能なアセンブリとしてモデル化およびコンパイルされているためである。したがって、現在カスタマイズまたは開発されているモデル化されたタイプのみが、コンパイルされることを必要とし、その他のいかなるモデル化されたタイプも、既にコンパイルされている限り、およびコンパイルされたバージョンがキャッシュ124内に格納されている限り、再コンパイルされることを必要としない。コンパイルされることになる要素を識別することは、図2におけるブロック160によって示されている。
[0029] 次いでコンパイルエージェント104は、コンパイルされることを必要とする識別された要素のみに関するメタデータおよびコードをデータストア106からロードする。これは、図2におけるブロック162によって示されている。例として、IDE102は、カスタマイズされたタイプおよび新たに開発されたタイプをコンパイルエージェント104によるアクセス用としてデータストア106内に格納することができる。エージェント104は、それらのタイプがコンパイルされなければならないということを識別した場合には、コンパイルを実行することができるようにデータストア106内のメタデータおよびコード(もしあれば)にアクセスする。
[0030] コンパイルエージェント104は、コンパイルを実行することを必要とされるメタデータおよびコードのすべてを有すると、識別された要素(たとえば、モデル化されたタイプ)を、個別にロード可能なタイプへとコンパイルし、それらのコンパイルされたタイプ132を、ランタイム環境108にとって利用可能にする。これは、図2におけるブロック164によって示されている。
[0031] 次いでコンパイルエージェント104は、新たにコンパイルされた要素をキャッシュ124内に格納し、コンパイルが完了しているということを示す応答130をIDE102へ送信する。これは、図2におけるブロック166によって示されている。その時点で、ランタイム環境108は、コンパイルされたばかりのコードを稼働させることができ、それによって開発者110は、コードが要望どおりに機能するかどうかを決定することができる。それを行う際に、ランタイムトランスレータ/ロケータ138は、コンパイルされたタイプ132を識別することができ、アプリケーションサーバ136は、それらのタイプ132をロードして稼働させることができる。
[0032] プロセス全体を通じて、管理コンポーネント126は、例示的には、エージェント104の自己管理を実行する。これについては、以降で図3に関連してさらに詳細に説明する。しかしながら、簡潔に言えば、管理コンポーネント126は、例示的には、コンパイル104によって使用されているメモリフットプリントをモニタする。メモリフットプリントがしきい値レベルに達した場合には、管理コンポーネント126は、キャッシュ124を無効にして、たとえば、メモリの大部分を解放することができる。同様に、コンパイルエージェント104が所定の量の時間にわたってアイドルである場合、またはIDEインスタンス102が現在インスタンス化されていない場合には、エージェント104は、自分自身をシャットダウンすることができる。自己管理を実行することは、図2においてブロック168によって示されており、エージェント104自身をシャットダウンするかどうかを決定することは、ブロック170によって示されている。
[0033] ブロック170において、管理コンポーネント126がエージェント104をシャットダウンすべきであるということが決定された場合には、エージェント104はシャットダウンされる。これは、図2におけるブロック172によって示されている。
[0034] 図3は、管理コンポーネント126のオペレーションの一実施形態をより詳細に示す流れ図である。IDE102がコンパイル要求122をエージェント104に最初に提供したときに、エージェント104は、その時点で稼働している可能性があり、または稼働していない可能性もあるということに留意されたい。エージェント104が稼働していない場合には、管理コンポーネント126は、コンパイル要求122が受け取られているということを自動的に検知し、コンパイルエージェント104を起動する。IDE102からの要求を受け取ること、およびエージェント104がまだ始動されていない場合にエージェント104をスタートアップすることは、図3におけるブロック180によって示されている。
[0035] 図2に関して上述されているように、次いでコンパイルエージェント104は、要求されたコンパイルオペレーションをキャッシングオペレーションとともに実行する。すなわち、コンパイルエージェント104は、(キャッシュ124を検索して、どのタイプが、コンパイルまたは再コンパイルされることを必要としているかを決定した後に)必要とされるコンパイル可能なタイプのうちのすべてをコンパイルし、それらの新たにコンパイルされたタイプをキャッシュ124内に格納する。これは、図3におけるブロック182によって示されている。
[0036] 管理コンポーネント126は、その内部で自分が稼働している(またはそれとともに自分が稼働している)オペレーティングシステムに対して断続的にクエリーを行って、コンパイルエージェント104のメモリ消費が所与のしきい値を超えているかどうかを決定する。これは、図3におけるブロック184によって示されている。コンパイルエージェント104のメモリ消費が所与のしきい値を超えている場合には、管理コンポーネント126は、キャッシュ124を無効にする、または解放する。すなわち、管理コンポーネント126は、キャッシングオペレーション(コンパイルされたタイプをキャッシュすること)を再び新たに開始する。これは、ブロック186によって示されている。もちろん、管理コンポーネント126は、コンパイルエージェント104のメモリフットプリントを減少させるためにその他のオペレーションを実行することもでき、キャッシュを無効にすることは、一例にすぎない。
[0037] ブロック184において、メモリ消費がしきい値を超えていないということが決定された場合に、またはブロック186においてキャッシュが無効にされた後に、管理コンポーネント126は、依然として稼働しているIDE102のインスタンスがいくらかでもあるかどうかを決定する。これは、図3におけるブロック188によって示されている。コンパイルエージェント104の単一のインスタンスは、たとえば、IDE102の複数のインスタンスにサービス提供することができる。IDE102のいずれのインスタンスも稼働していない場合には、コンパイルエージェント104が稼働している必要はなく、コンパイルエージェント104は、ブロック190によって示されているように自分自信をシャットダウンする。
[0038] しかしながら、ブロック188において、依然として稼働しているIDE102のインスタンスがあるということが決定された場合には、管理コンポーネント126は、コンパイルエージェント104がしきい値量の時間にわたってアイドルであるかどうかを決定する。これは、図3におけるブロック192によって示されている。例として、開発者110は、依然としてコードを書いているが、そのコードをまだデバッグしていない可能性がある。開発者110は、ひと休みしている、またはコードをコンパイルしたいと望む開発フェーズにいないだけである可能性もある。いずれのケースにおいても、ブロック192においてコンパイルエージェント104がしきい値量の時間にわたってアイドルである場合には、管理コンポーネント126は、ブロック190によって示されているようにコンパイルエージェント104をシャットダウンする。しかしながら、ブロック192において、コンパイルエージェント104がしきい値量の時間にわたってアイドルではないということが決定された場合には、処理は、単にブロック180へ戻り、ブロック180では、エージェント104は、IDE102からのさらなるコンパイル要求122を待つ。
[0039] したがって、コンパイルエージェント104は、コンパイル要求122を受け取った場合は常に、開発者110によって行われた変更に基づいて、およびどのタイプが既にコンパイルされてキャッシュ124内に格納されているかに基づいて、コンパイルまたは再コンパイルされることを必要としているコンパイル可能なタイプのみをコンパイルまたは再コンパイルするということがわかる。これによって、コードが適切に稼働するかどうかを見るために開発者110が待たなければならないコンパイル時間が著しく減少する。これによって、開発者経験が向上し、それによって、コードを開発、カスタマイズ、またはデバッグする際に必要とされる時間および労力を減少させることができる。
[0040] 上述の論考は、データストア120、データストア106、およびデータストア134を含む複数のデータストアを示しているということにも留意されたい。これらは、3つの独立したデータストアとして示されているが、単一のデータストア内に形成することもできる。加えて、それらのデータストア内のデータは、複数のさらなるデータストア内に格納することもできる。また、データストアは、それらのデータストアにアクセスする環境もしくはエージェントもしくはコンポーネントにとってローカルにあることが可能であり、またはそれらのデータストアは、そこからリモートにあること、およびそれらの環境、コンポーネント、もしくはエージェントによってアクセスできることが可能である。同様に、いくつかのデータストアは、ローカルにあることが可能であり、その一方でその他のデータストアは、リモートにある。
[0041] プロセッサ118および128、ならびにサーバ136は、例示的には、関連付けられているメモリおよびタイミング回路(別途、図示されてはいない)を伴うコンピュータプロセッサを含む。それらは、それらが属するエージェントまたは環境の機能部分であり、例示的には、その環境またはエージェント内のその他のアイテムによってアクティブ化され、その他のアイテムの機能を容易にする。
[0042] 図1は、コンパイルエージェント104を、IDE102とは別個のものとして示しているということもわかるであろう。しかしながら、コンパイルエージェント104はIDE102の一部であることが可能であるということもわかるであろう。また、図1は、さまざまな異なるブロックを、それぞれのブロックに関連付けられている機能とともに示している。より多くの機能がそれぞれのブロックによって実行されるようにブロックどうしを統合することができ、または機能がさらに分散されるようにそれらのブロックを分割することができるということがわかるであろう。
[0043] また、開発者110がIDE102を操作およびコントロールするために対話するユーザインターフェース表示は、例示的には、ユーザによって作動できる入力メカニズムを有し、それらの入力メカニズムは、アイコン、テキストボックス、チェックボックス、タイル、ドロップダウンメニューなど、さまざまな異なる形態を取ることができる。それらは、例示的には、ポイントアンドクリックデバイス(トラックボールまたはマウスなど)、ボタン、ジョイスティック、サムパッド、サムスイッチ、仮想またはハードウェアキーボードまたはキーパッドを使用して作動することができる。また、ユーザインターフェース表示がタッチセンシティブスクリーン上に表示される場合には、タッチジェスチャーによって、ユーザの指、スタイラスを用いて、といった具合に、ユーザ入力メカニズムをアクティブ化することができる。表示を行うデバイスが話声認識コンポーネントを有している場合には、話声コマンドを使用してユーザ入力メカニズムを作動させることができる。
[0044] 図4Aは、図1において示されているアーキテクチャー100の、ただし、その要素がクラウドコンピューティングアーキテクチャー500内に配置されているブロック図である。図4Aは、複数の代替構成を示している。たとえば、コンパイルエージェント104は、クラウド502の内部および外部の両方において示されている。これは、エージェント502をアーキテクチャー100内のその他のアイテムと同様にさまざまな異なるロケーションに配置することができるということを示すことを意図されている。クラウドコンピューティングは、計算サービス、ソフトウェアサービス、データアクセスサービス、およびストレージサービスを提供し、それらのサービスは、それらのサービスを配信するシステムの物理的なロケーションまたは構成をエンドユーザが知っているということを必要としない。さまざまな実施形態においては、クラウドコンピューティングは、適切なプロトコルを使用してインターネットなどのワイドエリアネットワークを介してサービスを配信する。たとえば、クラウドコンピューティングプロバイダは、ワイドエリアネットワークを介してアプリケーションを配信し、それらのアプリケーションには、ウェブブラウザまたはその他の任意のコンピューティングコンポーネントを通じてアクセスすることができる。アーキテクチャー100のソフトウェアまたはコンポーネント、ならびに対応するデータは、リモートロケーションにおけるサーバ上に格納することができる。クラウドコンピューティング環境内のコンピューティングリソースどうしをリモートデータセンターロケーションにおいて統合することができ、またはそれらを分散させることもできる。クラウドコンピューティングインフラストラクチャーは、共有データセンターを通じてサービスを配信することができるが、それらの共有データセンターは、ユーザにとっては単一のアクセスポイントのように見える。したがって、本明細書において説明されているコンポーネントおよび機能は、クラウドコンピューティングアーキテクチャーを使用してリモートロケーションにおいてサービスプロバイダから提供することができる。あるいは、それらのコンポーネントおよび機能を従来のサーバから提供することもでき、またはそれらのコンポーネントおよび機能を直接、またはその他の方法でクライアントデバイス上にインストールすることもできる。
[0045] この説明は、パブリッククラウドコンピューティングおよびプライベートクラウドコンピューティングの両方を含むことを意図されている。クラウドコンピューティング(パブリックおよびプライベートの両方)は、リソースの実質的にシームレスなプーリングを提供し、ならびに基礎をなすハードウェアインフラストラクチャーを管理および構成する必要性を減少させる。
[0046] パブリッククラウドは、ベンダーによって管理され、典型的には、同じインフラストラクチャーを使用して複数の消費者をサポートする。また、パブリッククラウドは、プライベートクラウドとは対照的に、ハードウェアを管理することからエンドユーザを解放することができる。プライベートクラウドは、組織自体によって管理することができ、インフラストラクチャーは、典型的にはその他の組織との間で共有されない。組織は、それでもなお、インストレーションおよび修理など、ある程度ハードウェアを保持する。
[0047] 図4Aにおいて示されている実施形態においては、いくつかのアイテムは、図1において示されているアイテムと同様であり、それらのアイテムには、同様の番号が付いている。図4Aは、IDE102、コンパイルエージェント104、およびランタイム環境108をすべてクラウド502(パブリック、プライベート、または、複数の部分がパブリックであってその他の部分がプライベートである組合せであることが可能である)内に配置することができるということを具体的に示している。したがって開発者110は、クラウド502を通じてそれらのシステムにアクセスするためにユーザインターフェース表示505を用いてユーザデバイス504を使用する。
[0048] 図4Aはまた、クラウドアーキテクチャーの別の代替実施形態を示している。図4Aは、アーキテクチャー100のいくつかの要素はクラウド502内に配置され、その一方でその他の要素はクラウド502内に配置されないことも考えられるということを示している。例として、データストア106、120、134をクラウド502の外部に配置して、クラウド502を通じてデータストア106、120、134にアクセスすることができる。別の実施形態においては、コンパイルエージェント104は、クラウド502の外部にあることが可能である。それらがどこに配置されるかにかかわらず、それらには、デバイス504によって直接、ネットワーク(ワイドエリアネットワークまたはローカルエリアネットワークのいずれか)を通じてアクセスすることができ、それらをサービスによってリモートサイトにおいてホストすることができ、またはクラウドを通じたサービスとしてそれらを提供することができ、もしくはクラウド内に存在する接続サービスによってそれらにアクセスすることができる。本明細書においては、これらのアーキテクチャーのすべてが考えられる。
[0049] 図4Bは、別のクラウドベースのアーキテクチャーのブロック図を示している。図4Bは、開発者110がリモートアクセスデバイス507を使用して開発者デバイス504およびIDE102にアクセスするという点を除いて図4Aと同様である。本明細書においては、図4Aおよび図4Bにおいて表されているすべてのさまざまな構成が考えられる。
[0050] アーキテクチャー100またはその複数の部分をさまざまな異なるデバイス上に配置することができるということもわかるであろう。それらのデバイスのいくつかは、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、またはその他のモバイルデバイス、たとえば、パームトップコンピュータ、携帯電話、スマートフォン、マルチメディアプレーヤ、携帯情報端末などを含む。
[0051] 図5は、アーキテクチャー100(またはその複数の部分)を展開することができる、ユーザのまたはクライアントのハンドヘルドデバイス16として使用することができるハンドヘルドまたはモバイルコンピューティングデバイスの例示的な一実施形態の簡略化されたブロック図である。図6〜図9は、ハンドヘルドまたはモバイルデバイスの例である。
[0052] 図5は、アーキテクチャー100のコンポーネントを稼働させることができる、もしくはアーキテクチャー100と対話する、またはそれらの両方を行うクライアントデバイス16のコンポーネントの一般的なブロック図を提供している。デバイス16においては、通信リンク13が提供されており、通信リンク13は、ハンドヘルドデバイスがその他のコンピューティングデバイスと通信することを可能にし、いくつかの実施形態のもとでは、スキャニングなどによって自動的に情報を受け取るためのチャネルを提供する。通信リンク13の例は、赤外線ポート、シリアル/USBポート、ケーブルネットワークポート、たとえばイーサネットポート、および、1つまたは複数の通信プロトコルを通じた通信を可能にするワイヤレスネットワークポートを含み、そうした通信プロトコルとしては、ジェネラルパケットラジオサービス(GPRS)、LTE、HSPA、HSPA+、ならびにその他の3Gおよび4G無線プロトコル、1Xrtt、および、ネットワークへのセルラーアクセスを提供するために使用されるワイヤレスサービスであるショートメッセージサービス、ならびに、ネットワークへのローカルワイヤレス接続を提供する802.11および802.11b(Wi-Fi)プロトコルおよびブルートゥースプロトコルが含まれる。
[0053] その他の実施形態のもとでは、アプリケーションまたはシステムは、SDカードインターフェース15に接続されている取り外し可能なセキュアデジタル(SD)カード上で受け取られる。SDカードインターフェース15および通信リンク13は、バス19に沿ってプロセッサ17(これは、図1からのプロセッサ118もしくは128またはサーバ136を具体化することもできる)と通信し、バス19はまた、メモリ21および入力/出力(I/O)コンポーネント23、ならびにクロック25およびロケーションシステム27に接続されている。
[0054] I/Oコンポーネント23は、一実施形態においては、入力および出力オペレーションを容易にするために提供されている。デバイス16のさまざまな実施形態に関するI/Oコンポーネント23は、入力コンポーネント、たとえば、ボタン、タッチセンサ、マルチタッチセンサ、光センサまたはビデオセンサ、音声センサ、タッチスクリーン、近接センサ、マイクロフォン、傾斜センサ、および重力スイッチ、ならびに出力コンポーネント、たとえば、ディスプレイデバイス、スピーカー、およびまたはプリンタポートを含むことができる。その他のI/Oコンポーネント23を使用することもできる。
[0055] クロック25は、例示的には、時間および日付を出力するリアルタイムクロックコンポーネントを含む。それは、例示的には、プロセッサ17のためのタイミング機能を提供することもできる。
[0056] ロケーションシステム27は、例示的には、デバイス16の現在の地理的ロケーションを出力するコンポーネントを含む。これは、たとえば、グローバルポジショニングシステム(GPS)受信機、LORANシステム、推測航法システム、セルラー三角測量システム、またはその他の測位システムを含むことができる。それは、たとえば、所望の地図、ナビゲーションルート、およびその他の地理的機能を生み出すマッピングソフトウェアまたはナビゲーションソフトウェアを含むこともできる。
[0057] メモリ21は、オペレーティングシステム29、ネットワーク設定31、アプリケーション33、アプリケーション構成設定35、データストア37、通信ドライバ39、および通信構成設定41を格納する。メモリ21は、すべてのタイプの有形の揮発性および不揮発性のコンピュータ可読メモリデバイスを含むことができる。メモリ21は、(後述されている)コンピュータストレージメディアを含むこともできる。メモリ21は、コンピュータ可読命令を格納し、それらのコンピュータ可読命令は、プロセッサ17によって実行されたときに、そのプロセッサに、コンピュータによって実施されるステップまたは機能をそれらの命令に従って実行させる。同様に、デバイス16は、さまざまなビジネスアプリケーションを稼働させることができるクライアントビジネスシステム24を有することができる。プロセッサ17は、その他のコンポーネントによって、それらのコンポーネントの機能を容易にするためにアクティブ化することもできる。
[0058] ネットワーク設定31の例は、プロキシ情報、インターネット接続情報、およびマッピングなどのものを含む。アプリケーション構成設定35は、アプリケーションを特定の企業またはユーザ向けに調整する設定を含む。通信構成設定41は、その他のコンピュータと通信するためのパラメータを提供し、GPRSパラメータ、SMSパラメータ、接続ユーザ名、およびパスワードなどのアイテムを含む。
[0059] アプリケーション33は、デバイス16上に以前に格納されたアプリケーション、または使用中にインストールされるアプリケーションであることが可能であるが、これらは、オペレーティングシステム29の一部であること、またはデバイス16の外部でホストすることも可能である。
[0060] 図6は、デバイス16がタブレットコンピュータ600である一実施形態を示している。図6においては、コンピュータ600は、ディスプレイスクリーン602とともに示されている。スクリーン602は、タッチスクリーンであることが可能であり(したがって、ユーザの指からのタッチジェスチャーを使用して、アプリケーションと対話することができ)、またはペンもしくはスタイラスからの入力を受け取るペン対応インターフェースであることが可能である。スクリーン602は、オンスクリーン仮想キーボードを使用することもできる。もちろん、スクリーン602は、たとえばワイヤレスリンクまたはUSBポートなどの適切な接続メカニズムを通じてキーボードまたはその他のユーザ入力デバイスに接続することもできる。コンピュータ600は、例示的には、音声入力を受け取ることもできる。
[0061] 図7および図8は、使用することができるデバイス16のさらなる例を提供しているが、その他のデバイスを使用することもできる。図7においては、フィーチャーフォン、スマートフォン、またはモバイル電話45が、デバイス16として提供されている。電話45は、電話番号をダイヤルするための一式のキーパッド47と、アプリケーションイメージ、アイコン、ウェブページ、写真、およびビデオを含むイメージを表示することができるディスプレイ49と、ディスプレイ上に表示されるアイテムを選択するためのコントロールボタン51とを含む。この電話は、ジェネラルパケットラジオサービス(GPRS)および1Xrttなどのセルラー電話信号、ならびにショートメッセージサービス(SMS)信号を受け取るためのアンテナ53を含む。いくつかの実施形態においては、電話45はまた、SDカード57を受け入れるセキュアデジタル(SD)カードスロット55を含む。
[0062] 図8のモバイルデバイスは、携帯情報端末(PDA)59、またはマルチメディアプレーヤ、またはタブレットコンピューティングデバイスなど(以降では、PDA59と呼ぶ)である。PDA59は、インダクティブスクリーン61を含み、インダクティブスクリーン61は、スタイラス63(またはその他のポインタ、たとえばユーザの指)の位置を、そのスタイラスがスクリーンの上に位置したときに感知する。これは、ユーザがスクリーン上のアイテムを選択すること、強調表示すること、および移動させること、ならびに描画を行うこと、および文字を書くことを可能にする。PDA59はまた、複数のユーザ入力キーまたはボタン(ボタン65など)を含み、それらのキーまたはボタンは、ユーザが、ディスプレイ61上に表示されるメニューオプションまたはその他の表示オプションをスクロールすることを可能にし、また、ユーザがディスプレイ61に触れることなくアプリケーションを変更すること、またはユーザ入力機能を選択することを可能にする。図示されてはいないが、PDA59は、その他のコンピュータとのワイヤレス通信を可能にする内蔵アンテナおよび赤外線送信機/受信機、ならびにその他のコンピューティングデバイスへのハードウェア接続を可能にする接続ポートを含むことができる。そのようなハードウェア接続は、典型的には、シリアルまたはUSBポートを通じてその他のコンピュータに接続するクレードルを通じて行われる。したがって、これらの接続は、非ネットワーク接続である。一実施形態においては、モバイルデバイス59はまた、SDカード69を受け入れるSDカードスロット67を含む。
[0063] 図9は、電話がスマートフォン71であるという点を除いて図7と同様である。スマートフォン71は、アイコンまたはタイルまたはその他のユーザ入力メカニズム75を表示するタッチセンシティブディスプレイ73を有する。メカニズム75は、ユーザによって、アプリケーションを稼働させること、通話すること、データ転送オペレーションを実行することなどを行うために使用することができる。一般には、スマートフォン71は、モバイルオペレーティングシステムに基づいて構築され、フィーチャーフォンよりも進んだコンピューティング機能および接続を提供する。
[0064] その他の形態のデバイス16も可能であるということに留意されたい。
[0065] 図10は、アーキテクチャー100またはその複数の部分を(たとえば)展開することができるコンピューティング環境の一実施形態である。図10を参照すると、いくつかの実施形態を実施するための例示的なシステムが、汎用コンピューティングデバイスをコンピュータ810の形態で含む。コンピュータ810のコンポーネントは、処理ユニット820(プロセッサ118もしくは128またはサーバ136を含むことができる)と、システムメモリ830と、そのシステムメモリを含むさまざまなシステムコンポーネントを処理ユニット820に結合するシステムバス821とを含むことができるが、それらには限定されない。システムバス821は、メモリバスまたはメモリコントローラと、ペリフェラルバスと、さまざまなバスアーキテクチャーのうちのいずれかを使用するローカルバスとを含むいくつかのタイプのバス構造のうちのいずれかであることが可能である。例として、そのようなアーキテクチャーは、インダストリースタンダードアーキテクチャー(ISA)バス、マイクロチャネルアーキテクチャー(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、および、メザニンバスとしても知られているペリフェラルコンポーネントインターコネクト(PCI)バスを含むが、それらには限定されない。図1に関連して説明されているメモリおよびプログラムを図10の対応する部分において展開することができる。
[0066] コンピュータ810は、典型的には、さまざまなコンピュータ可読メディアを含む。コンピュータ可読メディアは、コンピュータ810によってアクセスすることができる任意の利用可能なメディアであることが可能であり、揮発性のメディアおよび不揮発性のメディア、取り外し可能なメディアおよび取り外し不能なメディアの両方を含む。例として、コンピュータ可読メディアは、コンピュータストレージメディアおよび通信メディアを含むことができるが、それらには限定されない。コンピュータストレージメディアは、変調されたデータ信号または搬送波とは異なり、変調されたデータ信号または搬送波を含まない。コンピュータストレージメディアは、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報の格納のための任意の方法またはテクノロジーにおいて実装される揮発性のメディアおよび不揮発性のメディア、取り外し可能なメディアおよび取り外し不能なメディアの両方を含むハードウェアストレージメディアを含む。コンピュータストレージメディアとしては、RAM、ROM、EEPROM、フラッシュメモリ、もしくはその他のメモリテクノロジー、CD−ROM、デジタル多用途ディスク(DVD)、もしくはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくはその他の磁気ストレージデバイス、または、所望の情報を格納するために使用可能で、コンピュータ810によってアクセス可能なその他の任意のメディアが含まれるが、それらには限定されない。通信メディアは、典型的には、伝送メカニズムにおいてコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを具体化し、任意の情報伝達メディアを含む。「変調されたデータ信号」という用語は、その信号の特性のうちの1つまたは複数が、その信号内で情報をエンコードするような様式で設定または変更されている信号を意味する。限定ではなく、例として、通信メディアは、有線ネットワークまたは直接有線接続などの有線メディア、ならびに、音響メディア、RFメディア、赤外線メディア、およびその他のワイヤレスメディアなどのワイヤレスメディアを含む。上記のいずれの組合せも、コンピュータ可読メディアの範囲内に含まれるものである。
[0067] システムメモリ830は、コンピュータストレージメディアを読み取り専用メモリ(ROM)831およびランダムアクセスメモリ(RAM)832などの揮発性のメモリおよび/または不揮発性のメモリの形態で含む。基本入出力システム833(BIOS)は、スタートアップ中などにコンピュータ810内の要素どうしの間において情報を伝達するのを補助する基本ルーチンを含み、典型的にはROM831内に格納されている。RAM832は、典型的には、処理ユニット820にとってすぐにアクセス可能な、および/または処理ユニット820によって現在操作されているデータモジュールおよび/またはプログラムモジュールを含む。限定ではなく、例として、図10は、オペレーティングシステム834、アプリケーションプログラム835、その他のプログラムモジュール836、およびプログラムデータ837を示している。
[0068] コンピュータ810は、その他の取り外し可能な/取り外し不能な、揮発性の/不揮発性のコンピュータストレージメディアを含むこともできる。単なる例として、図10は、取り外し不能な不揮発性の磁気メディアとの間で読み取りまたは書き込みを行うハードディスクドライブ841と、取り外し可能な不揮発性の磁気ディスク852との間で読み取りまたは書き込みを行う磁気ディスクドライブ851と、CD ROMまたはその他の光メディアなどの取り外し可能な不揮発性の光ディスク856との間で読み取りまたは書き込みを行う光ディスクドライブ855とを示している。例示的な動作環境において使用することができるその他の取り外し可能な/取り外し不能な、揮発性の/不揮発性のコンピュータストレージメディアとしては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれるが、それらには限定されない。ハードディスクドライブ841は、典型的には、インターフェース840などの取り外し不能なメモリインターフェースを通じてシステムバス821に接続されており、磁気ディスクドライブ851および光ディスクドライブ855は、典型的には、インターフェース850などの取り外し可能なメモリインターフェースによってシステムバス821に接続されている。
[0069] 代替として、または追加として、本明細書において説明されている機能は、少なくとも部分的に、1つまたは複数のハードウェアロジックコンポーネントによって実行することができる。限定ではなく、例として、使用することができるハードウェアロジックコンポーネントの例示的なタイプとしては、フィールドプログラマブルゲートアレイ(FPGA)、プログラム固有集積回路(ASIC)、プログラム固有標準製品(ASSP)、システムオンアチップシステム(SOC)、結合プログラム可能論理回路(CPLD)などが含まれる。
[0070] 図10において示されている上述のドライブおよびそれらの関連付けられているコンピュータストレージメディアは、コンピュータ810のためのコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの格納を提供する。たとえば、図10においては、ハードディスクドライブ841は、オペレーティングシステム844、アプリケーションプログラム845、その他のプログラムモジュール846、およびプログラムデータ847を格納するものとして示されている。これらのコンポーネントは、オペレーティングシステム834、アプリケーションプログラム835、その他のプログラムモジュール836、およびプログラムデータ837と同じであること、または異なっていることが可能であるという点に留意されたい。ここでは少なくとも、オペレーティングシステム844、アプリケーションプログラム845、その他のプログラムモジュール846、およびプログラムデータ847が、少なくとも異なるコピーであるということを示すために、それらに異なる番号を割り当てている。
[0071] ユーザは、キーボード862、マイクロフォン863、およびポインティングデバイス861、たとえば、マウス、トラックボール、またはタッチパッドなどの入力デバイスを通じてコンピュータ810にコマンドおよび情報を入力することができる。その他の入力デバイス(図示せず)は、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらおよびその他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース860を通じて処理ユニット820に接続されている場合が多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などのその他のインターフェース構造およびバス構造によって接続することもできる。ビジュアルディスプレイ891またはその他のタイプのディスプレイデバイスも、ビデオインターフェース890などのインターフェースを介してシステムバス821に接続されている。コンピュータは、モニタに加えて、スピーカー897およびプリンタ896などのその他の周辺出力デバイスを含むこともでき、これらには、周辺出力インターフェース895を通じて接続することができる。
[0072] コンピュータ810は、リモートコンピュータ880などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で操作される。リモートコンピュータ880は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであることが可能であり、典型的には、コンピュータ810に関連する上述の要素のうちの多くまたはすべてを含む。図10において示されている論理接続は、ローカルエリアネットワーク(LAN)871およびワイドエリアネットワーク(WAN)873を含むが、その他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
[0073] LANネットワーキング環境において使用される場合には、コンピュータ810は、ネットワークインターフェースまたはアダプタ870を通じてLAN871に接続される。WANネットワーキング環境において使用される場合には、コンピュータ810は、典型的には、インターネットなどのWAN873上で通信を確立するためのモデム872またはその他の手段を含む。モデム872は、内蔵型または外付け型であることが可能であり、ユーザ入力インターフェース860またはその他の適切なメカニズムを介してシステムバス821に接続することができる。ネットワーク化された環境においては、コンピュータ810に関連して示されているプログラムモジュール、またはそれらの一部をリモートメモリストレージデバイス内に格納することができる。限定ではなく、例として、図10は、リモートアプリケーションプログラム885を、リモートコンピュータ880上に存在するものとして示している。示されているネットワーク接続は、例示的なものであり、コンピュータどうしの間において通信リンクを確立するその他の手段を使用することもできるということが理解できるであろう。
[0074] 本明細書において説明されているさまざまな実施形態をさまざまな方法で組み合わせることができるということにも留意されたい。すなわち、1つまたは複数の実施形態の複数の部分を1つまたは複数のその他の実施形態の複数の部分と組み合わせることができる。本明細書においては、このすべてが考えられる。
[0075] 本主題は、構造的な特徴および/または方法論的な行為に特有の言葉で説明されているが、添付の特許請求の範囲において定義されている本主題は、上述の特定の特徴または行為に必ずしも限定されるものではないということを理解されたい。むしろ、上述の特定の特徴および行為は、特許請求の範囲を実施する例示的な形態として開示されている。

Claims (15)

  1. コンピュータシステムにおいてモデル化されたタイプをコンパイルするためのコンパイルシステムであって、
    以前にコンパイルされたタイプを格納するコンパイルキャッシュと、
    開発環境からコンパイル要求を受け取るインクリメンタルコンパイルコンポーネントであり、前記開発環境において前記コンピュータシステムに対して行われた変更に基づいて、および前記コンパイルキャッシュを検索して、コンパイルされることになるいずれかのタイプが、以前にコンパイルされたタイプとして格納されているかどうかを識別することによって、コンパイルされることになるタイプを識別し、前記識別されたタイプをコンパイルし、それらの識別されたタイプをランタイム環境にとってアクセス可能にする、インクリメンタルコンパイルコンポーネントと、
    前記コンパイルシステムの機能部分であるコンピュータプロセッサであり、前記インクリメンタルコンパイルコンポーネントによってアクティブ化されて、コンパイルされることになる前記タイプを識別すること、前記コンパイルキャッシュを検索すること、および前記識別されたタイプをコンパイルすることを容易にする、コンピュータプロセッサとを含むコンパイルシステム。
  2. 前記コンパイルシステムのメモリ使用およびオペレーションを管理する管理コンポーネント
    をさらに含む、請求項1に記載のコンパイルシステム。
  3. 前記インクリメンタルコンパイルコンポーネントが、前記識別されたタイプをコンパイルして、直近にコンパイルされたタイプを入手し、前記直近にコンパイルされたタイプを前記コンパイルキャッシュ内に格納する、請求項2に記載のコンパイルシステム。
  4. 前記管理コンポーネントが、前記コンパイルシステムからのメモリ使用がしきい値レベルを満たしているかどうかを断続的に決定し、そうである場合には、前記コンパイルキャッシュの少なくとも一部を無効にする、請求項3に記載のコンパイルシステム。
  5. 前記管理システムが、いずれかの開発環境インスタンスが稼働しているかどうかを断続的に決定し、そうでない場合には、前記コンパイルシステムをシャットダウンする、請求項3に記載のコンパイルシステム。
  6. 前記管理システムが、前記コンパイルシステムが所定のしきい値時間にわたってアイドルであるかどうかを断続的に決定し、そうである場合には、前記コンパイルシステムをシャットダウンする、請求項3に記載のコンパイルシステム。
  7. 前記コンパイルキャッシュ、前記インクリメンタルコンパイルコンポーネント、および前記コンピュータプロセッサが、統合開発環境(IDE)の一部である、請求項2に記載のコンパイルシステム。
  8. 前記IDEが、モデルおよびコンパイル可能なタイプを作成およびカスタマイズする開発入力を受け取るように構成されている、請求項7に記載のコンパイルシステム。
  9. タイプをモデル化するコンピュータシステムを開発するコンピュータ実施方法であって、
    タイプをコンパイルしたいという要求を受け取るステップと、
    開発環境において行われた前記コンピュータシステムに対する変更に基づいて、および既にコンパイルされてコンパイルキャッシュ内に格納されているタイプに基づいて、コンパイルする前記タイプを前記コンピュータシステム内のタイプのサブセットとして識別するステップと、
    前記識別されたタイプをコンパイルして、直近にコンパイルされたタイプを入手するステップとを含むコンピュータ実施方法。
  10. 前記直近にコンパイルされたタイプを前記コンパイルキャッシュ内に格納するステップ
    をさらに含む、請求項9に記載のコンピュータ実施方法。
  11. 前記直近にコンパイルされたタイプを、稼働されるランタイム環境へ送信するステップと、
    要求を受け取る前記ステップ、前記タイプを識別する前記ステップ、前記識別されたタイプをコンパイルする前記ステップ、および前記直近にコンパイルされたタイプを格納する前記ステップを繰り返すステップと
    をさらに含む、請求項10に記載のコンピュータ実施方法。
  12. 前記コンパイルキャッシュのメモリ使用がしきい値を満たしているかどうかを断続的に決定し、そうである場合には、前記コンパイルキャッシュの少なくとも一部を解放するステップ
    をさらに含む、請求項10に記載のコンピュータ実施方法。
  13. コンパイル要求を受け取る前記ステップ、前記タイプを識別する前記ステップ、およびコンパイルする前記ステップが、コンパイルエージェントによって実行され、前記コンピュータ実施方法が、
    前記開発環境のいずれかのインスタンスが稼働しているかどうかを断続的に決定し、そうでない場合には、前記コンパイルエージェントをシャットダウンするステップと、
    前記コンパイルエージェントがしきい値タイムピリオドにわたってアイドルであるかどうかを断続的に決定し、そうである場合には、前記コンパイルエージェントをシャットダウンするステップとをさらに含む、請求項10に記載のコンピュータ実施方法。
  14. 前記タイプを開発する前記開発環境において開発入力を受け取るステップと、
    コンパイル可能なタイプのモデルを前記開発入力に基づいて作成またはカスタマイズするステップと
    をさらに含む、請求項10に記載のコンピュータ実施方法。
  15. コンピュータ実行可能命令を格納しているコンピュータ可読ストレージメディアであって、前記コンピュータ実行可能命令が、コンピュータによって実行されたときに、
    コンピュータシステムにおいてモデル化されたタイプをコンパイルしたいという要求を受け取るステップと、
    開発環境において行われた前記コンピュータシステムに対する変更に基づいて、および既にコンパイルされてコンパイルキャッシュ内に格納されているタイプに基づいて、コンパイルする前記タイプをコンピュータシステム内のタイプのサブセットとして識別するステップと、
    前記識別されたタイプをコンパイルして、直近にコンパイルされたタイプを入手するステップと、
    前記直近にコンパイルされたタイプを前記コンパイルキャッシュ内に格納するステップと、
    前記直近にコンパイルされたタイプを、稼働されるランタイム環境へ送信するステップと、
    要求を受け取る前記ステップ、前記タイプを識別する前記ステップ、前記識別されたタイプをコンパイルする前記ステップ、および前記直近にコンパイルされたタイプを格納する前記ステップを繰り返すステップとを含む方法を前記コンピュータに実行させる、コンピュータ可読ストレージメディア。
JP2016549189A 2013-10-18 2014-10-14 インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること Active JP6529505B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/058,082 2013-10-18
US14/058,082 US9600256B2 (en) 2013-10-18 2013-10-18 Incrementally compiling software artifacts from an interactive development environment
PCT/US2014/060319 WO2015057592A1 (en) 2013-10-18 2014-10-14 Incrementally compiling software artifacts from an interactive development environment

Publications (3)

Publication Number Publication Date
JP2016537755A true JP2016537755A (ja) 2016-12-01
JP2016537755A5 JP2016537755A5 (ja) 2017-10-12
JP6529505B2 JP6529505B2 (ja) 2019-06-12

Family

ID=51866320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016549189A Active JP6529505B2 (ja) 2013-10-18 2014-10-14 インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること

Country Status (7)

Country Link
US (1) US9600256B2 (ja)
EP (1) EP3058460B1 (ja)
JP (1) JP6529505B2 (ja)
KR (1) KR102193404B1 (ja)
CN (1) CN105723337B (ja)
CA (1) CA2924871A1 (ja)
WO (1) WO2015057592A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
US10678864B2 (en) 2018-01-17 2020-06-09 Hitachi, Ltd. Analysis model preparing system, programming apparatus, and analysis model preparing method

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442707B2 (en) * 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
US10554709B2 (en) * 2014-07-08 2020-02-04 Microsoft Technology Licensing, Llc Stream processing utilizing virtual processing agents
CN104915214B (zh) * 2015-06-25 2018-09-07 走遍世界(北京)信息技术有限公司 系统的发布方法及装置
US10242119B1 (en) * 2015-09-28 2019-03-26 Amazon Technologies, Inc. Systems and methods for displaying web content
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US10216615B2 (en) * 2017-06-30 2019-02-26 Sap Se Debuggable instance code in a cloud-based instance platform environment
CN109933326B (zh) * 2017-12-15 2023-03-17 北京奇虎科技有限公司 改写代码的编译方法、装置及相应终端
US11115279B2 (en) 2018-12-07 2021-09-07 Hewlett Packard Enterprise Development Lp Client server model for multiple document editor
US11182145B2 (en) * 2019-03-15 2021-11-23 International Business Machines Corporation Optimizing updates to distributed data processing applications
CN112181422A (zh) * 2020-09-02 2021-01-05 苏州浪潮智能科技有限公司 一种Hadoop编译方法、装置及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
JP2002082811A (ja) * 2000-06-28 2002-03-22 Hitachi Ltd コンパイル方法および記録媒体
JP2007233472A (ja) * 2006-02-27 2007-09-13 Canon Inc 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6519767B1 (en) 1995-06-07 2003-02-11 Microsoft Corporation Compiler and method for automatically building version compatible object applications
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB2373069B (en) * 2001-03-05 2005-03-23 Ibm Method, apparatus and computer program product for integrating heterogeneous systems
US7536386B2 (en) * 2003-03-27 2009-05-19 Microsoft Corporation System and method for sharing items in a computer system
US7086041B2 (en) * 2003-06-27 2006-08-01 Microsoft Corporation Extensible type system for representing and checking consistency of program components during the process of compilation
US7665075B1 (en) * 2004-03-17 2010-02-16 Sun Microsystems, Inc. Methods for sharing of dynamically compiled code across class loaders by making the compiled code loader reentrant
US7530058B2 (en) * 2004-05-28 2009-05-05 Microsoft Corporation Non-compile pages
US7493604B2 (en) * 2004-10-21 2009-02-17 Microsoft Corporation Conditional compilation of intermediate language code based on current environment
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
US7480767B2 (en) * 2006-06-15 2009-01-20 Sap Ag Cache with time-based purging and computation of purged items
US8381202B2 (en) * 2006-06-20 2013-02-19 Google Inc. Runtime system for executing an application in a parallel-processing computer system
US8443348B2 (en) * 2006-06-20 2013-05-14 Google Inc. Application program interface of a parallel-processing computer system that supports multiple programming languages
US8375368B2 (en) * 2006-06-20 2013-02-12 Google Inc. Systems and methods for profiling an application running on a parallel-processing computer system
US7814486B2 (en) * 2006-06-20 2010-10-12 Google Inc. Multi-thread runtime system
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8108844B2 (en) * 2006-06-20 2012-01-31 Google Inc. Systems and methods for dynamically choosing a processing element for a compute kernel
US7949998B2 (en) * 2007-04-20 2011-05-24 Microsoft Corporation Programming framework for closed systems
US8479178B2 (en) * 2008-06-27 2013-07-02 Microsoft Corporation Compiler in a managed application context
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US8924922B2 (en) 2010-06-14 2014-12-30 Microsoft Corporation Pre-compiling hosted managed code
US8495355B2 (en) * 2011-02-28 2013-07-23 Microsoft Corporation Operating system experience states
US9043765B2 (en) * 2011-11-09 2015-05-26 Microsoft Technology Licensing, Llc Simultaneously targeting multiple homogeneous and heterogeneous runtime environments

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854932A (en) * 1995-08-17 1998-12-29 Microsoft Corporation Compiler and method for avoiding unnecessary recompilation
JP2002082811A (ja) * 2000-06-28 2002-03-22 Hitachi Ltd コンパイル方法および記録媒体
JP2007233472A (ja) * 2006-02-27 2007-09-13 Canon Inc 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2010267264A (ja) * 2009-05-15 2010-11-25 Internatl Business Mach Corp <Ibm> コンポーネント・ベース・アプリケーションに対して実行可能なコードを構築する方法、その方法を実行するプログラムを含むコンピュータ可読の記憶媒体、およびコンパイラ

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678864B2 (en) 2018-01-17 2020-06-09 Hitachi, Ltd. Analysis model preparing system, programming apparatus, and analysis model preparing method
CN109358841A (zh) * 2018-08-15 2019-02-19 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备
CN109358841B (zh) * 2018-08-15 2024-04-30 中国平安人寿保险股份有限公司 网页应用开发编译方法、装置及存储设备、计算机设备

Also Published As

Publication number Publication date
KR102193404B1 (ko) 2020-12-21
EP3058460B1 (en) 2019-12-18
EP3058460A1 (en) 2016-08-24
US9600256B2 (en) 2017-03-21
JP6529505B2 (ja) 2019-06-12
CN105723337B (zh) 2019-04-30
CA2924871A1 (en) 2015-04-23
CN105723337A (zh) 2016-06-29
US20150113513A1 (en) 2015-04-23
WO2015057592A1 (en) 2015-04-23
KR20160074486A (ko) 2016-06-28

Similar Documents

Publication Publication Date Title
JP6529505B2 (ja) インタラクティブ開発環境からソフトウェアアーチファクトをインクリメンタルにコンパイルすること
US10379818B2 (en) Multi-tenant, tenant-specific applications
WO2015143865A1 (zh) 应用场景的识别方法、功耗管理方法、装置及终端设备
US9892015B2 (en) Integration and automation of build and test in a customized computing system
US10152308B2 (en) User interface display testing system
JP2017531844A (ja) リアル・タイム・プロビジョニングのための動的更新ストリーム
US20190026214A1 (en) Using a pre-installation environment to debug a server without a functioning operating system
KR20170016362A (ko) 컴파일 동안 표시 메타데이터를 브라우저 렌더링 가능 포맷으로 변환하는 기법
US10895963B2 (en) Using sections for customization of applications across platforms
KR102309211B1 (ko) 개발 시스템에서의 시맨틱 콘텐츠 액세스 기법
CN109074357B (zh) 动态地管理服务的不同版本
US20150113499A1 (en) Runtime support for modeled customizations
US9811333B2 (en) Using a version-specific resource catalog for resource management
US20150121343A1 (en) Test impact analysis using cross reference data and metadata
US10705802B2 (en) Extensible and queryable strong types
US20160274871A1 (en) Isolating components using method detouring
Iliescu Device Fragmentation
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

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170901

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170901

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180808

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181115

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: 20190418

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190514

R150 Certificate of patent or registration of utility model

Ref document number: 6529505

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250