(57)【要約】【課題】  ソフトウエア・コンフィギュレーション・マネージメント（ＳＣＭ）のファイルに影響を与えるイベント（たとえば、リファクタリング）に関する情報を記憶するように動作できるシステム、方法、及びコンピュータプログラム製品を提供すること。【解決手段】  一例では、ＳＣＭは、リファクタリング操作等、ファイルを修正する操作を個別のイベントとしてそれぞれ記録するように構成される。イベントが、他のファイル及びバージョンに対して影響を与える効果を有する場合、イベントは、操作によって影響を受けるファイル及びファイルバージョンにリンクされ、多くの関係したファイル内で変更を引き起こしたものの知識が保存されるようにする。この例では、ＳＣＭは、１つ又は２つ以上のソースファイルの変換の原因についてのメタ情報を記録する。このメタ情報は、たとえばファイル改訂版をマージする時に適用することができる。【選択図】        図１
2009059351.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータコードに対して行われる操作を記録する方法（４００）であって、
第１のファイル内のコードに対して第１の操作を行うこと（４０１）であって、それによって、前記第１のファイル内の前記コードを修正し、該第１のファイル内の前記コードを修正することは、第２のファイルに記憶されているコードとの不一致を引き起こす、第１の操作を行うこと（４０１）、
前記第１のファイル内の前記修正されたコードと一致するように前記第２のファイル内の前記コードを修正すること（４０２）、及び
前記第１のファイル内の前記コード及び前記第２のファイル内の前記コードが修正されたことの表示を含む記録（２００）を作成すること（４０３）、
を含む、方法。
【請求項２】
前記第１のファイル内の前記コード及び前記第２のファイル内の前記コードの前記修正を第２の操作と比較すること（４０４）、
前記第１のファイル内の前記コード及び前記第２のファイル内の前記コードの前記修正が前記第２の操作に影響を与えることを、前記記録を使用して見分けること（４０４）、及び
前記見分けることに応答して前記第１の操作を行うこと（４０５）であって、前記第１のファイルと前記第２のファイルとの間の一致を生み出す、前記第１の操作を行うこと（４０５）、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の操作は、前記第１のファイル内の第１のクラスのメソッドの名称と、前記第２のファイル内の前記メソッドの参照子とを変更するリファクタリング操作であり、前記第２の操作は、前記第２のファイルのバージョンを変更するマージ操作である、請求項２に記載の方法。
【請求項４】
前記作成された記録は、前記第１の操作による影響を受けるファイルのバージョンに関する情報を含む、請求項１に記載の方法。
【請求項５】
前記作成された記録は、前記第１の操作の性質を示す情報を含む、請求項１に記載の方法。
【請求項６】
コンピュータプログラムロジックが記録されたコンピュータ可読媒体（５０３、５０４、５０６）を有するコンピュータプログラム製品であって、
（ａ）コンピュータ（５００）によって実行されると、複数のファイルに対して第１の修正操作を行うコード（４０１）と、
（ｂ）前記コンピュータによって実行されると、前記第１の修正操作の記録（２００）を作成するコード（４０３）と、
（ｃ）前記コンピュータによって実行されると、第２の修正操作が前記ファイルの１つ又は２つ以上に対して行われる時に、前記作成された記録を調べるコード（４０４）と、
を含む、コンピュータプログラム製品。
【請求項７】
前記コンピュータによって実行されると、前記第１の修正操作による影響を受ける前記ファイルのバージョンの表示を前記記録に記憶するコードをさらに含む、請求項６に記載のコンピュータプログラム製品。
【請求項８】
前記第１の修正操作は、クラスと該クラスの参照子とを変更するリファクタリング操作である、請求項６に記載のコンピュータプログラム製品。
【請求項９】
前記コンピュータによって実行されると、記録を調べることに基づいて、前記リファクタリングをもう一度行うための選択肢（３００）を提示するコードをさらに含む、請求項８に記載のコンピュータプログラム製品。
【請求項１０】
複数のファイル内のコードの作成及び編集を行う開発モジュール（１０１）であって、前記コードの一部を変更し、前記複数のファイル全体にわたって前記コードの一部の参照子を前記変更と一致したものにする操作を行う、開発モジュール（１０１）と、
前記開発モジュールと通信し、前記複数のファイルを記憶する管理モジュール（１０２）であって、前記操作の記録（２００）を作成して記憶する、管理モジュール（１０２）と、
を備える、システム（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コード開発システムに関し、より詳細には、ファイルに対する操作に関する情報の記憶に関する。
【背景技術】
【０００２】
オブジェクト指向プログラミング（ＯＯＰ）は、コンピューティング産業で広く採用されている技術となっている。プログラムの機能は、クラスに分解される。クラスは、プログラムの振る舞いの一部をカプセル化したものである。これらのクラスのインスタンス（多くの場合、オブジェクトと呼ばれる）は、互いのメソッドを呼び出して動作を起動することによって通信する。これらのオブジェクトに対する外部インターフェース及び内部インターフェースを設計することは、プログラム設計者にとって重要な設計作業である。
【０００３】
プログラムソースコードは、通常、ソフトウェア構成管理（Software Configuration Management）（ＳＣＭ）システムに記録される。ソースコードは、ファイルに記憶される。ここで、１つのファイルは、１つ又は２つ以上のクラス定義を含む。個々のファイルの改訂版は、通常、全てそろったテキストとして記憶されるか、又は、前のバージョンに対する差分（すなわち、デルタ）として記憶される。
【０００４】
時に、コードをより読みやすく又はより保守しやすくするために、クラスの外部インターフェースを変更することが望ましい場合がある。しかしながら、クラスの外部インターフェースを変更することは、ソフトウェアシステム全体にわたって影響を与える効果（ripple-on effect）を有する可能性がある。たとえば、クラスＡにおいて、メソッドfoo()の名称がbar()に変更された場合、システム全体にわたるすべてのクラスにおいて、A::foo()の参照子が、A::bar()に変更されるべきである。
【０００５】
コンピュータコードを（通例、プログラムの外部から見た振る舞いを変えることなく）修正するために一般に使用される用語は、「リファクタリング」である。上述したようなシステム全体にわたって参照子を変更するプロセスは、一種のリファクタリングである。近年、リファクタリングは、さまざまなプログラミング言語の統合開発環境（ＩＤＥ）によってサポートされる操作になっている。このようなＩＤＥの一例は、Eclipse Foundationから入手可能なEclipse Frameworkである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
リファクタリング操作をサポートできるＩＤＥであっても、リファクタリング操作とＳＣＭとの間の相互作用には問題がある（もっと正確に言えば、通信が欠如している）。単一のリファクタリング操作は、複数のクラス及びそれらのクラスを記憶するファイルの変更を生み出す可能性がある。一般的なＳＣＭシステムは、ファイルのバージョンのみを記憶するので、行われたさまざまな変更間の関係（たとえば、複数の変更が同じリファクタリング操作によって生み出されたという事実）及び行われたさまざまな変更の理由は失われる。これは、特に、ファイルの或るバージョンから次のバージョンへの変更を「マージ」する時に問題となる。その理由は、多数の変更がリファクタリングに起因する場合があるが、この知識がＳＣＭシステムに保持されないからである。
【課題を解決するための手段】
【０００７】
本発明のさまざまな実施の形態は、ＳＣＭのファイルに影響を与えるイベント（たとえば、リファクタリング）に関する情報を記憶するように動作できるシステム、方法、及びコンピュータプログラム製品を対象とする。一例では、ＳＣＭは、リファクタリング操作等、ファイルを修正する操作を個別のイベントとしてそれぞれ記録するように構成される。イベントが、他のファイル及びバージョンに対して影響を与える効果を有する場合、イベントは、操作によって影響を受けるファイル及びファイルバージョンにリンクされ、多くの関係したファイル内で変更を引き起こしたものの知識が保存されるようにする。この例では、ＳＣＭは、１つ又は２つ以上のソースファイルの変換の原因についてのメタ情報を記録する。このメタ情報は、たとえばファイル改訂版をマージする時に適用することができる。
【０００８】
たとえば、１つの特定の方法例は、クラス及びそれらのクラスの参照子に対する変更を記録する。この方法例は、複数のファイルに対して操作を行い、それによって、クラス及びそのクラスの参照子を変更することを含む。次に、操作の発生の記録が作成される。いくつかの例では、記録は、操作のタイプ、操作中に行われた変更、及び操作によって影響を受けるファイルバージョンを示す情報を含む。記録の作成に続いて、イベント（たとえば、第２の操作）が発生すると、たとえば、第１の操作及び／又は第２の操作に起因する起こり得る不一致を求めるために、記録が調べられる。さらに、この例では、ファイル及び／又はバージョン間で一致を生み出すために、１つ又は２つ以上のファイルに対して操作を行う選択肢がユーザに提示される。
【０００９】
本発明のさまざまな実施の形態は、開発者が、多数のファイルを使用する複雑なコードを管理するのを容易にする。従来技術のシステムについては、多くの場合、ＳＣＭ機能がテキスト処理及びファイル記憶に限定されるべきである一方、コードのパースはＩＤＥにのみ存在すべきであると信じられていた。本発明のさまざまな実施の形態は、コードパース機能をＳＣＭに含み、このようなＳＣＭを、ファイルに対する変更を記録するように適合させることによって、この慣習を無視する。さまざまな実施の形態は、従来技術のシステムを上回る１つ又は２つ以上の利点を提供することができる。
【００１０】
上記は、以下の本発明の詳細な説明をより良く理解できるように、本発明の機能及び技術的利点をいくぶん広く概説している。本発明の特許請求の範囲の主題を形成する本発明の別の機能及び利点は、以下で説明される。開示される概念及び特定の実施の形態を、本発明の同じ目的を実現するために他の構造を修正又は設計するための基礎として容易に利用できることが、当業者には十分認識されるべきである。また、このような均等な構成が、添付の特許請求の範囲に述べられた本発明の趣旨及び範囲から逸脱しないことも当業者にはっきり理解されるべきである。本発明の、特徴的であると考えられる新規な機能は、さらに別の目的及び利点と共に、その編成及び操作の方法の双方について、以下の説明を添付図と共に検討した時に、以下の説明からより良く理解される。しかしながら、図のそれぞれは、例示及び説明の目的でのみ提供されており、本発明の境界の定義として意図されていないことが、明らかに理解されるべきである。
【００１１】
次に、本発明のより完全な理解のため、添付図面を参照しながら、以下のとおり説明する。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の一実施形態に従って適合されている例示的なシステム１００の説明図である。システム１００は、コード記述／開発モジュール１０１を含む。いくつかの実施形態では、モジュール１０１は、プログラマの入力を受け取ってプログラマに情報を表示するユーザインターフェースを有するＩＤＥである。プログラマは、リファクタリング操作及び他の操作を行うことを含む、コンピュータ実行可能コードの記述及び編集を行うのに、モジュール１０１を使用することができる。
【００１３】
モジュール１０１は、ＳＣＭシステム１０２と通信する。ＳＣＭシステム１０２は、ファイルのバージョンを記憶する。一般的な操作では、モジュール１０１を使用してプログラマによって開発され編集されたコードは、ＳＣＭ１０２のデータベース１０４にさまざまなファイルで記憶される。ＳＣＭ１０２は、さらに、イベント記録モジュール１０３も含み、イベント記録モジュール１０３は、ＳＣＭ１０２のファイルに影響を与えるイベントについてのメタ情報を保存するように動作することができる。プログラマは、システム１０１の使用を通じて、特に、マージの期間中、及び、コードの複雑さの管理を要する他のタスクの期間中に、このメタ情報を利用することができる。ＳＣＭ１０２は、リファクタリング操作を含む、さまざまな操作によって変更されたファイル及びファイルバージョンを管理するのに使用することができる。本発明のさまざまな実施形態によって適合可能なリファクタリング操作には、たとえば、
「if」条件文のポリモフィズムへの置換、
フィールドのカプセル化、
メソッド抽出（１つの大きなメソッドから２つ以上のメソッドの作成）、
タイプ生成、
プルアップ及びプッシュダウン、並びに、
メソッドのリネーム、
が含まれる。
【００１４】
図１では、モジュール１０１及び１０２は、説明図の便宜上、別々に示されている。いくつかの実施形態では、モジュール１０１及び１０２は、互いに相互作用する別個のコンピュータプログラムであり、同じプロセッサ上で実行することもできるし、異なるプロセッサ上で実行することもできる。実際には、モジュール１０１及び１０２は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、有線又は無線による他のネットワーク等のネットワークによって接続された異なるコンピュータ上で存在することができる。他の実施形態では、モジュール１０１及び１０２は、ＩＤＥ及びＳＣＭを含む製品スイート等、同じコンピュータプログラムの一部である。
【００１５】
次の例は、システム１００が、クラスの外部インターフェースを一致した状態に保ちながら、リファクタリング操作を行い、次いで、別のファイルをマージするのに使用される可能なシナリオを示すために提供されている。
クラスＡはソースファイルA.javaにおいて定義され、現在の改訂版は３４である。
クラスＢはソースファイルB.javaにおいて定義され、現在の改訂版は１１である。
クラスＣはソースファイルC.javaにおいて定義され、現在の改訂版は１９である。
クラスＤはソースファイルD.javaにおいて定義され、現在の改訂版は４２である。
【００１６】
さらにこの例では、クラスＢ及びＤは、クラスＡの参照子を含む。プログラマ１は、クラスＡのメソッドfoo()の名称をbar()に変更することを決定する。プログラマ１は、モジュール１０１を通じてリファクタリング操作を起動する。モジュール１０１は、このメソッド名の変更がクラスＢ及びＤにも影響があることを依存関係解析（dependency analysis）を通じて見分ける。したがって、モジュール１０１は、モジュール１０２をトリガして、この変更を記録する。モジュール１０２は、リファクタリング操作Ｒの表現（たとえば、「クラスＡにおいて、foo()をbar()に変更し、A::foo()を参照する他のすべてのクラスも修正する」）を記憶する。また、モジュール１０２は、クラスＡの新しい改訂版３５、クラスＢの新しい改訂版１２、及びクラスＤの新しい改訂版４３も作成する。次に、モジュール１０２は、これらの新しい改訂版及び古い改訂版を操作Ｒにリンクさせて、変更の理由を記録する。
【００１７】
図２は、本発明の一実施形態によるＳＣＭ（たとえば、モジュール１０２）のファイルの例示的なエントリー２００の説明図である。エントリー２００は、上述したプログラマ１のメソッド名変更に応答して作成されるデータベースエントリーの一例である。エントリー２００は、この変更が行われたことを示す情報を含むことに加えて、変更の原因の性質（この例では、メソッド名変更リファクタリング）を示す情報も含む。エントリー２００の上のエントリー及び下のエントリーは、省略記号に置き換えられて、特に、開発中のプログラムがかなり複雑である場合に、所与のデータベースのエントリーがデータベースの多くのエントリーのうちの１つであり得ることを示している。エントリー２００の記憶の仕方は、さまざまな実施形態間で異なる可能性がある。たとえば、このエントリーは、当該エントリーが参照するソースファイルと共にデータベース（たとえば、データベース１０４）に記憶されているファイル内の多くのエントリーのうちの１つである可能性がある。これに加えて又はこれに代えて、エントリー２００は、ソースファイルとは別個に記憶されているファイル内に存在する場合もある。さらに、さまざまな実施形態は、他の操作に関係付けられたデータとは別個のそれ自身のファイル内の操作に関係付けられたデータを記憶する場合がある。また、本発明のさまざまな実施形態は、ファイルに対する操作に関するメタ情報を記憶する時に、エントリー２００に示された情報のタイプの追加、省略、又は並べ替えが可能であることにも留意すべきである。
【００１８】
後に、プログラマ１の同僚であるプログラマ２が、プログラマ１の変更のいくつかを組み込むことを決定する。プログラマ２は、ファイルB.javaの改訂版８を使用してきており、最新改訂版１２に追いつきたい。彼がファイルB.javaをマージしている時、モジュール１０２は、改訂版１２の変更のうちの１つがリファクタリング操作によって引き起こされたものであることを彼にアラートする。モジュール１０２は、プログラマ２がマージの一部としてリファクタリング操作を適用したいか否かを尋ねる。図３は、本発明の一実施形態に従って適合されている例示的なダイアログ３００の説明図である。ダイアログ３００は、この例では、マージ操作に応答してプログラマ２に表示され、プログラマ２からの入力を受け取るためのボタン３０１Ａ及び３０１Ｂを含む。
【００１９】
この例では、プログラマ２は、インターフェースの参照子をファイル間で一致した状態に依然として維持しつつ、クラスＤの旧バージョンを周囲に保持したい。したがって、プログラマ２は、「はい」の選択肢を選択することを（モジュール１０２のインターフェース又はモジュール１０１のインターフェースを通じて）モジュール１０２に示し、それによって、自身のファイルにリネーム操作を適用するようにモジュール１０２に命令する。これに応答して、モジュール１０２は、リネーム操作をクラスＡ、Ｂ、及びＤに適用する。プログラマ２は、クラスＤの最新バージョンを使用したくなくても、リネーム操作を適用した後は、すべてのクラスについて一致した一組のインターフェース及び参照子を有する。
【００２０】
従来技術のシステムでは、マージは、上記例ほど簡単でもなく直観的でもなかったであろう。従来技術のシステムでは、プログラマ２は、ファイルB.javaのみをマージし、存在しない関数A::bar()の未定義の参照子を見つけていたであろう。プログラマ２は、次に、１）メソッド名変更がいつ導入されたかを知るためにA.javaのバージョンを検索し、２）A.javaのそのバージョンをマージし、３）D.javaにおける未定義の参照子を見つけなければならなかったであろう。D.javaはA::foo()を参照するが、A::foo()はもはや存在しない。プログラマ２は、Ｄの最新バージョンを所望しないので、A::foo()の起動をA::bar()に手作業で変更しなければならないことになる。
【００２１】
図４は、本発明の一実施形態に従って適合されている例示的な方法４００の説明図である。方法４００は、いくつかの実施形態では、図１のモジュール１０１及び１０２と同じ又は類似の１つ又は２つ以上のモジュールを実行するプロセッサベースのデバイス（たとえば、パーソナルコンピュータ、マルチプロセッササーバタイプコンピュータ等）によって実行される。多くの例におけるプロセッサベースのデバイスとユーザとの間の対話は、グラフィカルユーザインターフェース（ＧＵＩ）を通じたものである。ただし、いくつかの実施形態は、テキストベースのインターフェース及び視覚障害者用のインターフェース等、他の種類のインターフェースを使用することが可能である。
【００２２】
ステップ４０１において、第１のファイル内の第１のクラスに対して第１の操作が行われ、それによって、第１のファイル内の第１のクラスが修正される。このような操作の一例は、クラスのメソッドの名称を変更するリファクタリング操作である。第１のクラスを修正することによって、第２のクラス内における第１のクラスの参照子に不一致が引き起こされ、第２のクラスは、第２のファイルに記憶される。たとえば、第２のクラスが第１のメソッドを参照する時、第１のクラス内のメソッドの名称の変更によって、そのメソッド名及び参照子は一致しないことになる。
【００２３】
ステップ４０２において、第２のクラス内の参照子が、修正された第１のクラスと一致するように修正される。たとえば、第２のクラス内の参照子は、メソッドの名称変更を反映するように変更される。
【００２４】
ステップ４０３において、記録が作成される。この記録は、第１のクラス及び第２のクラスが修正されていることの表示を含む。このような記録の一例は、図２に示されている。この記録は、さらに、第１の操作によって影響を受けるファイルバージョンの表示も含むことができる。
【００２５】
ステップ４０４において、この記録を使用して、第１のクラス及び第２のクラスの修正が第２の操作に影響を与えることが見分けられる。クラスに対する前の操作によって影響を受ける第２の操作の一例は、第１のクラス又は第２のクラスに対する変更を含むファイルのバージョンをマージするマージ操作である。いくつかの実施形態例では、さまざまな操作の記録が、ＩＤＥの操作中に調べられて、所与の操作が前の操作によって影響を受けるか否かが判断される。また、ステップ４０４は、要求された操作が、１つ又は２つ以上の前のクラス変更操作によって影響を受けることをプログラマに通知すること、及び、第１の操作を（全体的又は部分的に）適用して、その結果のクラスバージョンを全体を通じて一致したものにするために選択を行うプロンプトをユーザに与えることも含むことができる。
【００２６】
ステップ４０５において、見分けることに応答して、第１のファイルと第２のファイルとの間の一致を生み出すために、第１の操作が行われる。たとえば、第２の操作によって、ファイルバージョンが、メソッド又は参照子に対する変更を含むように更新されると、１つ又は２つ以上のファイルに対して第１の操作を行い、それらのメソッド及び参照子を全体を通じて一致したものとすることができる。
【００２７】
方法４００は、一連の別個のステップとして示されているが、さまざまなステップの追加、削除、修正、及び／又は再配置が、実施形態の範囲内にあることに留意すべきである。たとえば、方法４００のステップは、たとえ単一のシッティング（single sitting）の期間中であっても、開発中に、プログラマによって１回又は２回以上繰り返すことができる。方法４００は、本発明の実施形態がリネーム操作を記録し、マージ操作後にファイル間の一致を生み出すシナリオを示している。ただし、リファクタリング操作を含む他の操作が、いくつかの実施形態によって適合可能であるので、リネームは、本発明の一実施形態によって記録できるさまざまな操作のうちの１つにすぎないことに留意すべきである。たとえば、別の実施形態例では、ＳＣＭは、メソッド抽出操作が、１つのメソッドから３つのメソッドを作成したことを示すメタ情報を作成する。ＳＣＭは、自身のコードパース機能を使用して、変更が行われたことを見分け、ファイルにメタ情報を記録する。後に、マージ操作等の別の操作が行われると、ＳＣＭは、マージされたさまざまなファイルが抽出メソッドによって影響を受けると判断し、それらの他のファイル内で抽出を行う。さらに、本発明のさまざまな実施形態は、たとえば、このようなコードをパースし、変更がそのコードに対していつ行われるかを見分けるようにシステムを構成することによって、非オブジェクト指向型システムでの使用に適合することができる。
【００２８】
ＳＣＭシステムを通じて大きなコードベースを維持するとき、従来技術のシステムを使用している場合に特定の変更又は一組の変更を引き起こしたものを思い出す（又は推測する）ことは、多くの場合、難しい。このような問題は、リファクタリングの場合に多くあるように、変更が複数のソースファイルに適用される場合に特に深刻となる可能性がある。本発明のさまざまな実施形態は、コード変更の結果のみを記憶するのではなく、コード変更の表示を記憶することによって、多くの場合、複雑なソースコードの管理を簡単にすることができる。
【００２９】
たとえば、ファイルをマージするとき、ファイル変更操作をマージの一部として適用することができる。換言すれば、ソースファイルＡがマージされるとき、変更（すなわち、リファクタリング操作又は他の操作の発生）は、ソースファイルＢ及びＤに適用され、これらのソースファイルＢ及びＤも変更による影響を受ける。このようなコンセプトは、ＳＣＭシステムが個々のファイルのバージョンしか記録しない既存のパラダイムを上回っている。換言すれば、本発明のさまざまな実施形態によって、ＳＣＭシステムは、ファイル自体を記憶することに加えて、ファイル（又はファイル群）に対して行われる操作に関する情報も記憶することが可能になる。
【００３０】
要約すれば、本発明のさまざまな実施形態は、２つ以上のファイルを伴う複雑なソフトウェアシステムにおける変更を管理する作業を大幅に簡単化することができる。管理する複雑さが、今日のソフトウェア開発の主な課題のうちの１つであるので、さまざまな実施形態は、生産性に大きな影響を与えることができる。
【００３１】
本発明の実施形態のさまざまな要素は、コンピュータ実行可能命令を介して実施されるときは、本質的には、このようなさまざまな要素の操作を定義するソフトウェアコードとなる。これらの実行可能命令又はソフトウェアコードは、可読媒体（たとえば、ハードドライブ媒体、光媒体、ＥＰＲＯＭ、ＥＥＰＲＯＭ、テープ媒体、カートリッジ媒体、フラッシュメモリ、ＲＯＭ、メモリスティック等）から得ることができる。実際には、可読媒体は、情報を記憶できる任意の媒体を含むことができる。
【００３２】
図５は、本発明の実施形態に従って適合されている一例のコンピュータシステム５００を示している。すなわち、コンピュータシステム５００は、本発明の実施形態を実施できる一例のシステム（図１の実施態様例のモジュール１０１、１０２、及び１０３を実行するコンピュータ等）を備える。中央処理装置（ＣＰＵ）５０１は、システムバス５０２に結合されている。ＣＰＵ５０１は、任意の汎用ＣＰＵとすることができる。しかしながら、本発明は、ＣＰＵ５０１が、本明細書で説明したような発明の操作をサポートする限り、ＣＰＵ５０１のアーキテクチャによって制限されるものではない。ＣＰＵ５０１は、本発明の実施形態によるさまざまな論理命令を実行することができる。たとえば、ＣＰＵ５０１は、図４と共に上述した例示的な操作フローに従ってマシンレベルの命令を実行することができる。
【００３３】
コンピュータシステム５００は、好ましくは、ランダムアクセスメモリ（ＲＡＭ）５０３を備える。ＲＡＭ５０３は、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ等とすることができる。コンピュータシステム５００は、好ましくは、読み出し専用メモリ（ＲＯＭ）５０４を含む。ＲＯＭ５０４は、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等とすることができる。ＲＡＭ５０３及びＲＯＭ５０４は、当該技術分野で既知のように、ユーザデータ及びシステムデータ並びにプログラムを保持する。
【００３４】
また、コンピュータシステム５００は、好ましくは、入出力（Ｉ／Ｏ）アダプタ５０５、通信アダプタ５１１、ユーザインターフェースアダプタ５０８、及びディスプレイアダプタ５０９も含む。Ｉ／Ｏアダプタ５０５、ユーザインターフェースアダプタ５０８、及び／又は通信アダプタ５１１は、一定の実施形態では、ユーザが、コードに対する編集、コードに対する操作、新しいコードのドラフト等の情報を入力するために、コンピュータシステム５００と対話することを可能にすることができる。
【００３５】
Ｉ／Ｏアダプタ５０５は、好ましくは、ハードドライブ、コンパクトディスク（ＣＤ）ドライブ、フレキシブルディスクドライブ、テープドライブ等の１つ又は２つ以上のようなストレージデバイス（複数可）５０６をコンピュータシステム５００に接続している。これらのストレージデバイスは、たとえば、ＲＡＭ５０３が、データを記憶することに関連したメモリ所要量について十分でない時に利用することができる。通信アダプタ５１１は、好ましくは、コンピュータシステム５００をネットワーク５１２（たとえば、インターネット、ＬＡＮ、無線ネットワーク等）に結合するようになっている。ユーザインターフェースアダプタ５０８は、キーボード５１３、ポインティングデバイス５０７、マイク５１４等のユーザ入力デバイス、及び／又は、スピーカ（複数可）５１５等の出力デバイスをコンピュータシステム５００に結合する。ディスプレイアダプタ５０９は、ディスプレイデバイス５１０上の表示を制御して、たとえば、本発明の実施形態のユーザインターフェース（図３のユーザインターフェース等）を表示するようにＣＰＵ５０１によって駆動される。
【００３６】
本発明は、システム５００のアーキテクチャに限定されるものではないことが十分認識されよう。たとえば、任意の適したプロセッサベースのデバイスを利用することができる。このプロセッサベースのデバイスには、パーソナルコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピューティングデバイス、コンピュータワークステーション、及びマルチプロセッササーバが含まれるが、これらに限定されるものではない。その上、本発明の実施形態は、特定用途向け集積回路（ＡＳＩＣ）又は大規模集積（ＶＬＳＩ）回路上に実施することもできる。実際には、当業者は、本発明の実施形態による論理操作を実行できる任意の個数の適した構造を利用することができる。
【００３７】
本発明及びその利点を詳細に説明してきたが、添付の特許請求の範囲によって画定される本発明の趣旨及び範囲から逸脱することなく、さまざまな変更、代用、及び改変を本明細書で行えることが理解されるべきである。その上、本願の範囲は、この明細書で説明されるプロセス、マシン、製品、組成物、手段、方法、及びステップの特定の実施形態に限定されるように意図されていない。当業者が本発明の開示から容易に認識するように、本明細書で説明した対応する実施形態と実質的に同じ機能を実行するか又は実質的に同じ結果を達成する、現在存在するか又は後に開発されるプロセス、マシン、製品、組成物、手段、方法、又はステップが、本発明に従って利用されてもよい。したがって、添付の特許請求の範囲は、このようなプロセス、マシン、製品、組成物、手段、方法、又はステップをその範囲内に含むように意図されている。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態に従って適合されている１つの例示的なシステムの説明図である。
【図２】本発明の一実施形態によるＳＣＭのファイルの１つの例示的なエントリーの説明図である。
【図３】本発明の一実施形態に従って適合されている１つの例示的なダイアログの説明図である。
【図４】本発明の一実施形態に従って適合されている１つの例示的な方法の説明図である。
【図５】本発明の一実施形態に従って適合されている一例のコンピュータシステムを示す図である。
【図１】
2009059351.tif 000003
【図２】
2009059351.tif 000004
【図３】
2009059351.tif 000005
【図４】
2009059351.tif 000006
【図５】
2009059351.tif 000007