(57)【要約】【課題】アプリケーションのフロー（例えば、メッセージ交換）を非独自言語で定義するソースファイルを受け取ることができる自動シーケンス図ジェネレータを提供する。【解決手段】アプリケーションのフローを記述する非独自言語の文字ソースファイルと、前記ソースファイルを入力として受け取り、前記ソースファイルによって記述された前記フローを表すシーケンス図を生成するように動作可能な一般アプリケーション用シーケンス図ジェネレータとを具備するシステム。好ましくは、前記非独自言語が、拡張可能マークアップ言語を含むこと、前記シーケンス図ジェネレータは、前記シーケンス図ジェネレータが前記文字ソースファイルによって記述された任意のアプリケーションのフローの前記シーケンス図を生成するように動作可能であるという点で一般アプリケーション用であることである。   【選択図】図１
2006202277.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのフローを記述する非独自言語の文字ソースファイルと、
前記ソースファイルを入力として受け取り、前記ソースファイルによって記述された前記フローを表すシーケンス図を生成するように動作可能な一般アプリケーション用シーケンス図ジェネレータとを具備するシステム。
【請求項２】
前記非独自言語が、拡張可能マークアップ言語を含む、請求項１に記載のシステム。
【請求項３】
前記シーケンス図ジェネレータは、前記シーケンス図ジェネレータが前記文字ソースファイルによって記述された任意のアプリケーションのフローの前記シーケンス図を生成するように動作可能であるという点で一般アプリケーション用である、請求項１に記載のシステム。
【請求項４】
前記一般アプリケーション用シーケンス図ジェネレータが、
前記入力ソースファイルを読み込み、ダイアグラムメタデータを表す内部データモデルを構築するように動作可能なソースパーサを含む、請求項１に記載のシステム。
【請求項５】
前記ソースパーサが、記述された前記入力ソースファイル内で、アクタと、前記アクタ間で伝達される一連のメッセージとを識別するように動作可能な請求項４に記載のシステム。
【請求項６】
前記一般アプリケーション用シーケンス図ジェネレータが、さらに、
前記内部データモデルを処理し、対応する描画コマンドを生成するように動作可能なダイアグラムパーサを含む、請求項４に記載のシステム。
【請求項７】
前記一般アプリケーション用シーケンス図ジェネレータが、さらに、
前記描画コマンドを受け取り、前記ソースファイルによって記述された前記フローを表す前記シーケンス図を生成するように動作可能なレンダリングエンジンを含む、請求項６に記載のシステム。
【請求項８】
非独自言語でありかつアプリケーションのフローを記述する文字ソースファイルをソースパーサ内に受け取る段階と、
前記ソースパーサにより、また前記文字ソースファイルに基づいて、前記文字ソースファイルに記述された前記フローのダイアグラムのデータモデルを構築する段階と、
ダイアグラムパーサにより、また前記データモデルに基づいて、対応する描画コマンドを生成する段階と、
前記描画コマンドに応じて、前記文字ソースファイルによって記述された前記フローを表すシーケンス図をレンダリングエンジンによってレンダリングする段階とを有する方法。
【請求項９】
前記ソースパーサによって前記データモデルを構築する前記段階が、
記述された前記文字ソースファイル内で、アクタと、前記アクタ間で伝達される一連のメッセージを識別する段階とを含む、請求項８に記載の方法。
【請求項１０】
前記文字ソースファイルを前記ソースパーサ内に受け取る前記段階が、
コマンドラインコマンドに応じて少なくとも１つの文字ソースファイルを前記ソースパーサ内に受け取る段階を含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、非独自言語によって駆動される一般アプリケーション用シーケンス図ジェネレータに関する。
【背景技術】
【０００２】
シーケンス図（シーケンスチャート、時系列図／チャート、メッセージシーケンス図／チャート、鉄道図／チャート、またはラダー図／チャートとしても知られる）は、一般に、アプリケーションのフローの図形表現を提供するために使用される。より具体的には、シーケンス図は、一般に、「アクタ」と呼ばれる複数のエンティティ間の「メッセージ」と呼ばれる一連のトランザクションの図形表現を提供する。シーケンス図において、時間は、一般に、ページを縦方向に下に進むことによって表される。各アクタは、一般に、シーケンス図において縦線（または列）によって表される。メッセージは、一般に横線によって表され、通常、ラベルが付けられ、交換に必要な縦の線のアクタ間で通信方向を示す矢印で終わる。トランザクションアイテム番号やタイムアウトのようなトランザクション間の他の関係などの他の装飾がシーケンス図に含まれることがある。
【０００３】
通信プロトコル、コンピュータ実行可能ソフトウェア、組み立てライン、他の製造プロセスのようなアプリケーションを含むがこれらに限定されない多くのタイプのアプリケーションのフローをシーケンス図によって表すことができる。実際には、果物販売係と販売係から果物を購入したい顧客との間で交換されるメッセージのフローのような、任意のアプリケーションのアクタ間のメッセージ交換のフローを表すためにシーケンス図を使用することができる。そのようなメッセージ交換の文字説明の代わりまたは追加としてアプリケーションのメッセージ交換（または「フロー」）を明確に表すためにシーケンス図を使用することができる。例えば、多くの場合、通信プロトコルなどのアプリケーションは、アプリケーションの文字説明を検討するよりもシーケンス図を検討することによってより迅速に理解することができる。一枚の絵が千言に値するという格言のように、シーケンス図は、所定のアプリケーションのメッセージ交換を伝えるのに大いに役立つ。
【０００４】
したがって、シーケンス図は、一般に、仕様、設計、および実装を文書化する他の文書化において、また予測または測定したシステム挙動の表現として使用される。電気通信分野では、例えば、必要なプロトコルメッセージ交換、予想されるプロトコルメッセージ交換、または実際のプロトコルメッセージ交換を文書化するためにシーケンス図が幅広く使用されている。
【０００５】
シーケンス図には大きな利点があるが、作成し管理するのが厄介な場合がある。従来、シーケンス図は、基本的なビットマップエディタ（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｐａｉｎｔ）、より高性能なダイアグラミングツール（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｖｉｓｉｏ）、また時には専用のＣＡＳＥツール（例えば、Ｒａｔｉｏｎａｌ  Ｒｏｓｅ）を使用して手作業で作成されてきた。シーケンス図をこれらの手法で作成するためには、原作者と保守管理者の両方が、適切なライセンスを受けたバージョンの互換ツールにアクセスすることが必要である。さらに、シーケンス図作成者がスタイルとレイアウトを決定しなければならないが、いくつかのツールは、それらの部分を支援する。この手作業の手法は、多くの時間と労力がかかり、シーケンス図を作成し保守管理する高いコストにより文書化の際にシーケンス図を含めることを嫌う。
【０００６】
最近になって、アプリケーションのトランザクションシーケンスを記述する入力文字ファイルからシーケンス図を生成できる自動シーケンス図生成ツールが開発された。したがって、そのような自動シーケンス図生成ツールは、シーケンス図を手作業で作成するユーザの要件を軽減する。従来技術において使用可能な自動シーケンス図生成ツールには、ＥｖｅｎｔＨｅｌｉｘ．ｃｏｍから入手可能なＥｖｅｎｔＳｔｕｄｉｏ  ２．５（ｈｔｔｐ：／／ｗｗｗ．ｅｖｅｎｔｈｅｌｉｘ．ｃｏｍ／ＥｖｅｎｔＳｔｕｄｉｏ／を参照）、ＳｏｕｒｃｅＦｏｒｇｅ．ｎｅｔから入手可能なＣａｌｌｆｌｏｗ  Ｓｅｑｕｅｎｃｅ  Ｄｉａｇｒａｍ  Ｇｅｎｅｒａｔｏｒ（ｈｔｔｐ：／／ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｐｒｏｊｅｃｔｓ／ｃａｌｌｆｌｏｗを参照）、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  （ＩＢＭ）から入手可能なＷｅｂＳｐｈｅｒｅ  Ｓｔｕｄｉｏ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｖｅｌｏｐｅｒで提供されるＳｅｑｕｅｎｃｅ  Ｄｉａｇｒａｍ  Ｔｏｏｌ、およびＮＡＳＲＡから入手可能なＪ２ｕ（ｈｔｔｐ：／／ｗｗｗ．ｎａｓｒａ．ｆｒ／を参照）がある。
【０００７】
従来の自動シーケンス図生成ツールは、一般に、ソースファイルの文字説明を定義するために独自言語の使用を必要とする。したがって、ユーザは、自動シーケンス図生成ツールによって使用される適切な文字説明を生成するために、独自言語を学習しなければならないことがある。
【０００８】
さらに、いくつかの自動シーケンス図生成ツールは、一般アプリケーション用（ａｐｐｌｉｃａｔｉｏｎ  ｇｅｎｅｒｉｃ）ではない。より正確に言うと、特定の自動シーケンス図生成ツールは、特定のタイプのアプリケーションのみのシーケンス図の生成に使用が制限され、任意の所望のタイプのアプリケーションのシーケンス図を生成するフレキシビリティがない。例えば、ＷｅｂＳｐｈｅｒｅ  Ｓｔｕｄｉｏ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｖｅｌｏｐｅｒで提供されるＳｅｑｕｅｎｃｅ  Ｄｉａｇｒａｍ  Ｔｏｏｌは、ソースファイルとしてＪａｖａソースコードを受け取ることができ、受け取ったＪａｖａソースコードのフローを表すシーケンス図を生成するように動作可能である。したがって、このツールは、ソースファイルを生成するためにユーザが独自言語を学習することを必要としないが（代わりに、Ｊａｖａソースコードをソースファイルとして入力できる）、入力されたＪａｖａソースコードのシーケンス図しか生成できないという点で特定アプリケーション用である。したがって、例えば、このツールは、例えば顧客と果物販売係間のメッセージ交換を記述する文字ソースファイルを受け取り、そのアプリケーションのためのシーケンス図を生成することはできず、代わりに、入力されたＪａｖａソースコードのフローを表すシーケンス図を生成することに限定される。したがって、特定のシーケンス図生成ツールは、汎用シーケンス図ジェネレータではなく、どちらかと言うと既存のソースコードをリバースエンジニアをしたり実行時トレースからソフトウェア実行時挙動を自動的に文書化したりするような、特定のアプリケーションまたは特定のタスクに焦点を当てている。
【０００９】
さらに、従来技術の自動シーケンス図生成ツールは、一般に、コマンドライン操作ができず、エンドユーザの文書発行自動化プロセスに組み込むことができない。したがって、一般に、ユーザが、過去の自動シーケンス図ジェネレータを利用して１組のシーケンス図を作成するための効率的な方法はない。より正確に言うと、ユーザは、一般に、コンピュータの前に座り、情報（例えば、ソースファイル）を入力して１度に１つのシーケンス図を生成しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上を考慮すると、アプリケーションのフロー（例えば、メッセージ交換）を非独自言語で定義するソースファイルを受け取ることができる自動シーケンス図ジェネレータが必要である。さらに、そのような自動シーケンス図ジェネレータは、特定アプリケーションのシーケンス図を生成するように限定されず、汎用（すなわち「一般アプリケーション用」）のシーケンス図ジェネレータであることが望ましい。
【課題を解決するための手段】
【００１１】
本発明は、非独自言語によって駆動される一般アプリケーション用シーケンス図ジェネレータを提供するシステムおよび方法を対象とする。１つの実施形態によれば、ソースファイルは、アプリケーションのフロー（例えば、メッセージ交換）を非独自言語で記述する。自動シーケンス図ジェネレータは、入力としてソースファイルを受け取り、そのようなソースファイルに基づいて、ソースファイルによって記述されたフローを表すシーケンス図を生成するように動作可能である。
【００１２】
例示的な実施形態において、非独自言語は、拡張可能マークアップ言語（ＸＭＬ）などのマークアップ言語である。したがって、ユーザは、シーケンス図ジェネレータによって使用されるソースファイルを作成するために独自言語を学習する必要がなく、代わりにシーケンス図を作成するフローを例えばＸＭＬで記述することができる。さらに、シーケンス図ジェネレータは、ソースファイルに記述された任意のアプリケーションのフローを表すシーケンス図を生成することができるので汎用（すなわち「一般アプリケーション用」）である。ソースファイルがフローを記述するアプリケーションは、コンピュータで実行可能なソフトウェアアプリケーション、通信プロトコル、またはアクタ間の任意のメッセージ交換（例えば、顧客と果物販売係の間のメッセージ交換）を含むがこれらに限定されない任意のタイプのアプリケーションでよい。
【００１３】
１つの実施形態によれば、シーケンス図ジェネレータは、ソースパーサ、ダイアグラムパーサ、およびレンダリングエンジンを含む。ソースパーサは、文字ソースファイルを受け取り、受け取ったソースファイルに基づいて、ソースファイルによって記述されたフローのダイアグラムのデータモデルを構築する。ダイアグラムパーサは、ソースパーサによって構築されたデータモデルを処理して、レンダリングエンジンへ入力される対応する描画コマンドを生成する。図面コマンドの受け取りに応じて、レンダリングエンジンは、文字ソースファイルによって記述されたフローを表すシーケンス図を生成する。
【００１４】
本明細書で説明する様々な実施形態において、文字ソースファイルは、文字ソースファイルがフローを定義するアプリケーションに依存しない。例えば、文字ソースファイルは、シーケンス図を生成するアプリケーションのフロー（例えば、通信プロトコルや他のアクタ間のメッセージの交換）を記述し、ソースファイル自体はシーケンス図を生成するアプリケーションではない。例として、文字ソースファイルは、Ｊａｖａプログラムのフローを記述するＸＭＬファイルである。したがって、ＸＭＬファイルは、シーケンス図ジェネレータへの入力として使用されＪａｖａプログラムのソースコードと対照的にＪａｖａプログラムに依存しない。
【００１５】
以上の説明は、以下の発明の詳しい説明をよりよく理解できるように本発明の特徴と技術的利点をかなり幅広く概略的に示した。本発明の特許請求の範囲の主題を構成する本発明のさらに他の特徴と利点については後で説明する。当業者は、本発明の同じ目的を達成するために他の構造を修正または設計する根拠として、開示した概念と具体的な実施形態を容易に利用できることを理解されたい。また、当業者は、そのような同等の構造が、添付の特許請求の範囲に説明されているような本発明の趣旨および範囲から逸脱しないことを理解されたい。本発明の特徴であると考えられる新規な特徴は、その構成と動作方法の両方に関して、さらに他の目的および利点と共に、添付図面と関連して検討されるときに以下の説明からよりよく理解されるであろう。しかしながら、それぞれの図が、例示と説明のためにのみ提供され、本発明の範囲を定義するものではないことをはっきりと理解されたい。
【発明を実施するための最良の形態】
【００１６】
本発明をさらに完全に理解するために、添付図面と関連して行われる以下の説明を参照する。
【００１７】
次に、添付図面を参照して本発明の例示的な実施形態を説明し、図において、いくつかの図全体を通して類似の参照番号は類似の部分を指す。図１に移ると、入力として文字ソースファイル１０１を受け取りそれからシーケンス図１０３を生成するように動作可能なシーケンス図ジェネレータ１０２を含む例示的なシステム１００を示す。シーケンス図１０３は、例えば、ファイルに記憶される場合もありかつ／または（例えば表示装置に）出力される場合もある。本明細書に示した様々な実施形態により、ソースファイル１０１は、ＸＭＬなどの非独自言語で通信プロトコルなどのアプリケーションのフロー（例えば、メッセージ交換）を示す。シーケンス図ジェネレータ１０２は、ソースファイル１０１にフローが記述された任意のタイプのアプリケーションのシーケンス図を生成するように動作可能なので、汎用または一般アプリケーション用（ａｐｐｌｉｃａｔｉｏｎ−ｇｅｎｅｒｉｃ）シーケンス図ジェネレータと呼ばれることがある。
【００１８】
さらに、本明細書でさらに詳しく述べるように、文字ソースファイル１０１は、フローを定義するアプリケーションに依存しない。例えば、文字ソースファイルは、シーケンス図を生成するアプリケーションのフロー（例えば、アクタ間の通信プロトコルや他のメッセージ交換）を示し、ソースファイル自体は、シーケンス図を生成するアプリケーションではない。例として、文字ソースファイル１０１は、Ｊａｖａプログラムのフローを記述するＸＭＬファイルである。したがって、ＸＭＬファイルは、シーケンス図ジェネレータ１０２への入力として使用されるＪａｖａプログラムのソースコードと対照的に、Ｊａｖａプログラムに依存しない。したがって、シーケンス図ジェネレータ１０２は、入力されたソースファイルのフローのシーケンス図を生成することに限定されず、入力されたソースファイルによって記述された任意のアプリケーションのフローのシーケンス図を生成するように動作可能である。
【００１９】
図２は、本発明の特定の実施形態によるシーケンス図ジェネレータ１０２を示す。図示したように、シーケンス図ジェネレータ１０２は、パーサ構成要素２０１とレンダリングエンジン２０３を含む。パーサ構成要素２０１は、入力された文字ソースファイル１０１に基づいて描画コマンド２０２をレンダリングエンジン２０３に生成して、レンダリングエンジン２０３に、ソースファイル１０１に記述されたフローを表すシーケンス図１０３を生成させるように動作可能である。
【００２０】
この例示的な実施形態によれば、ソースファイル１０１は、非独自言語（例えば、ＸＭＬ）で、アプリケーションのフローのシーケンス定義を提供する。ソースファイルは、シーケンス図ジェネレータ１０２に入力され、シーケンス図ジェネレータ１０２は、ソースファイル１０１のデータをパーズし、シーケンス図１０３を表示画面に描画するかあるいはいくつかの形式（ｂｍｐ、ｇｉｆ、ｊｐｇなど）のうちのいずれかの形式のファイルにレンダリングする。パーサ２０１は、ソースファイル１０１の入力データ（例えば、ＸＭＬ）を読み込み解釈して要素定義を抽出する役割をする。レンダリングエンジン２０３は、内部のスタイルおよびレイアウト規則を使用して描画要素をレンダリングする役割をする。レンダリングエンジンのアプリケーションプログラムインタフェース（ＡＰＩ）は、シーケンス図のどのドメイン固有アプリケーションにも依存しないシーケンス図を描画する適切な抽象概念を提示する。パーサ２０１は、ソースファイル（例えば、ＸＭＬ）内のドメイン固有エンコーディングとレンダリングＡＰＩの間のマッピングを行う。これにより、スタイルとレイアウトを制御するコア描画ロジックを変更せずにシーケンス図ジェネレータ１０２を広範囲のドメインに素早く適用することができる。
【００２１】
レンダリングエンジン２０３とそれに対応するＡＰＩは、描画コマンドを受け取りその描画コマンドに従ってシーケンス図を生成する能力を提供する現在既知または今後開発される任意のものでよい。パーサ２０１（および、より詳細には、下記の図３の例示的な実施形態に示したダイアグラムパーサ３０３）には、適切なシーケンス図を生成する際にレンダリングエンジンを正確に動作させる適切な描画コマンドを生成できるように、レンダリングエンジンＡＰＩの知識がなくてはならない。特定の実施形態において、レンダリングエンジンのＡＰＩは、シーケンス図を描く（例えば、アクタやメッセージシーケンスなどを受け取ることができ、アクタ間のメッセージシーケンスを表す対応する特徴（ｆｅａｔｕｒｅｓ）を描く）上で特定の適用を有するように開発できるが、これは、本明細書で述べる概念を実現するための要件ではない。
【００２２】
図３に、１つの例示的な実施形態によるシーケンス図ジェネレータ１０２をさらに詳しく示す。この実例となる実施形態において、シーケンス図ジェネレータ１０２は、ソースパーサ３０１、ダイアグラムパーサ３０３、およびレンダリングエンジン２０３を含む。したがって、この実例となる実施形態において、図２のパーサ構成要素２０１は、ソースパーサ３０１とダイアグラムパーサ３０３を含む。ソースパーサ３０１は、入力としてソースファイル１０１を受け取り、そのソースファイル１０１に基づいて内部データモデル３０２を構築する。より具体的には、ソースパーサ３０１は、ソースファイル１０１のテキストを読み込み、その構文を確認し、ソースファイル１０１から読み込んだすべてのダイアグラムメタデータ情報を表す内部データモデル３０２を構築する。内部データモデル３０２は、ソースファイル１０１に表わされた階層構造と関係を保持する。
【００２３】
１つの例示的な実施形態において、ソースファイルはＸＭＬであり、ソースパーサ３０１は、ＸＭＬ要素をパーズしてソースファイルからデータを抽出しデータモデル３０２を生成する。より具体的には、１つの例示的な実装において、ＸＭＬソースファイル１０１は、ソースパーサ３０１によってＤＯＭ（ドキュメントオブジェクトモデル）にロードされる。ＤＯＭは、ＸＭＬからすべてのデータをその構造を含めて捕捉するツリー構造である。ＤＯＭは、ソースパーサ３０１によって、アクタとすべてのトランザクションと装飾を記述する１組の内部データ構造３０２に抽出されるダイアグラムメタデータに関して探索される。トランザクションデータは、さらに処理されてすべてのソースおよびデスティネーション情報が抽出される。次に、この内部データ３０２の集まりは、レンダリングプロセスを進めるために使用される。ダイアグラムメタデータは、固有の１組のＸＭＬタグによってＸＭＬソース内のソースパーサ３０１によって認識され、その例は後でさらに詳しく説明する。
【００２４】
ダイアグラムパーサ３０３は、内部データモデル３０２内のデータを処理して、シーケンス図に表される特徴を抽出し、そのような内部データモデル３０２に基づいて、ダイアグラムパーサ３０３は、レンダリングエンジン２０３に一連の抽象的なダイアグラム描画コマンドを生成する。レンダリングエンジン２０３は、描画コマンドを受け取り、そのコマンドを低レベルのオペレーティングシステム図形操作（線、円または文字を描くような）に送ってシーケンス図１０３を作成し、そのシーケンス図１０３は、例えば、プロセッサ搭載装置（例えば、パーソナルコンピュータ）３０４の表示装置３０５に出力される場合もありかつ／またはファイルに記憶される場合もある。
【００２５】
１つの実施形態の動作を示すために、ソースファイル１０１に記述された３つのアクタＡ、ＢおよびＣ間の会話の単純なケースを検討し、このソースファイル１０１は、次に、そのような会話においてアクタ間のメッセージ交換を表すシーケンス図１０３を生成するためにシーケンス図ジェネレータ１０２によって使用される。したがって、このケースでは、アクタ間の会話はアプリケーションと見なされ、そのようなアプリケーションのフローが、ソースファイル１０１に記述される。会話が以下のようなものであると仮定する。  
ＡがＢに「Ｈｅｌｌｏ」と言う。
【００２６】
ＢがＡに「Ｈｅｌｌｏ  ｔｈｅｒｅ」と言い、Ｃに「Ｈｉ」言う。
【００２７】
ＣがＢとＡに「Ｇ‘ｄａｙ“」と言う
この例示的な実施形態において、ソースファイル１０１は、ＸＭＬで表現され、上の会話は、以下のＸＭＬソースファイル１０１で表すことができる。
【００２８】
＜？ｘｍｌ  ｖｅｒｓｉｏｎ＝”１．０“  ｓｔａｎｄａｌｏｎｅ＝”ｙｅｓ“？＞
＜ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ  ｔｉｔｌｅ＝“Ａ  Ｓｉｍｐｌｅ  Ｄｉａｇｒａｍ”＞
＜ＭｅｓｓａｇｅＳｅｑｕｅｎｃｅ＞
＜Ｍｅｓｓａｇｅ  ｆｒｏｍ＝“Ａ”  ｔｏ＝“Ｂ”  ｍｓｇ＝“Ｈｅｌｌｏ”／＞
＜Ｍｅｓｓａｇｅ  ｆｒｏｍ＝“Ｂ”  ｔｏ＝“Ａ”  ｍｓｇ＝“Ｈｅｌｌｏ  ｔｈｅｒｅ”／＞
＜Ｍｅｓｓａｇｅ  ｆｒｏｍ＝“Ｂ”  ｔｏ＝“Ｃ”  ｍｓｇ＝“Ｈｉ”／＞
＜Ｍｅｓｓａｇｅ  ｆｒｏｍ＝“Ｃ”  ｔｏ＝“Ａ”  ｍｓｇ＝“Ｇ‘ｄａｙ”／＞
＜Ｍｅｓｓａｇｅ  ｆｒｏｍ＝“Ｃ”  ｔｏ＝“Ｂ”  ｍｓｇ＝“Ｇ‘ｄａｙ”／＞
＜ＭｅｓｓａｇｅＳｅｑｕｅｎｃｅ／＞
＜／ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ＞
周知のように、ＸＭＬは要素をタグで定義することができる。ＸＭＬは、ページまたはファイルの内容を記述するためにマークアップ記号を含むことができる「マークアップ」言語である。ＸＭＬは、ファイルの内容を記述されているデータによって記述する。例えば、マークアップタグ内に配置された語「ｐｈｏｎｅｎｕｍ」は、その後に続くデータが電話番号であることを示す。したがって、ＸＭＬは、この例では「ｐｈｏｎｅｎｕｍ」要素などの要素を定義することができる。すなわち、ＸＭＬファイルをプログラムが純粋にデータとして処理することができ、あるいは表示することができるＨＴＭＬファイルのような類似のデータで別のコンピュータに記憶することができる。例えば、受け取ったコンピュータ内のアプリケーションが電話番号をどのように処理したいかにより、その電話番号を記憶したり、表示したり、またはダイアルしたりすることができる。ＸＭＬは、ＨＴＭＬと違ってマークアップ記号が無制限で自明であるため、「拡張可能」である。前述の例示的なＸＭＬコードでは、ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ要素、ＭｅｓｓａｇｅＳｅｑｕｅｎｃｅ要素およびＭｅｓｓａｇｅ要素が定義されている。このケースにおいて、ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ要素は、１つのダイアグラムの完全な定義を囲む最も外側のタグである。ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ要素は、ダイアグラムに題名を付けるために使用できる「ｔｉｔｌｅ」属性を含む。ＭｅｓｓａｇｅＳｅｑｕｅｎｃｅ要素は、アクタ間の１組のトランザクションを囲み、各メッセージ要素が、「ｍｓｇ」属性によって与えられた注釈を使用することによってアクタ「ｆｒｏｍ」とアクタ「ｔｏ」の間の単一トランザクションを定義する。ＸＭＬファイルをパーズするプログラム（例えばソースパーサ３０１）は、ＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ要素を探索することによって、ファイルがシーケンス定義を含むことを決定することができる。次に、パーサは、始めと終わりのＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎタグ間にあるすべての内容が定義と関連付けられ、それらの定義の予想した構文と一致するはずであると想定し、それは、このケースでは、１つまたは複数のメッセージタグを含む少なくとも１つのＭｅｓｓａｇｅＳｅｑｕｅｎｃｅタグセットである  。
【００２９】
ソースパーサ３０１は、前述のソースファイル１０１のＸＭＬを受け取り、それを内部データモデル３０２にパーズする。前述の例示的なＸＭＬコードから得た内部データモデル３０２は、以下のように見える可能性がある。
【００３０】
ＤｉａｇｒａｍＤａｔａ｛
｛Ｔｉｔｌｅ        ｛“Ａ  Ｓｉｍｐｌｅ  Ｄｉａｇｒａｍ”｝
｛ＡｃｔｏｒＬｉｓｔ｛Ａ  Ｂ  Ｃ｝｝
｛ＭｅｓｓａｇｅＬｉｓｔ｛｛Ａ  Ｂ  “Ｈｅｌｌｏ”｝｛Ｂ  Ａ  “Ｈｅｌｌｏ  ｔｈｅｒｅ”｝｛Ｂ  Ｃ  “Ｈｉ”｝｛Ｃ  Ａ  “Ｇ‘ｄａｙ”｝｛Ｃ  Ａ  “Ｇ’ｄａｙ”｝｝｝
ソースパーサ３０１は、ダイアグラムを構成するために必要な情報を抽出できるように、ソースファイル形式と構文の明示的な知識（ｋｎｏｗｌｅｄｇｅ）を有する。この知識は、それぞれの特定のソースファイルのタイプに固有であり、実際に、時間と共に変化する可能性があり、あるいは本発明の様々な実施形態によって異なる可能性がある。このように内部データモデル３０２を介してダイアグラムパーサ３０３からソースパーサ３０１を分けることにより、基本的なシーケンス図生成プロセスを変更することなく様々なソースファイル形式に迅速に適応できる実装が可能である。従って、単一の実装が、いくつかの異なるＸＭＬ構文、あるいは実際には、他のファイル形式全体、おそらくＷｉｎｄｏｗｓの「．ｉｎｉ」ファイルと類似の構造化されたテキスト、または他の任意の入力形式に対応することができる。そのような実装は、内部データモデル３０２、ダイアグラムパーサ３０３およびレンダリングエンジン２０３のそれぞれの単一の実装だけでなく、それぞれの対応形式に１つのソースパーサ３０１の実装を有する。
【００３１】
さらに、特定の実施形態において、シーケンス図１０３を作成するために必要とされる情報の一部がソースファイル１０１に明示的に提供されない場合があるが、代わりにパーズがすべて完了した後で利用可能データから得られる。そのような場合、ソースファイル１０１を通るシングルパスからレンダリングエンジンコマンドを直接生成することができず、代わりに完全なセットを作成できるまでデータを記憶しなければならない。例えば、すべてメッセージ要素をパーズした後でしかアクタの完全なリストを決定することができない。しかしながら、アクタの完全なリストが分かった後でなければダイアグラムを生成することができない。
【００３２】
前述のソースファイルのＸＭＬを内部データモデル３０２にパーズした後、ダイアグラムパーサ３０３は、そのような内部データモデル３０２を処理し、一連のダイアグラム描画コマンドを生成する。前の例と例示的なレンダリングエンジンＡＰＩの場合、次のような１組のコマンドが可能である。
【００３３】
ＳｅｑｕｅｎｃｅＤｉａｇｒａｍ：：ｓｅｑｕｅｎｃｅｄｉａｇｒａｍ．ｍｙＤｉａｇ−ｔｉｔｌｅ“Ａ  Ｓｉｍｐｌｅ  Ｄｉａｇｒａｍ”
ｍｙＤｉａｇ  ａｄｄ  ａｃｔｏｒ  −ｉｄ  Ａ
ｍｙＤｉａｇ  ａｄｄ  ａｃｔｏｒ  −ｉｄ  Ｂ
ｍｙＤｉａｇ  ａｄｄ  ａｃｔｏｒ  −ｉｄ  Ｃ
ｍｙＤｉａｇ  ａｄｄ  ｍｅｓｓａｇｅ−ｆｒｏｍ  Ａ−ｔｏ  Ｂ  −ｔｅｘｔ“Ｈｅｌｌｏ”
ｍｙＤｉａｇ  ａｄｄ  ｍｅｓｓａｇｅ−ｆｒｏｍ  Ｂ−ｔｏ  Ａ  −ｔｅｘｔ“Ｈｅｌｌｏ  ｔｈｅｒｅ”
ｍｙＤｉａｇ  ａｄｄ  ｍｅｓｓａｇｅ−ｆｒｏｍ  Ｂ−ｔｏ  Ｂ  −ｔｅｘｔ“Ｈｉ”
ｍｙＤｉａｇ  ａｄｄ  ｍｅｓｓａｇｅ−ｆｒｏｍ  Ｃ−ｔｏ  Ａ  −ｔｅｘｔ“Ｇ‘ｄａｙ”
ｍｙＤｉａｇ  ａｄｄ  ｍｅｓｓａｇｅ−ｆｒｏｍ  Ｃ−ｔｏ  Ｂ  −ｔｅｘｔ“Ｇ‘ｄａｙ”
ｍｙＤｉａｇ  ｒｅｆｒｅｓｈ
レンダリングエンジン２０３は、前述の描画コマンドを受け取り、図４の例示的なシーケンス図４００を生成する。図４に示したように、シーケンス図４００は、前述の例示的なＸＭＬソースファイル１０１で指定したように「Ａ  Ｓｉｍｐｌｅ  Ｄｉａｇｒａｍ」というタイトル４０１を有する。さらに、シーケンス図４００は、前述の例示的なＸＭＬソースファイルによって定義されたようなアクタＡ（４０２）、Ｂ（４０３）およびＣ（４０４）を含む。シーケンス図４００は、アクタＡがアクタＢに「Ｈｅｌｌｏ」と言うことを矢印４０５で示す。シーケンス図４００は、アクタＢがアクタＡに「Ｈｅｌｌｏ  ｔｈｅｒｅ」と言い、アクタＣに「Ｈｉ」と言うことを矢印４０６と４０７で示す。最後に、シーケンス図４００は、アクタＣがアクタＡとＢに「Ｇ‘ｄａｙ」と言うことを矢印４０８と４０９で示す。
【００３４】
前述の例で使用されている実例となる会話から、任意のアプリケーションのフロー（例えば、通信プロトコルなど）をＸＭＬソースファイルで記述することができ、このＸＭＬソースファイルをシーケンス図ジェネレータ１０２が使用して、そのようなアプリケーションのフローを表すシーケンス図を生成するということを理解すべきである。
【００３５】
図５に移ると、１つの実施形態によるシーケンス図ジェネレータのオペレーショナルフロー図が示されている。動作ブロック５０１で、ソースパーサ３０１は、非独自言語（例えば、ＸＭＬ）でありかつアプリケーションのフロー（例えば、２つ以上のアクタ間の会話や通信プロトコルなど）を定義する文字ソースファイル１０１を受け取る。動作ブロック５０２で、ソースパーサ３０１は、文字ソースファイル１０１に基づき、文字ソースファイル１０１によって定義されるフローのダイアグラムのデータモデル３０２を構築する。動作ブロック５０３で、ダイアグラムパーサ３０３は、データモデル３０２に基づき、対応する描画コマンドを生成する。動作ブロック５０４で、描画コマンドの受け取りに応答して、レンダリングエンジン２０３は、文字ソースファイル１０１によって定義されたフローを表すシーケンス図１０３をレンダリングする。
【００３６】
前述のように、特定の実施形態において、ＸＭＬは、アプリケーションのシーケンス（または、「フロー」）を記述するためにソースファイルで使用される。１つの実施形態で使用される例示的なＸＭＬ要素は、後でさらに詳しく説明する。
【００３７】
前述のように、１つの実施形態によれば、シーケンスは、ＸＭＬにおいてＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ  Ｅｌｅｍｅｎｔを使用して定義される。下の表１に、１つの実施形態においてシーケンスの記述を構成する様々なＸＭＬ要素を示す。
【表１】
2006202277.tif 000003
【００３８】
シリアル／シングルパスＸＭＬパーサの動作に対応するために、ＧｒｏｕｐＤｅｆｉｎｉｔｉｏｎｓが、ＡｃｔｏｒＲｏｌｅＭａｐの前に現れなければならず、ＡｃｔｏｒＲｏｌｅＭａｐが、任意のＨｅａｄｉｎｇ、ＬｉｎｋまたはＭｅｓｓａｇｅ要素の前に現れなければならないことに注意されたい。ＡｃｔｏｒＲｏｌｅＭａｐ内のＡｃｔｏｒＲｏｌｅ要素の順序は、ダイアグラム内のアクタの左から右の順序を定義する。
【００３９】
Ｈｅａｄｉｎｇ、ＬｉｎｋおよびＭｅｓｓａｇｅ要素はすべて、ゼロ回以上現れることができ、また任意の順序でよい。それらの順序は、ダイアグラムの縦方向の時間軸に沿って上から下への配置を定義する。
【００４０】
下の表２に、１つの実施形態によるＳｅｑｕｅｎｃｅＤｅｆｉｎｉｔｉｏｎ  Ｅｌｅｍｅｎｔ属性定義を示す。
【表２】
2006202277.tif 000004
【００４１】
下の表３に、１つの実施形態によるＡｃｔｏｒＲｏｌｅ  Ｅｌｅｍｅｎｔ属性定義を示す。
【表３】
2006202277.tif 000005
【００４２】
下の表４に、１つの実施形態によるＧｒｏｕｐ  Ｅｌｅｍｅｎｔ属性定義を示す。
【表４】
2006202277.tif 000006
【００４３】
下の表５に、１つの実施形態によるＡｃｔｏｒ  Ｅｌｅｍｅｎｔ属性定義を示す。
【表５】
2006202277.tif 000007
【００４４】
下の表６に、１つの実施形態によるＨｅａｄｉｎｇ  Ｅｌｅｍｅｎｔ属性定義を示す。
【表６】
2006202277.tif 000008
【００４５】
下の表７に、１つの実施形態によるＭｅｓｓａｇｅ  Ｅｌｅｍｅｎｔフィールド定義を示す。
【表７】
2006202277.tif 000009
【００４６】
下の表８に、１つの実施形態によるＬｉｎｋ  Ｅｌｅｍｅｎｔフィールド定義を示す。
【表８】
2006202277.tif 000010
【００４７】
以上のことを考慮して、本発明の実施形態は、単純な文字説明からの高品質なシーケンス図の自動生成を可能にする。そのようなシーケンス図の自動生成は、シーケンス図の手動作成／管理維持の問題であるスタイルの均一化、レイアウトの標準化、保守の容易さ、大きなデータセットを任意に処理しあるいはデータが変化するときにダイアグラムを再生する能力の課題に取り組む。
【００４８】
前述のように、非独自言語（例えばＸＭＬ）で記述された文字説明に対応する実施形態を提供する。過去において、メッセージ交換を記述するために独自言語が定義されてきた（例えば、ＥｖｅｎｔＳｔｕｄｉｏ、ｈｔｔｐ：／／ｗｗｗ．ｅｖｅｎｔｈｅｌｉｘ．ｃｏｍ／ＥｖｅｎｔＳｔｕｄｉｏ／）。本発明の１つの実施形態は、ダイアグラム生成エンジンへの入力データを表わすためにＸＭＬすなわち非独自言語の使用を可能にする。ＸＭＬファイルを記述し編集するために、多数の無料ツールと有料ツールが幅広く使用可能である。ＸＭＬの構文と構造は、幅広く知られており学習が容易である。標準的で十分にサポートされた言語であるＸＭＬを使用することにより、エンドユーザは、新しい言語や独自言語を学習することなくその目標を迅速かつ容易に達成することができる。一連のトランザクションを指定するＸＭＬ形式の例示的な定義は前記のもの（ａｂｏｖｅ）に提供されている。したがって、トランザクションファイルの構文を明示的に定義するＸＭＬスキーマを開発（ｄｅｖｅｌｏｐ）することができる。当然ながら、本発明の範囲は、本明細書で説明した特定の構文に限定されず、本明細書で述べた概念に従って、開発できる任意の適切な構文を利用することができる。
【００４９】
本発明の特定の実施形態は、さらに、メッセージ定義データの対話式編集を可能にする。すなわち、ユーザが、画面上の入力データ（ソースファイル１０１）を編集し、次に入力データに行われた変更の結果を確認するために要求に応じてシーケンス図を再生するグラフィカルユーザインタフェース（ＧＵＩ）が提供される。これは、ソースファイル全体を中間媒介変数（ｉｎｔｅｒｍｅｄｉａｔｅ  ｖａｒｉａｂｌｅ）にロードすることにより達成される。この変数の内容は、ＧＵＩに編集可能なテキストとして表示される。ユーザがダイアグラムの再生を要求するたびに、この変数の内容が、あたかもソースファイル自体から来たかのようにソースパーサに送り込まれる。これは、生成されたダイアグラムがどのように現われるかを即時にフィードバックすることによって有効入力データの展開（ｄｅｖｅｌｏｐｍｅｎｔ）を高速化する。
【００５０】
さらに、本発明の特定の実施形態は、静的シーケンス図生成のためのコマンドラインエンジンを提供する。すなわち、ダイアグラムを自動的に生成しファイルに保存しかつ／または表示することができるコマンドラインエンジンを提供する。これにより、シーケンス図生成プロセスをエンドユーザの発行自動化プロセスに組み込むことができる。そのような実施形態の１つの例において、コマンドラインエンジンは、入力として、処理する入力ファイル（「ソースファイル」）のリストと、所望のダイアグラムファイル形式と、生成したファイル（すなわち、生成シーケンス図）を書き込むディスティネーションディレクトリとを定義する１組のコマンドラインパラメータを受け取る。１つの実施形態によるそのようなコマンドラインの例を下に示す。
【００５１】
ｇｅｎｅｒａｔｅｄｉａｇｒａｍｓ−ｓｒｃｄｉｒ“ｃ：／Ｍｙ  ｘｍ１”−ｆｉｌｅｐａｔｔｅｒｎ＊．ｘｍ１−ｉｍａｇｅｆｏｒｍａｔ  ｊｐｇ−ｏｕｔｄｉｒ“ｃ：／Ｍｙ  Ｐｉｃｔｕｒｅｓ”
この例において、ディレクトリ「ｃ：／Ｍｙ  ｘｍｌ」内のパターン「＊．ｘｍ１」と一致するすべてのファイルが、シーケンス図ジェネレータによって１度に処理される。各入力ファイルごとに、ジェネレータは、ディレクトリ「ｃ：／Ｍｙ  Ｐｉｃｔｕｒｅｓ」内に出力ファイルをＪＰＥＧ形式で作成する。そのような実施形態により、生成するたびにユーザの対話を必要とすることなく数十、数百、さらには数千のシーケンス図の自動生成が可能になる。また、コマンドラインエンジンを使用して、要求に応じてダイアグラムを生成することができる。これが当てはまる１つの実施形態は、各テストケースごとにシーケンスの定義を含む固有の記述がある可能性があるＴｅｓｔ  Ｍａｎａｇｅｒアプリケーションである。オンラインヘルプのダイアグラムを各テストケースの内容によって最新に維持する保守コストを回避するために、Ｔｅｓｔ  Ｍａｎａｇｅｒアプリケーションは、コマンドラインエンジンによって、ユーザがその特定のテストケースのヘルプページを開いたときに要求に応じて任意の所定のテストケースのダイアグラムを生成することができる。
【００５２】
本発明の特定の実施形態は、さらに、動的シーケンス図生成のための実行時エンジンを提供する。これは、ＧＵＩアプリケーションに組み込むことができ、カプセル化アプリケーションによって動的に提供されるデータから要求に応じてダイアグラムを生成できる実行時エンジンを提供することを可能にする。この手法の例は、プロトコルアナライザによって捕捉された一連のパケットからシーケンス図を自動生成するものである。そのようなアプリケーションにおいて、ソースファイルは捕捉されたデータパケットである。このアプリケーションにおけるソースパーサの実装は、パケットのフローを示すダイアグラムを生成できる内部データモデルを構築するために、それぞれの捕捉したパケットから情報を抽出する。そのようなアプリケーションでは、ダイアグラムは、各パケットが捕捉されるときに、あるいはプロトコルアナライザアプリケーションのユーザがキャプチャバッファ内の現在の組のパケットのダイアグラムを要求しているときに、オンザフライで生成することができる。
【００５３】
特定の実施形態において、シーケンス図ジェネレータを文書生成ツール全体の一部分として実現することができる。したがって、シーケンス図の自動生成を、共通のソースまたは様々なソースから得た取り囲むテキスト（ｅｎｃｌｏｓｉｎｇ  ｔｅｘｔ）と一体化され最終的な統合文書に組み込まれるダイアグラムを動的に生成するさらに幅広い文書化自動プロセスに組み込むことができる。
【００５４】
この手法の例は、ＸＭＬで記述された元の仕様からＨＴＭＬの仕様書を自動生成することである。ＸＭＬは、仕様テキストとシーケンス図定義の両方を含む完全な仕様詳細を含む。
【００５５】
この手法の利点は、仕様の内容を単一ソースファイルに捕捉し維持でき、同時にシーケンス図を含む出版並品質の出力を自動生成できることである。生成された出力の外観を、元のＸＭＬソースファイルに格納された内容とまったく関係なく変更することができる。
【００５６】
このプロセスは、いくつかの入力された仕様のバッチ処理を次々と行うように拡張することができる。例えば、１組の仕様が、１つのディレクトリ内に一緒にグループ化されてもよく、共通ルートからいくつかのディレクトリに分散されてもよい。この場合、文書ジェネレータは、ディレクトリ全体にわたって正しい形式の入力ファイルを探索し、それぞれを順番に処理することを繰り返すように設計することができる。入力ファイルは、定義されたファイル命名規則によって、事前に定義したディレクトリまたはサブディレクトリに入れることによって、あるいは入力ファイルの内容を詳細に調べて予期されるＸＭＬ形式との一致を探すことによって、認識することができる。
【００５７】
図６に移ると、文書ジェネレータ６０１とシーケンス図ジェネレータ１０２Ａが、このケースではＸＭＬソースファイルであるソースファイル１０１Ａから文書全体（テキストとシーケンス図の両方を含む）を生成するために並列に使用ができる個別の構成要素として実現される例示的なシステム６００を示す。このケースでは、主文書生成アプリケーション６０１のソースパーサ３０１Ａは、入力ソースファイル１０１Ａをパーズしてその内部データモデル３０２Ａを構築する。例えば、データモデル３０２Ａは、ソースファイル１０１Ａに記述されている文字要素やシーケンス図要素などのソースファイル１０１Ａ内の要素を識別する。ソースパーサ３０１Ａによって識別されるシーケンス図要素の場合、ソースパーサ３０１Ａは、データモデル３０２Ａ内に、ソースファイル１０１Ａの対応する部分がシーケンス図要素を記述することを示す識別子、ソースファイル名、および／または例えば（後述するようなシーケンス図ジェネレータ１０２Ａによって）生成されるシーケンス図に使用される出力ファイル名のような情報を含めることができる。ソースパーサ３０１Ａによって構築される内部データモデル３０２Ａは、ソースファイル１０１Ａに記述された様々な要素（例えば、文字要素やシーケンス図要素）の関係と階層を維持する。したがって、得られる出力文書６０５は、ソースファイル１０１Ａ内に様々な文字要素とシーケンス図要素が生じる相対的な順序を維持するように生成することができる。
【００５８】
文書ジェネレータ６０１は、データモデル３０２Ａから、この例ではＨＴＭＬで出力文書６０５の様々なセクションを生成する。より具体的には、文書パーサ６０２は、データモデル３０２Ａ内の情報を使用して、ＨＴＭＬ出力文書６０５に書き込まれるソースファイル１０１Ａの文字部分を識別し、さらにシーケンス図要素を識別する。ソースファイル１０１Ａ内のシーケンス図定義のそれぞれの例は、外部画像ファイル１０３Ａに対する生成されたＨＴＭＬ文書６０５内の参照６０４（例えば、＜ｉｍｇ  ｓｒｃ＝“ｘｘｘ”＞タグ）になる。
【００５９】
入力ソースファイル１０１Ａは、また、前述のようにソースファイル１０１Ａ内の各シーケンス図定義の出力ダイアグラムファイル１０３Ａを作成するシーケンス図ジェネレータアプリケーション１０２Ａに送られる。この例において、文書パーサ６０２が、ソースファイル１０１Ａの内部データモデル３０２Ａ内の識別されたシーケンス図要素に遭遇したとき、そのような文書パーサ６０２は、シーケンス図ジェネレータ１０２Ａを呼び出し、そのシーケンス図ジェネレータに、対応するシーケンス図を生成させる。したがって、シーケンス図ジェネレータ１０２Ａは、ソースファイル１０１Ａにアクセスし、その中に定義されている対応するシーケンス図要素を識別し、前述のように（例えば、図３のシーケンス図ジェネレータ１０２によって）ソースファイルの記述に基づいて適切なシーケンス図１０３Ａを生成する。すなわち、ソースパーサ３０１は、図３に関して前に説明したように、ＸＭＬソースファイル１０１Ａをパーズし、内部データモデル３０２を、そのようなソースファイル１０１Ａ内に記述された識別されたシーケンス図に対応する情報で埋める。ダイアグラムパーサ３０３は、前述のようにシーケンス図ファイル１０３Ａを生成するために、内部データモデル３０２をパーズし、レンダリングエンジン２０３に描画コマンドを生成する。
【００６０】
したがって、この例示的な実施形態において、（文書ジェネレータ６０１の）ソースパーサ３０１Ａは、ソーステキスト１０１Ａを読み込み、構文を確認し、そして生成される文書６０５に文字コンテンツとして含まれるソース１０１Ａから読み込んだすべての情報を表す内部データモデル３０２Ａを構築し、同時に（シーケンス図ジェネレータ１０２Ａの）ソースパーサ３０１は、ソーステキスト１０１Ａを読み込み、構文を確認し、ソース１０１Ａ内に記述されたすべてのシーケンス図を表す内部データモデル３０２を構築する。データモデル３０２と３０２Ａは、ソース１０１Ａ内に表現された（例えば、文字コンテンツとシーケンス図の）階層と関係を保持する。文書ジェネレータ６０１の文書パーサ６０２は、モデルデータ３０２Ａを処理して、文書６０５内に生成されるセクションを識別し、各セクションの内容を抽出する。次に、文書パーサ６０２は、一連の出力フォーマットコマンドをＨＴＭＬジェネレータ６０３に生成する。ＨＴＭＬジェネレータ６０３は、フォーマットコマンドを適切な形のＨＴＭＬに変換し、それを出力ファイル６０５に書き込む。
【００６１】
したがって、文書ジェネレータ６０１は、ソースファイル１０１Ａを使用して、出力ファイル６０５用のテキストを作成し、ソースファイル１０１Ａ内の識別されたシーケンス図に対する参照（例えば、ハイパーリンク）６０４を作成し、シーケンス図ジェネレータ１０２Ａは、ソースファイル１０１Ａ内で識別されたシーケンス図１０３Ａを作成する。したがって、特定の実施形態において、参照６０４は、対応するシーケンス図への文書６０５内のハイパーリンクでよく、それにより、ユーザは、そのハイパーリンクをクリックして対応するシーケンス図１０３Ａにアクセスすることができる。他の実施形態において、シーケンス図１０３Ａは、文書６０５内の対応する参照６０４に表示されてもよい。
【００６２】
図７に移ると、シーケンス図ジェネレータが文書ジェネレータアプリケーション６０１Ａ内に組み込まれた例示的なシステム７００を示す。この場合、シーケンス図ジェネレータの機能は、文書ジェネレータ６０１Ａと一体化されられる。入力ソースファイル１０１Ａは、ソースパーサ３０１Ａによって１回パーズされ、文書パーサ６０２とダイアグラムパーサ３０３Ａは、共通の内部データモデル３０２Ａを共用する。したがって、ソースパーサ３０１Ａは、この例において、ソースファイル１０１Ａに含まれる文字コンテンツ情報とシーケンス図情報をパーズし、同時に、そのようなソースファイル１０１Ａの関係と階層を維持する。文書パーサ６０２は、入力ソースファイル１０１Ａ内に見つけた各シーケンス図定義のダイアグラムパーサ３０３Ａを呼び出す。
【００６３】
ある意味において、図７のこの文書ジェネレータの構成は、各生成されたシーケンス図の入力ファイルと所望の出力ファイルの名前と場所を識別するための２つの別々のアプリケーション間で情報を伝えなくてもよくするので、より単純な解決策である。この情報はすべて１つのアプリケーションに含まれる。
【００６４】
シーケンス図ジェネレータと文書ジェネレータは、１つの実施形態において、コンピュータ可読媒体に記憶されかつパーソナルコンピュータ（ＰＣ）などのプロセッサ搭載装置によって実行可能なソフトウェアコードである。しかしながら、前述のシーケンス図ジェネレータと文書ジェネレータの要素が、ソフトウェア、ハードウェア、および／またはその組み合わせで実現されてもよいことを理解されたい。
【００６５】
本発明とその利点を詳細に説明したが、添付の特許請求の範囲によって定義されるような発明の趣旨と範囲から逸脱することなく様々な変更、代用および改変を行うことができることを理解されたい。さらに、本出願の範囲は、本明細書に含まれるプロセス、装置、製造、組成物、手段、方法、および段階の特定の実施形態に限定されるものではない。当業者が本発明の開示から容易に理解するように、本発明に従って本明細書に示した実施形態を利用できるのと実質的に同じ機能を実行するかまたは同じ結果を実質的に達成する現在既存あるいは後に開発される予定のプロセス、装置、製造、組成物、手段、方法、または段階を利用することができる。したがって、添付の特許請求の範囲は、そのようなプロセス、装置、製造、組成物、手段、方法、または段階を範囲内に含むように意図されている。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態によるシーケンス図ジェネレータを含む例示的なシステムを示す図である。
【図２】本発明の特定の実施形態によるシーケンス図ジェネレータを示す図である。
【図３】本発明の１つの例示的な実施形態によるシーケンス図ジェネレータをより詳しく示す図である。
【図４】本発明の１つの実施形態によるシーケンス図ジェネレータが生成することができる例示的なシーケンス図である。
【図５】本発明の１つの実施形態によるシーケンス図ジェネレータの動作流れ図である。
【図６】ソースファイルから文書全体（テキストとシーケンス図の両方を含む）を生成するために並列に使用できる個別の構成要素として文書ジェネレータとシーケンス図ジェネレータが実施される例示的なシステムを示す図である。
【図７】シーケンス図ジェネレータが文書ジェネレータアプリケーションに組み込まれた例示的なシステムを示す図である。
【００６７】
る。
【符号の説明】
【００６８】
１０１  文字ソースファイル
１０２  シーケンス図ジェネレータ
１０３  シーケンス図
２０３  レンダリングエンジン
３０１  ソースパーサ
３０２  データモデル
３０３  ダイアグラムパーサ
【図１】
2006202277.tif 000011
【図２】
2006202277.tif 000012
【図３】
2006202277.tif 000013
【図４】
2006202277.tif 000014
【図５】
2006202277.tif 000015
【図６】
2006202277.tif 000016
【図７】
2006202277.tif 000017