(57)【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、再利用可能なコードセグメントを作成して再利用するコンピュータ実行方法であって、
グラフィカルプログラムエディタユーザインターフェースにおいて、再利用のために複数のプログラミング言語の中の１つの既存のソースコードのフラグメントの選択を受け取るステップと、前記フラグメントはコードセグメントを含み、
前記グラフィカルプログラムエディタユーザインターフェースにおいて、前記コードセグメントに関連づけられた情報の選択を受け取るステップと、前記関連づけられた情報は前記コードセグメントが再利用される時に前記コードセグメントを見つけるためのキーワードと、前記コードセグメントが相互作用を行うデータソースのためのデータベーススキーマと、前記コードセグメントの再利用の際に補助を与えるヘルプテキストとを含み、前記ヘルプテキストは前記コードセグメントが再利用のために選択された時に人が読むことが可能なヒントとして表示されるように構成されていて、
前記コードセグメント及び関連づけられた情報を前記コードセグメント及び関連づけられた情報を含むＸＭＬファイルに変換するステップと、前記ＸＭＬファイルはＸＭＬタグによりタグ付けされていて、
前記ＸＭＬファイルを再利用可能コードセグメントのライブラリ内に格納するステップと、前記再利用可能コードセグメントのライブラリはソースプログラム内に含有するために再利用可能なコードセグメントのソースとして使用可能であり、
前記グラフィカルプログラムエディタのインスタンスにおいて、前記再利用可能コードセグメントのライブラリへのアクセスを提供するステップと、
前記グラフィカルプログラムエディタにおいて、前記再利用可能コードセグメントのライブラリ中に格納されたコードセグメントの選択を受け取るステップと、
関連づけられた情報を識別するために前記選択されたコードセグメントと関連づけられた前記ＸＭＬファイルを解析するステップと、
前記グラフィカルユーザインターフェースにおいて、前記ライブラリ中の前記関連付けられた情報からプログラム中で操作するために前記選択されたコードセグメントを修正するためのヘルプテキストを含む前記ヒントを表示するステップと、
前記グラフィカルユーザインターフェースにおいて、前記コードセグメントを挿入するためにソースプログラム中の位置を選択するユーザ入力を受け取るステップと、
前記ライブラリ中の前記選択されたコードセグメントに関連づけられた情報と前記ソースプログラムを比較して、前記ソースプログラムの外部の前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うかどうかを判定するステップと、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うと判定された場合、カーソルで指示された位置で前記ソースプログラム中に前記選択されたコードセグメントを挿入するステップと、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従わないと判定された場合、前記選択されたコードセグメントを挿入することを禁止するステップと、
を有することを特徴とする再利用可能なコードセグメントを作成して再利用する方法。
【請求項２】
前記コードセグメントを変換するステップは、前記ＸＭＬファイル中に前記コードセグメント及び前記関連づけられた情報を含有することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記関連づけられた情報は、作者を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記関連づけられた情報は、前記コードセグメントが書かれたプログラミング言語を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記関連づけられた情報は、前記選択されたコードのエレメントに関連づけられたヒントを含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記関連づけられた情報は、前記選択されたコードのエレメントに関連づけられたコメントを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記関連づけられた情報は、前記コードセグメントが実行されるのに必要とされる少なくとも１つの参照を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記関連づけられた情報は、前記コードセグメントが実行されることが期待される実行環境のバージョンを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記ＸＭＬファイルを解析して、ソースプログラム中で再利用するために選択された、前記コードセグメントライブラリに格納された前記コードセグメントに関連づけられた情報を判定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記コードセグメントを符号化したプログラミング言語が、前記ソースプログラムの符号化言語と一致するという判定に応答して、前記コードセグメントを前記ソースプログラムに挿入するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ソースプログラムに挿入される前記コードセグメントは、参照を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記参照は、オブジェクトの宣言を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記参照は要素を含み、該要素は、前記コードセグメントに関連づけられた前記要素の外部記述によって決定されることを特徴とする請求項１１に記載の方法。
【請求項１４】
前記参照は、定数の宣言を含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記参照は、制御の宣言を含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記ソースプログラムに挿入された前記コードセグメントは前記コードセグメントの実行に必要とされる要素を含むことを特徴とする請求項１に記載の方法。
【請求項１７】
前記要素は、実行のために前記コードセグメントによって必要とされるライブラリを含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記要素は、前記要素が前記ソースプログラム中に存在しない場合にのみ前記ソースプログラムに挿入されることを特徴とする請求項１６に記載の方法。
【請求項１９】
前記ライブラリ中の前記選択されたコードセグメントに関連づけられた情報と前記ソースプログラムを比較して、前記ソースプログラムの外部の前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うかどうかを判定する前記ステップの後に、
前記要素に関連づけられた情報を前記ＸＭＬファイル中のコードと比較することによって、前記ソースプログラムにおいて修正を必要とし得る前記コードセグメントの要素を決定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項２０】
前記ソースプログラムにおいて修正を必要とし得る少なくとも１つの要素は、前記ソースプログラムに挿入される前記コードセグメントの他の部分と区別されることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記コードセグメント中の前記区別された要素に関連づけられたヒントが表示されることを特徴とする請求項２０に記載の方法。
【請求項２２】
修正を必要とし得る前記少なくとも１つの要素は、前記少なくとも１つの前記要素を囲む枠によって区別されることを特徴とする請求項２０に記載の方法。
【請求項２３】
再利用可能なコードセグメントを作成するコンピュータ実行システムであって、前記システムは、
コンピュータ実行可能命令を実行するためのプロセッサと、
前記プロセッサに通信可能に接続されて前記プロセッサにより実行可能なコンピュータ実行可能命令を含むメモリとを含み、前記コンピュータ実行可能命令は、
グラフィカルプログラムエディタユーザインターフェースにおいて、再利用のために複数のプログラミング言語の中の１つの既存のソースコードのフラグメントの選択を受け取るためのコンピュータ実行可能命令と、前記フラグメントはコードセグメントを含み、
前記グラフィカルプログラムエディタユーザインターフェースにおいて、前記コードセグメントに関連づけられた情報の選択を受け取るコンピュータ実行可能命令と、前記関連づけられた情報は前記コードセグメントが再利用される時に前記コードセグメントを見つけるためのキーワードと、前記コードセグメントが相互作用を行うデータソースのためのデータベーススキーマと、前記コードセグメントの再利用の際に補助を与えるヘルプテキストとを含み、前記ヘルプテキストは前記コードセグメントが再利用のために選択された時に人が読むことが可能なヒントとして表示されるように構成されていて、
前記コードセグメント及び関連づけられた情報をコードセグメントライブラリに格納するためにＸＭＬファイルに変換するコンピュータ実行可能命令と、
前記ソースコード中に包含するために前記コードセグメントライブラリ内に再利用可能コードセグメントを格納するコンピュータ実行可能命令と、
前記グラフィカルプログラムエディタのインスタンスにおいて、前記再利用可能コードセグメントのライブラリへのアクセスを提供するコンピュータ実行可能命令と、
前記グラフィカルプログラムエディタにおいて、前記再利用可能コードセグメントのライブラリ中に格納されたコードセグメントの選択を受け取るコンピュータ実行可能命令と、
関連づけられた情報を識別するために前記選択されたコードセグメントと関連づけられた前記ＸＭＬファイルを解析するコンピュータ実行可能命令と、
前記ライブラリ中の前記関連付けられた情報から前記選択されたコードセグメントを再利用するために前記選択されたコードセグメントを修正するためのヘルプテキストを含む前記ヒントを表示するコンピュータ実行可能命令と、
前記グラフィカルユーザインターフェースにおいて、前記選択されたコードセグメントを挿入するためにソースプログラム中の位置を選択するユーザ入力を受け取るコンピュータ実行可能命令と、
前記ライブラリ中の前記選択されたコードセグメントに関連づけられた情報と前記ソースプログラムを比較して、前記ソースプログラムの外部の前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うかどうかを判定するコンピュータ実行可能命令と、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うと判定された場合、カーソルで指示された位置で前記ソースプログラム中に前記選択されたコードセグメントを挿入するコンピュータ実行可能命令と、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従わないと判定された場合、前記選択されたコードセグメントを挿入することを禁止するコンピュータ実行可能命令と、
を有することを特徴とする再利用可能なコードセグメントを作成するシステム。
【請求項２４】
前記コードセグメントを前記ＸＭＬファイルに変換することは、前記コードセグメントに関連づけられたメタ情報の少なくとも１つのタイプを識別すること、及びメタ情報の前記少なくとも１つのタイプを、前記メタ情報のタイプを指示するインジケータでタグづけされた前記ＸＭＬファイルに格納することを特徴とする請求項２３に記載のコードセグメントを作成するシステム。
【請求項２５】
前記メタ情報のタイプは、コードを含むことを特徴とする請求項２４に記載のコードセグメントを作成するシステム。
【請求項２６】
前記メタ情報のタイプは、参照を含むことを特徴とする請求項２４に記載のコードセグメントを作成するシステム。
【請求項２７】
前記メタ情報のタイプは、インポートするためのライブラリを含み、前記ライブラリは、実行のために前記コードセグメントによって要求されることを特徴とする請求項２４に記載のコードセグメントを作成するシステム。
【請求項２８】
コンピュータ実行可能命令を含むコンピュータ可読記憶媒体において、前記コンピュータ実行可能命令は以下の方法をコンピュータに実行させるものであって、
グラフィカルプログラムエディタユーザインターフェースにおいて、再利用のために複数のプログラミング言語の中の１つの既存のソースコードのフラグメントの選択を受け取るステップと、前記フラグメントはコードセグメントを含み、
前記グラフィカルプログラムエディタユーザインターフェースにおいて、前記コードセグメントに関連づけられた情報の選択を受け取るステップと、前記関連づけられた情報は前記コードセグメントが再利用される時に前記コードセグメントを見つけるためのキーワードと、前記コードセグメントが相互作用を行うデータソースのためのデータベーススキーマと、前記コードセグメントの再利用の際に補助を与えるヘルプテキストとを含み、前記ヘルプテキストは前記コードセグメントが再利用のために選択された時に人が読むことが可能なヒントとして表示されるように構成されていて、
前記コードセグメント及び関連づけられた情報を前記コードセグメント及び関連づけられた情報を含むＸＭＬファイルに変換するステップと、前記ＸＭＬファイルはＸＭＬタグによりタグ付けされていて、
前記ＸＭＬファイルを再利用可能コードセグメントのライブラリ内に格納するステップと、前記再利用可能コードセグメントのライブラリはソースプログラム内に含有するために再利用可能なコードセグメントのソースとして使用可能であり、
前記グラフィカルプログラムエディタのインスタンスにおいて、前記再利用可能コードセグメントのライブラリへのアクセスを提供するステップと、
前記グラフィカルプログラムエディタにおいて、前記再利用可能コードセグメントのライブラリ中に格納されたコードセグメントの選択を受け取るステップと、
関連づけられた情報を識別するために前記選択されたコードセグメントと関連づけられた前記ＸＭＬファイルを解析するステップと、
前記グラフィカルユーザインターフェースにおいて、前記ライブラリ中の前記関連付けられた情報からプログラム中で操作するために前記選択されたコードセグメントを修正するためのヘルプテキストを含む前記ヒントを表示するステップと、
前記グラフィカルユーザインターフェースにおいて、前記コードセグメントを挿入するためにソースプログラム中の位置を選択するユーザ入力を受け取るステップと、
前記ライブラリ中の前記選択されたコードセグメントに関連づけられた情報と前記ソースプログラムを比較して、前記ソースプログラムの外部の前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うかどうかを判定するステップと、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従うと判定された場合、カーソルで指示された位置で前記ソースプログラム中に前記選択されたコードセグメントを挿入するステップと、
前記選択されたコードセグメントが前記ソースプログラムのプログラム構成ルールに従わないと判定された場合、前記選択されたコードセグメントを挿入することを禁止するステップと、
を有することを特徴とするコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コードセグメント作成方法及びそのシステムに関し、より詳細には、プログラミングツールに関し、コードセグメントを作成し、管理し、使用する方法に関する。
【背景技術】
【０００２】
ソフトウェアソリューションの必要性が急速に増すにつれ、プログラマの効率を上げることがますます重要になっている。プログラマの効率を上げる１つの方法は、既に書かれているコードのセグメントを再利用することである。従来、これは手作業で行われていた。すなわち、ユーザは、コードセグメントを見つけ、保存し、それを新しい環境で使うために修正する。こうしたやり方も役には立つが、開発者が必要とする特定のコードセグメントを見つけることが難しい場合もあり、見つけたとしても、意図した使用に合うようにコードセグメントを修正するのは、大変な作業となり得る。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コードセグメントを、より見つけやすく修正しやすくするとともに、ソリューションを作成しやすくする方法があることによって、コードセグメントがより頑強になることが有用であろう。
【０００４】
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、プログラミングツールに関し、コードセグメントを作成し、管理し、使用するコードセグメント作成方法及びそのシステムを提供することにある。
【課題を解決するための手段】
【０００５】
コードセグメント及びコードセグメントに関連づけられる情報の要素（例えば、メタ情報）は、ＸＭＬファイル、あるいは他のタイプのファイル又はデータベースにおいて共に符号化することができる。１つ又は複数の符号化コードセグメントは、符号化コードセグメントのライブラリとして維持される。ライブラリのリポジトリは、ファイルシステムでも、データベースでもよい。符号化コードセグメントは、おそらく探索動作を用いて選択することができ、ソースコードファイルに挿入することができる。符号化されたコードがソースコードに挿入されると、コードセグメントが必要とする、関連づけられた要素が自動的に含められ、修正を必要とするコードセグメントの部分が識別される。コードセグメントは、コードセグメントの共有が容易になるように管理され編成される。新しいコードセグメントを作成することができるツールが提供され、後で使うためにライブラリに追加される。
【発明を実施するための最良の形態】
【０００６】
以下、図面を参照して本発明の実施の態様について説明する。なお、以下に示す実施形態の詳細な説明は、本発明を説明するために例示的に示すものであって、開示した特定の方法及び手段に限定されるものではない。
【０００７】
＜概要＞
コードセグメント及びコードセグメントに関連づけられた情報の要素（例えば、必要とされる参照など、コードセグメントに関連づけられるメタ情報）は、１つのファイル又はファイル群において符号化される。本発明の一実施形態において、コードセグメント及びメタ情報は、ＸＭＬファイルにおいて符号化される。１つ又は複数の符号化コードセグメントは、符号化コードセグメントのライブラリに保存される。ライブラリにあるセグメントを選択し、ソースコードファイルに保存することができる。セグメントがソースコードに挿入されると、コードセグメントが必要とする関連づけられた要素を、自動的に含めることができる。修正を必要とし得るコードセグメントの部分が識別され、修正可能な要素を容易に検索する手段が提供される。コードセグメントを修正するためのヒント（ｔｉｐ）を表示することができる。コードセグメントに関するコメントも、表示することができる。さらに、コードセグメントの正しい挿入の確認を実施することができる。好ましくは、コードセグメントは、このコードセグメントの共有が容易になるように管理されて編成される。
【０００８】
＜例示的な計算機環境＞
図１は、本発明の実施形態を実現するための好適な計算機環境を示すブロック図で、本発明を実現することができる適切な計算機環境の、簡潔で概略的な説明を提供することを意図している。ただし、本発明に関連して使用するために、携帯型、可搬型、及びすべての種類の他の計算装置が企図されることを理解されたい。以下で汎用コンピュータを説明するが、これは一例に過ぎず、本発明は、ネットワークサーバの相互運用性及び相互作用性を備える小型軽量クライアントのみを必要とする。したがって、本発明は、ごくわずか又は最低限のクライアント資源が関与する、ネットワーク接続されたホストサービスという環境、例えば、クライアント装置がブラウザ、すなわち、ワールドワイドウェブへのインターフェースとしてのみ働く、ネットワーク接続された環境において実現することができる。
【０００９】
そうすることが必要なわけではないが、本発明は、開発者が使うためのＡＰＩ（アプリケーションプログラミングインターフェース）によって実現することができ、かつ／又は、ネットワーク閲覧ソフトウェアに含めることができる。１つ又は複数のコンピュータ、例えば、クライアントワークステーション、サーバ、あるいは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な状況において本発明を説明する。概して、プログラムモジュールは、特定のタスクを実施し又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含んでいる。一般に、プログラムモジュールの機能は、様々な実施形態における要望に応じて組み合わせることも分散することもできる。さらに、本発明は他のコンピュータシステム構成を有して実施できることができる。本発明とともに使用するのに適切であり得る他の公知の計算システム、環境、及び／又は構成には、パーソナルコンピュータ（ＰＣ）、自動預払機、サーバコンピュータ、携帯型又はラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどがあるが、それに限定されるものではない。本発明は、通信ネットワーク又は他の伝送媒体を介してリンクされるリモート処理装置によってタスクが実施される分散型計算機環境でも実施することができる。分散型計算機環境では、プログラムモジュールは、メモリ記憶装置など、ローカル及びリモートコンピュータ記憶媒体の両方に置くことができる。
【００１０】
したがって、図１は、本発明を実現することができる好適な計算システム環境１００の一例を示すが、上述したように、計算システム環境１００は、適切な計算機環境の一例に過ぎず、本発明の使用又は機能の範囲に関するどのような限定を示唆することも意図していない。また、計算機環境１００は、例示的な動作環境１００に示される構成要素のどの１つ又はその組合せに関するどのような依存も要件も有していると解釈されるべきではない。
【００１１】
図１を参照すると、本発明を実現するための好適なシステムは、汎用計算装置を、コンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、処理装置１２０と、システムメモリ１３０と、システムメモリなど様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１とを含むことができるが、これに限定されない。システムバス１２１は、様々なバスアーキテクチャのどれをも使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスなどいくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャは、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（米国ビデオ電子装置規格化協会）ローカルバス、及びＰＣＩ（周辺装置相互接続）バス（メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られる）を含んでいる。
【００１２】
コンピュータ１１０は、通常、様々なコンピュータ読取可能な媒体を備えている。コンピュータ読取可能な媒体は、コンピュータ１１０によってアクセス可能であるとともに揮発性媒体及び不揮発性媒体の両方、取外し可能媒体及び固定型媒体を含んでいる、利用可能などの媒体でもよい。例えば、コンピュータ読取可能な媒体は、コンピュータ記憶媒体及び通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の格納のためのどの方法でも技術でも実装される揮発性媒体及び不揮発性媒体の両方、取外し可能媒体及び固定型媒体を含んでいる。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータ１１０によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、変調データ信号、たとえば搬送波や他の移送機構として具体化し、どの情報配信媒体も含んでいる。「変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定され又は変更される信号特性の１つ又は複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体を含んでいる。上述したどの組合せも、やはりコンピュータ読取可能な媒体の範囲に含まれるべきである。
【００１３】
システムメモリ１３０は、コンピュータ記憶媒体を、読出し専用メモリ（ＲＯＭ）１３１及びランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性及び／又は不揮発性メモリの形で含んでいる。基本入出力システム（ＢＩＯＳ）１３３は、例えば、起動中にコンピュータ１１０内部の要素間の情報の転送を助ける基本ルーチンを含み、通常はＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理装置１２０に対してただちにアクセス可能な、かつ／又は処理装置１２０によって現在操作されているデータ及び／又はプログラムモジュールを含んでいる。限定ではなく例として、図１では、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７を示している。
【００１４】
コンピュータ１１０は、他の取外し可能／固定型、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。例えば、図１では、固定型の不揮発性磁気媒体からの読出し又はそこへの書込みをするハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２からの読出し又はそこへの書込みをする磁気ディスクドライブ１５１、及び、ＣＤ  ＲＯＭや他の光学媒体など取外し可能な不揮発性光ディスク１５６からの読出し又はそこへの書込みを行う光ディスクドライブ１５５を示している。例示的な動作環境で用いることができる、他の取外し可能／固定型、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含んでいるが、それに限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定型メモリインターフェースによって、システムバス１２１に接続され、磁気ディスクドライブ１５１及び光ディスクドライブ１５５は、通常、インターフェース１５０などの取外し可能メモリインターフェースによって、システムバス１２１に接続される。
【００１５】
上述し、かつ図１に示したディスクドライブ及びそれに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ１１０のための他のデータの格納を実現する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７を格納するものとして示した。こうした構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、及びプログラムデータ１３７と同じでも、異なってもよい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、及びプログラムデータ１４７は、少なくとも、異なるものであることを示すために、ここでは異なる番号が与えられている。ユーザは、キーボード１６２及び一般にはマウス、トラックボール、又はタッチパッドと呼ばれる指示装置１６１などの入力装置を介して、コマンド及び情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどがあり得る。こうした及び他の入力装置はしばしば、システムバス１２１に結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、他のインターフェース及びバス構造、例えば、並列ポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続することもできる。
【００１６】
モニタ１９１又は他のタイプの表示装置も、映像インターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。グラフィックインターフェース１８２、例えば、ノースブリッジも、システムバス１２１に接続することができる。ノースブリッジは、ＣＰＵ又はホスト処理装置１２０と通信するとともにＡＧＰ（グラフィック専用高速バス）通信の責任を負うチップセットである。１つ又は複数の画像処理装置（ＧＰＵ）１８４は、グラフィックインターフェース１８２と通信することができる。この点に関して、ＧＰＵ１８４は、概して、オンチップのメモリ記憶装置、例えば、レジスタ記憶装置を含み、映像メモリ１８６と通信する。ただし、ＧＰＵ１８４は、コプロセッサの一例に過ぎず、したがって、様々なコプロセッシング（ｃｏｐｒｏｃｅｓｓｉｎｇ）装置をコンピュータ１１０に含めることができる。モニタ１９１又は他のタイプの表示装置も、映像インターフェース１９０などのインターフェースを介してシステムバス１２１に接続され、このインターフェースは、映像メモリ１８６と通信することができる。モニタ１９１に加え、コンピュータは、出力周辺インターフェース１９５を介して接続することができるスピーカ１９７及びプリンタ１９６など、他の周辺出力装置も含むことができる。
【００１７】
コンピュータ１１０は、リモートコンピュータ１８０など、１つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（ｐｅｅｒ  ｄｅｖｉｃｅ）、又は他の共通ネットワークノードでよく、通常、コンピュータ１１０に関連して上述した要素の多く又はすべてを含んでいるが、図１にはメモリ記憶装置１８１のみを示した。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１及びワイドエリアネットワーク（ＷＡＮ）１７３を含んでいるが、他のネットワークを含むこともできる。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネット及びインターネットにおいてよく見られる。
【００１８】
ＬＡＮネットワーク環境において使われる場合、コンピュータ１１０は、ネットワークインターフェース又はアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ１１０は通常、モデム１７２、又は、例えば、インターネットなどのＷＡＮ１７３を介した通信を確立する他の手段を含んでいる。モデム１７２は、内部にあっても外部にあってもよく、ユーザ入力インターフェース１６０又は他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク接続された環境では、コンピュータ１１０に関連して図示したプログラムモジュール又はその一部は、リモートメモリ記憶装置に格納することができる。例えば、図１では、リモートアプリケーションプログラム１８５を、メモリ装置１８１に常駐するものとして示した。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができることが理解されよう。
【００１９】
コンピュータ１１０又は他のクライアント装置を、コンピュータネットワークの一部として利用できる。この点に関して、本発明は、任意の数のメモリ又は記憶装置、及び任意の数の記憶装置又はボリュームに渡って出現する任意の数のアプリケーション及び処理を有するどのコンピュータシステムにも関係する。本発明は、リモート又はローカル記憶装置を有する、ネットワーク環境において利用されるサーバコンピュータ及びクライアントコンピュータを備える環境に適用することができる。本発明は、プログラミング言語の機能、翻訳性能及び実行性能を有する独立型計算装置に適用することも可能である。
【００２０】
＜コードセグメントを作成し、管理し、使用するシステム及びその方法＞
図２は、本発明の一実施形態による、コードセグメントを作成し、管理し、使用するシステムを示すブロック図である。コンピュータ２０２は、本発明が存在することのできるユーザ向けコンピュータや開発用コンピュータなどであるが、それに限定されないコンピュータを表す。本発明は、統合設計環境の構成要素としても、独立型システムとしても実装することができる。ツールは、コードセグメントマネージャ２１６、及び以下の１つ又は複数を含むことができる。すなわち、コードセグメントライブラリ２２２、ここではデバッガ２１４で表される１つ又は複数の言語デバッガ、１つ又は複数の言語サービス（図示せず）、ソースコード２１２を下書きし編集するエディタ２０６で表される１つ又は複数のエディタ、及びコンパイラ２０８で表される１つ又は複数のコンパイラである。設計環境ＩＤＥ２０４は、図２に示さない他の構成要素を含むこともできる。
【００２１】
ソースコードファイル２１２は、一般に、プログラマ又は開発者がタイプ入力し編集する１組の命令であり、所与の１つのプログラミング言語、又は複数のプログラミング言語の組合せで書かれる。ソースコード２１２は、一般に、１つ又は複数のステートメントを含んでおり、各ステートメントは、一般に、１つ又は複数の式及び／又はエンティティを含んでいる。ステートメント中の式及び／又はエンティティは、複数の構成要素から構成することができる。ソースコード２１２は、エディタ２０６によって作成することも修正することもでき、安定した記憶媒体上に維持することができる。
【００２２】
アプリケーションは、設計環境（例えば、例示的な統合設計環境（ＩＤＥ）２０４）を用いて、ソースコード２１２から作成することができる。設計環境は、ここではコンパイラ２０８で表される１つ又は複数のコンパイラ、１つ又は複数の言語サービス（図示せず）、１つ又は複数の設計ツール（デバッガ２１４で表される）、ここではエディタ２０６で表される１つ又は複数のエディタ、ブラウザ（図示せず）などを含むことができる。ＩＤＥ２０４は、例えば、マイクロソフトのＶＩＳＵＡＬ  ＳＴＵＤＩＯ  ．ＮＥＴ、ＭＡＣＲＯＭＥＤＩＡのＤＲＥＡＭＷＥＡＶＥＲ、ＢＯＲＬＡＮＤ  Ｃ＋＋  ＢＵＩＬＤＥＲ  ＳＴＵＤＩＯ  ６、又は他のどのソフトウェア開発／設計ツール、コンパイラもしくは環境も表すことができる。
【００２３】
ＩＤＥ２０４などの設計環境は、ソースコード２１２から、独立型の実行環境（図示せず）で実行することができる実行可能なコード２１０を生成することもでき、翻訳され又は再度コンパイルされるとともに実行環境によって実行される中間の形のコードを生成することもできる。このような実行環境は、設計環境ＩＤＥ２０４によってソースコード２１２から作成されたコンパイルを実行するために必要とされる要素を含むことができる。実行環境は、装置に特有でない中間言語コードからネイティブコードを作成する要素を含むことができる。開発環境及び実行環境はさらに、様々なクラスライブラリ（図示せず）を含むことができる。適切な実行環境は、例えば、マイクロソフトのＣＯＭＭＯＮ  ＬＡＮＧＵＡＧＥ  ＲＵＮＴＩＭＥ．ＮＥＴ、ＪＡＶＡ（登録商標）、又は適切な他のどの実行環境も表すことができる。実行可能なアプリケーションは、共有されるクラスライブラリ及び実行環境とともに、１つ又は複数のコンピュータ（図示せず）にロードし、実行することができる。
【００２４】
エディタ２０６は、コンピュータプログラムのソースコード２１２の開発を容易にする。エディタ２０６は、ＢＡＳＩＣ、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、Ｃ＃、ＪＡＶＡ（登録商標）、Ｊ＃、ＶＩＳＵＡＬ  ＢＡＳＩＣ、ＲＥＡＬ  ＢＡＳＩＣ、ＤＥＬＰＨＩ、ＡＳＰ、ＰＡＳＣＡＬ、ＨＴＭＬ、ＸＭＬ、ＡＤＡ、ＰＥＲＬ、ＤＹＬＡＮ、ＰＹＴＨＯＮ、ＳＭＡＬＬＴＡＬＫ、ＴＣＬ?ＴＫ、ＥＩＦＦＥＬエディタなどでよい。
【００２５】
コンパイラ２０８は、ＢＡＳＩＣ、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、Ｃ＃、ＪＡＶＡ（登録商標）、Ｊ＃、ＶＩＳＵＡＬ  ＢＡＳＩＣ、ＲＥＡＬ  ＢＡＳＩＣ、ＤＥＬＰＨＩ、ＡＳＰ、ＰＡＳＣＡＬ、ＨＴＭＬ、ＸＭＬ、ＡＤＡ、ＰＥＲＬ、ＤＹＬＡＮ、ＰＹＴＨＯＮ、ＳＭＡＬＬＴＡＬＫ、ＴＣＬ?ＴＫ、ＥＩＦＦＥＬコンパイラ、インタープリタ、又は適切な他のどのコンパイラもしくはインタープリタも表すことができる。
【００２６】
本発明の実施形態において、コードセグメントが、コードセグメントマネージャ２１６によって受け取られ、ファイル、例えば、ＸＭＬファイルに変換され、コードセグメントライブラリ２２２中に保存される。コードセグメントライブラリ２２２中のコードセグメントは、後述するように、ソースコードに挿入するために使用可能になり得る。
【００２７】
図３は、本発明の実施形態による、コードセグメントを作成し、管理し、再利用する処理を示すフロー図である。ステップ３０２で、保存し再利用するコードセグメントを生成するために、ソースプログラム中のコードのセクションを、（例えば、コードのセクションを強調表示し、右クリックすることによっても、適切な他のどの手段によっても）選択することができる。本発明の実施形態において、コードセグメントライブラリ２２２に含めるためのコードのブロックを選択すると、プログラムエディタユーザインターフェースの新しいセッションが表示される。この時点で、本発明の実施形態では、コードセグメントの作成者は、コードセグメントを編集し、コードセグメントの１つ又は複数の選択された要素又は部分のデフォルト値を設定し、選択したものを修正可能なオブジェクト、変数又は定数などとして定義し、コードセグメントのその部分が再利用のために選択されるとその部分を修正するためのヘルプテキストを提供することができる。期待される修正のタイプを指定することもできる。（非限定的な例として、オブジェクト、変数又は定数は、整数、文字列又はクラスのタイプでよい。）タイプのテンプレートは、修正可能な要素に関連づけることができる。例えば、コードセグメントは、データソースと相互作用する場合、データベーススキーマ、及びスキーマが参照する、強くタイプづけされたオブジェクトに関連づけることができる。さらに、コードセグメントのタイトル、及び探索を行ってコードセグメントを見つけるためのキーワードは、コードセグメントが再利用のために選択されると、そのセグメントを修正するためのヒントを提供することができ、かつ／又は、コードセグメント中の選択された要素のためにコメントを特定することができる。ソースプログラムにおける元の使用から推論することができる、セグメントについてのメタ情報が提示される。こうしたメタ情報、及びユーザによって要求されるどの追加のメタ情報も、コードセグメントに関連づけることができる。
【００２８】
本発明の実施形態におけるコードセグメントは、ステップ３０４で、ＸＭＬファイルに変換される。
【００２９】
図４ａ及び図４ｂは、本発明による例示的な符号化コードセグメントを示す図で、コードセグメントから作成することができる例示的なＸＭＬファイル４００を示している。本発明の一実施形態におけるライブラリ２２２は、再利用のためのオブジェクトの集合体であり、１つ又は複数の符号化コードセグメント、例えば、例示的な符号化コードセグメント４００を含んでいる。符号化コードセグメント４００は、以下の１つ又は複数を含むことができる。すなわち、開始タグ４０２ａ及び終了タグ４０２ｂ（「＜ｔｉｔｌｅ＞」）で示される、コードセグメントのタイトル４０４、開始タグ「＜ｕｎｉｑｕｅｉｄ＞」４０８ａ及び終了タグ「＜／ｕｎｉｑｕｅｉｄ＞」４０８ｂで示される一義的な識別子４０６など、他にも、コードセグメントのバージョン、コードセグメントのロケール、コードセグメントの作者、コードセグメントが何を行うかという記述、コードセグメントに対するヘルプトピックへのＵＲＬ（汎用資源識別子）、コードセグメントが属す１つ又は複数のカテゴリ（例えば）、コードセグメントを見つけるのに使うことができるキーワード、コードセグメントの実行が意図される実行環境のバージョン、コードセグメントの実行に必要とされるライブラリ及びアセンブリなどの参照、コードセグメントにおける制御、オブジェクト、定数などの宣言、コードセグメントを符号化するためのプログラミング言語、コードセグメント４１０中の実際のコード、及び要望に応じた他の情報などの項目である。ＸＭＬファイルでは、コードセグメントのこうした部分は、適切な開始タグ及び終了タグによって区切ることができ、上述した区切り記号として選択された特定のタグは例示に過ぎない。適切などのタグも指示子も、維持される情報を識別するのに用いることができる。本発明の実施形態では、ファイルはＸＭＬファイルであり、メタ情報はＸＭＬファイルにおいて符号化されるが、他の実施形態では、メタ情報は、ＸＭＬファイルではない１つ又は複数のファイルにおいてもデータベースにおいても符号化することができる。
【００３０】
ステップ３０６で、開発者も他のユーザも、符号化コードセグメント、例えば、ライブラリ２２２の符号化コードセグメント４００に、そのコードを再利用するためにアクセスすることができる。本発明の実施形態において、コードセグメントライブラリ２２２の符号化コードセグメントには、新しい環境での再利用のために、開発環境の内部からアクセスすることができる。
【００３１】
図５は、本発明の実施形態による、ソースプログラムに挿入するコードセグメントを選択する、ユーザインターフェースの例示的なスクリーンショットを示す図である。本発明の実施形態の例示的なスクリーンショット５００を示し、ここにプログラムエディタユーザインターフェースが表示されており、コンテキストメニュー５０４が、可能な一選択肢として「Ｉｎｓｅｒｔ  Ｓｎｉｐｐｅｔ」５０４ａ（図５では「ＩＮＳＥＲＴ」に省略してある）を表示している。「Ｉｎｓｅｒｔ  Ｓｎｉｐｐｅｔ」５０４ａを選択すると、その動作の一覧が表示される。「ＩＭＰＬＥＭＥＮＴ  ＣＯＤＥ」５０４ｂが、「Ｉｎｓｅｒｔ  Ｓｎｉｐｐｅｔ」５０４ａの動作一覧の１つの起こり得る符号化コードセグメントであり、さらに、「Ｒｅａｄ  Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ａｒｇｕｍｅｎｔｓ」（「ＲＥＡＤ  ＣＯＭ  ＬＩＮＥ  ＡＲＧＳ」５０４ｃに省略してある）が、「ＩＭＰＬＥＭＥＮＴ  ＣＯＤＥ」５０４ｂの動作一覧の一部である。符号化コードセグメント５０４ｃを選択すると、選択された符号化コードセグメントのコード部分が、プログラムソースコード２１２に挿入される。挿入用に示された特定の位置に正しく挿入されない可能性のあるコードセグメントは、灰色表示することもでき、あるいは選択を禁止することもできる。
【００３２】
本発明の実施形態では、開発者も他のユーザも、コードを再利用するために、コードセグメントライブラリのメンバー、例えば、ライブラリ２２２の符号化コードセグメント４００にアクセスすることができる。こうしたアクセスは、ドライブ又はディレクトリの内容の表示を行うとともにドライブ又はディレクトリの内容表示（すなわち、ライブラリ）から符号化コードセグメントを選択しドラッグすることによって行われる。
【００３３】
図６は、本発明の実施形態による、ソースプログラムに挿入するコードセグメントを選択する、他のユーザインターフェースの例示的なスクリーンショットを示す図である。コードセグメントのこのような選択を例示的なスクリーンショット６００に示してあり、ここで、符号化コードセグメント６０２はそのように選択されている。他の実施形態では、コードセグメントは、エディタにおいて使うためのテキストを選択する、一般に公知であるどの手段によっても選択することができる。選択されたコードセグメントが挿入される位置を表すカーソル６０４も、垂直バー６０６によって指定される。一実施形態のみにおける垂直バー６０６は、コードセグメントの挿入のために選択された位置が挿入用に許容可能な位置である場合に表示される。
【００３４】
図７は、本発明によるソースプログラムにコードセグメントを挿入する処理を示すフロー図である。ステップ７０２で、ソースコードに挿入するために、コードセグメントが選択される。図５及び図６は、挿入用のコードセグメントを選択する２つの方法を示すが、上述したように、コードセグメントを選択する他の方法も企図される。
【００３５】
ステップ７０４で、符号化コードセグメントが、利用可能なメタ情報を判定するために解析される。コードセグメントがＸＭＬファイルとして符号化される一実施形態では、そのＸＭＬコードが、上述したように、ＸＭＬタグによって区切られるメタ情報要素を判定するために解析される。
【００３６】
ステップ７０６で、コードセグメントのメタ情報中のプログラミング言語が、ソースコードのプログラミング言語と比較される。２つのプログラミング言語が適合しない場合、コードセグメントの挿入は許可することができない。（例えば、挿入用に選択されたコードセグメントがＣ＋＋コードセグメントである場合、コードセグメントが挿入されるソースコードはＣ＋＋コードでなければならない。）本発明を実現することができるために企図されるプログラミング言語は、ＢＡＳＩＣ、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、Ｃ、Ｃ＋＋、Ｃ＃、ＪＡＶＡ（登録商標）、Ｊ＃、ＶＩＳＵＡＬ  ＢＡＳＩＣ、ＲＥＡＬ  ＢＡＳＩＣ、ＤＥＬＰＨＩ、ＡＳＰ、ＰＡＳＣＡＬ、ＨＴＭＬ、ＸＭＬ、ＡＤＡ、ＰＥＲＬ、ＤＹＬＡＮ、ＰＹＴＨＯＮ、ＳＭＡＬＬＴＡＬＫ、ＴＣＬ−ＴＫ、ＥＩＦＦＥＬ及び他のどのプログラミング言語も含んでいる。
【００３７】
ステップ７０８で、ソースコードへのコードセグメントの挿入の実現可能性が判定される。例えば、マイクロソフトのＶＩＳＵＡＬ  ＢＡＳＩＣ言語では、プロパティをメソッドの中に置くことができず、したがって、ステップ７０８で、本発明の実施形態では、メソッドへのプロパティのコードセグメントの挿入は許可されないことになる。同様に、コードの行がメソッド中にカプセル化されない場合、本発明の実施形態では、そのコードの行は、名前空間にもモジュールにも挿入することができない。というのは、コードの行は、サブルーチン、プロパティ、又は関数などの手順に含まれるべきだからである。本発明の実施形態において、関数を含むコードセグメントは、別の関数に挿入することができない。本発明の実施形態では、クラス、構造体、又はインターフェースの定義は、メソッドに挿入することができない。上述した及び他の挿入規則は、例えば、上述した、Ｃ＃及び他の多くの言語を含む多くのプログラミング言語に適用することができる。
【００３８】
ステップ７１０で、コードセグメントは、指示された位置でソースコードにコピーされる（例えば、位置は、コードセグメントが選択されるときのカーソルの場所によって決定することができる。）。
【００３９】
図８は、本発明による、ソースプログラムにコードセグメントを挿入するときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図である。本発明の実施形態の例示的なスクリーンショットを示し、ここで、境界線８０６によって区切られるコードセグメント８０２が、ソースコード８０４に挿入されている。コメント８１４及び８１６で示される１つ又は複数のコメントを表示することができる。コメントは、コードセグメントを、その新しい環境用に修正するのに有用な情報を提供することもでき（例えば、コメント８１４）、ヘルプトピック又は適切な他の情報へのリンクを含むこともでき（例えば、コメント８１６）、上述したように、コードセグメントが生成されたときにコードセグメント作成者によって入力されたコメント情報を表すことができる。
【００４０】
ステップ７１２で、コードセグメント中の定数、制御及びオブジェクトなどだがそれに限らないフィールドなどだがそれに限らない、修正を必要とし得る各要素が、（例えば、適切なタグで区切られたＸＭＬファイル中のメタ情報と、コードセグメントのコード部分で見つかった、識別された制御、定数、オブジェクトとを比較することによって）識別される。識別された定数、制御及びオブジェクトなどは、強調表示され、あるいは、図８において制御８１０及び８１２で示すように、ソースコード中で区別される。
【００４１】
ステップ７１４で、コードセグメントが実行されるのに必要なライブラリ、構成要素及び他のプログラミング要素を表すインポート及び参照が、符号化コードセグメントファイル中で検査され、ソースコードに含まれていないそうしたインポート及び参照が、ソースコードに挿入される（例えば、図１２のインポートステートメント１２０２が挿入されており、参照一覧が、「Ｓｙｓｔｅｍ．Ｗｅｂ」１２０４を含むように更新されている）。なお、図１３ａ〜図１３ｃは、図１２に示す本発明による例示的な符号化コードセグメントを示す図である。
【００４２】
ステップ７１６で、カラット（ｃａｒａｔ）又はカーソルで表され、強調表示を行うフォーカスが、修正を必要とし得る第１の要素（例えば、ＴｅｘｔＢｏｘ１  ８１０）へ移される。ステップ７１８で、マーカが活動化される。一実施形態では、活動化は、枠８２０で示すように、フォーカスを有している要素の周囲に枠を表示することによって示される。
【００４３】
本発明の実施形態において、１つの定数、変数又は制御を変更する動作は、同じコードセグメント中のその定数、変数又は制御の他のすべてのインスタンスの自動更新を生じる。例えば、図８に示すように、「ＴｅｘｔＢｏｘ１」８１０が「ＴｅｘｔＢｏｘ２」に変更されると仮定する。本発明の実施形態において、「ＴｅｘｔＢｏｘ１」８１０を「ＴｅｘｔＢｏｘ２」に変更すると、「ＴｅｘｔＢｏｘ１」８１２は、同様に「ＴｅｘｔＢｏｘ２」に自動的に変更される。
【００４４】
本発明の実施形態において、指定されたユーザ動作又はイベント（例えば、ＣＯＮＴＲＯＬ＋ＳＰＡＣＥの入力などだが、それに限らない）を受け取ると、変数に対して有効な置換えの一覧が表示される。本発明の実施形態では、リストボックス１００４に含まれる項目は、デフォルト要素、及びソースコード中に現れる類似のどの要素も含む。例えば、ここで図１０を参照すると、「ＴｅｘｔＢｏｘ２」１００２を選択するときにＣＯＮＴＲＯＬ−ＳＰＡＣＥが入力されると、リストボックス１００４は、要素ＴｅｘｔＢｏｘ１  １０１４（デフォルト）、及びフォーム上に存在するどのＴｅｘｔＢｏｘ変数（例えば、この変数がソースコードからの要素であることを示すアイコン又はインジケータ１０１２を伴うＴｅｘｔＢｏｘ１  １００８、及びＴｅｘｔＢｏｘ２  １０１０）も含んでいる。一覧中の項目の１つは、選択された要素の別のインスタンスを宣言するための選択肢を提供することができる。例えば、図１０において、ＮｅｗＴｅｘｔＢｏｘ１００６がこのような要素である。ＮｅｗＴｅｘｔＢｏｘ１００６の選択は、図１１の行１１０２に示すように、ＴｅｘｔＢｏｘ変数の新規インスタンスの宣言を生じることができる。図示した例では、「ＴｅｘｔＢｏｘ１」１０１４が、コードセグメント作成者によって指定された、この要素に対するデフォルト値である。本発明の実施形態では、一義的な名前を作成するために、数字がデフォルト値に自動的に付加される。別の新しい要素が宣言される場合、新規インスタンスの名前は、再度増分することができる（例えば、一義的なｉｄ「ＴｅｘｔＢｏｘ１２」を生成するなど）。
【００４５】
本発明の実施形態において、コードセグメント８０２の境界線８０６が保持される。タブキーを押すと、起こり得る修正のために、マークづけされた次のフィールドが活動化される。マークづけされた最後のフィールドに達した後で、タブを再度押すと、本発明の実施形態では、コードセグメントの第１のフィールドが活動化される。本発明の実施形態において、取消し選択肢は、ユーザが、コードセグメントをその元の状態（すなわち、コードセグメントが再利用のために選択された後、ソースコードに最初に挿入された状態）に戻すことを可能にする。
【００４６】
図９は、本発明による、ソースプログラムにコードセグメントを挿入するときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図である。本発明の実施形態に従って表示することができるヒント（ｔｉｐ）を示す。ヒント９０２は、ヒントに関連づけられた要素９０４が選択されると表示することができる。本発明の実施形態では、ヒントに関連づけられたフィールドの上でカーソルを動かすことによって、ヒントが表示される。
【００４７】
本明細書で説明した様々な技術は、ハードウェア又はソフトウェア、あるいはそうすることが適切な場合には、両方の組合せと共に実現することができる。したがって、本発明のコードセグメント作成方法及びその装置、あるいは本発明の特定の実施形態又は部分は、実体のある媒体、例えば、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、又は他のどのマシン読取可能な記憶媒体においても具体化されるプログラムコード（すなわち、命令）の形をとることができ、プログラムコードがコンピュータなどのマシンにロードされるとともにそれによって実行されると、マシンは本発明を実施する装置になる。プログラム可能なコンピュータ上でのプログラムコードの実行の場合、計算装置は、概して、プロセッサ、プロセッサによって読取可能な記憶媒体（揮発性メモリ、不揮発性メモリ及び／又は記憶要素など）、少なくとも１つの入力装置、ならびに少なくとも１つの出力装置を含む。例えば、データ処理ＡＰＩなどの使用を介して、本発明の領域特定プログラミングモデルの態様の作成及び／又は実装を利用することができる１つ又は複数のプログラムは、好ましくは、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと通信する。ただし、プログラム（群）は、そうすることが望まれる場合、アセンブリでも機械言語でも実装することができる。いずれの場合でも、言語は、コンパイル型言語でもインタープリト型言語でもよく、ハードウェアの実装と組み合わせることができる。
【００４８】
以上、本発明を、様々な図面の好適な実施形態に基づいて説明したが、本発明の同じ機能を、本発明から逸脱することなく実施するために、他の類似の実施形態を使用することもでき、説明した実施形態に修正及び追加を行うこともできる。したがって、本発明は、どの１つの実施形態にも限定されるべきではなく、特許請求の範囲による外延及び範囲内で解釈されるべきである。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施形態を実現するための好適な計算機環境を示すブロック図である。
【図２】本発明の実施形態による、コードセグメントを作成し、管理し、再利用するシステムを示す例示的なブロック図である。
【図３】本発明の実施形態による、コードセグメントを作成し、管理し、再利用する処理を示すフロー図である。
【図４ａ】本発明による例示的な符号化コードセグメントを示す図（その１）である。
【図４ｂ】本発明による例示的な符号化コードセグメントを示す図（その２）である。
【図５】本発明の実施形態による、ソースプログラムに挿入するコードセグメントを選択する、ユーザインターフェースの例示的なスクリーンショットを示す図である。
【図６】本発明の実施形態による、ソースプログラムに挿入するコードセグメントを選択する、別のユーザインターフェースの例示的なスクリーンショットを示す図である。
【図７】本発明によるソースプログラムにコードセグメントを挿入する処理を示すフロー図である。
【図８】本発明による、ソースプログラムにコードセグメントを挿入するときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図（その１）である。
【図９】本発明による、ソースプログラムにコードセグメントを挿入するときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図（その２）である。
【図１０】本発明による、修正用の要素を選択するときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図である。
【図１１】要素の新規インスタンスが挿入のために選択されるときに表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図である。
【図１２】本発明によって表示することができる、ユーザインターフェースの例示的なスクリーンショットを示す図である。
【図１３ａ】図１２に示す本発明による例示的な符号化コードセグメントを示す図（その１）である。
【図１３ｂ】図１２に示す本発明による例示的な符号化コードセグメントを示す図（その２）である。
【図１３ｃ】図１２に示す本発明による例示的な符号化コードセグメントを示す図（その３）である。
【符号の説明】
【００５０】
１００  計算機環境
１２０  処理装置
１３０  システムメモリ
１２１  システムバス
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定型不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８２  グラフィックインターフェース
１８５  リモートアプリケーションプログラム
１８６  映像メモリ
１９０  映像インターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２０２  コンピュータ
２０６  エディタ
２０８  コンパイラ
２１０  実行可能コード
２１４  デバッガ
２１６  コードセグメントマネージャ
２１２  ソースファイル
２２２  コードセグメントライブラリ
【図１】
0004619698.tif 000002
【図２】
0004619698.tif 000003
【図３】
0004619698.tif 000004
【図４ａ】
0004619698.tif 000005
【図４ｂ】
0004619698.tif 000006
【図５】
0004619698.tif 000007
【図６】
0004619698.tif 000008
【図７】
0004619698.tif 000009
【図８】
0004619698.tif 000010
【図９】
0004619698.tif 000011
【図１０】
0004619698.tif 000012
【図１１】
0004619698.tif 000013
【図１２】
0004619698.tif 000014
【図１３ａ】
0004619698.tif 000015
【図１３ｂ】
0004619698.tif 000016
【図１３ｃ】
0004619698.tif 000017