(57)【特許請求の範囲】
【請求項１】
複数のブロックからなるデータを編集する編集手段と、
前記各ブロック間に、下位のブロックが上位のブロックの内容を継承する上下関係を設定する設定手段と、
前記上下関係により下位となるブロックごとに、当該上下関係における上位ブロックとの相違を表す相違データを格納する格納手段と、
最下位のブロックから最上位のブロックまで順次前記上下関係を遡りながら、各上下関係における下位ブロックとなる各ブロックの内容を、当該ブロックの前記相違データ及び当該上下関係における上位ブロックの内容に基づいて決定する決定手段と、
前記複数のブロックの各要素から共通要素を抽出する抽出手段と、
抽出された前記共通要素によって、当該共通要素の抽出元である前記複数のブロックに対して共通の上位階層となる新規ブロックを生成し、当該複数のブロックから当該共通要素を削除して当該新規ブロックの内容を継承する下位ブロックとする生成手段を有し、
前記各ブロックの前記相違データは、前記上下関係における上位ブロックから継承されるブロックの要素に追加すべき追加要素を表す追加データ及び当該上位ブロックから継承されるブロックの要素から削除すべき削除要素を表す削除データを含み、
前記決定手段は、
前記追加データを記録するためのデータ領域である追加リストと、前記削除データを記録するためのデータ領域である削除リストを用い、
前記ブロックごとに、当該ブロックの前記相違データに含まれるすべての要素を順次選択し、
前記追加要素については、前記削除リストに含まれていない場合に当該要素の追加データを前記追加リストに加入し、
前記削除要素については、前記追加リストに含まれていない場合に当該要素の削除データを前記削除リストに加入するように構成され、
前記要素は、ソフトウェアの動作仕様を表す遷移を含み、
各遷移は、少なくともイベント・アクション・遷移前の始状態及び遷移後の終状態によって規定され、
前記抽出手段は、
相互に対応している前記始状態同士及び前記終状態同士についてその対応関係を保持するデータ領域である対応テーブルを用い、
複数のブロック間において前記イベントと前記アクションが共通の遷移について、前記始状態又は前記終状態のうち少なくとも一方同士が対応せずかつ対応していない各状態のそれぞれ一方ずつが前記対応テーブルに存在する場合以外は当該遷移を前記共通要素として抽出し、
当該遷移を抽出した場合は、前記対応テーブルに存在していなかった状態同士を対応するものとして前記対応テーブルに登録するように構成されたことを特徴とするデータ編集装置。
【請求項２】
前記抽出の基礎とするブロックを選択するためのブロック選択手段を有することを特徴とする請求項１記載のデータ編集装置。
【請求項３】
抽出された前記共通要素から新たなブロックを構成する要素を選択するための要素選択手段
を有することを特徴とする請求項１記載のデータ編集装置。
【請求項４】
前記編集手段は、
前記ブロックに対する編集内容が要素の追加の場合は、当該要素を編集対象となっている前記ブロックである対象ブロックの前記追加データに追加し、
前記編集内容が要素の削除の場合は、当該要素が前記上位ブロックから継承したものであれば前記対象ブロックの前記削除データに当該要素を追加し、当該要素が前記対象ブロックにおいて追加されたものであれば前記対象ブロックの前記追加データから当該要素を削除し、
前記編集内容が要素の変更の場合は、当該要素が前記上位ブロックから継承したものでなければ前記対象ブロックの前記追加データ内の当該要素のデータを変更し、当該要素が前記対象ブロックの前記上位ブロックから継承したものであれば前記対象ブロックの前記削除データに当該要素のデータを追加するとともに前記対象ブロックの前記追加データに変更後の当該要素のデータを追加するように構成されたことを特徴とする請求項１記載のデータ編集装置。
【請求項５】
前記編集手段は、編集対象となっている前記対象ブロックに前記下位ブロックが存在し、かつ、当該下位ブロックの前記削除データに当該対象ブロックで削除された要素が存在する場合に、当該削除データから当該要素を削除するように構成された
ことを特徴とする請求項４記載のデータ編集装置。
【請求項６】
前記格納手段は、前記各上下関係における最上位の前記ブロックの内容を、当該ブロックの前記相違データとして格納するように構成されたことを特徴とする請求項１記載のデータ編集装置。
【請求項７】
前記ブロックの各要素を所定の各識別子で表すとともに、これら各識別子に所望の名称を対応させる対応手段
を有することを特徴とする請求項１記載のデータ編集装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、状態遷移モデルのようなデータを編集するデータ編集装置の改良に関するもので、特に、複数のブロックを含むデータを効率的に編集するデータ編集装置に係る。
【０００２】
【従来の技術】
従来から、各種のデータ編集装置が知られている。データ編集装置は、編集対象が文字であるか図形であるかなどに応じて各種のものが存在するが、データ編集装置の適用分野の一例はソフトウェア開発である。
【０００３】
制御ソフトウェアなどソフトウェアの動作仕様を記述するためには、状態遷移モデルがしばしば利用される。状態遷移モデルとは、ソフトウェアの動作仕様を表現する形式の一つで、ソフトウェアやそのルーチンを、複数の状態に遷移する存在として表す。遷移は通常、ソフトウェアの動作を構成する要素であって、遷移前の状態において（始状態）所定の条件が成立すると（イベント）、所定の処理を実行し（アクション）、次の状態へ遷移する（終状態）ものである。
【０００４】
状態遷移モデルの具体的記述法は図や表の形式など各種知られているが、代表的な形式は状態遷移図である。そして、ソフトウェア開発過程は、状態遷移図をデータ編集装置で編集する作業を多く含む。
【０００５】
なお、単一のソフトウェアであっても、一般に動作仕様は複雑あるいは多様であるため、単一の状態遷移図で全体の動作仕様を記述すると状態数が爆発的に大きくなり、記述や理解が困難になる。そこで、機能ごと、ルーチンごとなど所望の単位ごとの状態遷移図を複数組み合わせて動作仕様を記述することが一般的である。以下、所望の単位の状態遷移図をブロックと呼ぶ。
【０００６】
【発明が解決しようとする課題】
しかしながら、上記のような従来のデータ編集装置には、ブロックの編集の際に繁雑な手順を要し、効率的なシステム開発が困難という問題点が存在した。
【０００７】
すなわち、まず第１に、各ブロックの内部情報が別個独立であったため、共通要素であっても複数のブロックに記述するためには、同じ内容を各ブロックに繰り返し記述するという繁雑な手順が必要であった。また、このような共通要素を変更する場合も、全てのブロックに対して変更の作業を繰り返すという繁雑な手順が必要であった。さらに、同一内容の重複記載によって所要メモリ量が増大し、コストが増大するという問題点が存在した。
【０００８】
第２に、既存のブロックに変更を加えて再利用し新たなブロックとする場合の作業効率向上が困難であった。すなわち、ソフトウェア開発の途中、特に初期において、どのブロックでも用いられる共通要素を集めたひな型のブロックをあらかじめ準備することは事実上困難である。むしろ実際には、複数のシステムやブロックを作成する過程で徐々にその共通部分が認識されていく場合が多い。したがって、ブロックの再利用の際には、既存のブロックを適宜選び、新たなブロックのために追加すべき要素を考察するだけでなく、選んだブロックに含まれる要素から不要なものを選択して削除するという繁雑な手順を要した。
【０００９】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、その目的は、複数のブロックを含むデータを対象として、複数のブロックから共通の上位階層を抽出しながらデータを効率的に編集するデータ編集装置を提供することである。
【００１０】
【課題を解決するための手段】
上記の目的を達成するため、本発明の一つの態様におけるデータ編集装置は、複数のブロックからなるデータを編集する編集手段と、前記各ブロック間に、下位のブロックが上位のブロックの内容を継承する上下関係を設定する設定手段と、前記上下関係により下位となるブロックごとに、当該上下関係における上位ブロックとの相違を表す相違データを格納する格納手段と、最下位のブロックから最上位のブロックまで順次前記上下関係を遡りながら、各上下関係における下位ブロックとなる各ブロックの内容を、当該ブロックの前記相違データ及び当該上下関係における上位ブロックの内容に基づいて決定する決定手段と、前記複数のブロックの各要素から共通要素を抽出する抽出手段と、抽出された前記共通要素によって、当該共通要素の抽出元である前記複数のブロックに対して共通の上位階層となる新規ブロックを生成し、当該複数のブロックから当該共通要素を削除して当該新規ブロックの内容を継承する下位ブロックとする生成手段を有し、前記各ブロックの前記相違データは、前記上下関係における上位ブロックから継承されるブロックの要素に追加すべき追加要素を表す追加データ及び当該上位ブロックから継承されるブロックの要素から削除すべき削除要素を表す削除データを含み、前記決定手段は、前記追加データを記録するためのデータ領域である追加リストと、前記削除データを記録するためのデータ領域である削除リストを用い、前記ブロックごとに、当該ブロックの前記相違データに含まれるすべての要素を順次選択し、前記追加要素については、前記削除リストに含まれていない場合に当該要素の追加データを前記追加リストに加入し、前記削除要素については、前記追加リストに含まれていない場合に当該要素の削除データを前記削除リストに加入するように構成され、前記要素は、ソフトウェアの動作仕様を表す遷移を含み、各遷移は、少なくともイベント・アクション・遷移前の始状態及び遷移後の終状態によって規定され、前記抽出手段は、相互に対応している前記始状態同士及び前記終状態同士についてその対応関係を保持するデータ領域である対応テーブルを用い、複数のブロック間において前記イベントと前記アクションが共通の遷移について、前記始状態又は前記終状態のうち少なくとも一方同士が対応せずかつ対応していない各状態のそれぞれ一方ずつが前記対応テーブルに存在する場合以外は当該遷移を前記共通要素として抽出し、当該遷移を抽出した場合は、前記対応テーブルに存在していなかった状態同士を対応するものとして前記対応テーブルに登録するように構成されたことを特徴としている。
【００１２】
本発明の上記データ編集装置は、一つの態様において、さらに、前記抽出の基礎とするブロックを選択するためのブロック選択手段を有する。
【００１３】
本発明の上記データ編集装置は、一つの態様において、さらに、抽出された前記共通要素から新たなブロックを構成する要素を選択するための要素選択手段を有する。
【００１４】
本発明の上記データ編集装置は、一つの態様において、さらに次のような構成を有する。すなわち、前記編集手段は、前記ブロックに対する編集内容が要素の追加の場合は、当該要素を編集対象となっている前記ブロックである対象ブロックの前記追加データに追加し、前記編集内容が要素の削除の場合は、当該要素が前記上位ブロックから継承したものであれば前記対象ブロックの前記削除データに当該要素を追加し、当該要素が前記対象ブロックにおいて追加されたものであれば前記対象ブロックの前記追加データから当該要素を削除し、前記編集内容が要素の変更の場合は、当該要素が前記上位ブロックから継承したものでなければ前記対象ブロックの前記追加データ内の当該要素のデータを変更し、当該要素が前記対象ブロックの前記上位ブロックから継承したものであれば前記対象ブロックの前記削除データに当該要素のデータを追加するとともに前記対象ブロックの前記追加データに変更後の当該要素のデータを追加するように構成される。
【００１５】
本発明の上記データ編集装置は、一つの態様において、さらに次のような構成を有する。すなわち、前記編集手段は、編集対象となっている前記対象ブロックに前記下位ブロックが存在し、かつ、当該下位ブロックの前記削除データに当該対象ブロックで削除された要素が存在する場合に、当該削除データから当該要素を削除するように構成される。
【００１６】
本発明の上記データ編集装置は、一つの態様において、さらに次のような構成を有する。すなわち、前記格納手段は、前記各上下関係における最上位の前記ブロックの内容を、当該ブロックの前記相違データとして格納するように構成される。
【００１７】
本発明の上記データ編集装置は、一つの態様において、さらに、前記ブロックの各要素を所定の各識別子で表すとともに、これら各識別子に所望の名称を対応させる対応手段を有する。
【００１８】
【作用】
上記のような構成を有する本発明は、以下のような作用を有する。すなわち、編集手段によって複数のブロックからなるデータを編集する際に、設定手段によって、前記各ブロック間に下位ブロックが上位ブロックの内容を継承する上下関係を設定しておく。そして、格納手段に、下位ブロックごとに上位ブロックとの相違を表す相違データを格納しておく。そして、編集などのために下位ブロックの内容を出力する場合は、決定手段が、下位ブロックの内容を前記上位ブロックの内容及び当該下位ブロックの相違データに基づいて決定する。
【００１９】
このように、本発明のデータ編集装置では、ブロック間に上下関係を設定すれば、上位ブロックの内容が下位ブロックにおいて再記述することなく継承され、下位ブロックの内容をなす。このため、共通の要素を持つ上位ブロックに基づいて複数の下位ブロックを作成する場合、各下位ブロックにおいては上位ブロックに含まれる共通要素との相違のみを記述すればよく、データの編集作業が効率化される。
【００２０】
また、共通部分を変更する場合も、上位ブロックを変更すれば下位ブロックの内容が継承関係に基づいて自動的に変更されるので、データの編集作業が一層効率化される。
【００２１】
また、追加データと削除データを組み合わせることによって、要素の追加や削除のみならず要素の変更など他の態様の相違をも表すことができる。
【００２２】
また、継承関係の下位ブロックにおける各要素の存否は、仮に継承関係が多段に構成され、当該要素の追加・削除が何度繰り返される場合でも当該要素に関する最後の（最下位の）追加又は削除が決する。このため、継承順とは逆に上位ブロックを辿ることによって、最下位側で追加又は削除された要素についてはそれより上位の処理で無視することができる。このため、最上位から継承順に相違データを収集する場合と比べ、処理が効率化される。
【００２３】
また、追加リスト・削除リストに加入する要素がそれぞれ、下位のブロックにおいて削除・追加されないものに限定されるので、内容決定の処理が効率化される。
【００２４】
また、複数ブロック間の共通要素が抽出され、これら共通要素によって当該複数ブロックの共通の上位階層となる新規ブロックが生成されると同時に、当該複数ブロックから当該共通要素が削除される。このため、メモリ効率が向上し、また、共通要素の修正の際に当該共通要素を含む各ブロックを修正する重複した手順が不要になる。
【００２５】
また、共通要素をまとめた新規ブロックをひな型として用いれば、新たなブロックを作成する際、不要な要素の削除及び要素の追加の作業が減少し、データ編集が効率化される。また、共通要素をまとめた新規ブロックをひな型とする場合、ひな型を継承するブロックを複数作成することによってデータ編集作業が一層効率化される。
【００２６】
なお、本発明は、いかなるデータの編集にも適用可能であるが、特に、ソフトウェアの動作仕様の編集に適する。すなわち、複数のブロックからなる状態遷移モデルを用いてソフトウェアの動作仕様を記述する場合に、頻繁に使用される動作仕様を上位ブロックとし、下位ブロックで新たな動作仕様のみを記述すれば、ブロックを効率的に再利用することができる。
【００２７】
また、イベント・アクション・始状態・終状態によって規定される遷移を要素とすることにより、始状態や終状態が異なってもイベントとアクションが共通する遷移は抽出の対象となるので、多様な要素を共通要素として抽出することができる。
【００２８】
また、イベントとアクションが共通する複数の遷移について、対応テーブルを用いて始状態や終状態の対応関係を判断することにより、遷移の始状態又は終状態のうち少なくとも一方がすでに他の遷移の始状態又は終状態と対応している場合すなわち結合状態が異なる場合を除いて共通要素として抽出される。このため、単純な基準で合理的な抽出を行なうことができる。
【００２９】
また、ブロック選択手段を有する構成では、抽出の基礎とするブロックを自由に選択できるので、目的に応じた抽出を行うことができる。
【００３０】
また、要素選択手段を有する構成では、抽出された共通要素から、実際に新たなブロックを構成させる要素として、真に必要な要素を判断して選択できるので、目的により合致した新規ブロックを生成することができる。
【００３１】
また、編集手段により、対象ブロックに対する編集内容に応じて、対象ブロックの追加データ・削除データのデータ処理を行う構成では、編集に基づくデータ更新において、要素の削除・変更の場合に当該要素が継承されたものか否かに応じて適切な処理を自動的に行うことができる。
【００３２】
また、下位ブロックの削除データに対象ブロックで削除された要素が存在する場合に、当該要素を削除する構成では、継承関係に関する編集において、ブロック相互間における矛盾の発生が自動的に防止される。
【００３３】
また、最上位のブロックの内容を相違データとして格納する構成では、最上位のブロックの内容を他の下位ブロックと共通の追加データとして表すので、データ全体のデータ構造や処理手順を統一して構成を単純化し、費用の低減と処理効率の向上を図ることができる。
【００３４】
また、対応手段を有する構成では、データに含まれる各要素について、内部情報としてはコード番号のような識別子を用いて処理を高速化し、入出力は作業上実際用いる所望の名称を用いることができる。
【００４１】
【実施例】
次に、本発明の実施例について、図面に従って具体的に説明する。なお、後述する実施例はコンピュータ上に実現され、実施例の各機能は、所定の手順（プログラム）がこのコンピュータを制御することで実現される。
【００４２】
本明細書における各「手段」は、実施例の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウェア・ルーチンに１対１には対応しない。同一のハードウェア要素が、場合によって異なった手段を構成する。例えば、コンピュータは、ある命令を実行するときにある手段となり、別の命令を実行するときは別の手段となりうる。また、一つの手段が、わずか１命令によって実現される場合もあれば、多数の命令によって実現される場合もある。
【００４３】
したがって、本明細書では、以下、実施例の各機能を有する仮想的回路ブロック（「手段」又は「部」）を想定して実施例を説明する。但し、コンピュータの使用は一例であり、本発明の機能の全部又は一部は、可能ならば、カスタムチップ（専用の集積回路）のような電子回路上に実現してもよい。
【００４４】
実施例に用いられるコンピュータは、一般には、ＣＰＵ（中央演算処理装置）と、ＲＡＭ（随時書込読出型記憶素子）からなる主記憶装置とを有する。また、前記コンピュータの規模は自由であり、マイクロコンピュータ・パーソナルコンピュータ・スモールコンピュータ・ワークステーション・メインフレームなど、いかなる規模のものを用いてもよい。
【００４５】
また、前記コンピュータのハードウェアは、典型的には、キーボードやマウスなどの入力装置と、ハードディスク装置などの外部記憶装置と、ＣＲＴ表示装置やプリンタ印字装置などの出力装置と、必要な入出力制御回路を含む。
【００４６】
但し、前記コンピュータのハードウェア構成は自由であり、本発明が実施できる限り、上記の構成要素の一部を追加・変更・除外してもよい。例えば、ＣＰＵの種類は自由であり、ＣＰＵを複数同時に用いたり、単一のＣＰＵをタイムシェアリング（時分割）で使用し、複数の処理を同時平行的に行ってもよい。また、他の入力装置（例えば、タッチパネル・ライトペン・トラックボールなどのポインティングデバイスや、デジタイザ・イメージ読取装置やビデオカメラなどの画像入力装置・音声識別装置・各種センサなど）を用いてもよい。また、他の外部記憶装置（例えば、フロッピーディスク装置・ＲＡＭカード装置・磁気テープ装置・光学ディスク装置・光磁気ディスク装置・バブルメモリ装置・フラッシュメモリなど）を用いてもよい。また、他の出力装置（例えば、液晶表示装置・プラズマディスプレイ装置・ビデオプロジェクター・ＬＥＤ表示装置・音響発生回路・音声合成回路など）を用いてもよい。
【００４７】
また、前記コンピュータにおいて実施例を実現するためのソフトウェアの構成としては、典型的には、実施例の各機能を実現するためのアプリケーションプログラムが、ＯＳ（オペレーティングシステム）上で実行される態様が考えられる。また、実施例を実現するためのプログラムの態様としては、典型的には、高級言語やアセンブラからコンパイル（翻訳）された機械語が考えられる。但し、前記コンピュータのソフトウェア構成も自由であり、本発明が実施できる限り、ソフトウェア構成を変更してもよい。例えば、必ずしもＯＳを用いる必要はなく、また、プログラムの表現形式も自由であり、ＢＡＳＩＣのようなインタプリタ（逐次解釈実行型）言語を用いてもよい。
【００４８】
また、プログラムの格納態様も自由であり、ＲＯＭ（読出し専用メモリ）に格納しておいてもよく、また、ハードディスク装置のような外部記憶装置に格納しておき、コンピュータの起動時や処理の開始時に主メモリ上にロード（読み込み）してもよい。また、プログラムを複数の部分に分割して外部記憶装置に格納しておき、処理内容に応じて必要なモジュールのみを随時主メモリ上にロード（読み込み）してもよい。さらに、プログラムの部分ごとに異なった態様で格納してもよい。
【００４９】
また、本実施例における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、また、実行ごとに異なった順序で実行してもよい。このような順序の変更は、例えば、ユーザが実行可能な処理を選択するなどメニュー形式のインターフェース手法によって実現することができる。
【００５０】
また、本明細書における「入力」は、本来の情報の入力のみならず、情報の入力と密接に関連する他の処理を含む。このような処理は、例えば、入力内容のエコーバックや修正・編集である。また、本明細書における「出力」は、本来の情報の出力のみならず、情報の出力と密接に関連する他の処理を含む。このような処理は、例えば、出力すべき範囲の入力や、画面スクロールの指示である。なお、対話的入出力手順によって入力と出力を一体的操作によって実現してもよく、このような一体的操作によって、選択・指定・特定などの処理を行ってもよい。
【００５１】
また、本明細書におけるデータ（情報）やデータの格納手段は前記コンピュータ上においていかなる態様で存在してもよい。例えば、データのハードウェア上の所在部分は、主記憶装置・外部記憶装置・ＣＰＵのレジスタやキャッシュメモリなどいかなる部分でもよい。また、データの保持態様も自由である。例えば、データは、ファイル形式で保持されるのみならず、メモリやディスクなどの記憶装置を物理的アドレスで直接アクセスすることによって実現してもよい。また、データの表現形式も自由で、例えば、文字列を表すコードの単位は、文字単位でも単語単位でもよい。また、データは必要とされる一定時間だけ保持されれば十分で、その後消滅してもよく、保持時間の長短は自由である。また、辞書データのように当面変更されない情報は、ＲＯＭに格納してもよい。
【００５２】
また、本明細書において、特定の情報への言及は確認的で、言及されない情報の存在を否定するものではない。すなわち、本発明の動作では、動作に必要な一般的な情報、例えば、各種ポインタ、カウンタ、フラグ、パラメータ、バッファなどが適宜用いられる。
【００５３】
実施例の各部分が処理に要する情報は、特に記載がない場合、当該情報を保持している他の部分から獲得される。このような情報の獲得は、例えば、当該情報を格納している変数やメモリをアクセスすることによって実現することができる。なお、情報の消去・抹消は、当該情報の内容自体を必ずしも記憶領域から現実に削除せず、消去を表すフラグを設定するなど、情報の意味付けの変更によって行うことができる。
【００５４】
［１．実施例の構成］
本実施例のデータ編集装置（以下「本装置」という）は請求項１〜８に対応するもので、本実施例の目的は、複数のブロックを含むデータを対象として、複数のブロックから共通の上位階層を抽出しながらデータを効率的に編集するデータ編集装置を提供することである。
【００５５】
まず、図１は、本実施例のデータ編集装置の構成を示す機能ブロック図である。この図に示すように、本装置は、複数のブロック（以下ＳＴＤと略することがある）からなる状態遷移図をデータとして編集する編集手段１と、前記各ブロック間に、下位ブロックが上位ブロックの内容を継承する上下関係２を設定する設定手段３を有する。また、本装置は、前記下位ブロックごとに、前記上位ブロックとの相違を表す相違データを格納する格納手段４と、前記下位ブロックの内容を前記上位ブロックの内容及び当該下位ブロックの相違データに基づいて決定する決定手段５とを有する。
【００５６】
また、本装置は、ブロックの各要素を所定の識別子で表すが、各識別子に所望の名称を対応させる対応手段６を有する。また、本装置は、複数のブロックから共通要素を抽出する抽出手段７と、抽出された共通要素によって新たなブロックを生成する生成手段８とを有する。また、本装置は、前記抽出の基礎とするブロックを選択するブロック選択手段９と、抽出された共通要素から新たなブロックを構成する要素を選択するための要素選択手段１０とを有する。
【００５７】
［２．実施例の作用及び効果］
［２−１．データ構造］
上記のような構成を有する本装置では、編集手段１によって複数のブロックからなるデータを編集する際に、設定手段３によって、前記各ブロック間に下位ブロックが上位ブロックの内容を継承する上下関係２を設定しておく。
【００５８】
図２は、本実施例におけるブロックの例を示す。本実施例におけるブロックは、図２に例示するように階層構造を持ち、上位のブロックであるＳＴＤ−１と、ＳＴＤ−１の下位階層であるＳＴＤ−２及びＳＴＤ−３の計３つである。
【００５９】
これらブロック間の上下関係は次のようなデータで表される。図３は、本実施例におけるブロック間の関係の他の例であり、図４は、図３のブロック間の関係を表すデータ（以下「リンクテーブル」という）の例である。例えば、ＳＴＤ−１の下位階層にＳＴＤ−３が存在する事実を示すデータを、図４において破線で示す。
【００６０】
また、図５はＳＴＤ−１の内容、図６はＳＴＤ−３の内容を示す。ＳＴＤ−１は遷移Ｔ−１，Ｔ−２，Ｔ−３を有し、ＳＴＤ−３は遷移Ｔ−１，Ｔ−３，Ｔ−４を有する。
【００６１】
本実施例では各上下関係において、格納手段４に、前記下位ブロックごとに前記上位ブロックとの相違を表す相違データを格納しておく。相違データは、上位ブロックから継承されるブロックの要素に追加すべき追加要素（追加遷移）を表す追加データ及び上位ブロックから継承されるブロックの要素から削除すべき削除要素（削除遷移）を表す削除データを含む。このように、本実施例では、追加データと削除データを組み合わせることによって、要素の追加や削除のみならず要素の一部の変更など他の態様の相違も表すことができる。
【００６２】
なお、図７はＳＴＤ−３に対応する相違データの内容を示す。図７では、上位ＳＴＤ−１の内容に追加される遷移Ｔ−４を実線で、また、上位ＳＴＤ−１から継承されず削除される遷移Ｔ−２を破線で示す。
【００６３】
すなわち、ＳＴＤ−３（図６）において、遷移Ｔ−１，Ｔ−３はＳＴＤ−１から継承されたものであり、遷移Ｔ−４はＳＴＤ−３において新規に追加されたものであり、遷移Ｔ−２は削除されている。
【００６４】
次に、図８は、本実施例における複数のブロックのデータの構成例を示す。このデータは、各ブロックの識別子（ＩＤ）ごとに、当該ブロックの追加テーブル及び削除テーブルを格納する所定のメモリ領域の先頭番地を指すポインタ４１を格納したものである。追加テーブル及び削除テーブルはそれぞれ追加データ及び削除データを格納するための記憶領域である。図８では、例えば、テーブルポインタ４１が、ＳＴＤ−１についてテーブル４２，４３、ＳＴＤ−３についてテーブル４４，４５を指している。
【００６５】
各テーブルは１又は２以上の遷移のデータを含む。単一の遷移のデータは、それぞれ遷移の識別子（ＩＤ）、イベント（遷移の発火条件）、始状態（遷移元の状態）、終状態（遷移先の状態）、アクション（遷移時の動作）のデータを含む。これらの各データは識別用の内部情報である識別子で表される。例えば遷移ＩＤが「Ｔ−１」である遷移は、始状態「Ｓ１」、終状態「Ｓ２」、イベント「Ｅ１」、アクション「Ａ１，Ａ２」という情報を持っている。
【００６６】
追加テーブル内の遷移は、このテーブルを保持しているブロックにおいて新たに追加されたものであり、このブロックの下位ブロックに継承される。
【００６７】
なお、前記格納手段４は、前記各上下関係における最上位のブロックの内容を、当該ブロックに対応する前記相違データとして格納するように構成してもよい。このようにすれば、最上位のブロックの内容を他の下位ブロックと共通の追加データとして表すので、データ全体のデータ構造や処理手順を統一して構成を単純化し、費用の低減と処理効率の向上を図ることができる。
【００６８】
また、本実施例では、ブロックの各要素を所定の識別子で表すが、各識別子には、対応手段６によって所望の名称を対応させることができる。このため、ブロックのデータに含まれる各要素について、内部情報としてはコード番号のような識別子を用いて処理を高速化し、入出力は作業上実際用いる所望の名称を用いることができる。
【００６９】
このような対応関係を表すデータの一例を図９〜１１に示す。図９はイベントの識別子と名称との対照テーブル（イベント名称テーブル）の例、図１０はアクションの識別子と名称との対照テーブル（アクション名称テーブル）の例、図１１は状態の識別子と名称との対照テーブル（状態名称テーブル）の例である。例えば、図９では、ＩＤがＥ１であるイベントの名称は「イベント１」であることが表されている。
【００７０】
これらの対応関係に従えば、遷移Ｔ−１は実際の入出力では『「状態１」から「状態２」への遷移であり、イベントは「イベント１」、アクションは「アクション１」である遷移』として扱われることとなる。
【００７１】
一方、図８における削除テーブルは、上位ブロックから継承しない遷移については遷移ＩＤのみを保持する。遷移の削除については、削除される遷移が特定できれば十分だからである。
【００７２】
なお、図１２は、図９〜１１に示した識別子（ＩＤ）と名称の対応関係を表すデータの構成の他の例である。すなわち、これらのデータは、図１２に示すように、単一のブロックのデータごとに対照テーブルとして格納してもよい。このようにすれば、同じ遷移や状態の名称についても、特定のブロックにおいて上位ブロックとは異なった名称で扱うことができる。
【００７３】
例えば、図１２では、ＳＴＤ−１のデータ６１に、状態名称テーブル６２が従属し、ＳＴＤ−２のデータ６３には状態名称テーブル６４が従属している。そして、テーブル６２は、ＳＴＤ−１に含まれる状態Ｓ２が「状態２」との名称で入出力すべき旨の情報６２−ａを含む。また、テーブル６４は、ＳＴＤ−２に含まれる状態Ｓ２，Ｓ３がそれぞれ「状態あ」，「状態３」との名称で入出力すべき旨の情報６４−ａ，６４−ｂを含む。この結果、状態Ｓ２はＳＴＤ−１では「状態２」として入出力されるが、ＳＴＤ−２では「状態３」として入出力される。
【００７４】
［２−２．編集の概要］
図１３は、本実施例のデータ編集装置におけるブロックの編集の典型的な手順を示すフローチャートである。この手順は、ユーザが既存のブロックをひな型として指定して、このブロックの内容を継承する新たな下位ブロックを表示させ、当該下位ブロックの内容を編集する場合のものである。
【００７５】
図１３の手順では、まず、ユーザが編集対象とするブロック（以下「対象ブロック」という）を指定する（ステップ１３１）。対象ブロックが新規のものである場合（ステップ１３２）、対象ブロックに対して識別子が発行される（ステップ１３３）。
【００７６】
また、ユーザは、対象ブロック指定時に対象ブロックが内容を継承する直近上位のブロックを上位ブロックとして指定することができる。上位ブロックの指定があった場合（ステップ１３４）は、上位ブロックと対象ブロックとの間の上下関係（階層関係）がリンクテーブルに設定される（ステップ１３５）。次に、対象ブロックの内容が決定され（ステップ１３６）、対象ブロックの内容が表示装置に表示される（ステップ１３７）。そして、ユーザが編集操作を入力すると（ステップ１３８）、編集操作に応じてデータが更新され（ステップ１３９）、編集後の対象ブロックが再表示される（ステップ１３１０）。
【００７７】
［２−３．内容の決定］
ここで、下位ブロックとして対象ブロックの内容を決定する手順を具体的に説明する。すなわち、この手順では、前記決定手段５は、内容を決定しようとする対象ブロックから最上位のブロックまで順次遡りながら、各ブロックの相違データに基づいて前記内容を決定する。
【００７８】
そして、対象ブロックにおける各遷移の存否は、継承関係が多段に存在し当該遷移の追加・削除が何度繰り返される場合でも、当該遷移に関する最後の（最下位の）追加又は削除が決する。このため、最下位側で追加又は削除された遷移についてはそれより上位の処理で無視することができ、最上位から継承順に相違データを収集する場合と比べ、処理が効率化される。
【００７９】
図１４は、ブロックの内容決定の手順において、各ブロックのデータすなわち追加遷移と削除遷移に対して行う処理の具体的手順を示すフローチャートである。なお、各ブロックを通じての処理において、最上位ブロックの内容に追加すべき要素を保持するデータ領域である追加リストと、最上位ブロックの内容から削除すべき要素を保持するデータ領域である削除リストを用いる。
【００８０】
各ブロックでは、当該ブロックの相違データに含まれるすべての遷移を（ステップ１４１）、順次選択する（ステップ１４２）。そして、追加遷移については（ステップ１４３）、削除リストに含まれていない場合（すなわち当該ブロックよりも下位のブロックで削除されていない場合）に（ステップ１４４）、当該遷移を追加リストに加入する（ステップ１４５）。これは、下位で削除されない遷移は再上位の内容に追加すべきだからである。
【００８１】
一方、追加遷移が削除リストに含まれている場合は（ステップ１４４）、追加遷移は追加リストに加入されない。これは、下位で削除される遷移は上位においても登場しなかったと同様だからである。
【００８２】
また、削除遷移については（ステップ１４６）、追加リストに含まれていない場合は（ステップ１４７）、当該遷移を削除リストに加入する（ステップ１４８）。下位ブロックで追加されない内容は最上位ブロックの内容から削除すべきだからである。一方、削除要素が追加リストに含まれているときは（ステップ１４７）、削除リストに加入しない。最終的に下位ブロックで再度追加される要素は削除リストに加える必要がないからである。
【００８３】
以上のような処理によって、追加リスト・削除リストに加入する要素がそれぞれ下位のブロックにおいて削除・追加されないものに限定され、内容決定の処理が効率化される。なお、再下層では追加リスト・削除リストは空であるから、最下層の追加遷移及び削除遷移は、それぞれ無条件に追加リスト及び削除リストに追加してもよい。
【００８４】
［２−４．データの更新］
ユーザは、以上のように決定された内容を確認して編集内容の指示を入力する。図１５は、本実施例において編集の指示が入力された場合におけるデータの更新（ステップ１３９）の具体的手順を示すフローチャートである。この手順では、まず、前記各名称テーブルに関する変更が行われる（ステップ１５１）。ここでは、編集に伴う状態名の変更、遷移削除に伴う状態の削除、遷移追加に伴う状態の追加などが行われる。なお、編集の指示の入力とデータの更新は、編集作業を終了すべき旨の指示が入力されるまで続けられる。
【００８５】
変更内容が遷移の追加の場合は（ステップ１５２）、編集対象となっている前記ブロックである対象ブロックの追加テーブルに当該遷移を追加する（ステップ１５３）。
【００８６】
また、変更内容が遷移の削除である場合は（ステップ１５４）、当該遷移が上位ブロックから継承したものであれば（ステップ１５５）対象ブロックの削除テーブルに当該遷移が追加され（ステップ１５６）、一方、削除すべき遷移が対象ブロックにて追加されたものであれば（ステップ１５５）、対象ブロックの追加テーブルから当該遷移が削除される（ステップ１５７）。
【００８７】
変更内容が遷移の追加及び削除でない場合すなわち遷移の変更の場合は（ステップ１５４）、当該遷移が上位ブロックから継承したものでなければ（ステップ１５８）対象ブロックの追加テーブル内の当該遷移のデータを変更し（ステップ１５９）、当該遷移が上位ブロックから継承したものであれば（ステップ１５８）対象ブロックの削除テーブルに当該遷移を追加するとともに（ステップ１５１０）対象ブロックの追加テーブルに変更後の当該遷移を追加する（ステップ１５１１）。
【００８８】
このように本実施例では、編集手段１が、遷移の追加・削除・変更に基づくデータ更新において当該遷移が継承されたものか否かに応じて適切な処理を行う。
【００８９】
なお、対象ブロックに下位ブロックが存在し（ステップ１５１２）、下位ブロックの削除テーブルに削除された遷移が存在する場合、この遷移を削除する（ステップ１５１３）。これにより、ブロック相互間における矛盾の発生を防止する。
【００９０】
［２−５．共通要素の抽出］
本実施例では、抽出手段７によって複数のブロックから共通要素（遷移）を抽出し、生成手段８によって共通要素による新たなブロックを生成できる。このため、共通要素をまとめた新規ブロックをひな型として用い、新たなブロックを作成する際、不要な要素の削除及び要素の追加の作業が減少し、データ編集を効率化することができる。
【００９１】
特に、共通要素をまとめた新規ブロックをひな型とし、ひな型を継承するブロックを複数作成すれば、データ編集作業が一層効率化される。
【００９２】
図１６は、本実施例において共通要素の抽出の具体的手順を示すフローチャートである。この手順では、まず、ユーザがブロック選択手段９によって抽出元（基礎）とするブロックを指定するので（ステップ１６１）、目的に応じた抽出を行うことができる。この選択は、ブロック間の階層関係を表す図やブロックの一覧を表示して行えばよい。
【００９３】
続いて、指定された各ブロック間での共通要素が抽出される（ステップ１６２）。この共通要素は新たな上位ブロックを構成する要素の候補である。なお、抽出は、いずれかのブロックから任意の遷移を順次選び、この遷移と他のブロックの各遷移との同一性を順次調査することによって行うことができる。
【００９４】
例えば、ある２つの遷移を比較する場合、複数指定された抽出元ブロックの中から２つを選択し、それぞれの追加テーブルについて、一方のブロックの各遷移を順次取り出す。これら各遷移を、他方のブロックの各遷移と順次比較する。なお、比較対象とする複数のブロックが共通の上位ブロックから継承している各遷移は共通要素として抽出することができる。
【００９５】
図１７は、本実施例における遷移間の比較の具体的手順を示すフローチャートである。本実施例では、イベントおよびアクションの同一性を中心に、遷移の結合関係の関連性を斟酌して、遷移の同一性を判断する。
【００９６】
このように本実施例では、共通要素としてイベント及びアクションが共通の遷移が抽出される。このため、始状態や終状態が異なっても遷移の内容が同じ遷移は抽出の対象となり、多様な共通要素を抽出することができる。なお、この手順において、イベント・アクションの共通性は、名称の如何にかかわらず識別コードの共通性に基づいて判断すればよい。
【００９７】
共通要素の抽出では、相互に対応している状態についてその対応関係を保持するデータ領域である対応テーブルを用いる。そして、抽出手段７は、複数のブロック間においてイベントとアクションが共通の遷移について、始状態又は終状態のうち少なくとも一方同士が対応せず、対応していない各状態のそれぞれ一方ずつが対応テーブルに存在する場合以外は当該遷移を抽出する。また、当該遷移を抽出した場合は、対応テーブルに存在していなかった状態同士を対応するものとして対応テーブルに登録する。
【００９８】
すなわち、図１７において、イベントとアクションが共通の遷移については（ステップ１７１）、両遷移の始状態と終状態が共にそれぞれ対応している場合は（ステップ１７２）、遷移の結合関係が同一と考えられるので、両遷移は共通要素として抽出される（ステップ１７３）。なお、状態の対応関係は、対応すると考えられる状態同士について状態の名称の如何にかかわらず識別子を前記対応テーブルに登録し、この対応テーブルを参照することによって判断される。
【００９９】
始状態と終状態がそれぞれ対応している場合以外で（ステップ１７２）、始状態又は終状態の一方が対応している場合は（ステップ１７４）、対応していない方の状態が対応テーブルに存在するか否かが判断される（ステップ１７５）。対応テーブルに存在していた場合は、当該状態は他の状態と対応しており、比較している遷移同士は対応していないと考えられる。このため、遷移は抽出されず手順は終了する。
【０１００】
ステップ１７５において、対応していない状態が対応テーブルに存在しない場合は、対応していないとされた状態同士が対応するものと考えることができるので、対応していない状態が対応テーブルに追加される（ステップ１７６）。そして、この対応を前提として両遷移が共通要素として抽出される（ステップ１７３）。
【０１０１】
ステップ１７４において始状態も終状態も対応していない場合は、始状態又は終状態が対応テーブルに存在しているかが判断される（ステップ１７７）。このとき、始状態も終状態も対応テーブルに存在していない場合は、両状態の対応がそれぞれ状態対応テーブルに追加され（ステップ１７８）、この対応関係を前提に遷移同士の対応関係が共通要素として抽出される（ステップ１７３）。
【０１０２】
この結果、本発明では、イベントとアクションが共通する複数の遷移について、遷移の始状態又は終状態のうち少なくとも一方がすでに他の遷移の始状態又は終状態と対応している場合すなわち結合状態が異なる場合を除いて、共通要素として抽出される。このような手順をすべての遷移について繰り返すことにより、共通要素が抽出される。例えば、図１８及び図１９は、本実施例における共通要素の抽出の基礎となるブロックの例である。また、図２０は、図１８及び図１９から抽出される共通要素の例である。
【０１０３】
なお、共通要素の抽出の基準は自由である。例えば、すべてのブロックから抽出された要素のみならず、所定の割合のブロック間で共通する要素を抽出要素に含めてもよい。また、共通要素をわずかしか含まないブロックは、無意味なものとして処理対象から除外してもよい。
【０１０４】
続いて、各ブロックから抽出した要素を表示し、ユーザが、要素選択手段１０によって、実際に新たなブロックを構成させる要素を選択する（ステップ１６３）。このため、真に必要な遷移やブロックを判断して選択し、目的に合致した新規ブロックを生成することができる。
【０１０５】
［２−６．新規ブロックの生成］
そして、選択された遷移及びブロックによって、上位ブロックが生成される。この上位ブロックは、抽出の元となったブロックとは別個独立のものして生成することもできるが、一般には、元となった複数のブロックの上位ブロックとして生成し、元のブロックに含まれる共通要素については、新たなブロックから継承させ、元のブロックからは除外することが望ましい。このようにすれば、メモリ効率が向上し、また、共通要素の修正の際に当該共通要素を含む各ブロックを修正する重複した手順が不要になるからである。
【０１０６】
ここでは、元のブロックの内容を上位ブロックにまとめるものとする。この場合、選択された共通要素によって上位の新規ブロックが生成される（ステップ１６４）。なお、この新規ブロックに対しては識別子が発行される。次に、元のすべてのブロックから新規ブロックを構成する要素が削除される（ステップ１６５）。なお、この要素の削除に伴い、対応テーブルに基づいて状態の識別子が新規ブロックの識別子と対応するよう変換される。さらに、新規ブロックと元の各ブロックとの間にリンクが設定される（ステップ１６６）。
【０１０７】
［３．他の実施例］
なお、本発明は上記の実施例に限定されるものではなく、適宜態様を変更して実施できるものであるから、次のような他の実施例をも包含するものである。
【０１０８】
例えば、共通要素の抽出の基準として、「イベントが同じ遷移」を抽出し、アクションは各階層で自由に変更できるようにしてもよい。また、更に他の例としては、アクションを類似しているものごとにグループでまとめておき、「イベントが同じでアクションが同じグループに属している遷移」を親候補として抽出することも可能である。さらに、共通要素の抽出は、蓄積されていく仕様記述などの中から、あらかじめ設定した条件で自動的に行なってもよい。
【０１０９】
また、本発明のデータ編集装置が編集対象とするデータは状態遷移図には限定されず、文字列や図形などいかなるデータに本発明を適用してもよい。また、継承は無差別に行なわず、特定の類型の情報のみ継承させたり、特定のブロック限りのローカルな情報をブロックに持たせれば、一層多様なデータ編集が可能となる。
【０１１０】
また、相違データは追加と削除には限定されず、要素の一部の変更など自由に設定することができる。また、ブロック選択手段や要素選択手段は必ずしも設ける必要はない。
【０１１１】
【発明の効果】
以上説明したように、本発明によれば、上位ブロックの内容が下位ブロックにおいて再記述することなく継承され、下位ブロックの内容をなす。このため、共通の要素を持つ上位ブロックに基づいて複数の下位ブロックを作成する場合、各下位ブロックにおいては上位ブロックに含まれる共通要素との相違のみを記述すればよく、データの編集作業が効率化される。
【図面の簡単な説明】
【図１】本発明の実施例のデータ編集装置の構成を示す機能ブロック図
【図２】本発明の実施例におけるブロックの例
【図３】本発明の実施例におけるブロック間の関係の他の例
【図４】図３のブロック間の関係を表すデータの例
【図５】本発明の実施例におけるＳＴＤ−１の内容
【図６】本発明の実施例におけるＳＴＤ−３の内容
【図７】本発明の実施例におけるＳＴＤ−３に対応する相違データの内容
【図８】本発明の実施例における複数のブロックのデータの構成例
【図９】本発明の実施例におけるイベントの識別子と名称との対照テーブル（イベント名称テーブル）の例
【図１０】本発明の実施例におけるアクションの識別子と名称との対照テーブル（アクション名称テーブル）の例
【図１１】本発明の実施例における状態の識別子と名称との対照テーブル（状態名称テーブル）の例
【図１２】図９〜１１に示した識別子（ＩＤ）と名称の対応関係を表すデータの構成の他の例
【図１３】本発明の実施例におけるブロックの編集の典型的な手順を示すフローチャート
【図１４】本発明の実施例において各ブロックのデータに対して行う処理の具体的手順を示すフローチャート
【図１５】本発明の実施例において編集の指示が入力された場合におけるデータの更新（ステップ１３９）の具体的手順を示すフローチャート
【図１６】本発明の実施例における共通要素の抽出の具体的手順を示すフローチャート
【図１７】本発明の実施例における遷移間の比較の具体的手順を示すフローチャート
【図１８】本発明の実施例における共通要素の抽出の基礎となるブロックの例
【図１９】本発明の実施例における共通要素の抽出の基礎となるブロックの例
【図２０】図１８及び図１９から抽出される共通要素の例
【符号の説明】
１：編集手段
２：上下関係
３：設定手段
４：格納手段
５：決定手段
６：対応手段
７：抽出手段
８：生成手段
９：ブロック選択手段
１０：要素選択手段
【図１】
0003722854.tif 000002
【図２】
0003722854.tif 000003
【図３】
0003722854.tif 000004
【図４】
0003722854.tif 000005
【図５】
0003722854.tif 000006
【図６】
0003722854.tif 000007
【図７】
0003722854.tif 000008
【図８】
0003722854.tif 000009
【図９】
0003722854.tif 000010
【図１０】
0003722854.tif 000011
【図１１】
0003722854.tif 000012
【図１２】
0003722854.tif 000013
【図１３】
0003722854.tif 000014
【図１４】
0003722854.tif 000015
【図１５】
0003722854.tif 000016
【図１６】
0003722854.tif 000017
【図１７】
0003722854.tif 000018
【図１８】
0003722854.tif 000019
【図１９】
0003722854.tif 000020
【図２０】
0003722854.tif 000021