(57)【特許請求の範囲】
【請求項１】
制御対象のプロセス装置とそれを制御するための制御機器との関係を各ノードとこれらノード間をリンクにより接続した状態で表示可能に示すソフトウエアの設計情報を設計する設計部、前記設計部により設計された設計情報を格納する設計情報格納部を有する設計情報構築部と、
前記設計情報を構築するための部品が複数の構成要素から階層構造となり、下位の階層構造をした構成要素からなる部品を包含して格納された部品格納部、前記部品格納部に格納されている部品を構成する各層を検索抽出する部品検索部、前記部品格納部に階層構造とした部品を登録する部品登録部を有する設計情報管理部と
から構成され、
前記部品格納部に格納されて指定された部品の階層構造の状態を表示出力し、この表示出力され階層構造における指定された部品の階層構造を再利用部品として選択し、この選択した再利用部品を前記設計部における設計情報の設計に再利用することを特徴とするソフトウエア部品の再利用システム。
【請求項２】
請求項１記載のソフトウエア部品の再利用システムにおいて、
前記部品格納部に格納される部品にその内容の説明情報と他との関係情報とを付帯させたことを特徴とするソフトウエア部品の再利用システム。
【請求項３】
請求項１または２記載のソフトウエア部品の再利用システムにおいて、
前記部品格納部に格納されている部品のシミュレーションを実行する部品動作シミュレーション実行部を有することを特徴とするソフトウエア部品の再利用システム。
【請求項４】
請求項１から３のいずれか１項に記載のソフトウエア部品の再利用システムにおいて、
前記部品格納部に格納されている部品には、この部品の属性を示す属性キーが付与され、
前記部品検索部は、前記属性キーに基づいて前記部品格納部に格納されている部品を構成する各層を検索抽出することを特徴とするソフトウエア部品の再利用システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、ソフトウエアの設計およびその設計情報を再利用するソフトウエア部品の再利用システムに関する。
【０００２】
【従来の技術】
ソフトウエア（アプリケーションソフト）を作成するとき、まず初めにソフトウエアの設計情報を構築し、これに則ってそのソフトウエアを構成していく。
従来より、この設計情報を構成するプログラム（部品）の再利用ということで様々な工夫がなされてきたが、そのアプローチには大きく２つの形態がある。
まず、第１として、標準的な再利用部品を予め作成し、個々のソフトウエア作成時にこれを利用していくという形態がある。
次に、第２として、既にあるソフトウエア作成時に用いた設計情報の中から、再利用者が再利用できそうな部分を選択して、必要に応じてカスタマイズを施した上で利用する形態である。
【０００３】
【発明が解決しようとする課題】
従来は以上のようになされていたので、以下に示すような問題点があった。
まず、上述した第１の形態では、ライブラリといわれる標準部品を予め作成しておくわけであるが、この仕様や使い方が、再利用するときの利用目的に合致しないという問題があった。
つまり、ライブラリ作成時の仕様と、再利用時の利用目的との間に、多少なりとも常に差異が生じており、この使い方や仕様などを理解するのに手間がかかるという問題である。
【０００４】
予め用意しておくライブラリが、数値計算用の比較的汎用的で規模が小さい場合は、上述したような問題はあまりないが、例えば、プロセスコントローラ用のアプリケーションプログラムのためのソフトウエア設計情報などの、特化した大きなものになると、その内容が複雑で理解が難しいものとなる。
そして、カスタマイズして利用するにも手間がかかり、カスタマイズにより予想でき得ないバグが発生するなどの問題もあった。
【０００５】
一方、第２の形態では、再利用するときに、既存の設計情報を構成する部品の中から利用目的に合致する部分を選び出して利用する程度であり、元のソフトウエア設計情報全体に対する各部分の果たす役割が分かっていないと、どの部分が目的に合致するのかが分からないという問題があった。
また、元のソフトウエア設計情報全体の中で、どこからどこまでの部分が所望とする機能を有しているのかどうかが分からないという問題があった。
【０００６】
他方、第１の形態において、予め用意して有るライブラリを利用するときは、ライブラリの中の各設計情報に検索子として属性キーを割り当てたり、その設計情報を構成する各部品に対して検索子を割り当てて、それぞれ１次元的に単純な検索をすることはできたが、設計情報と部品という２次元に対して検索することができなかった。
【０００７】
この発明は、以上のような問題点を解消するためになされたものであり、ソフトウエア設計情報の作成者の意図と、それを構成する各部品の中より利用できるものは再利用しようとする利用者の利用目的とが異なっていても、再利用できるようにすることを目的とする。
また、所望とする設計情報およびその各部品が効率よく検索できるようにすることを目的とする。
そして、所望とする各部品の仕様や構造およびその動作に関して、再利用者が容易に理解できるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
この発明のソフトウエア部品の再利用システムは、制御対象のプロセス装置とそれを制御するための制御機器との関係を各ノードとこれらノード間をリンクにより接続した状態で表示可能に示すソフトウエアの設計情報を設計する設計部、設計部により設計された設計情報を格納する設計情報格納部を有する設計情報構築部と、設計情報を構築するための部品が複数の構成要素から階層構造となり、下位の階層構造をした構成要素からなる部品を包含して格納された部品格納部、部品格納部に格納されている部品を構成する各層を検索抽出する部品検索部、部品格納部に階層構造とした部品を登録する部品登録部を有する設計情報管理部とから構成され、部品格納部に格納されて指定された部品の階層構造の状態を表示出力し、この表示出力され階層構造における指定された部品の階層構造を再利用部品として選択し、この選択した再利用部品を設計部における設計情報の設計に再利用しようとしたものである。
また、部品格納部に格納される部品にその内容の説明情報と他との関係情報とを付帯させたことを特徴とする。
そして、部品格納部に格納されている部品のシミュレーションを実行する部品動作シミュレーション実行部を有することを特徴とする。
また、部品格納部に格納されている部品には、この部品の属性を示す属性キーが付与され、部品検索部は、属性キーに基づいて部品格納部に格納されている部品を構成する各層を検索抽出する。
【０００９】
【作用】
階層状態を確認しながら部品を検索抽出し、これをソフトウエアの設計に再利用する。
また、部品に関する情報が得られる。
そして、部品の動作状態が確認できる。
【００１０】
【実施例】
以下この発明の１実施例を図を参照して説明する。
図１は、この発明の１実施例であるソフトウエア部品の再利用システムを実現するための、再利用管理装置の構成を示す構成図である。
同図において、１ａはＣＲＴ、１ｂはキーボード、２はマウス、３は装置本体であり、この装置本体３は、大きく分けて、設計情報管理部４と設計情報構築部５から構成される。
設計情報管理部４は、部品検索部６と部品動作シミュレーション実行部７と部品登録部８と部品格納部９とから構成されている。
また、設計情報構築部５は、プログラムおよび仕様書や説明書などの付帯情報からなる設計情報を開発するための開発環境を提供する設計部１０と、設計情報格納部１１とから構成されている。
【００１１】
ソフトウエア開発者は、ＣＲＴ１ａ，キーボード１ｂ，もしくはマウス２を媒介として装置本体３にアクセスする。
この装置本体３には設計情報構築部５が配置され、これを用いてソフトウエアの開発設計を行う。
設計部１０により、新規のソフトウエア設計情報の作成や、既存のソフトウエア設計情報の変更修正を行うことができる。
設計部１０で作成／変更された，又はその作業の途中のソフトウエア設計情報は、設計情報格納部１１に格納することができる。
【００１２】
また設計情報格納部１１に格納されたソフトウエア設計情報を設計部１０に呼び出して、さらに編集を加えることも可能である。
ソフトウエア開発者は、前述のように設計情報構築部５のみを用いて、全てを新規にソフトウエア設計情報を作成することもできるが、生産効率および品質を考慮すると、既存の実績のあるソフトウエア設計情報の再利用を交えて開発することが望ましい。
【００１３】
これを支援するのが設計情報管理部４である。
設計情報管理部４の構成要素である部品格納部９には、既存のソフトウエア設計情報や、そこから汎用性や再利用性を考慮して部分的に抽出した標準部品などの種々のソフトウエア設計情報の部品を記憶している。
これら、部品格納部９に登録されたソフトウエア設計情報を、以降ソフトウエア部品と称し、開発中のソフトウエア設計情報と区別する。
ソフトウエア開発者は、部品検査部６を介してそれらのソフトウエア部品から利用可能なものを選択し、設計部１０で開発中のソフトウエア設計情報の中に取り込んで利用する。
【００１４】
また、ソフトウエア部品を開発中のソフトウエア設計情報の中に取り込む前に、そのソフトウエア部品の使い方を把握できるように、その動特性をシミュレートするための、部品動作シミュレーション実行部７が設けられている。
さらに設計情報構築部５で開発したソフトウエア設計情報を、ソフトウエア部品として登録するため、部品登録部８が用意されている。
【００１５】
この部品登録部８では、設計情報構築部５で開発完了したソフトウエア設計情報全体をそのまま登録することもできる。
また、その中から汎用性や再利用性に注目して一部分を抽出し、必要ならば修正を施した上で登録することもできる。
登録されたソフトウエア部品は、部品格納部９に格納され、以降のソフトウエア設計情報の開発時に利用されることとなる。
【００１６】
なお、本実施例では、設計情報構築部５と設計情報管理部４が同一装置上に配置されたスタンドアロン構成をとっているが、これに限るものではない。
設計情報構築部５がクライアントの装置上に配置され、設計情報管理部４がサーバの装置上に存在するクライアント・サーバ方式による分散環境下にも適用できることはいうまでもない。
【００１７】
以下、まず、ソフトウエア部品に関して詳細に説明する。
本発明におけるソフトウエア部品は、その内部構造として階層的な木構造を有している。
図２は、この実施例におけるソフトウエア部品の構成要素の種類およびその構成を示す構成図である。
同図において、２０１はソフトウェア部品内部の階層構造を形成するための基本部品である階層パーツ、２０２はソフトウェア部品内部のプログラムモジュールを形成するための基本部品であるプログラムパーツ、２０３はプログラムパーツの制御対象（計装設計においては、分散制御システムの制御部や、プラントの装置にあたる）をシミュレートする部品である機能パーツである。
【００１８】
また、２０４はアイコン、２０５はそのパーツの詳細構造をネットワーク表現で記述するための枠組みであるネットワーク記述シート、２０６はそのパーツの詳細動作をフロー表現（フローチャートやＳＦＣなど）で記述定義するための枠組みであるフロー記述シート、２０７はテキスト情報や絵情報を記述する枠組みであり、その階層パーツの機能や目的などの機能仕様や設計情報を、図表現や自然言語を用いて記述するために用いられるドキュメント記述シートである。
アイコン２０４は、そのパーツが他のパーツのネットワーク記述シート２０５，フロー記述シート２０６，ドキュメント記述シート２０７上で記述された場合のＣＲＴ１ａ（図１）上での表示形態、もしくはその表示情報である。アイコンの形状は、階層パーツの使い方や好みによって自由に変更成形することが可能である。
【００１９】
そして、２０８は音声情報を格納する枠組みであり、その階層パーツに関する機能仕様，設計情報やコメントなどの情報を音声情報として格納する音声情報格納部、２０９はソフトウエア部品の再利用時に、再利用する部分を検索表示するときの検索キーを格納する検索用属性格納部、２１０は外部変数を格納している外部変数Ｉ／Ｆ、２１１はそのプログラムパーツの機能動作を定義するためのプログラムをテキスチャルなプログラム言語で記述するための枠組みであるプログラム記述シート、２１２はシミュレーション実行時（詳細は後述）に制御対象のを振る舞いをシミュレートするためのプログラムを格納するシミュレーションプログラム格納部である。
外部変数Ｉ／Ｆ２１０は、当該パーツのプログラム記述シート２１１上に記述されたプログラムが参照している、制御対象となるプラント機器や分散制御システムの制御部などの外部変数を格納している。
これは、シミュレーション実現のために利用されるものである。
【００２０】
なお、ＣＲＴ１ａ（図１）上に表示されるアイコン２０４をマウス２（図１）などで指定することで、対応する階層パーツのシート（ネットワーク記述シート２０５、フロー記述シート２０６または、ドキュメント記述シート２０７）を開き表示することができる。
同様にアイコン２０４と音声情報格納部２０８との関係は、親パーツのシートに対応しているアイコン２０４をマウス２などで指定することで、音声情報格納部２０８に音声を記憶させたり、既に記憶されている音声を再生することができる。
【００２１】
以下、階層パーツによる階層構造の形成に関して説明する。
図３は、階層構造を示す説明図であり、３０１は１個の階層パーツであり、その内部には、アイコン３０２とネットワーク記述シート３０３とフロー記述シート３０４およびドキュメント記述シート３０５が存在する。
また、子側の階層の階層パーツ３０１が親側の階層パーツのシート３０６に置かれている様子が表されている。
このシート３０６には、ネットワーク記述シート３０３，フロー記述シート３０４，ドキュメント記述シート３０５のいずれかが置かれているものである。
【００２２】
また、シート３０６には他の子となる階層パーツのアイコン３０７も置かれており、このアイコン３０７をもつ階層パーツは、階層パーツ３０１から見て同階層にあるという。
一方の階層パーツの保持するシート３０６に、他方の階層パーツ３０１のアイコン３０２を貼り付けることで、前者のパーツが後者の階層パーツ３０１を所有したことを表す。
この所有した方を親または親階層パーツといい、所有された方を子または子階層パーツという。
【００２３】
次に、前述の階層パーツ、プログラムパーツ、機能パーツを用いて、上述したソフトウェア部品の内部構造を説明する。
図４は、この発明におけるソフトウエア部品の構成を示す構成図であり、計装ソフトウェア部品の一例を示したものである。
同図（ａ）はソフトウェア部品の内部構造のイメージを示した階層構成を示し、（ｂ）は階層構造のみを簡略化して示したをツリー構成を示す構成図である。
【００２４】
まず初めに、図４（ａ）の内部構造のイメージに関して説明する。
各ソフトウェア部品は、ルート階層パーツ４０１を頂上とし、階層パーツの親子関係により階層構造を形成している。
図中のソフトウェア部品は、プロセス制御を目的とする計装ソフトウェア部品であり、次のような階層構造を形成している。
【００２５】
ルート階層パーツ４０１は１枚のネットワーク記述シート４０２をもつ。
そのネットワーク記述シート４０２には、制御対象のプロセス装置とそれを制御するための制御機器との関係を記した「コントロールフロー図」が記述されている。
すなわち、プロセス装置や制御機器をノードとし、それら各ノード間をリンクにより接続した状態を示すものである。
ここにはいくつかの機能パーツ４０６と、階層パーツを示す３つのアイコン４０３〜４０５がノードとして配置されており、それぞれ「シーケンス」、「インタロック」、「比率」と名付けられている。
【００２６】
そして、ネットワーク記述シート４０２における「シーケンス」を示すアイコン４０３には、その「シーケンス」のプログラムのフローチャートが記述されたフロー記述シート４０７が下層に付随している。
このフロー記述シート４０７には、仕込み工程４０８、撹拌工程４０９という名の２つの階層パーツと、払い出し工程４１０という名の付いたプログラムパーツのアイコンが置かれている。
さらに、このフロー記述シート４０７の払い出し工程４１０の下層には、この詳細なプログラムフローを記述したプログラム記述シート４１１が付随している。
【００２７】
次に図４（ｂ）に記述されているツリー構成に関して説明する。
これは、図４（ａ）のソフトウェア部品の内部構造に対応させて表現したものであり、ルート階層パーツ４０１にノード４１２が対応する。
また、ルート階層パーツ４０１を構成するネットワーク記述シート４０２中のアイコン４０３，４０４，４０５で示されている下位の階層パーツに「比率」，「インタロック」，「シーケンス」などを示すノード４１３，４１４，４１５が対応する。
そして、そのまた下位のフロー記述シート４０７に、「仕込み工程」，「攪拌工程」，「払い出し工程」などを示すノード４１６，４１７，４１８が対応する
【００２８】
上述したような階層構造のデータとなっているソフトウェア部品を再利用しようとするときは、例えば、ノード４１５を選択することで、その子であるノード４１６，４１７，４１８・・・が芋蔓式に取り出される。
ノード４１６，４１７、４１８はノード４１５の子であり、これらはノード４１５をルートとする「部分木」の一部である。
ただし、階層構造の一部の「部分木」の中で一部の階層パーツを除外した状態で再利用する単位としたり、複数の「部分木」をまとめて１つの再利用する単位とすることもできる。
【００２９】
前述のように本発明においては、再利用を目的に登録したソフトウェア部品の単位でなく、そのソフトウェア部品の構成要素である（階層パーツによる）部分木の単位で再利用が可能となっている。
したがって、ソフトウェア開発において、再利用しうるソフトウエア部品を探すためには、まず利用可能なソフトウェア部品を探し、次にそのソフトウェア部品の中から利用できそうな階層パーツもしくはプログラムパーツ（部分木のルート）を探す、と言う２段階の検索が一般的には必要となる。
このような２段階の検索を、虱潰しに行うのではなく効果的に行なおうというものが「水平／垂直ブラウジング機能」である。
【００３０】
まずその原理を図５を用いて説明する。
図５は、３個のソフトウェア部品Ａ５０１，Ｂ５０２，Ｃ５０３から利用可能な部分木のルート階層パーツを検索する場合の例が示されている。
同図において、５０４〜５１２はソフトウエア部品Ａ５０１，Ｂ５０２，Ｃ５０３の部分木を構成する階層パーツ、５１３はソフトウェア部品管理テーブルである。
このソフトウェア部品管理テーブル５１３は、各ソフトウェア部品Ａ５０１〜Ｃ５０３の部品名とルートとなる階層パーツ５０４〜５０６へのポインタを記憶するテーブルである。
【００３１】
図５では、ソフトウエア部品Ａ５０１の階層パーツ５１０と、ソフトウエア部品Ｂ５０２の階層パーツ５１１と、ソフトウエア部品Ｃ５０３の階層パーツ５１２は同一または類似機能を持つ階層パーツである。
以下ではこのような３つのソフトウェア部品Ａ５０１，Ｂ５０２，Ｃ５０３から目的の階層パーツ５１２を探すまでのプロセスを例にとり、この「水平／垂直ブラウジング機能」を説明する。
【００３２】
このブラウジングは、次の３つの機能からなる。
まず、第１として、ソフトウェア部品レベルのブラウジングとして、どのようなソフトウェア部品が登録されているのか確認すると共に、どのソフトウェア部品から探し初めるのかを決めるための機能がある。
これは、ソフトウェア部品管理テーブル５１３を参照し、どのソフトウェア部品から、その内部構造を検索表示するかを決定するものである。
【００３３】
実際の内部処理としては、ソフトウェア部品管理テーブル５１３内の部品名をどれか選択することで、そのソフトウェア部品のルートの階層パーツが求まる。
この時、ルートの階層パーツが保持する、図２に示すような、ネットワーク記述シート２０５、フロー記述シート２０６、ドキュメント記述シート２０７などの各種シート情報を表示したり、音声情報格納部２０８が格納している音声メッセージなどを出力したりすることで、これらを参考情報とすることができる。
【００３４】
次に、第２の機能として、ソフトウェア部品の内部階層構造に基づくブラウジング（垂直ブラウジング）がある。
これは、ある特定のソフトウェア部品の内部階層構造に基づき、階層パーツ（またはプログラムパーツ）が保持している、図２に示すネットワーク記述シート２０５、フロー記述シート２０６、ドキュメント記述シート２０７、および音声情報格納部２０８に格納されている音声情報などの情報を参照しながら、階層構造内を上下することで再利用すべき部分木を絞り込んでいく機能である。
正確には、その部分木のルート階層パーツを検索していく機能である。
【００３５】
図５をもとに、その検索方法を簡単に説明する。
階層パーツが保持している情報を基に判断して、ソフトウェア部品Ａ５０１が再利用したい機能を持っていると判断した場合、そのルートの階層パーツ５０４以下の各階層パーツ５０７および階層パーツ５０８の保持情報を順次チェックする。
階層パーツ５０７と階層パーツ５０８の両方とも再利用したい機能に関係している場合は、階層パーツ５０４をルートノードとする部分木（というより全体）を利用すればよいことが分かる。
【００３６】
しかし、階層パーツ５０８が求める機能と何ら関係しない場合、階層パーツ５０７をルートとする部分木（または、さらにその部分木）を利用すればよいことが分かる。
このプロセスを順次繰り返すことにより、再利用したい機能を持つ必要最小の部分木を絞り込んでいくことができる。
この例において必要最小の部分木は下位層パーツ５１０のみだと仮定すると、必要最小の部分木のルート階層パーツの検索は、階層パーツ５０４、階層パーツ５０７、階層パーツ５０９を経て階層パーツ５１０に辿り着く。
【００３７】
そして、第３として水平ブラウジング（同一／類似機能を持つ階層パーツの検索）がある。
これは、あるソフトウェア部品の中で利用可能な階層パーツ（部分木）を発見した後、他のソフトウェア部品の中に、それと同様の機能を有するものが有るかを確認し、あればそれを芋蔓式に取り出そうというのが水平ブラウジング機能である。
【００３８】
この水平ブラウジングを実現するために、各階層パーツおよびプログラムパーツに属性キーが付与されている。これは、例えば、第２図における検索用属性格納部２０９に格納するようにすればよい。
属性キーは、ソフトウエア部品を作成した段階で設定、変更できるものであり、また、各パーツに付与する属性キーの個数は、必ずしも１個とは限らなく、複数の属性キーを所有することも可能である。
その属性キーをもとに、他のソフトウェア部品（または該当ソフトウェア部品）の中に同一の属性キーを持つ階層パーツまたはプログラムパーツが、あるかどうかを検索表示するのが本機能である。
【００３９】
図５を用いてこれを説明すると、前述のように、階層パーツ５１０、５１１、５１２は同一の属性キーを保持しているとしている。
従って、前述の垂直ブラウジングにより階層パーツ５１０が捜し当てられていれば、芋づる式に同一の属性キーを持つ階層パーツ５１１、５１２を引き出すことができる。
さらに、各階層パーツの保持情報を参照することで、階層パーツ５１０、５１１、５１２の中で最も目的の機能に近い階層パーツを選ぶことができる。
図の例では、太い線の矢印を辿ることにより、階層パーツ５１２が選択されたことが示されている。
【００４０】
図５を用いた上記の説明では、第１から第３までの機能を順に使って検索を行なったが、必ずしもこの順序で検索する必要はない。
例えば、再利用したい階層パーツ（部分木のルート階層パーツ）が保持している属性キーに予め心当りがあれば、上述の第３の水平ブラウジングから検索を開始して手間を省くことが可能である。
【００４１】
図６は、上述した水平／垂直ブラウジングを行うための、マン・マシン・インタフェースを示す画面図である。すなわち、図１のＣＲＴ１ａ上の部品検索ウインドウ内に表示される画面状態を示すものである。
図６において、６０１は部品選択表示部、６０２は部品内部階層表示部、６０３はパーツ保持情報表示部、６０４は部品表示部、６０５はカテゴリ表示部、６０６，６０７，６０８はノード識別子リスト表示部、６０９は上位階層シフトボタン、６１０は下位階層シフトボタン、６１１はシート情報表示部、６１２はドキュメント情報表示部、６１３はアイコン表示部、６１４は音声ガイダンスコントロールボックスである。
【００４２】
まず、ブラウジングを開始するソフトウェア部品の選択を、部品選択表示部６０１で行ない、次に前述の水平／垂直ブラウジングは部品内部階層表示部６０２で行なう。
そこで、図２に示したような、ソフトウェア部品の特定の階層パーツ２０１やプログラムパーツ２０２を指定すると、パーツ保持情報表示部６０３において、以下のことがなされる。
すなわち、それらのパーツが保持するネットワーク記述シート情報２０５、フロー記述シート２０６、プログラム記述シート２１１、ドキュメント記述シート２０７の内容や音声情報格納部２０８に格納された音声メッセージを再生することができる。
【００４３】
このように指定した階層パーツ（またはプログラムパーツ）の保持情報を表示することにより、水平／垂直ブラウジングを行なう際に強力な支援が可能となる。
また、この部品内部階層表示部６０２で再利用しようとする部分木のルート階層パーツが選択できた場合、その階層パーツ表示を画面上のポインタを移動操作することによるドラッグ＆ドロップ等により、その階層パーツをルートとする部分木を、他の設計などの作業が行われているウインドウに取り込むこともできる。
この設計作業は、設計部１０（図１）でなされるものである。
【００４４】
一方、部品内部階層表示部６０２は、カテゴリ表示部６０５と、ｎ個のノード識別子リスト表示部６０６〜６０８、上位階層シフトボタン６０９、下位階層シフトボタン６１０で構成されている。
各ノード識別子リスト表示部６０６〜６０８には、ソフトウェア部品内部の階層構造における同一階層に属す階層パーツおよびプログラムパーツを拾い集め、名前やＩＤ番号など、そのパーツを識別しうる属性である識別子がリスト形式で表示される。
また、各ノード識別子リスト表示部６０６〜６０８間には親子関係が定義されている。
【００４５】
親のノード識別子リスト表示部で表示されている階層パーツのうち１つを選択すると、それに連動して、子供のノード識別しリスト表示部上に該当パーツの子供の階層パーツの識別子をリスト形式で表示する。
ちなみに、「ＮＯＤＥ（１）」で示されるノード識別子リスト表示部６０６に最上位階層が表示され、その次の子供の階層は「ＮＯＤＥ（２）」で示されるノード識別子リスト表示部６０７に表示される。
同様にして孫、ひ孫、と続き、ｎ番目の階層は「ＮＯＤＥ（ｎ）」で示されるノード識別子リスト表示部６０８に表示される。
【００４６】
以上のようにすることで、ノード識別子リスト表示部６０６で選択した階層パーツをルートとする部分木を最大、深さｎ階層まで表示することができる。
また、このノード識別子リスト表示部６０６〜６０８では、最大ｎ階層までの部分木しか同時に表示できない。
これより上位または下位のノードを表示するために、上位階層シフトボタン６０９、下位階層シフトボタン６１０が用意されている。
これらのボタンを押すことで、それまで表示されていた情報を１つ右の、または１つの左のノード識別子リスト表示部に順にずらし、１階層上または１階層下のノードを表示することができる。
【００４７】
ノード識別子リスト表示部の個数を３個と限定した図７を用い、以上の利用方法の詳細説明をする。
同図において、７０１は部品選択表示部、７０２は部品内部階層表示部、７０３は部品表示部、７０４はカテゴリ表示部、７０５〜７０７はノード識別子リスト表示部、７０８は上位階層シフトボタン、７０９は下位階層シフトボタンである。
また、７１０は階層構造となったソフトウエア部品のデータベース（データ構造）の一部を示すソフトウェア部品Ａ、７１１は同様にソフトウェア部品Ｂである。
【００４８】
ここで、ソフトウェア部品Ａ７１０，Ｂ７１１は、識別子と属性キーとを付された階層パーツの階層構造となっている。
例えば、ソフトウェア部品Ａ７１０のルート階層パーツには、識別子として「部品１」が付され、属性キーとして「ＣＡＴ＿Ａ」が付されている。
部品表示部７０３には、「ソフトウエア部品Ａ」と「ソフトウエア部品Ｂ」が表示され、カテゴリ表示部７０４には属性キーが表示される。
そして、識別子のうち、ルートの階層パーツを親として孫までの階層パーツが、部品内部階層表示部７０２に表示される。ここでは、ノード識別子リスト表示部７０５〜７０７の３つにノード識別子リストが表示されていく。
【００４９】
そして、部品表示部７０３の中で、「ソフトウエア部品Ｂ」を選択し、カテゴリ表示部７０４の中で「ＣＡＴ＿Ｂ」を選択することで、ソフトウエア部品Ｂ７１１の中のルートの階層パーツが選択され、表示状態が変更されて反転表示状態となる。
このことにより、ノード識別子リスト表示部７０５にその識別子「部品２」が表示され、以下のノード識別子リスト表示部７０６に「部品２２」，ノード識別子リスト表示部７０６に「部品２３」が表示される。
【００５０】
また、「部品２」を親とする「部品２１」以外の子の「部品２２」がノード識別子リスト表示部７０６の２段目に表示され、「部品２３」以外の孫の「部品２４」がノード識別子リスト表示部７０７の２段目に表示される。
ここで、所望の階層パーツとして、「部品２」，「部品２１」，「部品２３」を選択することで、これらの表示状態も変更され、例えば反転表示される。
【００５１】
ところで、部品内部階層表示部７０２では、親，子，孫までのつながりのノード識別子を一度に表示するようにしている。
このため、例えば、図７に示す状態では、ノード識別子リスト表示部７０７の最上段に表示されている「部品２３」で示される階層パーツより下の階層パーツに関しては分からない。
ここで、下位階層シフトボタン７０９を選択することで、部品内部階層表示部７０２に表示される識別子の領域を変更すれば、例えば、「部品２１」がノード識別子リスト表示部７０５に表示され、「部品２３」がノード識別子リスト表示部８０６に表示され、「部品２５」がノード識別子リスト表示部７０７に表示された状態とすることもできる（図示せず）。
【００５２】
以上のような操作により、ソフトウェア部品の内部階層構造を形成する階層パーツを隈無く検索することができる。
図７では、部品内部階層表示部７０２を、３個のノード識別子リスト表示部７０５〜７０７で構成していたが、これに限るものではない。
ノード識別子リスト表示部を４個以上の複数としても良いことは、いうまでもない。
【００５３】
なお、上述では、部品選択表示部７０１の部品表示部７０３の中よりソフトウエア部品を選んでいくようにしたが、これに限るものではない。
カテゴリ表示部７０４を用い、カテゴリによりソフトウエア部品を選ぶようにすることもできる。
例えば、カテゴリ表示部７０４の中で、「ＣＡＴ＿Ｄ」を選択すると、この属性キーをもつものは、図７（ｂ）に示したように、ソフトウエア部品Ｂ７１１の中では、識別子が「部品２１」と「部品２６」であるので、ノード識別子リスト表示部７０５の最上段には「部品２１」が表示される。
【００５４】
そして、ノード識別子リスト表示部７０６の最上段には「部品２３」が表示され、ノード識別子リスト表示部７０７の最上段には「部品２５」が表示され、ノード識別子リスト表示部７０６の２段目には、「部品２１」のもう一つの子である「部品２４」が表示される。
一方、ノード識別子リスト表示部７０５の２段目には、属性キーが「ＣＡＴ＿Ｄ」である「部品２６」が表示される。
【００５５】
ところで、前述したように、階層パーツの検索は、各階層パーツが保持する属性キーによって行なう。
各階層パーツは同時に複数の属性キーを持つことができるため、検索時に複数の検索キーを組み合わせて検索対象を絞り込んでいくことができる。
さらに、属性キーを階層定義することで検索範囲の拡大、縮小が効率良くできるようになる。
【００５６】
属性キーの階層化とは、属性キー間に親子関係が定義され、（親の属性キーによる検索対象範囲）＝（親の属性キーを持つ階層パーツ）＋Σ（子供の属性キーによる検索対象範囲）という関係が成り立つことをいう。
例えば、図８を例にとって説明すると、図の左側に属性キーの木構造が定義されている（実際このようなデータ構造は一般的な２分木などのアルゴリズムを用いれば簡単に実現できる）。
【００５７】
このような属性キーの階層構造が形成されているときに、属性キー「ＣＡＴ＿Ａ」を用いて検索すると、それは「ＣＡＴ＿Ａ」を持つ階層パーツ以外に子供の属性キー「ＣＡＴ＿Ｄ」と「ＣＡＴ＿Ｘ」を持つ階層パーツも合わせて検索されることになり、「部品１」、「部品１３」、「部品１６」、「部品２１」、「部品２６」がその検索結果として得られる。
【００５８】
また、上記では属性キーが静的なものであることを仮定して説明したが、動的に属性キーを作成したり、実際にはどの階層パーツも保持していない抽象的な属性キーも定義することも可能であり、検索対象の範囲の絞り込みの自由度が高くなる。
例えば図８において、「ＣＡＴ＿Ａ」と「ＣＡＴ＿Ｂ」をそれぞれルートとする属性キーの木があるが、「ＣＡＴ＿Ｂ」と「ＣＡＴ＿Ａ」を子とする属性キー「ＣＡＴ＿Ｚ」を定義すると２つの属性キーの木をマージした属性キーの木が構成できる。
【００５９】
「ＣＡＴ＿Ｚ」は実際の階層（ｏｒプログラムパーツ）に登録されていない属性キーであり、抽象的な属性キーと呼ぶ。
「ＣＡＴ＿Ｚ」の検索範囲は、「ＣＡＴ＿Ａ」および「ＣＡＴ＿Ｂ」の検索範囲の和となり、検索の範囲を拡大することができる。
また、ここでは、ルートノードにあたる階層パーツの合成を行なったが、それ以外に「ＣＡＴ＿Ｃ」と「ＣＡＴ＿Ｘ」を子とする抽象的属性キーも定義しうる。
【００６０】
このように属性キーを階層化することで、まず、検索実行時にダイナミックに抽象属性キーを設定することができ、検索範囲の絞り込みをユーザーが適宜設定でき柔軟性が高くなる。
また、各階層パーツの属性キーに保持するデータが少なくてすむ。すなわちより詳細化された属性キーを持てば、その属性キーの上位に当たるよりグローバルな属性キーを同時に持っているのと同じ効果を生じるためである。
例えば、「ＣＡＴ＿Ｂ」、「ＣＡＴ＿Ｃ」、「ＣＡＴ＿Ｙ」と「ＣＡＴ＿Ｅ」を属性キーとして持たなくても、「ＣＡＴ＿Ｙ」と「ＣＡＴ＿Ｅ」さえ持っていれば同様の検索が可能となる。
【００６１】
ここで、前述したように部品検索部６（図１）を用いてソフトウェア部品内から階層パーツまたはプログラムパーツを選定しようとしたとき、そのパーツを実際動作させてみることにより、そのパーツの動特性が把握でき、利用者の目的に適っているかどうかを的確に判断できる。
図１に示した、この発明における再利用管理装置では、部品格納部９から部品検索部６を用いて選択したソフトウエア部品に対し、部品動作シミュレーション実行部７を用いることにより、そのソフトウエア部品のシミュレーションが実行できる。
【００６２】
シミュレーションの実行単位はソフトウェア部品単位ではなく、その内部構成要素である、ある階層パーツをルートとする部分木、またはプログラムパーツの単位でシミュレーションが可能である。
また、階層パーツ２０１やプログラムパーツ２０２といった、制御プログラムのソフトウエア部品だけではなく、それらのプログラムの制御対象となる、分散制御システムの制御部やプラント装置を表わす機能パーツ２０３の動作もシミュレートすることが可能である。
【００６３】
図９は図１に示した部品動作シミュレーション実行部７の内部構造を示す構成図であり、９０１はスケジュール管理手段、９０２はインタプリタ実現手段、９０３はシミュレーションプログラム実行手段、９０４はシミュレーション実行対象管理テーブルである。
シミュレーションの対象となるプログラムノードや分散制御システムの制御部などの制御対象が、シミュレーション実行対象管理テーブル９０４に登録される。
【００６４】
ＣＲＴ１ａ（図１）上に表示される図６や図７に示した画面状態で、シミュレーションする所望のプログラムパーツをマウス２などを用いて指定することにより、そのプログラムパーツがシミュレーション実行対象管理テーブル９０４に登録される。
また、階層パーツを指定した場合には、その階層パーツをルートとする部分木に含まれる全てのプログラムパーツが登録される。
また、シミュレーション対象として登録されたプログラムパーツ２０２（図２）の外部変数Ｉ／Ｆ２１０より、そのプログラムパーツがアクセスしている分散制御システムの制御部などプログラムの制御対象をシミュレートする機能パーツ２０３（図２）も、シミュレーション実行対象管理テーブル９０４に登録される。
【００６５】
スケジュール管理手段９０１は、シミュレーション実行対象パーツ管理テーブル９０４を参照し、シミュレーション実行対象の各プログラムパーツおよび機能パーツを順繰りにシミュレーション実行するためのスケジュール管理を行なう。
そのスケジューリングアルゴリズムでは、シミュレーション実行対象管理テーブル９０４に登録されているプログラムパーツを順に取り出し、その実行をインタプリタ実現手段９０２に命令する。
そして、インタプリタ実現手段９０２からの終了通知を受け取ると、次のプログラムパーツを取り出し、前と同様にその実行をインタプリタ実現手段９０２に命令する。
【００６６】
また、最後のプログラムパーツまで実行し終わると、次は機能パーツの実行に移る。
これも、シミュレーション実行対象管理テーブル９０４から順繰りに、実行する機能パーツを取り出しては、その実行をシミュレーションプログラム実行手段９０３に命令する。
シミュレーションプログラム実行手段９０３から終了通知を受信すると、次の機能パーツを取り出し、再びその実行をインタプリタ実現手段９０２に命令する。
以下同様にして、最後の機能パーツを実行し終えると、再びプログラムパーツの実行にもどる。
このようなサイクルによりスケジューリングを行なっている。
【００６７】
インタプリタ実現手段９０２は、スケジュール管理手段９０１より特定プログラムパーツの実行を命令されると、プログラムパーツ２０２（図２）のプログラム記述シートで記述されたプログラムの１命令列をインタプリティブに実行し、スケジュール管理手段９０１に実行終了を返す。
また、同一プログラムパーツの実行を命令されたときには、前回実行したステートメントの次のステートメントを実行する。
このように、プログラムパーツの実行は、１命令列毎に実行されていくことになる。
【００６８】
一方、シミュレーションプログラム実行手段９０３は、スケジュール管理手段９０１より特定機能パーツの実行を命令されると、機能パーツ２０３（図２）のシミュレーションプログラム格納部２１２に格納されたプログラムを実行する。
プログラムの最後まで実行し終えると、スケジュール管理手段９０１に実行終了を返す。
このように、機能パーツの実行は、プログラムパーツの実行とは異なり、全プログラムが１度に実行されていくことになる。
このプログラムの実行結果は、ネットワーク表現による表示状態で、ＣＲＴ１ａ（図１）上に、各機能パーツの表示されている近辺に表示出力される。
【００６９】
以上のような構造をとることにより、プログラムパーツが保持するプログラムをインタプリティブに実行しつつ、そのプログラムの制御対象の状態をリアルタイムで表示可能なシミュレーションが実現されていく。
プログラムパーツの実行はインタプリティブであり、その実行をユーザに対して表示する場合、１命令列毎に実行を止めユーザーからのコマンド待ちとするトレースモードや、止めずに最後まで実行するモードが実現できる。
【００７０】
図１０は、シミュレーションを行うときのＣＲＴ１ａ（図１）上の画面状態を示す構成図である。
同図において、１０１はネットワーク記述表示部、１０２はプログラムパーツを示すパーツアイコン、１０３はパーツアイコン１０２のプログラムが表示されるプログラム記述シート表示部、１０４は反応容器を示すパーツアイコン、１０５ａはタンクＡを示すパーツアイコン、１０５ｂはタンクＢを示すパーツアイコン、１０６ａ，ｂ，ｃ，ｄはバルブを示すパーツアイコン、１０７ａ，ｂ，ｃ，ｄ，ｅはセンサを示すパーツアイコンである。
【００７１】
また、１０８ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇはパーツアイコン１０２が示すシーケンス、すなわち、プログラム記述シート表示部１０３に記述されている内容に沿って制御を行うコントローラを示すパーツアイコン、１０９ａはパーツアイコン１０６ｄで示されるバルブをシーケンスとは独立して分散制御をする制御部を示すパーツアイコン、１０９ｂはパーツアイコン１０４で示される反応容器における攪拌動作をシーケンスとは独立して制御する制御部を示すパーツアイコン、１０９ｃはパーツアイコン１０７ｅで示されるセンサからの信号を検出してフィードバック制御を行う制御部を示すパーツアイコンである。
【００７２】
この図１０は、ネットワーク記述表示部１０１に表示されたネットワーク記述の階層パーツをルートとし、各パーツアイコンで示される部分を部分木とし、これらの単位でのシミュレーションを行う状態を示している。
その部分木で示される階層構造には、パーツアイコン１０２で示される「シーケンス」と名付けられたプログラムパーツと、そのプログラムパーツの制御対象となるパーツアイコン１０８ａ〜ｇで示されるコントローラが存在する。
そして、プログラム記述シート表示部１０３に示されるそのプログラムの動特性をシミュレートするものである。
【００７３】
そして、このシミュレートを行うためにパーツアイコン１０９ａ〜ｃで示される制御部のもつパラメータを設定変更可能とするために、図１０（ｂ）に示すように、設定値変更窓１１０ａ，ｂ，ｃが設けられている。
この設定値変更窓１１０ａ，ｂ，ｃは、マウス２（図１）などの新たな入力指示により表示させるようにすることもできるが、シミュレーション実行対象管理テーブル９０４に登録されている全機能パーツに対し、自動的に付加して表示させるようにすることもできる。
【００７４】
これらの設定値は、プログラム記述シート表示部１０３に表示されているプログラムの実行とは関係なく、各外部変数の値（実際には制御部は構造体を形成しており、その構造体の各メンバー変数）を設定することができる。
そこで、シミュレーションを実行させる前に、設定値変更窓１１０ａ〜ｃを介して、パーツアイコン１０９ａ〜ｃで示される制御部の分散制御における初期値を設定する。
【００７５】
次に、プログラム記述シート表示部１０３に表示されているプログラムを実行させるが、これはインタプリタ的に１命令列づつ実行される。
この実行にはモード指定が可能であり、１命令列を実行してはストップし、ユーザーからのコマンド入力待ちとなるトレースモードや、連続実行モードが選択可能である。また、ブレークポイントの設定も可能となっている。
１命令列が実行されるたびに、その結果が制御対象である各制御部（機能パーツ）に反映し、設定値変更窓１１０ａ〜ｃを介して参照することができる。
【００７６】
以上のようにプログラムとその制御対象となる分散制御システムの制御部などの外部変数の動特性を同時にシミュレートすることで、そのプログラムの動特性が理解しやすくなる。
従って、ソフトウェア部品内部のある部分木を切り出して再利用しようとする場合に、それが利用目的に合致しているかが素早くわかり、ソフトウェア再利用の促進ができる。
【００７７】
【発明の効果】
以上説明したように、この発明によれば、まず、複数のパーツからなる設計情報を構築するための部品（ソフトウエア部品）の構成を階層構造とし、これを表示出力して検索抽出するようにし、かつ、これら部品単位でシミュレートするようにした。
また、各部品に内容の説明情報と他との関係情報とを付帯させるようにした。
このためソフトウエア設計情報の作成者の意図と、それを構成する部品の中より利用できるものは再利用しようとする利用者の利用目的とが異なっていても、その部品が再利用できるという効果がある。
また、所望とする部品が効率よく検索できるという効果がある。
そして、所望とする各部品の仕様や構造およびその動作に関して、再利用者が容易に理解できるという効果がある。
【図面の簡単な説明】
【図１】この発明の１実施例であるソフトウエア部品の再利用システムを実現するための、再利用管理装置の構成を示す構成図である。
【図２】この実施例におけるソフトウエア部品の構成要素の種類およびその構成を示す構成図である。
【図３】階層構造を示す説明図である。
【図４】この発明におけるソフトウエア部品の構成を示す構成図である。
【図５】部分木のルート階層パーツを検索する例を示す構成図である。
【図６】水平／垂直ブラウジングを行うための、マン・マシン・インタフェースを示す画面図である。
【図７】水平／垂直ブラウジングを行うための、マン・マシン・インタフェースを示す画面図である。
【図８】ソフトウエア部品の階層構造を示す構成図である。
【図９】図１に示した部品動作シミュレーション実行部７の内部構造を示す構成図である。
【図１０】シミュレーションを行うときのＣＲＴ１ａ（図１）上の画面状態を示す構成図である。
【符号の説明】
１ａ…ＣＲＴ、１ｂ…キーボード、２…マウス、３…装置本体、４…設計情報管理部、５…設計情報構築部、６…部品検索部、７…部品動作シミュレーション実行部、８…部品登録部、９…部品格納部、１０…設計部、１１…設計情報格納部。
【図１】
0003625084.tif 000002
【図２】
0003625084.tif 000003
【図３】
0003625084.tif 000004
【図４】
0003625084.tif 000005
【図５】
0003625084.tif 000006
【図６】
0003625084.tif 000007
【図７】
0003625084.tif 000008
【図８】
0003625084.tif 000009
【図９】
0003625084.tif 000010
【図１０】
0003625084.tif 000011