(57)【要約】  コードの少なくとも１つのモジュールに関連付けられているデータには、モジュールの使用に関するガイダンスを提供するような方法で注釈を付けることができる。
2009524856.tif 000002
【特許請求の範囲】
【請求項１】
データ構造体を格納している少なくとも１つのコンピュータ可読媒体であって、前記データ構造体は、
アプリケーションプログラミングインターフェース（ＡＰＩ）と、
前記ＡＰＩの質的な属性に基づいてプログラミングガイダンスを規定する注釈とを備えることを特徴とするコンピュータ可読媒体。
【請求項２】
前記ＡＰＩは、プリコンパイルされていることを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項３】
前記ＡＰＩは、まだコンパイルされていないことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項４】
前記プログラミングガイダンスは、前記ＡＰＩを使用するための少なくとも１つの規則を示すことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項５】
前記プログラミングガイダンスは、前記ＡＰＩが前記ＡＰＩを呼び出しているメソッドと機能的に互換性を持つかどうかを示すことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項６】
前記プログラミングガイダンスは、呼び出されたメソッドが前記ＡＰＩと機能的に互換性を持つかどうかを示すことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項７】
前記プログラミングガイダンスは、前記ＡＰＩによって正常に呼び出されうるメソッドを識別することを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項８】
前記注釈は、前記ＡＰＩの分類を示すことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項９】
前記注釈は、前記ＡＰＩの分類を示し、さらに別のＡＰＩの機能的に互換性のある分類を示すことを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項１０】
前記プログラミングガイダンスは、前記ＡＰＩに影響を及ぼすようにアクションが行われるときに表示されることを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項１１】
前記プログラミングガイダンスは、前記ＡＰＩに影響を及ぼすようにアクションが行われるときにダイアログボックスに表示されることを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項１２】
前記プログラミングガイダンスは、前記ＡＰＩに影響を及ぼすようにアクションが行われるときにドロップダウンメニューに表示されることを特徴とする請求項１に記載の少なくとも１つのコンピュータ可読媒体。
【請求項１３】
コードを受信する受信機と、
前記コードの質的な特性に基づいてプログラミングガイダンスを提供する管理者とを備えることを特徴とするシステム。
【請求項１４】
前記受信コードは、コンパイルされていることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記受信コードは、質的な基準に基づいて注釈が付けられ、さらに前記管理者は、前記受信コードに対応する注釈に基づいて前記ガイダンスを提供するものとすることを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記受信コードは、質的基準に基づくペルソナを用いて注釈が付けられ、さらに前記管理者は、前記受信コードと機能的に互換性を持つ別の質的基準に基づくペルソナを示す前記ガイダンスを提供するものとすることを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記受信コードは、その機能的意図に基づく分類を用いて注釈が付けられ、さらに前記管理者は、前記受信コードの前記分類と機能的に互換性を持つコードの別の分類を示す前記ガイダンスを提供するものとすることを特徴とする請求項１３に記載のシステム。
【請求項１８】
前記受信コードは、前記受信コードのセキュリティ特性に基づく機能分類を用いて注釈が付けられることを特徴とする請求項１３に記載のシステム。
【請求項１９】
前記システムは、プロファイラであることを特徴とする請求項１３に記載のシステム。
【請求項２０】
前記システムは、診断ツールであることを特徴とする請求項１３に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
アプリケーション、プログラム、関数、およびプログラム可能な実行可能コードのその他の集合体は通常、サードパーティ（つまり「カスタマ」）の使用のために記述される。したがって、効果的なコードは、サードパーティの使用のシナリオが実現可能にされ、サードパーティの期待に応えるような方法で記述される。
【発明の開示】
【課題を解決するための手段】
【０００２】
アプリケーション、プログラム、関数、およびプログラム可能な実行可能コードのその他の集合体はモジュール化され、少なくとも１つのそのようなコードのモジュールに関連付けられているデータには、モジュールの使用に関する質的なガイダンスを提供するように注釈を付けることができる。
【発明を実施するための最良の形態】
【０００３】
注釈付きコードを生成し、注釈を使用して、コードの使用法に関するガイダンスを提供するためのツール、システム、および方法が、本明細書において説明される。さらに、コードの少なくとも一部に注釈を付けることおよび注釈を使用することに関する説明は、一部のコードの意図される用途をカスタマに知らせるために使用されうるツール、システム、プロセス、命令、技術、およびルーチンに関連する場合もある。つまり、例えばコードの各々の部分の機能的意図などを示すペルソナ（ｐｅｒｓｏｎａ）または分類を用いてコードの少なくとも一部に注釈を付けることによって、カスタマは、容易には破壊またはクラッシュしない、高い効率のアプリケーション、プログラム、関数、またはプログラム可能な実行可能コードのその他の集合体を記述する資格を与えられうる。さらになお、そのようなツール、システム、およびプロセスは、ネットワーク環境において１つまたは複数のデバイス、またはノードで実施されうる。
【０００４】
本明細書において説明される「モジュール」とは、共通の物理および／または論理リソースを利用することができる、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのような個別のエンティティを示すことができる。
【０００５】
本明細書において説明される「集合体」とは、コードの配置の単位を示すことができる。
【０００６】
図１は、注釈付きコードを生成し、注釈を活用して、コードの使用法に関するガイダンスを提供するために例示の技術が実施されうるネットワーク環境の例１００を示す。しかし、そのような例示の技術は、ネットワーク環境に限定されない。そのような技術は、本明細書に説明されるように、質的に注釈を付けられた注釈付きコード１２０に関連付けられているツール、方法（例えば技法）、およびシステムを含むことができるが、これらに限定されることはない。図１において、クライアント装置１０５、サーバ装置１１０、および「その他の」装置１１５は、ネットワーク１２５を介して相互に通信可能に結合されうる。さらに、クライアント装置１０５、サーバ装置１１０、および「その他の」装置１１５のうちの少なくとも１つは、前述の技術を実施することが可能でありうる。
【０００７】
クライアント装置１０５は、質的に注釈を付けられた注釈付きコード１２０の生成および使用のうちの少なくとも１つを行うために例示の技術を実施することができるデスクトップパーソナルコンピュータ（ＰＣ）、ワークステーション、メインフレームコンピュータ、インターネットアプライアンス、セットトップボックス、またはゲーム用コンソールを含む様々な既知のコンピューティング装置のうちの少なくとも１つであってもよい。クライアント装置１０５は、さらに、携帯（つまりセル式）電話、携帯情報端末（ＰＤＡ）、ラップトップコンピュータなどを含む、有線および／または無線リンクによってネットワーク１２５に関連付けることができる少なくとも１つの装置であってもよい。さらになお、クライアント装置１０５は、それらの様々な数および／または組合せの前述のクライアント装置であってもよい。「その他の」装置１１５もまた、クライアント装置１０５の上記の例のいずれかによって具現することができる。
【０００８】
サーバ装置１１０は、質的に注釈を付けられた注釈付きコード１２０の生成および使用のうちの少なくとも１つを行うための少なくとも１つの実施態様により、様々なデータおよび／または機能のいずれかをクライアント装置１０５または「その他の」装置１１５に提供することができる任意の装置であってもよい。データは、公開されるか、または代替として、例えば、特定のユーザのみに限定されるか、あるいは適切なサブスクリプション料またはライセンス料が支払われる場合に限定されるなどのように、限定されてもよい。サーバ装置１１０は、ネットワークサーバ、アプリケーションサーバ、ブレードサーバ、またはそれらの任意の組合せのうちの少なくとも１つにすることができる。通常、サーバ装置１１０は、コンテンツのソースとなりうる任意の装置であってもよく、クライアント装置１０５は、ネットワーク１２５経由またはオフラインの方法でそのようなコンテンツを受信することができる任意の装置であってもよい。しかし、本明細書において説明される例示の実施態様によれば、クライアント装置１０５およびサーバ装置１１０は、ネットワーク環境１００において、交互に送信側ノードまたは受信側ノードになることができる。「その他の」装置１１５もまた、サーバ装置１１０の上記の例のいずれかによって具現することができる。
【０００９】
「その他の」装置１１５は、本明細書に説明される例示の技術のうちの１つまたは複数に従って、質的に注釈を付けられた注釈付きコード１２０を開発および／または活用することができる任意のさらなる装置であってもよい。つまり、「その他の」装置１１５は、例えばコードの各々の部分の機能的意図などを示すペルソナまたは分類を用いてコードの少なくとも一部に注釈を付けること、および／または割り当てられたペルソナに基づいてコードの部分の使用法に関するガイダンスをカスタマに提供することができる装置であってもよい。したがって、「その他の」装置１１５は、オペレーティングシステム、インタープリタ、コンバータ、コンパイラ、または実施されるランタイム実行環境のうちの少なくとも１つを有するコンピューティングまたは処理装置であってもよい。これらの例は、いかなる方法においても限定的であることを意図してはおらず、そのため限定的に解釈されるべきではない。
【００１０】
ネットワーク１２５は、有線および／または無線ネットワークを含むことができる、様々な標準的なネットワークトポロジおよびタイプのいずれかであってもよい。ネットワーク１２５はさらに、公開および／または独自開発のプロトコルを含む、様々な標準的なネットワークプロトコルのいずれかを活用することができる。ネットワーク１２５は、例えば、インターネット、および８０２．１１システムのような１つまたは複数のローカルエリアネットワーク（個別に「ＬＡＮ」とも呼ばれる）の少なくとも一部、またはさらに大規模なワイドエリアネットワーク（つまり「ＷＡＮ」）、あるいはブルートゥースのようなパーソナルエリアネットワーク（つまりＰＡＮ）を含むことができる。
【００１１】
装置１０５、１１０、および１１５のうちの少なくとも１つにおけるコンピュータアーキテクチャは通常、ハードウェアとソフトウェアに関してコンピュータプラットフォームを定義してきた。コンピューティング装置のソフトウェアは、機能に基づいて、ハードウェア抽象化層（あるいは「ＨＡＬ」と呼ばれる）、オペレーティングシステム（あるいは「ＯＳ」と呼ばれる）、およびアプリケーションを含むことができるグループに分類されてきた。
【００１２】
ランタイム実行環境は、ＯＳとアプリケーション、プログラム、関数、またはコードのその他の集合体の間に常駐することができる。ランタイム実行環境は、アプリケーション、プログラム、関数、またはコードのその他の集合体が処理装置１０５、１１０、および１１５のうちの任意の１つまたは複数上で特定のタスクを実行することができるスペースとしての役割を果たすことができる。詳細には、ランタイム実行環境は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、およびモバイル処理／通信装置を含む範囲の増大する処理装置１０５、１１０、および１０５上で、そのような装置で稼働するアプリケーションに抽象化の層とサービスを提供することにより、およびメモリ管理とその構成を含む機能をアプリケーションにさらに提供することにより、アプリケーション、プログラム、関数、またはコードのその他の集合体の実行の信頼性を高めることができる。
【００１３】
ランタイム実行環境は、プログラミングおよび実行プラットフォームのうちの少なくとも１つとしての役割を果たすことができる。プログラミングプラットフォームとして、ランタイム実行環境は、複数のコンピューティング言語の１つで記述されうるターゲットのアプリケーション、プログラム、関数、またはコードのその他の集合体のうちの１つまたは複数を、中間言語（これ以降「ＩＬ」と呼ぶ）またはバイトコードにコンパイルすることができる。ＩＬは通常プラットフォームから独立しており、中央演算処理装置（これ以降「ＣＰＵ」と呼ぶ）がＩＬを実行する。実際、ＩＬは、多くのＣＰＵ機械言語よりも高レベルの言語である。
【００１４】
実行プラットフォームとして、ランタイム実行環境は、コンパイル済みＩＬをネイティブの機械命令に解釈することができる。ランタイム実行環境は、インタープリタまたはコンパイラ（例えば、「ジャストインタイム（Ｊｕｓｔ−Ｉｎ−Ｔｉｍｅ）」あるいは「ＪＩＴ」コンパイラ）を活用して、そのような命令を実行することができる。いずれにしても、次いで、ネイティブの機械命令は、ＣＰＵによって直接実行されうる。ＩＬはＣＰＵに依存しないので、ＣＰＵプラットフォームで稼働するＯＳが適切なランタイム実行環境をホスティングする限りＩＬはあらゆるＣＰＵプラットフォーム上で実行することができる。
【００１５】
代替として、アプリケーション、プログラム、関数、またはコードのその他の集合体のうちの少なくとも一部は、プリコンパイルされ、ランタイム実行環境でネイティブイメージファイルとしてインストールされうるので、ＪＩＴコンパイルに必要とされるＣＰＵの消費が回避される。事実上、プリコンパイルされた部分は、ネイティブプラットフォームの実行形式ではなく、ＩＬ形式（例えば、アセンブリ、メソッド、またはタイプ）で分散されるソフトウェアコンポーネントである。そのようなプリコンパイル済みＩＬのソースは、非管理対象の実行環境、あるいは装置１０５、１１０、および１１５のうちの同じかまたは別個の装置でのランタイム実行環境の別個の実施のいずれかで配置されうる。ソースは、プリコンパイル済みＩＬが対応する、アプリケーション、プログラム、メソッド、関数、またはプログラム可能な実行可能コードのその他の集合体のインストール時間中またはインストール前にプリコンパイル済みＩＬを配置することができる。
【００１６】
いずれにしても、質的に注釈を付けられた注釈付きコード１２０を生成および／または活用するための技術が実施されうるランタイム環境の例は、Ｖｉｓｕａｌ  Ｂａｓｉｃランタイム環境、例えばＪａｖａ（登録商標）ルーチンを実行するために使用されるＪａｖａ（登録商標）Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅランタイム環境、または例えばＭｉｃｒｏｓｏｆｔ  ．ＮＥＴ（商標）アプリケーションを呼び出しルーチンの実行前に機械言語にコンパイルするＣｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ（ＣＬＲ）を含む。しかし、ランタイム環境のこのリストは、例を示すに過ぎない。本明細書において説明される例示の技術は、これらの管理対象の実行環境のみに限定されない。詳細には、１つまたは複数の例がテスト環境および／または非管理対象の実行環境内で実施されうるので、例示の実施態様は管理対象の実行環境にのみ限定されることはない。
【００１７】
ＩＬにコンパイルされたアプリケーション、プログラム、関数、およびコードのその他の集合体は、「管理対象コード」と呼ぶことができ、そのためランタイム実行環境は代替として「管理対象の実行環境」と呼ばれることもある。実行するためにランタイム実行環境を使用しないコードは、ネイティブコードのアプリケーションと呼ばれることもあることに留意されたい。
【００１８】
図２は、質的に注釈を付けられた注釈付きコード１２０（図１を参照）を開発および活用するための技術が実施されうるランタイム実行環境２００の例を示す。
【００１９】
少なくとも１つの例示の実施態様によれば、ランタイム実行環境２００は、コンピューティング装置プラットフォームの管理対象コードの実行を容易にすることができる。管理対象コードは、アプリケーション開発技術のコアセットの一部であると考えることができ、さらに、ランタイム実行環境２００で実行してコンピューティング装置プラットフォームに対応するサービスを提供するためにコンパイルされるかまたはロードされる、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集合体と見なすことができる。加えて、ランタイム実行環境２００は、管理対象コードを解釈レベルにおいて、プロキシ化されてからプロセッサによって実行されうる命令に変換することができる。代替として、管理対象コードは、インタープリタまたはコンパイラを介して、あるいはネイティブイメージとしてインストール時に実行するよう設計されたコンパイラの形態で実行されてもよい。ランタイム実行環境２００のフレームワークはまた、管理対象アプリケーションのソフトウェアビルディングブロックと見なすことができるクラスライブラリも提供する。
【００２０】
ランタイム実行環境２００は、他の場合であればカーネルに期待されうる少なくとも部分的な機能を提供することができるが、これは装置１０５、１１０、および１１５（図１を参照）のうちの特定の１つのリソース制約に応じてコンピューティング装置プラットフォームになくても、またはあってもよい。したがって、ランタイム実行環境２００の少なくとも１つの例は、入出力（これ以降「Ｉ／Ｏ」と呼ぶ）ルーチン管理、コンパイル、メモリ管理、およびサービスルーチン管理を実施することができる。したがって、ランタイム実行環境２００は、Ｉ／Ｏコンポーネント２０５、コンパイラ２１０、少なくとも１つのメモリ管理コンポーネント２１５、サービスルーチン管理コンポーネント２２０、および実行コンポーネント２２５を含むことができる。以下でさらに詳細に説明されるこれらのコンポーネントは例として提供されるが、これらはランタイム実行環境２００の特定の実施態様に限定することを意図されるものではなく、そのような推定が行われるべきではない。したがって、コンポーネントは、その様々な組合せおよび構成によりランタイム実行環境２００の例において実施されうる。
【００２１】
ランタイム実行環境２００のＩ／Ｏコンポーネント２０５は、同期アクセスまたは非同期アクセスのうちの少なくとも１つを、コンピューティング装置プラットフォームに関連付けられている物理リソース（例えば、プロセッサおよび周辺機器）と論理リソース（例えば、ドライバ、または特定の方法で区分された物理リソース）に提供することができる。詳細には、Ｉ／Ｏコンポーネント２０５は、ランタイム実行環境２００に、堅固なシステムスループットをもたらし、さらに、Ｉ／Ｏ要求が送出されるアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集合体のパフォーマンスを合理化することができる。
【００２２】
コンパイラ２１０は、ランタイム実行環境２００での実行のために、コンパイル済みＩＬをネイティブの機械命令に解釈することができるランタイム実行環境２００内のコンポーネントを示すことができる。さらに、質的に注釈を付けられた注釈付きコード１２０を開発および活用するための技術の少なくとも１つの代替実施態様によれば、コンパイラ２１０は、プロファイリング／記録の目的で、様々な目的のために、アプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集合体に関連付けられたコードのモジュールの動作を動的に装備することができる。コードのモジュールは、ランタイム実行環境２００にロードされても、されなくてもよい。コードのモジュールがランタイム実行環境２００にロードされる場合、プロファイリングは、記録することを含むか、またはそれ以外の場合コードの各々のモジュールとランタイム実行環境２００の１つまたは複数のコンポーネントとの間の対話を追跡することを含むことができる。コードの各々のモジュールとランタイム実行環境２００の特定のコンポーネントとの間のそのような対話は、データ、パラメータ、および状態の受信と送信を含む。プロファイリングは、コードモジュールの実行可能部分に作用するかまたは影響することなく実行され、コンパイル時、初期ランタイム時、または実行パスの実行可能部分の実行に関連するその後の任意の時間に実行されうる。
【００２３】
ローダ２１５は、必要に応じてアセンブリを見つけて読み込むために呼び出されうるアセンブリマネージャを示すことができる。ローダ３２５は、実行環境２００に配置されうるが、非管理対象実行環境（すなわちＯＳ）の少なくとも１つの実施態様はその中にローダ３２５を含むことができる。ローダ２１５は、ランタイム実行環境２００にロードするために、開発中またはインストール時に、プリコンパイル済みＩＬを収集することができる。したがって、ランタイム実行環境２００の少なくとも１つの代替実施態様によれば、ローダ２１５はランタイム実行環境２００へのプリコンパイル済みＩＬのエントリポイントとしての役割を効果的に果たすことができる。
【００２４】
メモリ管理コンポーネント２２０は、ガーベッジコレクションを実施する「ガーベッジコレクタ」と呼ばれることができる。ガーベッジコレクションは、メモリヒープのスイープまたはスキャン時に、アプリケーション、プログラム、関数、またはコードのその他の集合体によってオブジェクトがもはや使用されないと判別される場合、オブジェクトが自動的に解放される（すなわち、割り振り解除される）管理対象コード実行環境の堅固な特徴と見なすことができる。さらに、メモリ管理コンポーネント２２０によって実施されるさらなる機能は、コンピューティング装置プラットフォームで稼働するタスク間で有限揮発性ＲＡＭ（すなわち、メモリヒープ）ストレージの１つまたは複数の連続ブロックもしくはメモリの連続ブロックのセットを管理すること、コンピューティング装置プラットフォームで稼働する少なくとも１つのアプリケーション、プログラム、関数、またはプログラム可能および実行可能コードのその他の集合体にメモリを割り振ること、アプリケーション、プログラム、関数、またはコードのその他の集合体の少なくとも１つによる要求に応じてメモリの少なくとも一部を解放すること、およびアプリケーション、プログラム、関数、またはコードのその他の集合体のいずれかが、別のアプリケーション、プログラム、関数、またはコードのその他の集合体のいずれかに割り振られているメモリスペースに侵入するようにアクセスすることを防ぐことを含むことができる。
【００２５】
サービスルーチンマネージャ２２５は、コンピューティング装置プラットフォームに関連付けられている物理および論理リソースのサービス機能を提供するために、アプリケーションサポート層の少なくとも一部として含むことができる。質的に注釈を付けられた注釈付きコード１２０を開発および／または活用するための例示の技術（例えば、ツール、方法、およびシステム）は、サービスルーチンマネージャ２２５によって管理されうる。つまり、そのような技術は、そのような技術の様々な代替実施態様に従って、コンパイラ２１０（上記で参照）、サービスルーチンマネージャ２２５、またはランタイム実行環境２００の一部の他のコンポーネントによって単独で、または組み合わせて実施されうる。サービスルーチンマネージャ２２５によるそのような寄与は、コードのモジュールの実行可能部分に作用するかまたは影響することなく実行され、コンパイル時、初期ランタイム時、またはコードモジュールの実行可能部分の実行に関連するその後の任意の時間に行われうる。
【００２６】
実行コンポーネント２３０は、コンピューティング装置プラットフォームの管理対象コードの実行を可能にすることができる。詳細には、質的に注釈を付けられた注釈付きコード１２０を開発および／または活用するための技術の実施態様に関して、実行コンポーネント２３０は、コンパイル時、初期ランタイム、またはその後コードモジュールの実行可能部分の実行中の任意の時間に、１つまたは複数のコードモジュールの注釈を注釈付けおよび／または解釈するために１つまたは複数のツール、システム、およびプロセスを実施することができるランタイム実行環境２００内の模範的なコンポーネントとしての役割を果たすことができる。
【００２７】
図３は、質的に注釈を付けられた注釈付きコード１２０（図１を参照）に関連付けられている１つまたは複数の例示の技術を実施するデータフローの例３００を示す。詳細には、質的に注釈を付けられた注釈付きコード１２０は、特定のコードのモジュールの少なくとも１つの質的パフォーマンス特性に関連のある典型的ペルソナまたは分類を割り当てられているコードである。そのような質的パフォーマンス特性は、特定のコードのモジュールの機能的な意図を含むことができる。「機能的な意図」を指示することにより、ペルソナまたは分類は、その正確な機能を説明するのではなく、特定のコードのモジュールが使用に適しているという１つまたは複数のコンテキストを説明することができる。いずれにせよ、そのようなパフォーマンス特性の参照は、非限定的な例としてのみ提供される。質的なセキュリティ特性はまた、ペルソナまたは分類が各々のコードのモジュールに割り当てられる少なくとも部分的な基盤としての役割を果たすことができる。
【００２８】
さらに、質的に注釈を付けられた注釈付きコード１２０は、ランタイム実行環境２００によってコンパイルされるか、またはランタイム実行環境２００に対しプリコンパイルされる管理対象コードであってもよい。いずれにせよ、コードの各々のモジュールの潜在的なパフォーマンス関連の障害は、たとえ明確に予期されないとしても、予測することができるので、望ましい程度まで回避することができる。
【００２９】
そのために、質的に注釈を付けられた注釈付きコード１２０は、堅固である汎用のガイダンスを提供することができる。つまり、コードの各々のモジュールに対応する厳密な規則がコードの改訂に沿って変更される必要がある量的ガイダンスとは対照的に質的ガイダンスを提供することにより、質的に注釈を付けられた注釈付きコード１２０に対応するペルソナまたは分類は、コードに対する変更を許容することができ、そのため抑制的なガイダンスではなく規範的なガイダンスとしての役割を果たす。
【００３０】
さらになお、質的に注釈を付けられた注釈付きコード１２０の各々のモジュールに割り当てられた各々のペルソナまたは分類によって提供される汎用ガイダンスは、コード１２０によって呼び出されうる好ましいメソッド、コード１２０が起動することができる動作、コード１２０が有することができる依存性を示すことができ、あるいはさらに、例えば循環的複雑度（ｃｙｃｌｏｍａｔｉｃ  ｃｏｍｐｌｅｘｉｔｙ）のような複雑性パラメータなどに基づいて複雑さの所定の程度さえも示すことができる。もちろん、そのようなガイダンスは、質的に注釈を付けられた注釈付きコード１２０に割り当てられたペルソナまたは分類によって影響を受ける可能性のある広範なプログラミング要因を示すための例としてのみ提供される。
【００３１】
いずれにしても、以下の説明において、コード注釈ツール３１５に関連付けられているコンポーネントによって実行される様々な操作が説明される。これらのコンポーネントのうちの特定の１つに関して説明される操作は、コンポーネント自身によって、ツールに関連付けられている他のコンポーネントと組み合わせて、またはランタイム実行環境２００（図２を参照）の１つまたは複数のコンポーネントと協働する特定のコンポーネントによって実行されうる。加えて、コード注釈ツール３１５の各コンポーネントの操作は、単一または複数のプロセッサによって実行することができ、ハードウェア、ファームウェア、またはソフトウェアとして、単一または様々な組合せで実施することができる。
【００３２】
コード注釈ツール３１５の例示の実施態様は、ランタイム実行環境２００のコンポーネントのいずれかとは分離した、オフラインの方法で実施されうる。しかし、コード注釈ツール３１５の少なくとも１つの実施態様は、コンパイラ２１０の任意の部分、サービスルーチンマネージャ２２０、または単一または組合せによるランタイム実行環境２００のその他のコンポーネントと合体されうる。そのような実施態様において、コード注釈ツール３１５は、実行コンポーネント２２５によって実行されるか、または処理されうる。
【００３３】
モジュール３０５は、例えばランタイム実行環境２００の実行コンポーネント２３０に従って実行可能なアプリケーション、プログラム、関数、またはその他のコードの集合体に対応する実行可能命令の１つまたは複数のモジュールを示すことができる。詳細には、モジュール３０５は、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのようなエンティティを示すことができる。
【００３４】
コード３１０は、モジュール３０５に関連付けられているアプリケーションプログラミングインターフェース（あるいは、これ以降「ＡＰＩ」と呼ばれる）を示すことができる。詳細には、ＡＰＩ３１０は、クラスによって公開され、ランタイム実行環境２００またはオペレーティングシステムによるプロシージャのパフォーマンスを指示するためにアプリケーション、プログラム、メソッド、関数、またはコードのその他の集合体によって使用される１つまたは複数のメソッドまたはルーチンと見なすことができる。
【００３５】
コード注釈ツール３１５は、適切なペルソナまたは分類に従ってアプリケーション、プログラム、関数、またはその他のコードの集合体に対応するコードのモジュールの注釈を容易にし、各々のモジュールの機能的意図の少なくとも１つまたは割り当てられたペルソナまたは分類に従ってそのようなモジュールのアクティビティの監視、記録、および／またはプロファイリングを容易にし、コードのモジュールの意図の少なくとも１つまたはコードのモジュールに割り当てられたペルソナまたは分類に従ってコードのモジュールの使用法に関するガイダンスを提供することを可能にすることができる多機能ツールを示すことができる。
【００３６】
コード注釈ツール３１５内に配置されるか、またはそれ以外の場合は機能的に関連付けられているアナライザ３２０は、コードのモジュールの機能的意図を含む（ただし、これに限定されない）特徴に基づいて適切な注釈または分類をコードのモジュールと関連付けることができるコンポーネントと見なされうる。アナライザはさらに、アプリケーション、プログラム、関数、またはその他のコードの集合体に対応するコードのモジュールに関連付けられている注釈を読み取ることができ、さらになお、単一で、またはコード注釈ツール３１５の別のコンポーネントとの組合せにより、そのような注釈の内容をユーザに伝達することができる。
【００３７】
モジュール３２５は、例えばランタイム実行環境２００の実行コンポーネント２３０に従って実行可能なアプリケーション、プログラム、関数、またはその他のコードの集合体に対応する実行可能命令のモジュールを示すことができる。詳細には、モジュール３２５は、コード３１０および関連する注釈３３０を含む、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのようなエンティティを示すことができる。
【００３８】
注釈３３０は、コード３１０に関連付けられているテキストファイルを示すことができる。特に、注釈３３０は、コード注釈ツール３１５によってコード３１０に割り当てられているペルソナまたは分類を一覧するテキストファイル（例えば、ＸＭＬ）であってもよいか、あるいは注釈３００は、例えば機能特性またはコード３１０の意図などを明確にするテキストファイルであってもよい。注釈３３０は、コード３１０に関連付けられており、そのためモジュール３２５の一部としてコード３１０に接続されたランタイム実行環境２００に受信され、ランタイム実行環境２００によってコンパイルされうる。代替として、注釈３３０は、コード３１０に関連付けられているが、プリコンパイルされうるので、コード３１０とは分離されたランタイム実行環境２００に受信されてもよい。例えば、注釈３３０は、実行可能コード２００の開発者または管理者からネットワーク１２５を介してオンラインでランタイム実行環境２００に受信されうるか（図１を参照）、または注釈３３０は、前述の開発者または管理者から（例えば、移植可能なコンピュータ可読媒体を介して）オフラインの方法でランタイム実行環境２００に受信されうる。
【００３９】
前述のように、注釈３３０は、コード３１０に割り当てられているペルソナまたは分類を一覧にすることができる。そのようなペルソナまたは分類は、コード３１０の機能的意図（例えば、ＡＰＩ、メソッド、またはルーチン）を示すデータを提供することができる。つまり、データは、コード３１０の使用が適切となりうる１つまたは複数のコンテキストを示すことができる。さらに、上級コード生成または例外コードプロファイリングのためのコード３１０の意図される用途をカスタマに質的に知らせるため、アナライザ３２０によって関連付けられたペルソナまたは分類は通常、分析された特性に関して相互に関連しており、ペルソナまたは分類は通常、信頼できるガイダンスを提供し、さらに例外および／または創造性を許可する近似と見なされる。
【００４０】
コード３１０に割り当てられたペルソナまたは分類の例は、説明のための例示のみとして、内部ループコード、スループットコード、対話型コード、およびスタートアップコードを含むことができる。そのようなペルソナの名称は、例としてのみ提供される。各々のペルソナまたは分類に対してコードの機能的意図またはその他の機能特性を示す名前を割り当てることが好ましい場合もあるが、ペルソナまたは分類は任意の様々な名前を割り当てられてもよい。
【００４１】
内部ループコードのペルソナは、コード３１０が、より大きいアルゴリズムの一環として、クライアントアプリケーション、プログラム、関数、またはコードのその他の集合体によってより大きいループで呼び出される可能性が高いことを示すことができる。詳細には、内部ループコード３１０は、対応するアプリケーション、プログラム、関数、またはコードのその他の集合体に対して「最も内側」になるコードと見なされうる。その例としては、比較関数、ハッシング関数、低レベルフォーマッティング設定関数などを含む。そのようなコードの場合、メモリ割り振りは奨励されない場合もある。内部ループコード３３０に関連付けられている注釈３３０は、そのようなコードが、以下に説明される例示のコードペルソナ／分類（例えば、スループット、対話型、スタートアップ）のいずれかを割り当てられるコードによって呼び出されうることを助言することができる。
【００４２】
スループットコードペルソナは、コード３１０がＷｅｂページなどのバッチプロセスまたはサービスプロセスで使用される可能性が高いことを示すことができる。詳細には、スループットコード３１０は、一時オブジェクトが作成されうるコードと見なされ、そのために一部のメモリ割り振りが許可されうる。そのようなコードは通常、Ｗｅｂページまたはビジネスロジックによって実施され、そのようなコードの意図は、リソース（例えば、メモリ）のコストにかかわらず実行することである。スループットコードのガイダンスの例は、スループットコードが機能的に内部ループコードとの互換性がなく、そのため場合によっては内部ループコードによって呼び出されないということである。したがって、スループットコード３１０に関連付けられている注釈３３０は、内部ループペルソナまたは分類を割り当てられているコードを呼び出さないよう助言するか、またはそれを禁じることさえできる。
【００４３】
対話型コードのペルソナは、コード３１０が、アプリケーション、プログラム、関数、または対話型イベントによって駆動されるコードのその他の集合体の一部によって使用される可能性が高いことを示すことができる。詳細には、対話型コード３１０は、モードが突然変化することがあるコードと見なされ、そのようなコードの意図は、その実行中に可能な限り少ない資源（例えば、メモリ）を使用することである。対話型コードのガイダンスの例は、対話型コードは内部ループコードを呼び出すことができるということである。したがって、対話型コード３１０に関連付けられている注釈３３０は、内部ループペルソナまたは分類を割り当てられているコードを呼び出すことを推奨することができる。さらなる例は、スループットコードを呼び出す対話型コードを含むことができるが、対話型コードは使用されるリソースを節約することを意図されており、スループットコードはリソースのコストにかかわりなく主張することを意図されているため、これはあり得ないシナリオである。したがって、対話型コード３１０に関連付けられている注釈３３０はさらに、スループットコードペルソナまたは分類を割り当てられているコードを呼び出すことを妨げることができる。
【００４４】
スタートアップコードのペルソナは、コード３１０が、対応するアプリケーション、プログラム、関数、またはコードのその他の集合体の起動パスで表示される可能性が高いことを示すことができる。詳細には、スタートアップコード３１０は、依存性および入出力（ＩＯ）に敏感なコードと見なされうる。スタートアップコード３１０に関連付けられている注釈３３０は、別のペルソナまたは分類を割り当てられているコードからの呼び出しを妨げるかまたは拒否することができる。
【００４５】
したがって、コード３１０の呼び出しを含むアプリケーション、プログラム、関数、またはプログラム可能／実行可能コードのその他の集合体をプログラミングする場合、注釈３３０は、対話型ガイダンス、診断（つまり、プロファイラ）ガイダンス、コード生成ガイダンス、コード保守ガイダンス、および推論ガイダンスを含む（ただし必ずしもこれらに限定されない）ガイダンスをプログラミングカスタマに提供することができる。前述のガイダンスのこれらのカテゴリはすべて、例えばコード３１０の既知の機能的意図などに基づいてアナライザ３２０によって実施されうる。ガイダンスのこれらの例示のカテゴリは、以下で説明される。
【００４６】
対話型プログラミングのガイダンスは、例えば別のペルソナまたは分類が割り当てられているＡＰＩ、メソッド、またはルーチンであってもなくてもよい、より最近に呼び出されたコード３１０の実施態様を備えるコード３１０の機能的互換性を指示することができる。代替として、前述のより最近に呼び出されたコード３１０の実施態様に関連して、コード３１０に割り当てられたペルソナまたは分類の潜在的なプログラミング違反を警告するプログラミング規則を提供することができる。
【００４７】
診断（つまり、プロファイラ）ガイダンスは、コード３１０および／またはコード３１０に割り当てられているペルソナまたは分類の測定されたプログラミングイベントに関連するレポートを提供することができる。詳細には、コード３１０および／またはコード３１０に割り当てられているペルソナまたは分類に関連するプログラミングイベントのレコードに基づいて、診断／プロファイラガイダンスは、コード３１０の使用法に関する統計的分析および／または勧告を提供することができる。分析および／または勧告は、以前推奨されたガイダンスに対してコード３１０に関連するプログラミングイベントの測定を含むことさえできる。プログラミングイベントのレコードは、例えばアナライザ３２０などによって生成され、プログラミングイベントは、コード３１０が以前呼び出された関数、およびコード３１０が特定のアプリケーション、プログラム、関数、またはコードのその他の集合体に対して呼び出された回数を含むことができるが、これらに限定されることはない。
【００４８】
コード生成ガイダンスは、コンパイラのプログラミングガイダンスを提供することができる（例えば、コンパイラ２１０。図２を参照）。例えば、コード生成ガイダンスは、コード３１０の機能的意図の可能性のある指示を提供することができ、そのためコンパイラは、コンパイルされたコード３１０の特性を活用するような方法で、コード３１０をコンパイルすることができる。詳細には、注釈３３０によって明確にされたコード生成ガイダンスは、対話型コード３１０の機能的意図が可能な限り少ないリソースを使用することであることを指示することができ、そのためコンパイラは、使用されるスペースを軽減するコンパクトな方法でコード３１０をコンパイルするよう導かれうる。代替として、コード生成ガイダンスは、内部ループコード３１０の機能的意図がメモリをそこに割り振らせないことであることを指示することができ、そのためコンパイラは、速度を最適化する方法でコンパイラ３０５に導かれうる。これらのシナリオは、例としてのみ提供され、いかなる方法においても限定的に解釈されるべきではない。
【００４９】
コード保守ガイダンスは、コード３１０に割り当てられているペルソナまたは分類の１つまたは複数の論理的根拠を示すプログラミングガイダンスを提供することができる。そのようなガイダンスはさらに、コード３１０の少なくとも一部が変更されるべきであった場合、コード３１０に割り当てられうるペルソナまたは分類の説明を行うことができる。したがって、コード保守ガイダンスは、特定のペルソナまたは分類を割り当てられているコードから別のペルソナまたは分類に割り当てられているコードへの移行を、部分的に導くことができる。
【００５０】
推論ガイダンスは、コード注釈ツールが統計分析ツールの一部として使用される場合、コード３１０の遡及的注釈を提供することができる。つまり、アプリケーション、プログラム、関数、またはすでにコンパイルされているプログラム可能／実行可能コードのその他の集合体について、アナライザ３２０はコード３１０のペルソナまたは分類を遡及的に割り当てることができる。したがって、コード３１０の分析と、コード３１０を呼び出した関数およびコード３１０によって呼び出された関数は、カスタマに提供されうる。
【００５１】
図４は、質的に注釈を付けられた注釈付きコード１２０の少なくとも１つの例示の実施態様を生成して活用するデータフローの例４００を示す（図１を参照）。詳細には、データフローの例４００は、コードジェネレータまたはコードエンフォーサのいずれかに対して実施されうる。
【００５２】
以下の説明において、様々な操作は、ランタイム実行環境２００（図２を参照）またはコード注釈ツール３１５（図３を参照）に関連付けられているコンポーネントによって実行されるものと説明されるが、図４の参照番号は以前の図面の番号とは異なっていてもよい。これらのコンポーネントのうちの特定の１つに関して説明される操作は、コンポーネント自身によって、ツールに関連付けられている他のコンポーネントと組み合わせて、またはランタイム実行環境２００の１つまたは複数のコンポーネントと協働する特定のコンポーネントによって実行されうる。加えて、コード注釈ツール３１５の各コンポーネントの操作は、単一または複数のプロセッサによって実行することができ、ハードウェア、ファームウェア、またはソフトウェアとして、単一または様々な組合せで実施することができる。
【００５３】
第１の例示のデータフローの実施態様４００は、手動または自動コードジェネレータに関連する。
【００５４】
ブロック４０５は、行われる触媒アクション（ｃａｔａｌｙｔｉｃ  ａｃｔｉｏｎ）、または行われようとしている触媒アクションを示すことができ、これはＡＰＩ、メソッド、またはルーチンなどのコードのモジュールに影響を与えることができる。そのような触媒アクションは、別のコードのモジュールによって呼び出されるコードのモジュールを含めることができる。
【００５５】
したがって、データモジュール４１０は、例えばランタイム実行環境２００の実行コンポーネント２３０に従って実行可能なアプリケーション、プログラム、関数、またはコードのその他の集合体に対応する実行可能命令の１つまたは複数のモジュールを示すことができる。詳細には、データモジュール４１０は、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのようなエンティティを示すことができる。
【００５６】
コード４１５は、データモジュール４１０に関連付けられているＡＰＩ、メソッド、またはルーチンを示すことができる。詳細には、コード４１５は、クラスによって公開され、ランタイム実行環境２００またはオペレーティングシステムによるプロシージャのパフォーマンスを指示するためにアプリケーション、プログラム、メソッド、関数、またはプログラム可能および実行可能コードのその他の集合体によって使用されうる。
【００５７】
アナライザ４３５は、コードのモジュールの機能的意図を含む（ただし、これに限定されない）特徴に基づいて適切な注釈または分類をコードのモジュールと関連付けることができるコンポーネントを示すことができる。アナライザ４２５は、注釈付きコードを開発および／または活用するためのさらに包括的なツールに関連付けられうるか、または、ランタイム実行環境２００のコンポーネント（例えば、コンパイラ）としても実装されうる。
【００５８】
いずれにしても、受信コード４１５を有し、データモジュール４１０の内部に組み入れられるかまたはデータモジュール４１０から分離された、アナライザ４３５は、コード４１５の機能的意図またはその他の機能特性を判別するためのあらかじめ定められたアルゴリズムを実施して、それによりペルソナまたは分類をコード４１５と関連付けることができる。コード４１５のペルソナまたは分類がその機能的意図を基にすることについて、例示としてのみ説明される。
【００５９】
注釈付きガイダンス４４０は、コード３１０に関連付けられているテキストファイルを示すことができる。特に、注釈４４０は、コード注釈ツール３１５によってコード４１５に割り当てられているペルソナまたは分類を一覧するテキストファイル（例えば、ＸＭＬ）であってもよい。代替として、注釈付きガイダンス４４０は、例えば、コード４１５に関連付けられている規則またはガイダンスを明確にするダイアログボックスまたはドロップダウンメニュー、色分けされたフォント（例えば、許容可能には緑、注意には黄色、禁止には赤など）の形でユーザインターフェースの一部としてカスタマに提示されてもよい。
【００６０】
第２の例示のデータフローの実施態様４００はまた、手動または自動コードジェネレータに関連する。
【００６１】
ブロック４０５は、行われる触媒アクション、または行われようとしている触媒アクションを示すことができ、これはＡＰＩ、メソッド、またはルーチンなどのコードのモジュールに影響を与えることができる。そのような触媒アクションは、コンパイルされるか、またはコンパイルされるようサブミットされるコードのモジュールを含むことができる。
【００６２】
データモジュール４２０は、データモジュール４１０と同様に、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのような実行可能命令の１つまたは複数のモジュールを示すことができる。
【００６３】
コード４２５は、コード４２５と同様に、データモジュール４２０に関連付けられているＡＰＩ、メソッド、またはルーチンを示すことができる。
【００６４】
注釈４３０は、例えば、テキストファイル（ＸＭＬなど）の形でコード４２５に関連付けられ、コード４２５の機能的意図またはその他の指定された機能特性に基づいてコード４２５に割り当てられているペルソナまたは分類を一覧にするテキストファイルを示すことができる。詳細には、第２のデータフローの例４００によれば、コード４２５はすでに、本明細書において説明されるように、手動プロセスまたは自動プロセスによって注釈を付けられている。
【００６５】
アナライザ４３５は、コード４２５に関連付けられている注釈４３０を読み取ることができるコンポーネントを示すことができる。したがって、ランタイム実行環境２００の一環として、アナライザ４３５は、注釈４３０で明確にされた機能的意図と機能的に互換性を備えるためにコード４２５がコンパイルされるように、コンパイラ２１０（図２を参照）の注釈付きガイダンス４４０を提供することができる。
【００６６】
第３の例示のデータフローの実施態様４００は、手動または自動コードプロファイラまたは診断ツールに関連する。
【００６７】
ブロック４０５は、行われる触媒アクション、または行われようとしている触媒アクションを示すことができ、これはＡＰＩ、メソッド、またはルーチンなどのコードのモジュールに影響を与えることができる。コードプロファイラのコンテキストにおいて、そのような触媒アクションは、分析あるいは他の調査または研究形態のためにプロファイリングツールにサブミットされる以前コンパイルされたコードを含むことができる。
【００６８】
データモジュール４１０は、メソッド、クラス、ＤＬＬ（ダイナミックリンクライブラリ）、フレームワークなどのような実行可能命令の１つまたは複数のモジュールを示すことができる。
【００６９】
コード４１５は、データモジュール４１０に関連付けられているＡＰＩ、メソッド、またはルーチンを示すことができる。
【００７０】
アナライザ４３５は、すでにコンパイルされているコード４２５を読み取ることができ、確立された基準に基づいてコード４１５の機能的意図または他の指定された機能特性を解読することができるコンポーネントを示すことができる。したがって、アナライザ４３５はさらに、適切なペルソナまたは分類をコード４１５に関連付けることができる。
【００７１】
注釈付きガイダンス４４０は、アナライザ４３５によってコード４１５に割り当てられているペルソナまたは分類を明確にするコード４１５に関連付けられるテキストファイルを示すことができる。加えて、注釈付きガイダンス４４０は、特定のペルソナまたは分類に対応する規則または他の形態のプログラムガイダンスを明確に示すことができる。注釈付きガイダンス４４０は、例えば、コード４１５に関連付けられている規則またはガイダンスを明確にするダイアログボックスまたはドロップダウンメニュー、色分けされたフォント（例えば、許容可能には緑、注意には黄色、禁止には赤など）の形でユーザインターフェースの一部としてカスタマに提示されてもよい。
【００７２】
図１から図４に関連する前述の説明により、ペルソナまたは分類は、管理対象実行環境または非管理対象実行環境において質的なプログラミングガイダンスを提供するために、コードの１つまたは複数のモジュールに割り当てることができる。しかし、本明細書において説明される例示の実施態様は、図１の環境、図２のコンポーネント、図３の実行パス、または図４のプロセスのみに限定されることはない。質的に注釈を付けられた注釈付きコード１２０（図１を参照）に関連付けられている技術（例えば、ツール、方法、およびシステム）は、図２〜図４を参照して説明されるコンポーネントの様々な組合せにより実施することができる。
【００７３】
さらに、前述の実施例および実施態様のコンピュータ環境は、例えば、１つまたは複数のプロセッサまたは処理装置、システムメモリ、および様々なシステムコンポーネントを結合するシステムバスを有するコンピューティング装置を含むことができる。
【００７４】
コンピューティング装置は、揮発性および不揮発性媒体、取り外し可能および固定式媒体を共に含む、様々なコンピュータ可読媒体を含むことができる。システムは、ランダムアクセスメモリ（ＲＡＭ）のような揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ）またはフラッシュＲＡＭのような不揮発性メモリの形態のコンピュータ可読媒体を含むことができる。例示のコンピューティングシステムおよび環境を実施するために、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶装置、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）など、コンピュータによってアクセス可能なデータを格納することができるその他のタイプのコンピュータ可読媒体も使用されうることを理解されたい。
【００７５】
本明細書全体を通じて、特定の説明されている特徴、構造、または特性が本発明の少なくとも１つの実施態様に含まれることを示す、「例」、「代替の例」、「少なくとも１つの例」、「実施態様」、または「例示の実施態様」に参照が行われている。したがって、そのような句の使用は、１つの実施態様にとどまらずそれ以上の実施形態を参照することができる。さらに、説明される特徴、構造、または特性は、１つまたは複数の実施形態において任意の適切な方法で組み合わせることができる。
【００７６】
しかし、従来技術の当業者は、コードモジュール初期化が、１つまたは複数の具体的な詳細を使用せず、あるいはその他の方法、リソース、素材などを使用して実施されうることを理解するであろう。その他の例において、単に本発明の態様をあいまいにすることを避けるため、既知の構造、リソース、または操作は詳細には示されないかまたは説明されていない。
【００７７】
コードモジュール初期化の例示の実施態様および用途が示され説明されてきたが、本発明は前述したとおりの構成およびリソースに限定されないことを理解されたい。本明細書に開示される本発明の方法およびシステムの配置、操作、および詳細には、上記および添付の特許請求の範囲で説明されるように、本発明の範囲を逸脱することなく、当業者には明らかな様々な修正、変更、および変形を加えることができる。
【図面の簡単な説明】
【００７８】
【図１】注釈付きコードの生成および活用のうちの少なくとも１つの技術例を実施する装置と、ネットワークを介して通信する装置を示す図である。
【図２】注釈付きコードの生成および活用のうちの少なくとも１つの技術例を実施する実行環境の例を示す図である。
【図３】注釈付きコードの例を生成するツールに関してサンプルのデータフローを示す図である。
【図４】注釈付きコードを活用するツールに関して例示のデータフローを示す図である。
【図１】
2009524856.tif 000003
【図２】
2009524856.tif 000004
【図３】
2009524856.tif 000005
【図４】
2009524856.tif 000006
【国際調査報告】
2009524856.tif 000007
2009524856.tif 000008