(57)【特許請求の範囲】
【請求項１】
処理単位であるビヘイビアーを複数用いて構成される所定の仕様における該複数のビヘイビアー間の実行順序に対する制約を規定するために、予め定めた順番で逐次的に実行する１又は複数のビヘイビアーを要素として含む第1の種類の構造と、実行する順序に制約のない１又は複数のビヘイビアーを要素として含む第２の種類の構造とを記述することが可能な所定のシステム記述言語により、前記複数のビヘイビアーを要素として記述された、前記所定の仕様の構造を対象として、該構造中の或ビヘイビアーを移動させる操作を行って該構造を変更するための仕様操作装置であって、
前記所定の仕様の持つ構造として、その構造中に、前記第1又は第２の種類の構造に相当する上位層の構造がその要素として前記第1又は第２の種類の構造に相当する下位層の構造を含む階層的な構造部分が存在するものを記憶するための構造記憶手段と、
前記所定の仕様の持つ構造により規定される前記複数のビヘイビアー間の実行順序に対する制約を示す制約情報を記憶するための制約情報記憶手段と、
移動すべきビヘイビアーを示す情報を含み、該ビヘイビアーを、前記所定の仕様の持つ構造中において該ビヘイビアーを要素として含む構造からその上位層又は下位層の構造へ移動させる旨を指示する移動コマンドの入力を受け付ける手段と、
前記制約情報が示す前記複数のビヘイビアー間の実行順序に対する制約を完全に維持するか、又は、この制約に対して、高々、前記複数のビヘイビアーのうち、実行する順番に制約のない特定の複数のビヘイビアーについてそれらが逐次的に実行される順序を特定した新たな制約が加わることを許容する条件の下で、前記移動コマンドが示すビヘイビアーを、前記移動コマンドの指示に応じて、該ビヘイビアーを要素として含む構造からその上位層又は下位層の構造へ移動させる処理手段とを備え、
前記処理手段は、
前記移動コマンドが上位層の構造と下位層の構造とのいずれへの移動を指示するものであるか、及び前記移動コマンドが示すビヘイビアーを要素とする階層の構造と該ビヘイビアーの移動先となる階層の構造とがそれぞれ前記第1の種類の構造と前記第２の種類の構造とのいずれに該当するか、並びに該ビヘイビアーがこれを要素とする階層の構造中で特定の個所にあるか否かを判断基準とする移動可能性判定ルールに基づいて、前記条件の下で、該ビヘイビアーの移動が可能か否かを判定する移動可能性判定手段と、
前記ビヘイビアーの移動が可能であると判定された場合に、前記移動コマンドが上位層の構造と下位層の構造とのいずれへの移動を指示するものであるか、及び前記移動コマンドが示すビヘイビアーを要素とする階層の構造と該ビヘイビアーの移動先となる階層の構造とがそれぞれ前記第1の種類の構造と前記第２の種類の構造のいずれに該当するかを判断基準とする移動可能個所計算ルールに基づいて、前記条件の下で、該ビヘイビアーの移動先となる階層の構造において該ビヘイビアーを移動できる個所を特定するための移動可能性個所特定手段と、
前記ビヘイビアーの移動が可能であると判定された場合に、前記構造記憶手段に記憶された前記構造を、前記移動コマンドが示すビヘイビアーを前記移動可能性個所特定手段により特定された個所へ移動させたものに修正する仕様修正手段とを含むことを特徴とする仕様操作装置。
【請求項２】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第1の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものであり、該ビヘイビアーがこれを要素とする階層の構造中で該下位層の構造に隣接する個所にあるビヘイビアーである場合に、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項３】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第1の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該下位層の構造において該ビヘイビアーが階層を挟んで隣接する個所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項２に記載の仕様操作装置。
【請求項４】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第1の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものであり、該ビヘイビアーがこれを要素とする階層の構造中で開始又は終了の個所にあるビヘイビアーである場合に、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項５】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第1の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該上位層の構造において該ビヘイビアーが階層を挟んで隣接する個所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項４に記載の仕様操作装置。
【請求項６】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第２の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該ビヘイビアーがこれを要素とする階層の構造中でどのような個所にあるかにかかわらず、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項７】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第２の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該下位層の構造における全ての箇所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項６に記載の仕様操作装置。
【請求項８】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第２の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該ビヘイビアーがこれを要素とする階層の構造中でどのような個所にあるかにかかわらず、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項９】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がいずれも前記第２の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該上位層の構造における全ての箇所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項８に記載の仕様操作装置。
【請求項１０】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第1の種類の構造及び前記第２の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものであり、該ビヘイビアーがこれを要素とする階層の構造中で該下位層の構造に隣接する個所にあるビヘイビアーである場合に、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項１１】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第1の種類の構造及び前記第２の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該下位層の構造における全ての箇所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項１０に記載の仕様操作装置。
【請求項１２】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第２の種類の構造及び前記第１の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該ビヘイビアーがこれを要素とする階層の構造中でどのような個所にあるかにかかわらず、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項１３】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第２の種類の構造及び前記第１の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該上位層の構造における該下位層の構造の直前又は直後の個所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項１２に記載の仕様操作装置。
【請求項１４】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第２の種類の構造及び前記第１の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該ビヘイビアーがこれを要素とする階層の構造中でどのような個所にあるかにかかわらず、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項１５】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第２の種類の構造及び前記第１の種類の構造に該当するものであり、前記移動コマンドが下位層の構造への移動を指示するものである場合には、該下位層の構造における全ての箇所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項１４に記載の仕様操作装置。
【請求項１６】
前記移動可能性判定ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第１の種類の構造及び前記第２の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該ビヘイビアーがこれを要素とする階層の構造中でどのような個所にあるかにかかわらず、該ビヘイビアーの移動が可能であると判定するものであることを特徴とする請求項１に記載の仕様操作装置。
【請求項１７】
前記移動可能個所計算ルールは、前記移動コマンドが示すビヘイビアーを要素とする階層の構造及び該ビヘイビアーの移動先となる階層の構造がそれぞれ前記第１の種類の構造及び前記第２の種類の構造に該当するものであり、前記移動コマンドが上位層の構造への移動を指示するものである場合には、該上位層の構造における全ての箇所を、該ビヘイビアーを移動できる個所として特定するものであることを特徴とする請求項１６に記載の仕様操作装置。
【請求項１８】
前記所定のシステム記述言語は、前記第２の種類の構造に含まれる特定の複数のビヘイビアーの実行を同期させるための記述が可能なものであり、
前記仕様修正手段は、前記移動コマンドが示すビヘイビアーを要素とする階層の構造が第１の種類の構造に該当し、且つ、該ビヘイビアーの移動先である階層の構造が第２の種類の構造に該当するものである場合に、該ビヘイビアーを移動させても前記条件が満たされるように、前記同期させるための記述を追加することを特徴とする請求項１，１０，１１，１６，１７に記載の仕様操作装置。
【請求項１９】
前記移動可能性個所特定手段は、前記ビヘイビアーを移動できる箇所として複数の候補が得られた場合には、該複数の候補を表示し選択の指示を受け付けることによって、前記ビヘイビアーを移動できる個所を特定することを特徴とする請求項１ないし１８のいずれか１項に記載の仕様操作装置。
【請求項２０】
前記処理手段は、
前記上位層又は下位層の構造へ移動させる旨を指示する基本的な移動コマンドを複数組み合わせた所望の移動コマンドを定義するための手段を含み、
前記受け付ける手段が、定義された前記所望の移動コマンドを受け付けた場合には、定義された前記所望の移動コマンドを解釈し、この解釈結果に従って、定義の基となった基本的な移動コマンドを順次実行することを特徴とする請求項１ないし８のいずれか１項に記載の仕様操作装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機や電子情報機器における、ハードウエア、ソフトウエア、及びこれら両方を含むシステムの設計において、仕様の操作を行うための仕様操作装置に関する。
【０００２】
【従来の技術】
従来、仕様の構造や書式は設計分析手法毎にあらかじめ固定化されており、対象、目的が異なれば、適切な別々の構造でシステムの分析および設計を行ってきた。例えば、ＵＭＬに代表されるオブジェクト指向のソフトウエア設計方法論では、設計のための統一書式を規定しているが、ドメイン毎に利用する分析・設計の実際の手順や方法は異なり、仕様の構造や個々の書式の要素の意味が異なるので、ドメイン相互に設計資産を利用できない。なお、ＵＭＬは例えば「UMLガイドブック」,Hans-Eriksson/Magnus Penker著,杉本宣男/落合修/武田多美子 監訳,ISBN4-8101-8987-2に詳しい。
また、外部環境の変更等により仕様に頻繁に変更が必要な場合は、仕様の一部を修正しても、その波及範囲が見積もれないので、最初から作り直す手間がある。これは単一の製品の設計開発プロセスにも当てはまり、例えば、一つの製品でラピッドプロトタイピング技術を利用してプロトタイプの仕様を作成する場合も、詳細設計においては実装上の制約や構成にあわせて作り直すという手間があった。例えば、ラピッドプロトタイピングツール（Ｒａｐｉｄ）では、作成したプロトタイプからＣ言語のコード生成を行うが、組み込み向けには最適化されないので、作成し直す必要がある。なお、Ｒａｐｉｄは例えば“Rapid-plus, White Paper”,http://www.e-sim.com/pdf/whtpaper.pdfに詳しい。
仕様の作り直しの別の例として、ハードウエア（ＬＳＩ）とソフトウエアが対となって全体のシステムとして動作する組込みシステムの場合は、システム全体として一旦作成した仕様を、ハードウエア、ソフトウエアの役割分担が決定した後に、これに従いハードウエア向け、ソフトウエア向けの独立した仕様として作成し直すことをしていた。
【０００３】
近年、ハードウエア、ソフトウエアを区別しないシステムレベルでの仕様記述の言語が開発され、システムレベルでの仕様からソフト・ハードに分割された仕様へ同一の仕様の書式で仕様記述ができる環境が整いつつある。これらの言語に伴い設計方法論も提唱されているが、これらはトップダウンにシステムレベルの仕様からソフト・ハードの設計仕様を導き出す過程を示しているが、外部からの要求はリソース制約の変更による仕様変更要求に対して、仕様の内容を保ったまま仕様の構造を変更する仕様操作はカバーできない。
【０００４】
また、ｇｃｃに代表されるソフトウエアの言語コンパイラや言語変換ツールにおいては、ある仕様の書式から別の仕様の書式への変換はできるが、これは同一の内容、同一の構造の仕様を異なる書式に変換しているだけで、仕様の変更に対しては、その都度変換し直さなくてはならない。なお、ｇｃｃは例えば“GNU’s not Unix”, http://www.gnu.org/に詳しい。
【０００５】
【発明が解決しようとする課題】
以上説明してきたように、従来、仕様の内容を保持したまま、リソース制約や性能、信頼性等の外的な要求に合わせて構造を変更することを容易に行える仕組みがなかった。また、仕様変更の自動化では、対象や分野に応じて仕様の内部構造の組み合わせは無限にあるので、すべての仕様変更に対応するコマンドを予め作成することができないという問題があった。
【０００６】
本発明は、上記事情を考慮してなされたもので、仕様の設計において、目的やリソース制約あるいは外部からの要求などに合わせて、容易に、仕様の内容を保持しながら、仕様の構造を変更できる仕様操作装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明は、処理単位であるビヘイビアー（例えば、ソフトウエアにおける関数やクラス、ハードウエアにおけるＬＳＩブロック、ビジネスプロセスにおけるジョブやタスクなど）を複数用いて構成される所定の仕様（例えば、計算機で実行されるソフトウェアの仕様、半導体を組み合わせたハードウェアの仕様、ソフトウェアとハードウェアを組み合わせた組み込みシステムの仕様、ワークフロー等のビジネスプロセスの仕様など）における該複数のビヘイビアー間の実行順序に対する制約を規定するために、予め定めた順番で逐次的に実行する１又は複数のビヘイビアーを要素として含む第1の種類の構造と、実行する順序に制約のない（並列に実行しても任意の順番で逐次的に実行してもよい）１又は複数のビヘイビアーを要素として含む第２の種類の構造とを記述することが可能な所定のシステム記述言語により、前記複数のビヘイビアーを要素として記述された、前記所定の仕様の構造を対象として、該構造中の或ビヘイビアーを移動させる操作を行って該構造を変更するための仕様操作装置であって、前記所定の仕様の持つ構造として、その構造中に、前記第1又は第２の種類の構造に相当する上位層の構造がその要素として前記第1又は第２の種類の構造に相当する下位層の構造を含む階層的な構造部分が存在するものを記憶するための構造記憶手段と、前記所定の仕様の持つ構造により規定される前記複数のビヘイビアー間の実行順序に対する制約を示す制約情報を記憶するための制約情報記憶手段と、移動すべきビヘイビアーを示す情報を含み、該ビヘイビアーを、前記所定の仕様の持つ構造中において該ビヘイビアーを要素として含む構造からその上位層又は下位層の構造へ移動させる旨を指示する移動コマンド（ＰＯＰコマンド、ＰＵＳＨコマンド）の入力を受け付ける手段と、前記制約情報が示す前記複数のビヘイビアー間の実行順序に対する制約を完全に維持するか、又は、この制約に対して、高々、前記複数のビヘイビアーのうち、実行する順番に制約のない特定の複数のビヘイビアーについてそれらが逐次的に実行される順序を特定した新たな制約が加わることを許容する条件の下で、前記移動コマンドが示すビヘイビアーを、前記移動コマンドの指示に応じて、該ビヘイビアーを要素として含む構造からその上位層又は下位層の構造へ移動させる処理手段とを備え、前記処理手段は、前記移動コマンドが上位層の構造と下位層の構造とのいずれへの移動を指示するものであるか、及び前記移動コマンドが示すビヘイビアーを要素とする階層の構造と該ビヘイビアーの移動先となる階層の構造とがそれぞれ前記第1の種類の構造と前記第２の種類の構造とのいずれに該当するか、並びに該ビヘイビアーがこれを要素とする階層の構造中で特定の個所にあるか否かを判断基準とする移動可能性判定ルールに基づいて、前記条件の下で、該ビヘイビアーの移動が可能か否かを判定する移動可能性判定手段と、前記ビヘイビアーの移動が可能であると判定された場合に、前記移動コマンドが上位層の構造と下位層の構造とのいずれへの移動を指示するものであるか、及び前記移動コマンドが示すビヘイビアーを要素とする階層の構造と該ビヘイビアーの移動先となる階層の構造とがそれぞれ前記第1の種類の構造と前���第２の種類の構造のいずれに該当するかを判断基準とする移動可能個所計算ルールに基づいて、前記条件の下で、該ビヘイビアーの移動先となる階層の構造において該ビヘイビアーを移動できる個所を特定するための移動可能性個所特定手段と、前記ビヘイビアーの移動が可能であると判定された場合に、前記構造記憶手段に記憶された前記構造を、前記移動コマンドが示すビヘイビアーを前記移動可能性個所特定手段により特定された個所へ移動させたものに修正する仕様修正手段とを含むことを特徴とする。
【００１５】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【００１６】
本発明によれば、仕様を移動する際に移動が可能かどうかを判定し、移動できる個所を特定し、移動操作の前準備・後処理として仕様を一部修正して、仕様の任意の部分を任意の場所に内容を保存しながら移動することができ、これによって、仕様の設計において、目的やリソース制約あるいは外部からの要求などに合わせて、容易に、仕様の内容を保持しながら、仕様の構造を変更できるようになる。
【００１７】
また、本発明によれば、移動コマンド定義手段により基本移動コマンドを組み合わせて任意の移動コマンドを作成することが可能なので、すべての仕様の組み合わせに対して予め移動コマンドを準備する必要がないという効果が得られる。
【００１８】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１９】
図６に、本発明の実施の形態に係るシステム設計支援装置１００の構成例を示す。図６に示されるように、システム設計支援装置１００は、仕様モデル記述部１０１、アーキテクチャ探索部１０２、コミュニケーション合成部１０３、ハードウェア仕様生成部１０４、部品化・再利用部１０５、ソフトウェア仕様生成部１０６、システム仕様記録部１０７を備えている。システム設計支援装置１００は、例えば、コンピュータを用いて構成可能であり、この場合、各処理部分はプログラムによって実施できる。
【００２０】
システム仕様記録部１０７は、入力データや各処理部の処理結果の全部又は一部、例えば、計算機で実行されるソフトウェアの仕様や、半導体を組み合わせたハードウェアの仕様や、ソフトウェアとハードウェアを組み合わせた組み込みシステムの仕様や、ワークフロー等のビジネスプロセスの仕様に対しシステムレベルでの仕様等や、その他の必要なデータを記録するためのものである。
【００２１】
仕様モデル記述部１０１は、設計者が予め定められた仕様記述形式に従って計算内容の仕様、通信内容の仕様を記述することを支援するためのものである。仕様モデル記述部１０１の支援の結果、仕様モデルが生成される。仕様記述形式には、例えば、構造化プログラミング言語に代表される構造化テキスト形式や、グラフを利用する構造図形式や、テーブルを利用する表形式が有る。
【００２２】
アーキテクチャ探索部１０２は、与えられた仕様記述モデルと、アーキテクチャ（例えば、ハードウェア実行環境とソフトウェア実行環境の構成）に対し、仕様の内容を保存したまま仕様モデルの部分構造を分割しアーキテクチャ要素に分配する。すなわち、仕様モデル記述部１０１で設計された計算内容の仕様や通信内容の仕様を構成する部品をアーキテクチャ要素に割り当てる。
【００２３】
コミュニケーション合成部１０３は、アーキテクチャ探索部１０２で分配された通信仕様要素間に対して通信手順（プロトコル）を挿入し、通信内容の仕様が挿入された通信手順と整合性を保つためのプロトコル変換（通信手順の組替え）を行う。
【００２４】
なお、アーキテクチャ探索部１０２が処理対象とする仕様記述モデルは、仕様モデル記述部１０１を利用して記述されたものに限定されず、他のツール等で記述されたものでもよい。また、コミュニケーション合成部１０３が処理対象とする仕様記述モデルは、アーキテクチャ探索部１０２の出力結果（またはこの結果に修正を加えたもの）に限定されず、他のツール等で記述されたものでもよい。
【００２５】
ハードウェア仕様生成部１０４は、システム仕様からハードウェア記述言語などによるハードウェア仕様を生成する。
【００２６】
ソフトウェア仕様生成部１０６は、システム仕様からソフトウェア記述言語などによるソフトウェア仕様を生成する。
【００２７】
ハードウェア仕様生成部１０４やソフトウェア仕様生成部１０６は、仕様モデル記述部１０１の出力結果（またはこの結果に修正を加えたもの）、アーキテクチャ探索部１０２の出力結果（またはこの結果に修正を加えたもの）、コミュニケーション合成部１０３の出力結果（またはこの結果に修正を加えたもの）、あるいは他のツール等で記述されたものなどを処理対象とすることができる。
【００２８】
部品化・再利用部１０５は、仕様モデル記述部１０１、アーキテクチャ探索部１０２、コミュニケーション合成部１０３の全部または一部の設計段階において、仕様を部品化し、これを設計に再利用するためのものである。
【００２９】
以下詳述する仕様操作装置は、図６のシステム設計支援装置のアーキテクチャ探索部１０２に用いられるもので、仕様の内容を保持しつつ、構造を変換して、仕様分割を行うことを可能にするものである。
【００３０】
図１に、本発明の一実施形態に係る仕様操作装置の構成例を示す。
【００３１】
図１に示されるように、本仕様操作装置は、仕様構造記録部１１、仕様制約記録部１２、仕様移動部１３を含む仕様操作部１、外部とデータや指示のやり取りを行うための入出力部２、仕様移動ルール（移動可能性判定ルール、移動可能箇所計算ルール、仕様修正ルール）など必要なデータを記憶するための記憶部（図示せず）を備えている。また、必要に応じて、通信部３やプログラム実行部４などを更に備えることができる。
【００３２】
仕様構造記録部１１は、仕様に関連する情報を仕様の部分部分間の関連性を含めた構造情報（２１）として記録保存する。
【００３３】
仕様制約記録部１２は、仕様にかかわる制約（２２）を記録保存する。
【００３４】
仕様移動部１３は、内容を保持したままでの仕様の移動が可能かどうかの判定、移動可能な場合における移動先の個所の表示、仕様の移動すなわち仕様の一部の修正などを行うためのものである。
【００３５】
図２に、仕様移動部１３の内部構成例を示す。
【００３６】
仕様移動部１３は、移動可能性判定部１３１、移動可能場所表示部１３２、仕様修正部１３３、移動コマンド部１３４を含む。
【００３７】
移動可能性判定部１３１は、仕様制約を参照して仕様の一部が移動できるかどうかを判断する。
【００３８】
移動可能箇所表示部１３２は、仕様が移動できる場合に、他のどの個所に移動できるかを計算し、移動先の候補を表示する。
【００３９】
仕様修正部１３３は、仕様の移動コマンド実行前に移動のための準備を行い、移動後に同期を確保するためのビヘイビアの挿入を行い、また移動後に実行順序制約を満たす範囲内での構造の簡略化を行う。
【００４０】
移動コマンド部１３４は、移動を行うためのコマンドを実行する。
【００４１】
図３に、移動コマンド部１３４の内部構成例を示す。
【００４２】
移動コマンド部１３４は、基本移動コマンド部１３４１、移動コマンド定義部１３４２、移動コマンド解釈実行部１３４３を含む。
【００４３】
基本移動コマンド部１３４１は、移動のために必要な基本移動コマンドを実行するためのものであり、基本移動コマンドによって、階層構造に渡って仕様の一部を移動する。
【００４４】
基本移動コマンド部１３４１は、実行順序に関連して仕様を階層に渡り移動させるための実行順序移動コマンドを実行する実行順序移動コマンド部１３４１１と、通信に関して仕様を階層に渡り移動させるための通信路移動コマンドを実行する通信路移動コマンド部１３４１２とを含む。
【００４５】
移動コマンド定義部１３４２は、基本移動コマンドを組み合わせて任意の移動コマンドを定義するためのものである。
【００４６】
移動コマンド解釈実行部１３４３は、移動コマンド定義を解釈し移動を実行する（移動コマンド定義部１３４２が定義するコマンド定義に従い移動コマンドを実行する）ためのものである。
【００４７】
本仕様操作装置は、例えば、コンピュータ上で本発明を実施したプログラム（システム設計支援ソフト）を実行することによって、実現可能である。
【００４８】
＜仕様の構造＞
以下では、仕様は複数の「ビヘイビア」と呼ぶ基本単位で構成されるものとする。ビヘイビアは、階層構造を持つことができる。すなわち、ひとつのビヘイビアは、複数の他のビヘイビアを下階層として持つことができる。ビヘイビアは、ソフトウエアの仕様の場合は、関数やクラスに相当し、ハードウエアの場合は、ＬＳＩブロックに相当し、ビジネスプロセスの場合は、ジョブやタスクに相当する。
【００４９】
「仕様の構造」とは、ビヘイビアで構成される仕様の構造を規定し、ビヘイビアの実行の順番に関する階層構造と、ビヘイビア間でのデータの通信路に関する階層構造とによって構成される。実行の順番に関する構造と通信路に関する構造は、階層としては同じ構造を持つ。すなわち、ビヘイビアＡが実行の順番に関してビヘイビアＢの上位階層にあるならば、Ａは通信路に関してもＢの上位階層である。
【００５０】
仕様の構造により、アーキテクチャに対する仕様分割の方法も定義できる。例えば、組み込みシステムならば、ハードウエアとソフトウエアのそれぞれに対応する部分に、仕様がどのように分割されるかを、仕様として構造化して記述する。
【００５１】
＜仕様の書式＞
仕様の構造（図１の２１参照）のうち、実行の順番に関係する構造は、少なくとも「逐次実行および繰返し実行」（ｆｓｍ）、「並列実行」（ｐａｒ）、「同期実行」（ｆｏｒｋ，ｊｏｉｎ，ｓｔａｒｔ，ｅｎｄ）、「割込み実行」（ｔｒｙ，ｔｒａｐ，ｉｔｒｐ）という４分類の文法的要素を用いた階層構造として表現される。
【００５２】
例えば、
ｆｓｍ｛ａ，ｂ｝は、
“ａを実行し終了の後にｂを実行する”
という仕様を表現し、
ｐａｒ｛ａ，ｂ｝は、
“ａとｂを並列に実行する”
という仕様を表現し、
階層的な仕様である、ｆｓｍ｛ａ，ｐａｒ｛ｂ，ｃ｝，ｄ｝は、
“ａを実行した後にｂ，ｃを並列に実行し、
そしてｂ，ｃが両方終了したらｄを実行する”
という仕様を表現している。
【００５３】
また、「割込み実行」に関する仕様である、ｔｒｙ｛ａ｝ｔｒａｐ（ｅ）｛ｂ｝は、
“最初にａを実行する。ａの実行中にイベントｅが発生したら、
ａの実行を強制終了し、ｂの実行を開始する”
という仕様を示す。
【００５４】
「逐次実行および繰り返し実行」、「並列実行」、「同期実行」、「割込み実行」は、ソフトウエア、ハードウエア、そしてビジネスプロセスの仕様を記述するために用いられる実行制御方法の規定のための手段として必要最小限の要素であり、これらを階層的に組み合わせることにより、いわゆるシステムの仕様を記述する。
【００５５】
一方、通信路に関する構造は、ビヘイビア間のデータのやりとりを規定する。ここでは、変数およびチャネルと呼ばれる部品により、通信路が実現されるものとする。変数やチャネルは仕様の階層関係の上位階層のビヘイビアの直属の部品として定義され、これと下位階層のビヘイビアとがポートと呼ばれる接続口を介して接続することにより、下位階層同士のビヘイビアが通信路を介して互いに通信することを可能にしている。
【００５６】
通信路は、ソフトウエアの場合は変数や通信用の関数に相当し、ハードウエアの場合はＬＳＩを結ぶ結線に相当する。ポートは、通信のための入出力口であり、ソフトウエアの場合は引数に相当し、ハードウエアの場合は部品同士を結線で結ぶための端子に相当する。チャンネルは、データを送受信するために特別に用意されたコマンドを受け付ける部品である。例えば、“ｐｕｔ（データ）”，“ｇｅｔ（）”といったコマンドが考えられる。変数は、書き込み“ｗｒｉｔｅ（データ）”コマンドと読み込み“ｒｅａｄ（）”コマンドとを備えたチャンネルの一種であるとみなすことができる。
【００５７】
このような仕様記述の構造を持つ言語の例としては、システム仕様記述言語ＳｐｅｃＣがある。なお、ＳｐｅｃＣについては例えば“SpecC:Specification Language and Methodology”,Daniel D.Gajski,Kluwer Academic Publishers,Dordrecht,ISBN0-7923-7822-9に詳しい。
以下では、ｐｅｃＣの言語仕様を簡略化した下記に規定する表現形式に準拠して仕様の構造が記述されるものとする場合を例にとって説明する。
【００５８】
・システム記述：＝“ビヘイビア記述”の集合
・ビヘイビア記述：＝｛通信要素，…，処理内容｝
0003895934.tif 000002
ビヘイビア記述例｛ｉ，ｊ，ｋ，ｆｓｍ｛Ａ（ｉ），Ｂ（ｉ，ｊ），Ｃ（ｋ）｝において、ｉ，ｊ，ｋはローカル変数であり、Ａ，Ｂ，Ｃは下位階層のビヘイビアで、それぞれポートを持ち、ポートがローカル変数と接続していることを示している。
【００５９】
・ｐａｒ｛Ａ，Ｂ，Ｃ｝
この処理内容例は、Ａ，Ｂ，Ｃを並列実行するものである。
【００６０】
0003895934.tif 000003
ここで、ｆｓｍの各要素は、
｛ラベル，処理内容，｛条件：条件成立時の遷移｝，…｝、あるいは、
｛ラベル，処理内容，処理終了時の遷移，…｝、あるいは、
｛ラベル，処理内容｝、あるいは、
処理内容
のいずれかで構成され、特に指定が無い場合は、左から順に逐次実行される。すなわち、遷移ラベルの項目が無い場合、｛ラベル，処理内容｝は、処理内容が終了すると、次のｆｍｓ要素を実行することになる。また、ラベル＝１あるいは最左のｆｍｓ要素が最初に実行されるものとする。遷移は、「ｇｏｔｏ（Ｘ）：Ｘはラベル番号」にて表す。例えば、ｇｏｔｏ（１）は、最初のｆｍｓ要素に戻ることを表している。
上記の処理内容例では、Ａが実行され、終了すれば、Ｂが実行され、Ｂが終了したとき、変数ｆｌｇの値が３ならばＡを、１ならばＢを実行することを表している。
次に例示するように、ラベルの無い要素は、ラベルを用いた或る実行制御の簡略形であるといえる。
fsm｛A,B,C｝＝fsm｛｛1,A,goto(2)｝,｛2,B,goto(3)｝,｛3,C,…｝,…｝
・ｔｒｙ｛Ａ｝ｔｒａｐ（ｅｖ１）｛Ｂ｝ｉｔｒｐ（ｅｖ２）｛Ｃ｝…
この処理内容例では、まず、Ａを実行する。そして、Ａの実行中にイベントｅｖ１が発生すれば、Ａを強制終了して、Ｂを実行する。また、Ａの実行中にイベントｅｖ２が発生すれば、Ａを一時停止して、Ｃを実行し、Ｃが終了したとき、Ａの処理を再開する。
なお、ｔｒａｐ（ｅ）｛Ｘ｝，ｉｔｒｐ（ｅ２）｛Ｙ｝は、複数あってもよい。
【００６１】
・ｗａｉｔ（ｅｖ）
これは、イベントｅｖの発生を待つ同期処理である。
【００６２】
・ｎｏｔｉｆｙ（ｅｖ）
これは、イベントｅｖを発生させる同期処理である。
【００６３】
・ｆｌｇ＝Ｘ
これは、変数ｆｌｇへの値の代入である。
【００６４】
・ｆｌｇ＝＝Ｘ
これは、条件判断である。
【００６５】
・ｓｔａｒｔ（ＩＤ）；
ｆｏｒｋ（ＩＤ）；
これは、同期処理Ｉであり、ｓｔａｒｔとｆｏｒｋは同期して実行される。
【００６６】
・ｅｎｄ（ＩＤ）；
ｊｏｉｎ（ＩＤ）；
これは、同期処理ＩＩであり、ｅｎｄとｊｏｉｎは同期して実行される。
【００６７】
上記に列挙した書式に従った、階層構造を持つ仕様の例を以下に挙げる。
【００６８】
（例：ｅｘ０）
Ａ：＝｛ｉ，par｛Ｂ（ｉ），ｇ（ｉ）｝｝
Ｂ（ｉ）：＝｛ｊ，ｋ，fsm｛ａ（ｊ），ｂ（ｋ，ｉ），Ｃ（ｋ）｝＞｝
Ｃ（ｋ）：＝｛par｛ｄ，ｅ，ｆ（ｋ）｝｝
これは、以下の仕様を表現している。
「ビヘイビアＡはＢ，Ｃ，ｇ，ａ，ｂ，ｄ，ｅ，ｆという子ビヘイビアから構成され、ビヘイビアＡは下位階層Ｂ，ｇより構成され、Ｂとｇは並列実行であり、Ａの下位階層であるＢは下位要素ａ，ｂ，Ｃより構成され、逐次実行され、さらにＢの下位階層であるＣは下位要素ｄ，ｅ，ｆより構成され、並列実行される。
また、Ａは通信路ｉを持ち、ｉを介してＢのポートｉとｇのポートｉが接続しており、またＢは通信路ｊ，ｋを持ち下位要素ａのポートｊと通信路ｊが接続し、ｂのポートｋと通信路ｋが、ｂのポートｉとＢのポートｉが、Ｃのポートｋと通信路ｋがそれぞれ接続し、Ｃのポートｋとｆのポートｋが接続していることを示している。すなわち、階層を渡ってビヘイビアｆとｂ、ｇとｂがそれぞれ通信線により接続し互いにデータをやり取りする。」
以下では、説明のために実行の順番に着目して通信路と階層関係を簡略化する場合がある。例えば、上記の仕様例（ｅｘ０）を実行の順番に着目して簡略化すると以下のように記述できる。
Ａ：＝ｐａｒ｛ｆｓｍ｛ａ，ｂ，ｐａｒ｛ｄ，ｅ，ｆ｝｝，ｇ｝
また、説明のために通信路と接続関係に着目して、実行の順番を簡略化する場合がある。上記の仕様例（ｅｘ０）を通信路と接続関係に着目して簡略化すると以下のように記述できる。
Ａ：＝｛ｉ，bh｛Ｂ（ｉ），ｇ（ｉ）｝｝
Ｂ（ｋ）：＝｛ｉ，ｊ，bh｛ａ（ｉ），ｂ（ｉ，ｊ），Ｃ（ｊ）｝＞｝
Ｃ（ｊ）：＝｛ bh｛ｄ，ｅ，ｆ（ｊ）｝｝
ｆｏｒｋ（ｘ）とｓｔａｒｔ（ｘ）、およびｅｎｄ（ｘ）とｊｏｉｎ（ｘ）は、それぞれ対となって、同期制約を表し、これらの２つが常に同期して実行されることを規定している（ここで、ｘはｉｄ番号であり同じｉｄ番号をもつペアが同期して実行されることとする）。
例えば、
0003895934.tif 000004
という仕様は、１から３および２から４の逐次実行（ｆｓｍ）を並列実行（ｐａｒ）することを階層的に示しているが、ｆｏｒｋ，ｊｏｉｎ，ｓｔａｒｔ，ｅｎｄの同期関係より１と３の間に２が実行されることがわかる。
【００６９】
通信路の構造に関しては、上記の仕様例（ｅｘ０）においては、ｆとｂがＢの通信路ｊを介して互いにデータをやり取りし、Ａの通信路ｉを介してａ，ｂ，ｇが互いにデータをやり取りできることを示している。
【００７０】
＜仕様の制約＞
仕様制約記録部１２には、仕様記述に関する制約を記録する。仕様制約に基づき、仕様の内容が保持されることを判断することができるものとする。以下では、実行順序制約という仕様制約の一例を挙げ、仕様の制約に従った仕様操作の例を示す。
【００７１】
＜実行順序制約＞
実行順序制約とは、各ビヘイビアが実行されるにあたってのビヘイビア間の実行順序に関する制約である。実行順序関係は、順序関係（＞）により表すことができる。例えば、（Ａ＞Ｂ）とは、Ｂの実行はＡの実行の終了後であるという制約を示している。順序関係であるから、Ａ＞ＢかつＢ＞ＣならばＡ＞Ｃである（順序の推移性）。
【００７２】
仕様を構成するビヘイビアの集合に対する実行順序制約は、ビヘイビア間の順序関係（＞）の集合として表現できる。この実行順序制約は、必ずしも全てのビヘイビアの組み合わせに対して順序関係が規定されていなくてもよいという意味で、半順序集合である。例えば、Ａ，Ｂが並列実行であるという仕様は、Ａ，Ｂどちらが先に実行されるかを規定していないが、仕様としては有功である。
【００７３】
「与えられた任意の半順序集合に対して互いに矛盾しない順序関係を漸次、加えて行くことにより、最後には全順序集合とすることができる。」という仕様記述における順序関係の性質を利用して、実行順序制約の間で、強弱の関係を定義することができる。すなわち、半順序集合Ａに順序制約ｘを加え半順序集合Ｂを得たとき、「ＢはＡより強い」、「ＡはＢより弱い」、と定義する。
【００７４】
＜「実行の順番」と「実行順序制約」の関係＞
与えられた「仕様の構造」から、実行順序制約を唯一つ決めることができる。
【００７５】
例えば、ｆｓｍ｛１，２｝は、１の後に２を実行するという順番を規定し、これに対応する実行順序制約は、｛１＞２｝のみである。
【００７６】
また、ｐａｒ｛１，２｝は、１と２の順番に対しては特に制約がないことを示し、並列で行われようが、どちらかが先に行われようが、構わないことを示す。これに対応する実行順序制約は、｛｝である。このとき、ｐａｒ｛１，２｝に関して｛｝よりも強い実行順序制約は、｛１＜２｝と｛２＜１｝の２つのみである。
【００７７】
仕様の構造（甲）に対応する実行順序制約（乙）を、
「甲が乙をｉｍｐｌｙする」
と呼ぶことにする。仕様の構造(甲)に対し、実行順序制約(乙)に含まれるすべての半順序関係が矛盾が無いとき、
「甲は乙を充足する」
と呼ぶことにする。
【００７８】
甲が乙をｉｍｐｌｙするとき、甲は乙を充足するが、甲が乙を充足するとき必ずしも甲が乙をｉｍｐｌｙするとは限らない。
【００７９】
例えば、
甲１：  ｆｓｍ｛１，ｆｓｍ｛２，３｝，４｝
甲２：  ｆｓｍ｛１，ｐａｒ｛２，３｝，４｝
乙１：  ｛１＜２，２＜３，３＜４｝
乙２：  ｛１＜２，１＜３，２＜４，３＜４｝
という例においては、甲１は乙１を、甲２は乙２をそれぞれｉｍｐｌｙしているまた、甲１，甲２は共に乙１、乙２を充足するが、甲２は乙１をｉｍｐｌｙしてはいない（２と３の順序はわからない）。甲１も乙２をｉｍｐｌｙしていない（２＜３が乙２から導き出せない）。
【００８０】
与えられた任意の実行順序制約の集合に対して複数の充足可能な仕様の構造があり得る。構造は階層的であるから、与えられた実行順序制約の集合に対する充足可能な仕様の構造は無限に存在し、これらは数え上げることはできない。
【００８１】
一方、与えられた仕様の構造Ａに対して、これがｉｍｐｌｙする実行順序制約Ｂは一つである。このとき仕様の構造Ａに関して、実行順序制約Ｂよりも強い実行順序制約を全て数えることができる。例えば、
ｆｓｍ｛１，２，ｐａｒ｛３，ｆｓｍ｛４，５｝，６｝，７｝
という仕様の構造に対して、ｉｍｐｌｙされる実行順序制約は、
Ｒ０＝｛１＜２，２＜３，２＜４，２＜６，４＜５，６＜７，３＜７，５＜７｝
である。ｐａｒの部分に順序関係を加えて行くことにより、上記構造ｆｓｍ｛１，２，ｐａｒ｛３，ｆｓｍ｛４，５｝，６｝，７｝に関してＲ０よりも強い全ての実行順序制約を求めることができる。この例の場合、
Ｒ１＝Ｒ０ ∪ ｛３＜４，  ５＜６｝
Ｒ２＝Ｒ０ ∪ ｛５＜６，  ６＜３｝
Ｒ３＝Ｒ０ ∪ ｛３＜６，  ６＜４｝
になり、Ｒ０を含めると、4通りである（なお、∪は集合和の演算を表している）。
【００８２】
＜通信路と接続関係の制約＞
通信路の所属するビヘイビアの階層に関する制約を下記に示す。
“通信路は、それを介して互いに接続するビヘイビアのいずれよりも
上位階層のビヘイビアにて定義されなければならない。”
次に示す仕様例（ｅｘ１）は、ビヘイビアＢ，ＡがＤに所属する通信路ｃを介して互いに接続している仕様を示している。ｃが属するＤはＢ，Ａよりも上位階層であるから、制約を満たす。
（例：ｅｘ１）
Ｅ：＝｛ｂｈ｛Ｄ）｝
Ｄ：＝｛ｃ，ｂｈ｛Ｂ（ｃ），Ａ（ｃ）｝｝
一方、以下の仕様例（ｅｘ２）は、仕様例（ｅｘ１）においてｃの所属をＤの上位階層のＥに移動したものである。
（例：ｅｘ２）
Ｅ：＝｛ｃ，ｂｈ｛Ｄ（ｃ）｝｝
Ｄ（ｐ）：＝｛ｂｈ｛｛ｂｈ｛Ｂ（ｐ），Ａ（ｐ）｝｝｝｝
仕様例（ｅｘ２）でも、Ｂ，Ａの接続関係は仕様例（ｅｘ１）と同様に保たれており、かつ、通信路の所属に関する制約も守られている。従って、通信路の所属は仕様例（ｅｘ１）と仕様例（ｅｘ２）のどちらでも可能であり、２つの仕様は相互に変換可能であることがわかる。この例では、通信路の所属をＢ，Ａに移動することは、制約に違反するので不可能である。
【００８３】
＜仕様の構造の等価性と強制約＞
２つの「仕様の構造」Ａ，Ｂが与えられているとき、それぞれの仕様の構造がｉｍｐｌｙする実行順序制約が同一であるとき、
「ＡとＢは実行順序制約上は等価である」
と呼び、また片方の仕様の構造Ａがｉｍｐｌｙする実行順序制約がもう片方Ｂのそれよりも強い場合を、
「Ａは実行順序制約の上ではＢより強制約である」
と呼ぶことにする。
【００８４】
実行順序制約上で等価な「仕様の構造」の例を示す。
【００８５】
例えば、下記の仕様の例において、
（例：ｅｘ１ａ）
ｐａｒ｛ｆｓｍ｛１，２｝，ｆｓｍ｛３，４，ｆｓｍ｛５，６｝｝｝
（例：ｅｘ２ａ）
ｐａｒ｛ｆｓｍ｛１，２｝，ｆｓｍ｛３，ｆｓｍ｛４，５，６｝｝｝
（例：ｅｘ３ａ）
ｐａｒ｛ｆｓｍ｛１，２｝，ｆｓｍ｛３，４，５，６｝｝
仕様例（ｅｘ１ａ）に対し、仕様例（ｅｘ２ａ）および仕様例（ｅｘ３ａ）は、互いに同一の実行順序制約｛１＜２，３＜４，４＜５，５＜６｝をｉｍｐｌｙしているので、等価である。
【００８６】
また、同期を利用した下記の仕様例（ｅｘ４ａ）も、上記の仕様例（ｅｘ１ａ），（ｅｘ２ａ），（ｅｘ３ａ）と等価な仕様の構造の例である。
（例：ｅｘ４ａ）
par｛fsm｛１，fsm｛start（４），４，end（４）｝，２｝，
fsm｛３，fsm｛fork（４），join（４）｝，５，６｝｝
次に、強制約な仕様の構造の例を示す。
【００８７】
例えば、
（例：ｅｘ１ｂ）
ｆｓｍ｛１，ｐａｒ｛２，３｝，４｝
という仕様の例に関して、（ｅｘ１ｂ）がｉｍｐｌｙする実行順序制約は、次の（ｅｃｓ１ｂ）に示す通りである。
｛１＜２，１＜３，２＜４，３＜４｝                …（ｅｃｓ１ｂ）
一方、
（例：ｅｘ２ｂ）
ｆｓｍ｛１，２，ｐａｒ｛３｝，４｝
という仕様の例に関して、（ｅｘ２ｂ）がｉｍｐｌｙする実行順序制約は、次の（ｅｃｓ２ｂ）に示す通りである。
｛１＜２，２＜３，３＜４｝                        …（ｅｃｓ２ｂ）
上記の実行順序制約（ｅｃｓ２ｂ）は、実行順序制約（ｅｃｓ１ｂ）を半順序集合として包含する（１＜３は｛１＜２，２＜３｝に含まれてしまう）ので、実行順序制約（ｅｘ２ｂ）は、実行順序制約（ｅｘ１ｂ）に対して強制約である。
【００８８】
同様に、次に示す仕様例（ｅｘ３ｂ），（ｅｘ４ｂ）も、仕様例（ｅｘ１ｂ）に対して強制約な仕様の構造の例である。
ｆｓｍ｛１，３，ｐａｒ｛２｝，４｝                …（ｅｘ３ｂ）
ｆｓｍ｛１，ｐａｒ｛２｝，３，４｝                …（ｅｘ４ｂ）
＜仕様の構造の変換＞
仕様の構造が与えられたとき、これと等価な実行順序制約を持つ別の仕様の構造に変換するか、または、元の仕様の構造に対する実行順序制約に対し強制約の実行順序制約を持つ別の仕様の構造に変換することを、「仕様の内容を保ったまま構造を変換する」と定義する。
【００８９】
＜移動コマンドの例＞
以下では、「実行順序制約」の仕様制約に基づき、「仕様の内容を保ったまま」仕様の一部を他の部分に移動する移動コマンドの例を示す。もちろん、本発明は、以下の例に限定されるものではない。すなわち、本発明において他の仕様制約を利用する場合には、適宜、別の「仕様の内容を保つ」定義や、移動コマンドの種類を用いることができる。
【００９０】
＜通信路を移動するコマンド＞
<<通信路移動コマンド部>>
通信路に関する移動コマンドは、通信路移動コマンド部１３４１２により実行され、チャネルや変数の所属（どのビヘイビアに所属するか）に関して、ビヘイビアの階層に沿って、所属を上下に移動するコマンドであるところのｐｏｐ／ｐｕｓｈの２種類のコマンドで構成される。
ｐｏｐ（移動する変数／チャネル）
ｐｕｓｈ（移動する変数／チャネル）
いま、ビヘイビアＥの下階層にビヘイビアＤ、Ｄの下階層が２つの互いに通信しあっているビヘイビアＡ，Ｂで構成され、さらにＤに所属するチャネルｃによりＡ，Ｂが互いに接続しているとする。そのような仕様の構造の例（ｅｘ１ｃ）は下記の通りである。
（例：ｅｘ１ｃ）
Ｅ：＝｛ｂｈ｛Ｄ）｝
Ｄ：＝｛ｃ，ｂｈ｛Ｂ（ｃ），Ａ（ｃ）｝｝
ｐｏｐ移動コマンドは、チャネルあるいは変数の所属をひとつ上位の階層のビヘイビアに移動する。例（ｅｘ１ｃ）において、ｐｏｐ（ｃ）移動コマンドを適用した結果が、下記の例（ｅｘ２ｃ）である。
（例：ｅｘ２ｃ）
Ｅ：＝｛ｃ，ｂｈ｛Ｄ（ｃ）｝｝
Ｄ（ｐ）：＝｛ｂｈ｛｛ｂｈ｛Ｂ（ｐ），Ａ（ｐ）｝｝｝｝
例（ｅｘ２ｃ）では、チャネルｃの所属がＤからＥへ変更になる。また、このとき、Ａ，Ｂ間での通信路を確保するためにビヘイビアＤに新たにポートｐが定義され、ＤとＢ，Ａとの接続関係が追加されている。
【００９１】
ｐｕｓｈは逆にチャネル・変数の所属をひとつ下位の階層に移動する。上記の例では、（ｅｘ２ｃ）においてｐｕｓｈ（ｃ）コマンドを実行すると（ｅｘ１ｃ）になる。（ｅｘ１ｃ）は、Ａ，Ｂの通信路ｃの取り得る最下層のビヘイビア所属を表している。すなわち、（ｅｘ１ｃ）に対してｐｕｓｈ（ｃ）コマンドは無効である。このように、ｐｏｐに関しては制限が無いが、ｐｕｓｈに関しては下限が存在し、所属の下限は通信に参加するビヘイビアのうち最上位階層のものと同じ階層である。
【００９２】
＜実行の順序に関する仕様の基本移動コマンド＞
<<実行順序移動コマンド部>>
実行の順序に関する移動は、実行順序移動コマンド部１３４１１により行う。実行順序移動コマンド部１３４１１は、基本移動コマンドとして、下階層から上階層へのビヘイビアの移動であるｐｏｐと、上階層から下階層へのビヘイビアの移動であるｐｕｓｈの４種類で構成される。
ｐｏｐ（移動するビヘイビア）
ｐｏｐ（移動するビヘイビア，移動場所）
ｐｕｓｈ（移動するビヘイビア，移動場所）
ｐｕｓｈ（移動するビヘイビア）
どちらも移動する場所が唯一特定される場合には、１引数のコマンドにより、そうでない場合には、２引数のコマンドにより、それぞれ移動可能性判定部１３１に移動場所を指定して移動を行う。
【００９３】
＜移動の手順＞
以下では、仕様移動部１３における仕様の移動の処理について説明する。
【００９４】
図４に、仕様移動部１３における仕様の移動の手順の一例を示す。
【００９５】
まず、移動可能性判定部１３１により仕様の移動が可能かどうかを調べる（ステップＳ１）。
【００９６】
移動が可能な場合（ステップＳ２でＹｅｓの場合）、移動可能箇所表示部１３２により、移動する場所候補を計算し、候補が複数あるかどうか調べる（ステップＳ３）。そして、候補が複数ある場合（ステップＳ４でＹｅｓの場合）には、場所を限定して移動場所を特定する（ステップＳ５）。
【００９７】
次に、移動の前準備として、移動後においても、通信路の階層に関する制約が満たされているために、通信路を上位階層に予め移動する必要がある場合には、前述の通信路移動コマンドにより、該当する通信路を制約が満たされる上位階層に予め移動する（ステップＳ６）。そして、実行順序移動コマンドにより、ビヘイビアを階層に渡って上下に移動する（ステップＳ７）。続いて、実行順序制約に違反しないように仕様の修正を行う（ステップＳ８）。
【００９８】
なお、移動が可能でない場合（ステップＳ２でＮｏの場合）には、例えばエラー表示などの処理を行う（ステップＳ９）。
【００９９】
ビヘイビアの移動においては、上下の階層の種類（ｆｓｍかｐａｒ）の組み合わせの場合わけにより、ｐｕｓｈ／ｐｏｐ移動コマンドの振る舞いが異なるので、以下では、場合分けして説明する。
【０１００】
以下の例では、移動可能性の判定を移動可能性判定ルールに基づいて行い、移動箇所の計算を移動可能箇所計算ルールに基づいて行い、仕様の修正を仕様修正ルールに基づいて行うこととする。
【０１０１】
仕様移動ルールを以下に例示する。
【０１０２】
（１）上位＝ｆｓｍ／下位＝ｆｓｍの場合
［移動可能性判定ルール］
・階層で近接するビヘイビアのみが上位／下位階層に移動できる。
［移動可能箇所計算ルール］
・移動可能な場所は階層を挟んで隣接する部分である。
【０１０３】
ここで、階層で近接するビヘイビアとは、上位階層へ移動する場合は、ｆｓｍの開始と終了のビヘイビアであり、下位階層へ移動する場合は、下位階層に近接するビヘイビアである。例えば、
ｆｓｍ｛１，２，ｆｓｍ｛３，４，５｝，６，７｝
では、１，３，５，７が上位階層へ移動でき、２，６が下位階層へ移動できる。２が移動できるのは３の直前、５が移動できるのは６の直前、３が移動できるのは３の直後である。
［仕様修正ルール］
・移動後に順序制約を保持すべく適切な同期処理を仕様に付与する。
・移動後に冗長な階層や同期処理を、順序制約を保持する範囲で削除する。
【０１０４】
（２）上位＝ｐａｒ／下位＝ｐａｒの場合
［移動可能性判定ルール］
・任意のビヘイビアが移動可能である。
［移動可能箇所計算ルール］
・移動場所も任意の場所に移動できる。
［仕様修正ルール］
・移動後に順序制約を保持すべく適切な同期処理を仕様に付与する。
・移動後に冗長な階層や同期処理を、順序制約を保持する範囲で削除する。
【０１０５】
（３）上位＝ｆｓｍ／下位＝ｐａｒの場合
［移動可能性判定ルール］
・下層（ｐａｒ）から上層（ｆｓｍ）への移動は下層の任意のビヘイビアが可能である。
・上層から下層への移動は下層に近接するビヘイビアのみ可能である。
［移動可能箇所計算ルール］
・下層（ｐａｒ）から上層（ｆｓｍ）への移動は下層に近接するビヘイビアの直前後にのみ移動可能である。
・上層（ｆｓｍ）から下層（ｐａｒ）への移動は下層の任意の場所に移動可能である。
［仕様修正ルール］
・移動後に順序制約を保持すべく適切な同期処理を仕様に付与する。
・移動後に冗長な階層や同期処理を、順序制約を保持する範囲で削除する。
【０１０６】
（４）上位＝ｐａｒ／下位＝ｆｓｍの場合
［移動可能性判定ルール］
・上層から下層への移動の場合、任意の上層のビヘイビアが移動可能である。
・下層から上層への移動の場合、下層の任意のビヘイビアが移動可能である。
【０１０７】
［移動可能箇所計算ルール］
・上層から下層への移動の場合、移動場所は下層の任意の場所が可能である。
・下層から上層への移動の場合、上層の任意の場所へ移動可能である。
［仕様修正ルール］
・移動後に順序制約を保持すべく適切な同期処理を仕様に付与する。
・移動後に冗長な階層や同期処理を、順序制約を保持する範囲で削除する。
【０１０８】
以下では、上記に例示した移動のためのルールを整理したものを示す。
【０１０９】
＜ケース１：上位階層＝ＦＳＭ，下位階層＝ＦＳＭの場合＞
<<ｐｏｐコマンド>>
下記の仕様（１）が与えられたとき、
ｆｓｍ｛１，２，ｆｓｍ｛３，４，５｝｝                  …（１）
仕様（１）の構造がｉｍｐｌｙする実行順序制約は、次の（２）に示す通りである。
｛１＜２，２＜３，３＜４，４＜５｝                      …（２）
ここで、仕様（１）に対してビヘイビア３をひとつ上の階層に移動する“ｐｏｐ（３）”移動コマンドを実行するものとする。移動可能性判定部１３１により、移動可能性判定ルールに照らし合わせると、３は上位階層に近接するビヘイビアなので、移動が可能であることがわかる。さらに、移動可能箇所については、ルールによると、３に階層を渡って上位階層で隣接するビヘイビアが２なので、２の直後にこれを挿入することができることがわかる。
【０１１０】
仕様（１）に対してビヘイビア３をひとつ上の階層に移動する“ｐｏｐ（３）”移動コマンドを実行すると、その結果として、次に示すような等価な仕様の構造（３）を得る。
ｆｓｍ｛１，２，３，ｆｓｍ｛４，５｝｝                  …（３）
一方、仕様（１）に対してｐｏｐ（５）コマンドを実行すると、下のｆｓｍ階層の直後に移動でき、結果として、次に示すような仕様の構造（４）を得る。
ｆｓｍ｛１，２，ｆｓｍ｛３，４｝，５｝                  …（４）
また、仕様（１）に対してｐｏｐ（４）コマンドを実行することは、移動可能性判定ルールによると実行順序制約を破るので、移動できないことがわかる。
【０１１１】
例えば、ビヘイビア２の直後にｐｏｐ（４）を実行すると、次に示すような仕様（５）を得るが、
ｆｓｍ｛１，２，４，ｆｓｍ｛３，５｝｝                  …（５）
仕様（５）は仕様（１）がｉｍｐｌｙする“｛３＜４｝”という実行制約と矛盾する。
【０１１２】
逆に、仕様（１）においてｆｓｍの最後にｐｏｐ（４）を実行すると、次の仕様（６）を得るが、
ｆｓｍ｛１，２，ｆｓｍ｛３，５｝，４｝                  …（６）
仕様（６）も仕様（１）がｉｍｐｌｙする“｛４＜５｝”という制約と矛盾する。
【０１１３】
<<ｐｕｓｈコマンド>>
下記の仕様（７）が与えられたとき、
ｆｓｍ｛１，ｆｓｍ｛２，３｝，４，５｝                  …（７）
仕様（７）は、次に示す実行順序制約（８）をｉｍｐｌｙしている。
｛１＜２，２＜３，３＜４，４＜５｝                      …（８）
ここで、仕様（７）に対し、“ｐｕｓｈ（１）”移動コマンドを実行するものとする。移動可能性判定部１３１により、移動可能性判定ルールを参照すると、１は階層に隣接するので、下位階層に移動でき、移動可能箇所計算ルールによると移動できる場所は２の直前であることがわかる。
【０１１４】
“ｐｕｓｈ（１，２の直前）”コマンド実行の結果、１がひとつ下の階層に移動して、次に示すような仕様（９）を得る。
ｆｓｍ｛ｆｓｍ｛１，２，３｝，４，５｝                  …（９）
移動可能性判定ルールによると、ｆｓｍ／ｆｓｍの場合は下の階層へ隣接したビヘイビアしかｐｕｓｈできないので、仕様（７）に対する“ｐｕｓｈ（５）”コマンドは実行不可能である。
【０１１５】
＜ケース２：上位階層＝ＰＡＲ、下位階層＝ＰＡＲの場合＞
<<ｐｏｐコマンド>>
次に示す仕様の構造（１ａ）が与えられたとき、
ｐａｒ｛１，ｐａｒ｛２，３｝，４｝                        …（１ａ）
仕様（１ａ）は、下記の実行順序制約（２ａ）をｉｍｐｌｙしている（なにも順序は規定していないということ）。
｛｝                                                  …（２ａ）
仕様（１ａ）に対し“ｐｏｐ（２）”移動コマンドを実行するものとすると、移動可能性判定部１３１により、移動可能性判定ルールを参照し、ビヘイビア２が移動可能であることがわかり、さらに移動可能箇所表示部１３２は、移動可能箇所計算ルールを参照し、任意の場所に移動可能であることがわかり、移動可能な場所「１の直前および直後、４の直前および直後」を表示するので、設計者は「１の直後」を選択し“ｐｕｓｈ（２，１の直後）”移動コマンドを実行すると、構造が変更され、次に示す新たな仕様（３ａ）を得る。
ｐａｒ｛１，２，ｐａｒ｛３｝，４｝                    …（３ａ）
<<ｐｕｓｈコマンド>>
移動可能性判定ルールによると、“ｐａｒ／ｐａｒの場合”は、ｐｕｓｈもｐｏｐと同じく任意の上位階層の要素を下位階層の任意の場所に移動できることがわかる。
【０１１６】
例えば、仕様（１ａ）に対し、ｐｕｓｈ（４）移動コマンドを移動可能性判定部１３１により実行すると、次に挙げる３通りの可能な仕様を得る。
ｐａｒ｛１，ｐａｒ｛２，４，３｝｝
ｐａｒ｛１，ｐａｒ｛２，３，４｝｝
ｐａｒ｛１，ｐａｒ｛４，２，３｝｝                    …（４ａ）
これらは実行順序制約の上では同一の（等価な）仕様である。
【０１１７】
＜ケース３：上位階層＝ＦＳＭ、下位階層＝ＰＡＲ＞
<<ｐｏｐコマンド>>
与えられた以下の仕様（１ｂ）に対して、
ｆｓｍ｛１，ｐａｒ｛２，３｝，４｝                    …（１ｂ）
“ｐｏｐ（２）”移動コマンドを実行するものとすると、移動可能性判定部１３１により、移動可能性判定ルールを参照すると、移動可能であり、近接するビヘイビアが１，４なので、さらに移動可能箇所表示部１３２によると、「１の直後または４の直前」が移動可能な場所であることがわかる。
【０１１８】
“ｐｏｐ（２，１の直後）”移動コマンドを実行した場合は、
ｆｓｍ｛１，２，ｐａｒ｛３｝，４｝                    …（２ｂ）
“ｐｏｐ（２，４の直前）”移動コマンドを実行した場合は、
ｆｓｍ｛１，ｐａｒ｛３｝，２，４｝                    …（３ｂ）
という仕様の構造をそれぞれ得ることができる。
【０１１９】
“ｐｏｐ（３）”移動コマンドについても同様である。
【０１２０】
<<ｐｕｓｈコマンド>>
次の仕様の構造（４ｂ）に対して、
ｆｓｍ｛１，ｐａｒ｛２，３｝，４｝                    …（４ｂ）
“ｐｕｓｈ（１）”移動コマンドを実行するものとすると、移動可能性判定部１３１により、移動可能性判定ルールを参照して、上層から下層へ移動（ｐｕｓｈ）するためには近接するビヘイビアのみが可能であり、１は下層に近接するビヘイビアなので移動可能であることがわかり、また仕様修正ルールにより移動に際しては適切な同期用の処理を付与する必要があるので、次に示すように、実行順序｛１＜２，１＜３｝を保持すべく同期処理とそれに関連する仕様の構造の変更を行う。
fsm｛par｛fsm｛1，end(1)｝,fsm｛join(1)，2｝,fsm｛join(1)，3｝｝,4｝
…（５ｂ）
ここでは、１，２，３はｐａｒの中で並列実行されるが、同期機構により１が終了したあとに２，３が起動することを示している。
【０１２１】
“ｐｕｓｈ（４）”移動コマンドに対しても同様の処理を行う。この場合、順序制約｛２＜４，３＜４｝により４が開始するには、２，３両方が終了している必要があるので、同期は２つのｊｏｉｎをｐａｒで括った階層を用意して、２と３が両方終わったときの同期タイミングを４の開始のタイミングとしている。
0003895934.tif 000005
＜ケース４：上位階層＝ＰＡＲ，下位階層＝ＦＳＭ＞
<<ｐｏｐコマンド>>
次に示す仕様（１ｃ）に対し、
ｐａｒ｛１，２，ｆｓｍ｛３，４，５｝｝                …（１ｃ）
“ｐｏｐ（４）”移動コマンドを実行するものとすると、移動可能性判定部１３１により、移動可能性ルールを参照して、下層ｆｓｍから上層ｐａｒへの移動できるのは任意のビヘイビアなので、ビヘイビア４は移動できることがわかり、また移動可能場所ルールにより、移動の場所は任意の場所が許されることがわかり、さらに仕様修正ルールにより、移動の場合は適切な同期の処理を付与しなくてはならないことがわかるので、これに基づいて移動コマンドを実行し、同期の処理を付与して最終的に得られた結果が、次の仕様（２ｃ）である。
par｛1,2,fsm｛start(4),4,end(4)｝,fsm｛3,fork(4),join(4),5｝｝
…（２ｃ）
仕様（２ｃ）によると、４と３，５はｐａｒにより並列実行されるが、同期処理（ｓｔａｒｔ，ｅｎｄ，ｆｏｒｋ，ｊｏｉｎ）により３が終了したあとに４が４が終了した後に５が実行されることになり、これは初期の実行順序制約｛３＜４，４＜５｝を保っていることを示している。
【０１２２】
ｐｏｐ（３），ｐｏｐ（５）コマンドに関しても同様である。
【０１２３】
<<ｐｕｓｈコマンド>>
仕様（１ｃ）に対し“ｐｕｓｈ（２）”移動コマンドを実行するものとすると、移動可能性判定部１３１により、上層（ｐａｒ）から下層（ｆｓｍ）への移動は、任意の要素を、任意の場所に移動できることがわかる。そこで、移動個所を指定する移動コマンド“ｐｕｓｈ（２，３と４の間）”を実行し、次の仕様（３ｃ）を得る。
ｐａｒ｛１，ｆｓｍ｛３，２，４，５｝｝                …（３ｃ）
＜ケース５：基本移動コマンドの組み合わせ＞
基本移動コマンドを組み合わせることにより任意の移動コマンドを実現することができる。コマンドを組み合わせる方法を指示する手段としては、手続き型の高級言語にて、これを行う。高級言語としては、例えば、スクリプト言語（ｊａｖａｓｃｒｉｐｔ）やＵＮＩＸのシェル（ｓｈ，ｂａｓｈ，ｃｓｈ）が考えられる。
【０１２４】
例えば、ｐａｒの下階層のｆｓｍに含まれる要素を隣接するｆｓｍ間で移動するｒｅｌｏｃａｔｅ＿ｃｎｃコマンドを、
relocate_cnc(移動対象,移動場所)＝
“pop(移動対象)を実行してからpush(移動対象，移動場所)を実行する”
と（移動コマンド定義部１３４２にて）定義する。
【０１２５】
下記の仕様（１ｄ）に対し、
ｐａｒ｛ｆｓｍ｛１，２｝，ｆｓｍ｛３，４，５｝｝      …（１ｄ）
ｒｅｌｏｃａｔｅ＿ｃｎｃ（２，４と５の間）を実行すると、移動コマンド解釈実行部１３４３が、コマンド定義に従ってｒｅｌｏｃａｔｅ＿ｃｎｃの内容を実行する。
【０１２６】
まず、“ｐｏｐ（２）”を実行し、次の仕様（２ｄ）を得、
par｛fsm｛join（１）,２｝,fsm｛１,end（１）｝,fsm｛３，４，５｝｝
…（２ｄ）
さらに、“ｐｕｓｈ（２，４と５の間）”を実行し、仕様（３ｄ）を得る。
par｛fsm｛１,end（１）｝,fsm｛３,４,fsm｛join（１）,２｝,５｝｝
…（３ｄ）
を得て、仕様修正ルールに従い、冗長なfsm階層を削除すると、
par｛fsm｛１,end（１）｝,fsm｛３,４,join（１）,２，５｝｝
…（４ｄ）
を最終的に得る。
【０１２７】
別の例としては、ｆｓｍの下階層のｆｓｍに含まれる要素をｆｓｍ間で移動するｒｅｌｏｃａｔｅ＿ｓｅｑコマンドを、
relocate_seq(移動対象,移動場所)＝
“pop(移動対象)を実行してからpush(移動対象,移動場所)を実行する”
と（移動コマンド部１３４にて）定義する。
【０１２８】
次の仕様（５ｄ）に対して、
ｆｓｍ｛ｆｓｍ｛１，２｝，ｆｓｍ｛３，４，５｝｝      …（５ｄ）
“ｒｅｌｏｃａｔｅ＿ｓｅｑ（２，３の直前）”コマンドを実行すると、同様に、移動コマンド実行部１３４が移動コマンド定義を参照してｐｕｓｈ／ｐｏｐコマンドを順次実行し、次の仕様（６ｄ）を得る。
ｆｓｍ｛ｆｓｍ｛１｝，ｆｓｍ｛２，３，４，５｝｝        …（６ｄ）
このとき移動可能性判定部１３１もこの移動コマンド定義と個々の基本コマンドの移動判定ルールを参照して、これらを組み合わせることにより移動可能性を判定する。先の例の場合ｒｅｌｏｃａｔｅ＿ｓｅｑ（２，３の直前），ｒｅｌｏｃａｔｅ＿ｓｅｑ（３，２の直後）のみが可能であることがわかる。
【０１２９】
＜仕様制約記録部について＞
仕様制約記録部１２は、例えば、仕様の構造に対応する実行順序制約を記録保持する。ただし、実行順序制約と仕様の構造とは、関連があるが独立である。
【０１３０】
例えば、仕様（１ｅ）、
ｐａｒ｛１，２，ｆｓｍ｛３，４，５｝｝                …（１ｅ）
がｉｍｐｌｙする実行順序制約は、
｛３＜４，４＜５｝                                    …（２ｅ）
であり、これを仕様制約記録部１２に記録して一連の移動コマンドを実行する。
【０１３１】
例えば、仕様（１ｅ）に“ｐｕｓｈ（２，３と４の間）”を実行すると仕様（３ｅ）を得る。
ｐａｒ｛１，ｆｓｍ｛３，２，４，５｝｝                …（３ｅ）
この仕様（３ｅ）に対して“ｐｏｐ（２）”コマンドを実行すると、仕様（４ｅ）を得るが、
par｛1,fsm｛join(3),2,end(2)｝,fsm｛3,end(3),join(2),4,5｝｝
…（４ｅ）
仕様制約記録部１２を参照して元々の仕様（１ｅ）の実行順序制約（２ｅ）＝｛３＜４，４＜５｝を参照すると、同期処理が無駄であるのでこれを削除し、元の仕様（１ｅ）と同じ構造を得る。
【０１３２】
さらに、“ｐｕｓｈ（２，４と５の間）”コマンドを実行すると、次の仕様（５ｅ）を得る。
ｐａｒ｛１，ｆｓｍ｛３，４，２，５｝｝                …（５ｅ）
このように、元々の順序制約は仕様（１ｅ）から抽出し、これに基づいて移動コマンド操作を行う場合（基本移動コマンドを組み合わせて任意の移動コマンドを作成する場合に相当）には、中間結果である仕様の構造がｉｍｐｌｙする順序制約は、移動の際考慮すべき順序制約ではなく、仕様制約記録部１２に記録された元々の仕様の構造のｉｍｐｌｙする順序制約を参照する。仕様（３ｅ）から仕様（５ｅ）への変換のように、順序制約に照らし合わせると制約違反であるような移動が変換の中間状態には含まれることになる。
【０１３３】
＜割り込み＞
以上の例では、仕様の構造に割り込みに関する記述（ｔｒｙ／ｔｒａｐ／ｉｔｒｐ）が含まれる場合については述べなかった。これは割り込みに関する記述は事前に局所化して、局所化された部分構造を単独ビヘイビアとして取り扱うことができるので、全体としては割り込みの構造を排除してｐａｒ，ｆｓｍのみで構成される階層構造とすることができるからである。
【０１３４】
例えば、
ｔｒｙ｛ｆｓｍ｛ａ，ｂ，ｃ｝｝ｔｒａｐ（ｅ）｛ｆｓｍ｛ｄ｝｝
というビヘイビアは、「ａ，ｂ，ｃを逐次実行している間にイベントｅが発生したらａ，ｂ，ｃの実行を中止してｄを実行する。ｅが発生しなかったらｃが終了した時点で終了する。」という仕様を示しているが、これは、ｔｒｙ／ｔｒａｐ構造を下階層へ移動することにより、次に示すような等価な仕様の構造に変換することができる。
0003895934.tif 000006
ここでは、同期機構とｆｌｇフラグの値で元々の順序制約を保っている。
【０１３５】
さらに、図５に示すようなマクロ化を行うことにより、構造上ｔｒｙ／ｔｒａｐを隠蔽することができる。
【０１３６】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【０１３７】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【０１３８】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【０１３９】
【発明の効果】
本発明によれば、仕様の設計において、目的やリソース制約あるいは外部からの要求などに合わせて、容易に、仕様の内容を保持しながら、仕様の構造を変更できるようになる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係る仕様操作装置の構成例を示す図
【図２】同実施形態に係る仕様操作装置の仕様移動部の内部構成例を示す図
【図３】同実施形態に係る仕様操作装置の仕様移動部の移動コマンド部の内部構成例を示す図
【図４】図４に、仕様移動部１３における仕様の移動の手順の一例を示す。
【図５】システム記述言語形式の仕様の一例を示す図
【図６】同実施形態に係るシステム設計支援装置の構成例を示す
【符号の説明】
１…仕様操作部
２…入出力部
３…通信部
４…プログラム実行部
１１…仕様構造記録部
１２…仕様制約記録部
１３…仕様移動部
１３１…移動可能性判定部
１３２…移動可能場所表示部
１３３…仕様修正部
１３４…移動コマンド部
１３４１…基本移動コマンド部
１３４２…移動コマンド定義部
１３４３…移動コマンド解釈実行部
１３４１１…実行順序移動コマンド部
１３４１２…通信路移動コマンド部
１００…システム設計支援装置
１０１…仕様モデル記述部
１０２…アーキテクチャ探索部
１０３…コミュニケーション合成部
１０４…ハードウェア仕様生成部
１０５…部品化・再利用部
１０６…ソフトウェア仕様生成部
１０７…システム仕様記録部
【図１】
0003895934.tif 000007
【図２】
0003895934.tif 000008
【図３】
0003895934.tif 000009
【図４】
0003895934.tif 000010
【図５】
0003895934.tif 000011
【図６】
0003895934.tif 000012