(57)【特許請求の範囲】
【請求項１】
複数のプロセスについてのプロセス情報および前記複数のプロセス間の関係情報を取得するプロセス情報取得機能と、
前記プロセス情報および前記関係情報からプロセス間のクロスポイントを算出するクロスポイント算出機能と、
前記複数のプロセスのうちの少なくとも１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更するプロセス位置情報変更機能と、
前記プロセス位置情報変更機能により座標を変更される１つのプロセスを選択するプロセス選択機能と、
をコンピューターに実現させるためのプロセス管理プログラムにおいて、
前記複数のプロセスの少なくとも一部は、
伝達情報の入力点または出力点である複数のポートを有し、
前記プロセス情報は、
前記複数のプロセスの位置情報としてのＸ座標とＹ座標と、
前記複数のポートの配列順序を示すポート順序情報と、
を有し、
前記関係情報は、
第１のプロセスの第１のポートから前記第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有し、
前記クロスポイント算出機能は、
前記ポート結線同士のクロスポイントを算出し、
前記プロセス位置情報変更機能は、
前記複数のプロセス間のＸ座標の順序を変えない範囲で前記複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更し、
前記クロスポイント算出機能は、
前記プロセス位置情報変更機能により前記複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントを算出し、
前記プロセス選択機能は、
前記複数のプロセスのうち関与する前記ポート結線が有するクロスポイントの数が多いプロセスを優先的に選択すること
を特徴とするプロセス管理プログラム。
【請求項２】
請求項１に記載のプロセス管理プログラムにおいて、
前記複数のプロセスの位置情報を保持するプロセス位置情報保持機能を有し、
前記プロセス位置情報保持機能は、
前記プロセス位置情報変更機能による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数よりも小さい場合に、
変更後のそのプロセスの座標を保持し、
前記プロセス位置情報変更機能による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数以上である場合に、
変更前のそのプロセスの座標を保持すること
を特徴とするプロセス管理プログラム。
【請求項３】
請求項１または請求項２に記載のプロセス管理プログラムにおいて、
ポート順序変更機能と、ポート順序保持機能と、を有し、
前記ポート順序変更機能は、
前記第１のプロセスの前記第１のポートの順番と前記第１のプロセスの前記第１のポート以外のポートの順番とを入れ替え、または、前記第２のプロセスの前記第２のポートの順番と前記第２のプロセスの前記第２のポート以外のポートの順番とを入れ替え、
前記クロスポイント算出機能は、
前記ポート順序変更機能による２つのポートの入れ替えの前後の前記ポート結線同士のクロスポイントを算出し、
前記ポート順序保持機能は、
前記ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、
変更後のそのポート順序情報を保持し、
前記ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、
変更前のそのポート順序情報を保持すること
を特徴とするプロセス管理プログラム。
【請求項４】
複数のプロセスについてのプロセス情報および前記複数のプロセス間の関係情報を管理するとともに、
仮想結線生成機能と、プロセス位置情報変更機能と、第１のクロスポイント算出機能と、プロセス位置情報保持機能と、ポート順序変更機能と、第２のクロスポイント算出機能と、ポート順序保持機能と、
をコンピューターに実現させるためのプロセス管理プログラムにおいて、
前記複数のプロセスの少なくとも一部は、
伝達情報の入力点または出力点である複数のポートを有し、
前記プロセス情報は、
前記複数のプロセスの位置情報としてのＸ座標とＹ座標と、
前記複数のポートの配列順序を示すポート順序情報と、
を有し、
前記関係情報は、
第１のプロセスの第１のポートから前記第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有し、
前記仮想結線生成機能は、
前記第１のプロセスから前記第２のプロセスまで至る仮想結線を生成し、
前記プロセス位置情報変更機能は、
前記複数のプロセス間のＸ座標の順序を変えない範囲で前記複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更し、
前記第１のクロスポイント算出機能は、
前記プロセス位置情報変更機能による１つのプロセスの座標の変更の前後の前記仮想結線同士の仮想クロスポイントを算出し、
前記プロセス位置情報保持機能は、
前記プロセス位置情報変更機能による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数よりも小さい場合に、
変更後のそのプロセスの座標を保持し、
前記プロセス位置情報変更機能による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数以上である場合に、
変更前のそのプロセスの座標を保持し、
前記ポート順序変更機能は、
前記第１のプロセスの前記第１のポートの順番と前記第１のプロセスの前記第１のポート以外のポートの順番とを入れ替え、または、前記第２のプロセスの前記第２のポートの順番と前記第２のプロセスの前記第２のポート以外のポートの順番とを入れ替え、
前記第２のクロスポイント算出機能は、
前記ポート順序変更機能による２つのポートの入れ替えの前後の前記ポート結線同士のクロスポイントを算出し、
前記ポート順序保持機能は、
前記ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、
変更後のそのポート順序情報を保持し、
前記ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、
変更前のそのポート順序情報を保持すること
を特徴とするプロセス管理プログラム。
【請求項５】
請求項１から請求項４までのいずれか１項に記載のプロセス管理プログラムが記憶されたものであってコンピューターで読み取り可能なことを特徴とする記憶媒体。
【請求項６】
複数のプロセスについてのプロセス情報および前記複数のプロセス間の関係情報を取得するプロセス情報取得部と、
前記プロセス情報および前記関係情報からプロセス間のクロスポイントを算出するクロスポイント算出部と、
前記複数のプロセスのうちの少なくとも１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更するプロセス位置情報変更部と、
前記プロセス位置情報変更部により座標を変更される１つのプロセスを選択するプロセス選択部と、
を有するプロセス管理装置において、
前記複数のプロセスの少なくとも一部は、
伝達情報の入力点または出力点である複数のポートを有し、
前記プロセス情報は、
前記複数のプロセスの位置情報としてのＸ座標とＹ座標と、
前記複数のポートの配列順序を示すポート順序情報と、
を有し、
前記関係情報は、
第１のプロセスの第１のポートから前記第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有し、
前記クロスポイント算出部は、
前記ポート結線同士のクロスポイントを算出し、
前記プロセス位置情報変更部は、
前記複数のプロセス間のＸ座標の順序を変えない範囲で前記複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更し、
前記クロスポイント算出部は、
前記プロセス位置情報変更部により前記複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントを算出し、
前記プロセス選択部は、
前記複数のプロセスのうち関与する前記ポート結線が有するクロスポイントの数が多いプロセスを優先的に選択すること
を特徴とするプロセス管理装置。
【請求項７】
請求項６に記載のプロセス管理装置において、
前記複数のプロセスの位置情報を保持するプロセス位置情報保持部を有し、
前記プロセス位置情報保持部は、
前記プロセス位置情報変更部による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数よりも小さい場合に、
変更後のそのプロセスの座標を保持し、
前記プロセス位置情報変更部による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数以上である場合に、
変更前のそのプロセスの座標を保持すること
を特徴とするプロセス管理装置。
【請求項８】
請求項６または請求項７に記載のプロセス管理装置において、
ポート順序変更部と、ポート順序保持部と、を有し、
前記ポート順序変更部は、
前記第１のプロセスの前記第１のポートの順番と前記第１のプロセスの前記第１のポート以外のポートの順番とを入れ替え、または、前記第２のプロセスの前記第２のポートの順番と前記第２のプロセスの前記第２のポート以外のポートの順番とを入れ替え、
前記クロスポイント算出部は、
前記ポート順序変更部による２つのポートの入れ替えの前後の前記ポート結線同士のクロスポイントを算出し、
前記ポート順序保持部は、
前記ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、
変更後のそのポート順序情報を保持し、
前記ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、
変更前のそのポート順序情報を保持すること
を特徴とするプロセス管理装置。
【請求項９】
複数のプロセスについてのプロセス情報および前記複数のプロセス間の関係情報を管理するとともに、
仮想結線生成部と、プロセス位置情報変更部と、第１のクロスポイント算出部と、プロセス位置情報保持部と、ポート順序変更部と、第２のクロスポイント算出部と、ポート順序保持部と、
を有するプロセス管理装置において、
前記複数のプロセスの少なくとも一部は、
伝達情報の入力点または出力点である複数のポートを有し、
前記プロセス情報は、
前記複数のプロセスの位置情報としてのＸ座標とＹ座標と、
前記複数のポートの配列順序を示すポート順序情報と、
を有し、
前記関係情報は、
第１のプロセスの第１のポートから前記第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有し、
前記仮想結線生成部は、
前記第１のプロセスから前記第２のプロセスまで至る仮想結線を生成し、
前記プロセス位置情報変更部は、
前記複数のプロセス間のＸ座標の順序を変えない範囲で前記複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更し、
前記第１のクロスポイント算出部は、
前記プロセス位置情報変更部による１つのプロセスの座標の変更の前後の前記仮想結線同士の仮想クロスポイントを算出し、
前記プロセス位置情報保持部は、
前記プロセス位置情報変更部による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数よりも小さい場合に、
変更後のそのプロセスの座標を保持し、
前記プロセス位置情報変更部による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数以上である場合に、
変更前のそのプロセスの座標を保持し、
前記ポート順序変更部は、
前記第１のプロセスの前記第１のポートの順番と前記第１のプロセスの前記第１のポート以外のポートの順番とを入れ替え、または、前記第２のプロセスの前記第２のポートの順番と前記第２のプロセスの前記第２のポート以外のポートの順番とを入れ替え、
前記第２のクロスポイント算出部は、
前記ポート順序変更部による２つのポートの入れ替えの前後の前記ポート結線同士のクロスポイントを算出し、
前記ポート順序保持部は、
前記ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、
変更後のそのポート順序情報を保持し、
前記ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、
変更前のそのポート順序情報を保持すること
を特徴とするプロセス管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書の技術は、工業製品の開発工程やシミュレーションモデルに含まれるプロセスを好適に管理できるプロセス管理装置およびプロセス管理プログラムおよび記憶媒体に関する。
【背景技術】
【０００２】
車両や電子機器類、ソフトウェア等の工業製品を開発する場合、それらの開発工程は、多数の工程を有している。また、多数の工程が複雑に絡み合っている。さらに、各工程の設計に多数の技術者が関与しており、全体像の把握が容易ではない。
【０００３】
開発工程が多数の製造工程を含む場合には、関連性の高い工程をひとまとまりのグループにすることが好ましい。技術者が全行程を理解しやすいからである。つまり、工程設計の支援につながる。グループ化する手法として、例えば、モジュラリティを用いるＮｅｗｍａｎ法がある（非特許文献１の２頁目の式（４）等参照）。Ｎｅｗｍａｎ法は、あるネットワーク上の情報をこれらの情報の関連性に着目してグループ化する非常に一般的な手法である。また、特許文献１には、Ｎｅｗｍａｎ法を用いて、製造工程における鋳込みをグループ化することにより、成分設計を支援する装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１２５７９５号公報
【非特許文献】
【０００５】
【非特許文献１】Aaron Clauset, M.E.J.Newman, and Cristopher Moore, Finding community structure in very large networks, Physical Review E 70, 066111(2004)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、工業製品の開発工程においては、例えば、ＳＩＭＵＬＩＮＫ（登録商標）のようなシミュレーションモデルを用いることがある。シミュレーションモデルは、複数の処理要素を有する。そして、上流側の処理要素を実行した後に下流側の処理要素を実行する。
【０００７】
そのため、上流側の処理要素から下流側の処理要素に向かって矢印を付すことがある。そして、これらの処理要素は、複雑に関係し合っている。したがって、これら多数の処理要素同士を結ぶ多数の矢印の一部は、互いに交差することがある。つまり、互いに交差する交点を持つ矢印が存在する。このような矢印の交点は、シミュレーションモデルやプログラムの複雑さを示している。
【０００８】
本明細書の技術は、前述した従来の技術が有する問題点を解決するためになされたものである。すなわちその課題とするところは、プロセス間の関係性を維持したままプロセス間の関係の複雑さを評価するプロセス管理装置およびプロセス管理プログラムおよび記憶媒体を提供することである。
【０００９】
ここで、「プロセス」とは、工業製品の開発工程に含まれる１つの工程と、プログラムに含まれる１つの処理内容と、シミュレーションモデルに含まれる１つの処理要素と、を含むものとする。
【課題を解決するための手段】
【００１０】
第１の態様におけるプロセス管理プログラムは、複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を取得するプロセス情報取得機能と、プロセス情報および関係情報からプロセス間のクロスポイントを算出するクロスポイント算出機能と、複数のプロセスのうちの少なくとも１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更するプロセス位置情報変更機能と、プロセス位置情報変更機能により座標を変更される１つのプロセスを選択するプロセス選択機能と、をコンピューターに実現させるためのものである。複数のプロセスの少なくとも一部は、伝達情報の入力点または出力点である複数のポートを有する。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。クロスポイント算出機能は、ポート結線同士のクロスポイントを算出する。プロセス位置情報変更機能は、複数のプロセス間のＸ座標の順序を変えない範囲で複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。クロスポイント算出機能は、プロセス位置情報変更機能により複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントを算出する。プロセス選択機能は、複数のプロセスのうち関与するポート結線が有するクロスポイントの数が多いプロセスを優先的に選択する。
【００１１】
このプロセス管理プログラムは、工業製品の開発工程やシミュレーションモデルに含まれるプロセスの複雑さを評価することができる。そのために、このプロセス管理プログラムは、プロセス間を結合する矢印のクロスポイントの数を評価する。ここで、クロスポイントとは、プロセス間を結合する第１の矢印が他の矢印と交差する交差点のことである。このプロセス管理プログラムは、クロスポイントの最適化をすることができる。このクロスポイントの最適化により、プロセス管理プログラムは、多数のプロセスが好適に整理された順序で並べられた状態を出力することができる。
【００１２】
第２の態様におけるプロセス管理プログラムは、複数のプロセスの位置情報を保持するプロセス位置情報保持機能を有する。プロセス位置情報保持機能は、プロセス位置情報変更機能による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数よりも小さい場合に、変更後のそのプロセスの座標を保持する。プロセス位置情報変更機能による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数以上である場合に、変更前のそのプロセスの座標を保持する。
【００１３】
【００１４】
第３の態様におけるプロセス管理プログラムは、ポート順序変更機能と、ポート順序保持機能と、を有する。ポート順序変更機能は、第１のプロセスの第１のポートの順番と第１のプロセスの第１のポート以外のポートの順番とを入れ替え、または、第２のプロセスの第２のポートの順番と第２のプロセスの第２のポート以外のポートの順番とを入れ替える。クロスポイント算出機能は、ポート順序変更機能による２つのポートの入れ替えの前後のポート結線同士のクロスポイントを算出する。ポート順序保持機能は、ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、変更後のそのポート順序情報を保持し、ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、変更前のそのポート順序情報を保持する。
【００１５】
第４の態様におけるプロセス管理プログラムは、複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を管理するとともに、仮想結線生成機能と、プロセス位置情報変更機能と、第１のクロスポイント算出機能と、プロセス位置情報保持機能と、ポート順序変更機能と、第２のクロスポイント算出機能と、ポート順序保持機能と、をコンピューターに実現させるためのものである。複数のプロセスの少なくとも一部は、伝達情報の入力点または出力点である複数のポートを有する。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。仮想結線生成機能は、第１のプロセスから第２のプロセスまで至る仮想結線を生成する。プロセス位置情報変更機能は、複数のプロセス間のＸ座標の順序を変えない範囲で複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。第１のクロスポイント算出機能は、プロセス位置情報変更機能による１つのプロセスの座標の変更の前後の仮想結線同士の仮想クロスポイントを算出する。プロセス位置情報保持機能は、プロセス位置情報変更機能による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数よりも小さい場合に、変更後のそのプロセスの座標を保持し、プロセス位置情報変更機能による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数以上である場合に、変更前のそのプロセスの座標を保持する。ポート順序変更機能は、第１のプロセスの第１のポートの順番と第１のプロセスの第１のポート以外のポートの順番とを入れ替え、または、第２のプロセスの第２のポートの順番と第２のプロセスの第２のポート以外のポートの順番とを入れ替える。第２のクロスポイント算出機能は、ポート順序変更機能による２つのポートの入れ替えの前後のポート結線同士のクロスポイントを算出する。ポート順序保持機能は、ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、変更後のそのポート順序情報を保持し、ポート順序変更機能による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、変更前のそのポート順序情報を保持する。
【００１６】
第５の態様における記憶媒体は、上記に記載のプロセス管理プログラムが記憶されたものであってコンピューターで読み取り可能なものである。
【００１７】
第６の態様におけるプロセス管理装置は、複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を取得するプロセス情報取得部と、プロセス情報および関係情報からプロセス間のクロスポイントを算出するクロスポイント算出部と、複数のプロセスのうちの少なくとも１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更するプロセス位置情報変更部と、プロセス位置情報変更部により座標を変更される１つのプロセスを選択するプロセス選択部と、を有する。複数のプロセスの少なくとも一部は、伝達情報の入力点または出力点である複数のポートを有する。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。クロスポイント算出部は、ポート結線同士のクロスポイントを算出する。プロセス位置情報変更部は、複数のプロセス間のＸ座標の順序を変えない範囲で複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。クロスポイント算出部は、プロセス位置情報変更部により複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントを算出する。プロセス選択部は、複数のプロセスのうち関与するポート結線が有するクロスポイントの数が多いプロセスを優先的に選択する。
【００１８】
第７の態様におけるプロセス管理装置は、複数のプロセスの位置情報を保持するプロセス位置情報保持部を有する。プロセス位置情報保持部は、プロセス位置情報変更部による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数よりも小さい場合に、変更後のそのプロセスの座標を保持し、プロセス位置情報変更部による１つのプロセスの座標の変更後のクロスポイントの数が、そのプロセスの座標の変更前のクロスポイントの数以上である場合に、変更前のそのプロセスの座標を保持する。
【００１９】
第８の態様におけるプロセス管理装置は、ポート順序変更部と、ポート順序保持部と、を有する。ポート順序変更部は、第１のプロセスの第１のポートの順番と第１のプロセスの第１のポート以外のポートの順番とを入れ替え、または、第２のプロセスの第２のポートの順番と第２のプロセスの第２のポート以外のポートの順番とを入れ替える。クロスポイント算出部は、ポート順序変更部による２つのポートの入れ替えの前後のポート結線同士のクロスポイントを算出する。ポート順序保持部は、ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、変更後のそのポート順序情報を保持し、ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、変更前のそのポート順序情報を保持する。
【００２０】
第９の態様におけるプロセス管理装置は、複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を管理するとともに、仮想結線生成部と、プロセス位置情報変更部と、第１のクロスポイント算出部と、プロセス位置情報保持部と、ポート順序変更部と、第２のクロスポイント算出部と、ポート順序保持部と、を有する。複数のプロセスの少なくとも一部は、伝達情報の入力点または出力点である複数のポートを有する。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。仮想結線生成部は、第１のプロセスから第２のプロセスまで至る仮想結線を生成する。プロセス位置情報変更部は、複数のプロセス間のＸ座標の順序を変えない範囲で複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。第１のクロスポイント算出部は、プロセス位置情報変更部による１つのプロセスの座標の変更の前後の仮想結線同士の仮想クロスポイントを算出する。プロセス位置情報保持部は、プロセス位置情報変更部による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数よりも小さい場合に、変更後のそのプロセスの座標を保持し、プロセス位置情報変更部による１つのプロセスの座標の変更後の仮想クロスポイントの数が、そのプロセスの座標の変更前の仮想クロスポイントの数以上である場合に、変更前のそのプロセスの座標を保持する。ポート順序変更部は、第１のプロセスの第１のポートの順番と第１のプロセスの第１のポート以外のポートの順番とを入れ替え、または、第２のプロセスの第２のポートの順番と第２のプロセスの第２のポート以外のポートの順番とを入れ替える。第２のクロスポイント算出部は、ポート順序変更部による２つのポートの入れ替えの前後のポート結線同士のクロスポイントを算出する。ポート順序保持部は、ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数よりも小さい場合に、変更後のそのポート順序情報を保持し、ポート順序変更部による２つのポートの入れ替えの後のクロスポイントの数が、それら２つのポートの入れ替えの前のクロスポイントの数以上である場合に、変更前のそのポート順序情報を保持する。
【００２１】
【００２２】
【００２３】
【００２４】
【発明の効果】
【００２５】
本明細書の技術では、プロセス間の関係性を維持したままプロセス間の関係の複雑さを評価するプロセス管理装置およびプロセス管理プログラムおよび記憶媒体が提供されている。
【図面の簡単な説明】
【００２６】
【図１】第１の実施形態におけるプロセス管理装置で取り扱うブロック図を例示する図である。
【図２】第１の実施形態におけるプロセス管理装置のハードウェアの構成を示す概略構成図である。
【図３】第１の実施形態におけるプロセス管理装置の制御部の構成を説明するためのブロック図である。
【図４】第１の実施形態におけるプロセス管理装置のフローを示すフローチャートである。
【図５】第２の実施形態における複数のポートおよびクロスポイントを例示する図である。
【図６】第２の実施形態におけるプロセス管理装置の制御部の構成を説明するためのブロック図である。
【図７】第２の実施形態におけるプロセス管理装置のフローを示すフローチャートである。
【図８】第２の実施形態におけるポートの入れ替え方法を説明するための図（その１）である。
【図９】第２の実施形態におけるポートの入れ替え方法を説明するための図（その２）である。
【図１０】第２の実施形態におけるポートの入れ替え方法を説明するための図（その３）である。
【図１１】第３の実施形態におけるプロセス管理装置の制御部の構成を説明するためのブロック図である。
【図１２】第３の実施形態におけるプロセス管理装置のフローを示すフローチャートである。
【図１３】第３の実施形態の変形例におけるプロセス管理装置のフローを示すフローチャート（その１）である。
【図１４】第３の実施形態の変形例におけるプロセス管理装置のフローを示すフローチャート（その２）である。
【図１５】第４の実施形態におけるプロセス管理装置の制御部の構成を説明するためのブロック図である。
【図１６】第４の実施形態におけるプロセス管理装置のフローを示すフローチャートである。
【図１７】第４の実施形態における初期状態のブロック図を例示する図である。
【図１８】第４の実施形態における仮想結線を結んだ場合を示す図である。
【図１９】試験において用いられた系の初期状態を示すブロック図である。
【図２０】第３の実施形態のプログラムを用いて最適化処理をした後のブロック図である。
【図２１】第４の実施形態のプログラムを用いて最適化処理をした後のブロック図である。
【図２２】第３の実施形態および第４の実施形態のプログラムを用いて最適化処理をした場合におけるクロスポイントの推移を示すグラフである。
【図２３】図２２を拡大したグラフである。
【発明を実施するための形態】
【００２７】
以下、本明細書の技術における実施形態について添付図面を参照しつつ説明する。以下の実施形態では、プロセス間の関係性を維持したままプロセス間の関係の複雑さを評価するプロセス管理装置およびプロセス管理プログラムおよび記憶媒体について説明する。
【００２８】
以下の実施形態において、プロセスとは、工業製品の開発工程に含まれる１つの工程と、プログラムに含まれる１つの処理内容と、シミュレーションモデルに含まれる１つの処理要素と、を含む概念である。
【００２９】
具体的には、このプロセス管理装置およびプロセス管理プログラムは、プロセス間を結合する矢印のクロスポイントの数を評価する。ここで、クロスポイントとは、プロセス間を結合する第１の矢印が他の矢印と交差する交差点のことである。ここで矢印は、上流のプロセスから下流のプロセスへ受け渡される伝達情報の流れを示している。
【００３０】
また、クロスポイントには、見た目上のクロスポイントと、本質的クロスポイントと、がある。見た目上のクロスポイントを最適化すると、クロスポイントの数は減少する。その最小値が、本質的クロスポイントである。つまり、プロセス間の関係性を維持したまま、プロセスの座標を変更することにより、クロスポイントの数が最少となった場合が、プロセスが最適化された場合である。そして、この場合におけるクロスポイントの数が、本質的クロスポイントの数である。
【００３１】
また、クロスポイントは、通常のクロスポイントと、仮想クロスポイントと、を有する。通常のクロスポイントは、第１のプロセスの第１のポートから第２のプロセスの第２のポートまでを結ぶポート結線同士のクロスポイントである。仮想クロスポイントは、第１のプロセスから第２のプロセスまでを結ぶ仮想結線同士のクロスポイントである。仮想クロスポイントについては、第４の実施形態で説明する。
【００３２】
（第１の実施形態）
１．ブロック図
図１は、本実施形態のプロセス管理装置により管理されるロボットアームの制御ソフトウェアの多数の処理要素（プロセス）を示すブロック図である。図１のブロック図は、例えば、ＳＩＭＵＬＩＮＫ（登録商標）から出力されるものである。図１の左側には、ロボットアームの制御ソフトウェアの全体図ＳＴ１が示されている。そして、全体図ＳＴ１は、下位の階層ＳＴ２を有している。下位の階層ＳＴ２は、さらに下位の階層ＳＴ３、ＳＴ４を有している。このように、制御ソフトウェアは、階層構造を有している。
【００３３】
また、図１に示すように、ブロック図は、枠で囲まれた処理要素（プロセス）と、一つの処理要素（プロセス）と他の処理要素（プロセス）とをつなぐ結線と、を有している。ここで、処理要素は、本明細書におけるプロセスを示している。結線は、プロセス間の関係情報を示している。図１において、プロセスＥ１と、結線Ｋ１とを例示している。結線は、矢印で示されている。この矢印は、矢印の根元のプロセスを実行した後に、矢印の先のプロセスを実行するという実行手順を示している。図１に示すブロック図では、一般に、図１中の左側から右側にかけてプロセスが実行される。つまり、図１中の左側に上流工程が配置されており、右側に下流工程が配置されている。そして、矢印に基づいて、上流側から下流側にデータ（伝達情報）が受け渡されるとともに処理が進行する。ここで、伝達情報は、プロセス間で矢印の向きに受け渡されるデータである。
【００３４】
複数のプロセスは、位置情報としてＸ座標とＹ座標とを有する。そして、複数のプロセスのうちＸ座標の値が小さいプロセスほど、上流側に位置している。複数のプロセスのうちＸ座標の値が大きいプロセスほど、下流側に位置している。
【００３５】
複数のプロセスの少なくとも一部は、伝達情報の入力点または出力点である複数のポートを有する。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。このように１つのプロセスは、一般に１以上のポート結線と関与している。ここで、「関与する」とは、１つのプロセスが、ポート結線の入力点となるポートまたはポート結線の出力点となるポートを有することを意味している。
【００３６】
２．クロスポイント
また、図１には、クロスポイントＣＰ１が示されている。クロスポイントＣＰ１は、第１の矢印と第２の矢印とが交差する交点である。ここで、ＳＩＭＵＬＩＮＫ（登録商標）から出力されるブロック図は、例えば、図１の状態である。図１のブロック図の状態から、任意のプロセスの座標を動かしてもロボットアームの制御ソフトウェアを正常に動作させることができる。ただし、このロボットアームの制御ソフトウェアを正常に動作させるためには、一連の順序に従って処理を実行する必要がある。そのため、プロセスのＸ座標およびＹ座標を移動させる際には、処理の実行順序を変えないようにする必要がある。つまり、多数のプロセスのＸ座標の相対位置を変更しない範囲で、これらのプロセスの座標を動かせばよい。
【００３７】
そして、図１の状態から１つのプロセスのＸ座標およびＹ座標の少なくとも一方を移動させると、クロスポイントＣＰ１の数は変化することがある。そして、いくつかのプロセスのＸ座標およびＹ座標の少なくとも一方を移動させると、クロスポイントＣＰ１の数は最小値をとることがある。クロスポイントＣＰ１の数が最小値をとる場合のクロスポイントＣＰ１を本質的クロスポイントということとする。そして、クロスポイントＣＰ１の数が最小値をとらない場合のクロスポイントＣＰ１を見た目上のクロスポイントということとする。このように、クロスポイントＣＰ１の数が見た目上多い状態から、最適化を図ることにより、本質的クロスポイントのみの状態にすることができる。
【００３８】
ここで、クロスポイントの数について説明する。ある結線上にクロスポイントＣＰ１が１個発生したと仮定すると、その結線の上流側のプロセスと下流側のプロセスとの双方のプロセスのクロスポイントＣＰ１の所持数が０．５だけ上昇することとする。このようにして、１つずつのプロセス毎にクロスポイントＣＰ１の所持数を付与することができる。ここで、上流側および下流側のプロセスの両方にクロスポイントＣＰ１の所持数を加算するため、複数のプロセスのクロスポイントＣＰ１の所持数の総和は、ブロック図全体にわたって足し合わせたクロスポイントＣＰ１の数と等しい。
【００３９】
３．プロセス管理装置
本実施形態のプロセス管理装置１は、多数のプロセスを有するソフトウェアについて、複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を管理するとともに、クロスポイントＣＰ１を評価することができる。また、プロセス管理装置１は、プロセスのＸ座標およびＹ座標の少なくとも一方を変更する手順を繰り返すことにより、本質的クロスポイントのみが表れているブロック図を作成することができる。これにより、プロセス管理装置１は、システムの複雑さを評価するとともに管理することができる。ここで、本実施形態のプロセスは、ソフトウェアのサブシステムやモジュールを含む。
【００４０】
図２は、本実施形態のプロセス管理装置１のハードウェア構成を示す図である。プロセス管理装置１は、処理装置１０と、入力部２０と、表示部３０と、を有している。処理装置１０は、プロセス管理装置１の各種の処理を具体的に行うものである。入力部２０は、ユーザーからの入力を受け付けるためのものである。または、他のコンピューターからの出力結果を受け付けるものであってもよい。例えば、キーボードが挙げられる。表示部３０は、処理装置１０により各種の処理を実行した結果等を表示するためのものである。例えば、ディスプレイが挙げられる。
【００４１】
処理装置１０は、上記の他に、制御部１００と、不揮発性メモリＨＤ１と、を有している。制御部１００は、各種の制御を行うものである。制御部１００は、ＣＰＵ（Ｃ１）と、メモリＭ１とを有している。制御部１００は、ＣＰＵＣ１と、メモリＭ１とを使用することにより、各種の制御を行う。不揮発性メモリＨＤ１には、プログラムＰ１が格納されている。プログラムＰ１は、後述するように、コンピューターに実現させるためのプロセス管理プログラムである。これにより、コンピューターは、プロセス管理装置１としての機能を果たす。
【００４２】
４．制御部
図３は、制御部１００における各種の制御を行う各部を説明するためのブロック図である。制御部１００の有する各部は、それぞれ、ＣＰＵＣ１の少なくとも一部と、メモリＭ１の少なくとも一部とを用いて機能を発揮するものである。
【００４３】
制御部１００は、プロセス情報取得部１１０と、プロセス選択部１２０と、プロセス位置情報変更部１４０と、クロスポイント算出部１５０と、プロセス位置情報保持部１６０と、その他の制御部ｏｔｈ１と、を有している。
【００４４】
プロセス情報取得部１１０は、ブロック図における複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を取得するプロセス情報取得機能を有する。具体的には、プロセス情報取得部１１０は、位置情報として複数のプロセスのＸ座標およびＹ座標を取得する。そして、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報である関係情報を取得する。
【００４５】
プロセス選択部１２０は、プロセス位置情報変更部１４０によりＸ座標およびＹ座標の少なくとも一方を変更される１つのプロセスを選択するプロセス選択機能を有する。プロセス選択部１２０は、多数のプロセスの中から、クロスポイントＣＰ１の所持数の多いプロセスを優先的に選択する。つまり、プロセス選択部１２０は、複数のプロセスのうち関与するポート結線が有するクロスポイントＣＰ１の数が多いプロセスを優先的に選択する。
【００４６】
プロセス位置情報変更部１４０は、複数のプロセスのうちの少なくとも１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更するプロセス位置情報変更機能を有する。具体的には、プロセス位置情報変更部１４０は、プロセス選択部１２０により選択された１つのプロセスのＸ座標と、他のプロセスのＸ座標と、の順序が入れ替わらない範囲で、そのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。つまり、プロセス位置情報変更部１４０は、複数のプロセス間のＸ座標の順序を変えない範囲で複数のプロセスのうちの１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更する。プロセス位置情報変更部１４０は、この制限の範囲内で、ランダムにこのプロセスの位置情報を変更することができる。この変更により、プロセスの処理順序が互いに入れ替わるおそれがない。
【００４７】
クロスポイント算出部１５０は、複数のプロセスの位置情報からプロセス間のクロスポイントＣＰ１の所持数を算出するクロスポイント算出機能を有する。つまり、クロスポイント算出部１５０は、ポート結線同士のクロスポイントＣＰ１を算出する。また、クロスポイント算出部１５０は、プロセス位置情報変更部１４０により複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントＣＰ１を算出する。クロスポイントＣＰ１の算出方法については、後に詳しく説明する。
【００４８】
プロセス位置情報保持部１６０は、複数のプロセスの位置情報を保持するプロセス位置情報保持機能を有する。そのため、プロセス位置情報保持部１６０は、プロセス情報取得部１１０により取得された複数のプロセスの位置情報を保持することができる。また、プロセス位置情報保持部１６０は、プロセス位置情報変更部１４０により変更された後の複数のプロセスの位置情報を保持することもできる。具体的には、プロセス位置情報保持部１６０は、プロセス位置情報変更部１４０による１つのプロセスの座標の変更後のクロスポイントＣＰ１の数が、そのプロセスの座標の変更前のクロスポイントＣＰ１の数よりも小さい場合に、変更後のそのプロセスの座標を保持する。また、プロセス位置情報保持部１６０は、プロセス位置情報変更部１４０による１つのプロセスの座標の変更後のクロスポイントＣＰ１の数が、そのプロセスの座標の変更前のクロスポイントＣＰ１の数以上である場合に、変更前のそのプロセスの座標を保持する。
【００４９】
その他の制御部ｏｔｈ１は、上記以外のその他の制御を実施する。例えば、その他の制御部ｏｔｈ１は、クロスポイントＣＰ１等がプロセスの座標の変更により減少したか否かを判断する判断部を有する。
【００５０】
５．クロスポイントの算出方法
ここで、クロスポイント算出部１５０が実施するクロスポイントＣＰ１の所持数の算出方法について説明する。第１のプロセスから第２のプロセスに向かって結線が存在し、第３のプロセスから第４のプロセスに向かって結線が存在するものとして、説明する。クロスポイント算出部１５０は、第１のプロセスから第４のプロセスまでのＸ座標およびＹ座標を読み出す。
【００５１】
そして、第１のプロセスのＸ座標およびＹ座標と、第２のプロセスのＸ座標およびＹ座標と、から第１のベクトルを定義する。そして、第１のベクトルと第３のプロセスの座標との間で第１の外積を計算する。また、第１のベクトルと第４のプロセスの座標との間で第２の外積を計算する。
【００５２】
また、第３のプロセスのＸ座標およびＹ座標と、第４のプロセスのＸ座標およびＹ座標と、から第２のベクトルを定義する。そして、第２のベクトルと第１のプロセスの座標との間で第３の外積を計算する。また、第２のベクトルと第２のプロセスの座標との間で第４の外積を計算する。
【００５３】
ここで、第１の外積と第２の外積との積が負の値であり、かつ、第３の外積と第４の外積との積が負の値であれば、第１のプロセスから第４のプロセスまでの間にクロスポイントが存在する。第１の外積と第２の外積との積が正の値であるか、または、第３の外積と第４の外積との積が正の値であれば、第１のプロセスから第４のプロセスまでの間にクロスポイントが存在しない。
【００５４】
このように、すべてのプロセスの組み合わせについて計算することにより、どのプロセスとどのプロセスとの間にクロスポイントＣＰ１が存在するかが分かる。また、全てのプロセスについて計算をすることにより、ブロック図全体が有するクロスポイントＣＰ１の総数を求めることができる。
【００５５】
このように、プロセス管理装置１は、各プロセスについてのクロスポイントＣＰ１を計算することができる。そして、プロセス管理装置１は、このロボット制御ソフトウェアのプログラムの複雑さを評価することができる。
【００５６】
６．クロスポイントの最適化方法
図４のフローチャートによりクロスポイントの最適化方法について説明する。この最適化方法では、複数のプロセスのうちの少なくとも一部の座標を動かすことにより、クロスポイントＣＰ１を減少させる。これにより、本質的クロスポイントが表れている状態を探索することができる。
【００５７】
まず、プロセス情報取得部１１０が、ブロック図における複数のプロセスについてのプロセス情報および複数のプロセス間の関係情報を取得する（Ｓ１０１）。プロセス情報は、複数のプロセスの位置情報としてのＸ座標とＹ座標と、複数のポートの配列順序を示すポート順序情報と、を有する。関係情報は、第１のプロセスの第１のポートから第１のプロセスよりＸ座標の大きい第２のプロセスの第２のポートまでを結ぶポート結線の結線情報を有する。
【００５８】
次に、クロスポイント算出部１５０は、複数のプロセスの結線のクロスポイントＣＰ１をそのブロック図全体にわたって算出する（Ｓ１０２）。
【００５９】
次に、プロセス選択部１２０が、複数のプロセスについてそのプロセスのクロスポイント所持数に応じて重みづけを行う（Ｓ１０３）。つまり、クロスポイントＣＰ１の所持数が多いプロセスほど、プロセス選択部１２０により選択されやすい。例えば、クロスポイントＣＰ１の数の２乗を用いることができる。この場合には、クロスポイントＣＰ１の数が１のプロセスＡには１、クロスポイントＣＰ１の数が５のプロセスＢには２５という数値が付与される。つまり、つまり、プロセスＢが移動される確率は、プロセスＡが移動される確率の２５倍である。もちろん、重みづけの方法については、これ以外のものであってもよい。なお、この重みづけについては、プロセス選択部１２０の代わりにその他の制御部ｏｔｈ１が行ってもよい。
【００６０】
次に、プロセス選択部１２０が、複数のプロセスのうちから座標を変更される１つのプロセスを選択する（Ｓ１０４）。そして、プロセス選択部１２０は、Ｘ座標およびＹ座標の少なくとも一方を変更するプロセスとして複数のプロセスのうちクロスポイントＣＰ１の数の多いプロセスを優先的に選択することになる。つまり、プロセス選択部１２０は、上記の重みづけに応じて一つのプロセスを選択する。
【００６１】
次に、プロセス位置情報変更部１４０は、プロセス選択部１２０により選択されたプロセスのＹ座標を変更する（Ｓ１０５）。ここで、プロセス位置情報変更部１４０は、そのプロセスの変更後の座標をランダムに決定することができる。
【００６２】
次に、クロスポイント算出部１５０は、複数のプロセスの結線に存在するクロスポイントＣＰ１をそのブロック図全体にわたって算出する（Ｓ１０６）。このように、プロセス位置情報変更部１４０により複数のプロセスのうちの１つのプロセスの座標が変更された後に、クロスポイント算出部１５０は、クロスポイントＣＰ１を算出する。これにより、プロセス位置情報変更部１４０により１つのプロセスを移動させる前後の状態のクロスポイントＣＰ１が算出される。
【００６３】
次に、プロセス位置情報保持部１６０またはその他の制御部ｏｔｈ１は、プロセスの移動によりブロック全体としてクロスポイントＣＰ１の数が減ったか否かを判断する（Ｓ１０７）。ブロック全体としてクロスポイントＣＰ１の数が減少していた場合には（Ｓ１０７：Ｙｅｓ）、Ｓ１０８に進む。ブロック全体としてクロスポイントＣＰ１の数が減少していなかった場合には（Ｓ１０７：Ｎｏ）、Ｓ１０９に進む。
【００６４】
Ｓ１０８では、プロセス位置情報保持部１６０は、プロセス位置情報変更部１４０による座標の変更後のクロスポイントＣＰ１の数が変更前のクロスポイントＣＰ１の数よりも少ない場合に、変更後における複数のプロセスのＸ座標およびＹ座標を保持する（Ｓ１０８）。これにより、クロスポイントＣＰ１の数がより少ない状態のプロセスの座標が保存される。そして、Ｓ１０９に進む。
【００６５】
Ｓ１０９では、その他の制御部ｏｔｈ１は、クロスポイントＣＰ１の数の減少が収束したか判断する（Ｓ１０９）。例えば、プロセスの移動を１００回繰り返したとしても、クロスポイントＣＰ１の数が減少しなかった場合に、クロスポイントＣＰ１の数が収束したと判断する。そして、その他の制御部ｏｔｈ１が、クロスポイントＣＰ１の数の減少が収束したと判断した場合に（Ｓ１０９：Ｙｅｓ）、この最適化処理を終了する。クロスポイントＣＰ１の数の減少が未だ収束していないと判断した場合に（Ｓ１０９：Ｎｏ）、Ｓ１０３に進む。この場合には、プロセス位置情報保持部１６０は、プロセス位置情報変更部１４０による座標の変更前における複数のプロセスのＸ座標およびＹ座標を保持している。
【００６６】
なお、制御部１００は、この最適化したブロック図の状態と、クロスポイントＣＰ１の数と、を出力することができる。ここで、出力されるクロスポイントＣＰ１の数が、本質的クロスポイントである。ただし、十分に収束しきっていない場合には、クロスポイントＣＰ１の数は、本来の本質的クロスポイントの数よりも若干多い。
【００６７】
７．本実施形態の効果
このように、プロセス管理装置１は、クロスポイントＣＰ１を算出することにより、ロボットアームの制御ソフトウェアの複雑さ、つまりスパゲッティ度を評価することができる。また、プロセス管理装置１は、クロスポイントＣＰ１を最適化することができる。また、最適化された後のブロック図は、高度に整理された状態にある。そして、本質的クロスポイントの数が、このソフトウェアの複雑さの指標の一つとなりうる。クロスポイントＣＰ１を最適化することにより、プロセス管理装置１は、ロボットアームの制御ソフトウェアについて、多数のサブルーチンが非常に整理された順序で並べられたソースコードを出力することができる。
【００６８】
８．変形例
８−１．記憶媒体
本実施形態では、プロセス管理装置１およびプロセス管理プログラムＰ１について説明した。しかし、本実施形態の技術についてプロセス管理プログラムＰ１を記録された記憶媒体に適用することができる。この記憶媒体は、プロセス管理プログラムＰ１を記憶したコンピューター読み取り可能な記憶媒体である。記憶媒体として、例えば、ＣＤＲＯＭ、ＤＶＤＲＯＭ等が挙げられる。もちろん、これ以外のものであってもよい。
【００６９】
８−２．プロセス位置情報変更部
本実施形態では、図４のフローチャートにおいて、Ｓ１０５で選択された１つのプロセスのＹ座標を変更する。しかし、選択された１つのプロセスのＸ座標を変更してもよい。ただし、多数のプロセスのＸ座標は、各プロセスを実行する順序を示している。そのため、選択されたプロセスのＸ座標を移動させるにあたって、他のプロセスとの実行順序を入れ替えることがないようにする必要がある。つまり、選択されたプロセスより１つだけ上流側のプロセスのＸ座標と、１つだけ下流側のプロセスのＸ座標と、の間で選択されたプロセスのＸ座標を定めることとなる。プロセス位置情報変更部１４０は、選択された１つのプロセスのＸ座標およびＹ座標の少なくとも一方を変更することができる。
【００７０】
８−３．工業製品の開発工程
本実施形態のプロセス管理装置１は、ロボットアームの制御ソフトウェアを管理および最適化するものである。しかし、プロセス管理装置１を、例えば、工業製品の開発工程の各プロセスを管理する場合にも適用することができる。工業製品の開発工程は、図１に示すように、多数のプロセスを有するブロック図で表される。このように、多数のプロセスの処理順序の関係が成立しているものであれば、本実施形態の技術を適用することができる。したがって、ソフトウェアのみならず工業製品の工程設計に対しても、プロセス管理装置１を適用することができる。
【００７１】
９．本実施形態のまとめ
以上詳細に説明したように、本実施形態のプロセス管理装置１は、複数のプロセス間のクロスポイントＣＰ１を算出することができる。また、プロセス管理装置１は、クロスポイントＣＰ１の最適化をすることができる。このクロスポイントＣＰ１の算出により、プロセス管理装置１は、ロボットアームの制御ソフトウェアの見た目上の複雑さを表現することができる。また、このクロスポイントＣＰ１の最適化により、プロセス管理装置１は、本質的クロスポイントのみを表示することができる。また、クロスポイントを最適化することにより、プロセス管理装置１は、ロボットアームの制御ソフトウェアについて、多数のサブルーチンが非常に整理された順序で並べられたソースコードを出力することができる。
【００７２】
なお、本実施例は単なる例示にすぎない。したがって当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。本実施形態では、ロボットアームの制御ソフトウェアを例に挙げて説明した。しかし、その他のソフトウェアについても同様に本実施形態の技術を適用することができる。また、フローチャートを繰り返すステップ数は、本明細書に記載されている回数に限定されない。一般に、ブロック図が有するプロセスの数が多いほど、収束するステップ数は多くなるからである。上記の事項は、他の実施形態においても同様である。
【００７３】
（第２の実施形態）
第２の実施形態について説明する。１つのプロセスは、通常、１つ以上のポートを有する。また、１つのプロセスは、２つ以上のポートを有することが多い。図５に示すように、ポートは、結線Ｋ１の根元に位置する出力点Ｋ１ａまたは結線Ｋ１の先端に位置する入力点Ｋ１ｂである。例えば、ＳＩＭＵＬＩＮＫ（登録商標）から出力された初期状態のブロック図においては、複数のポートがプロセスの内部に配置されている。図５は、複数のポートおよびクロスポイントを例示する図である。複数のポートは、プロセスの左端または右端に一列に並んで配置されている。ここで、複数のポートは、ポート順序の値の小さいポートから順番に、ブロック図の上から下に向かって配置されている。プロセスの右端に位置するポートは出力点Ｋ１ａである。プロセスの左端に位置するポートは入力点Ｋ１ｂである。第２の実施形態では、これらのポートの順番を入れ替える。
【００７４】
１．制御部
図６は、制御部２００における各種の制御を行う各部を説明するためのブロック図である。制御部２００の有する各部は、それぞれ、ＣＰＵＣ１の少なくとも一部と、メモリＭ１の少なくとも一部とを用いて機能を発揮するものである。制御部２００は、プロセス情報取得部１１０と、プロセス選択部１２０と、ポート順序変更部２７０と、クロスポイント算出部２８０と、ポート順序保持部２９０と、その他の制御部ｏｔｈ１と、を有している。
【００７５】
プロセス情報取得部１１０と、プロセス選択部１２０とは、第１の実施形態のものと同様である。ただし、プロセス選択部１２０は、複数のプロセスのうちからポートの入れ替えを行う一つのプロセスを選択する。
【００７６】
ポート順序変更部２７０は、プロセス選択部１２０により選択された一つのプロセスのポートの順序を入れ替える。具体的には、ポート順序変更部２７０は、第１のプロセスの第１のポートの順番と第１のプロセスの第１のポート以外のポートの順番とを入れ替える。または、第２のプロセスの第２のポートの順番と第２のプロセスの第２のポート以外のポートの順番とを入れ替える。
【００７７】
クロスポイント算出部２８０は、ポート順序変更部２７０による２つのポートの入れ替えの前後のポート結線同士のクロスポイントＣＰ１を算出する。
【００７８】
ポート順序保持部２９０は、ポート順序変更部２７０による２つのポートの入れ替えの後のクロスポイントＣＰ１の数が、それら２つのポートの入れ替えの前のクロスポイントＣＰ１の数よりも小さい場合に、変更後のそのポート順序情報を保持する。また、ポート順序保持部２９０は、ポート順序変更部２７０による２つのポートの入れ替えの後のクロスポイントＣＰ１の数が、それら２つのポートの入れ替えの前のクロスポイントＣＰ１の数以上である場合に、変更前のそのポート順序情報を保持する。
【００７９】
２．ポートの入れ替え方法
本実施形態のポートの入れ替え方法について説明する。各プロセスの内部でポートの順番（位置）を入れ替えても、プロセス間の関係情報は変化しない。つまり、ポートの順番を自由に入れ替えても、ブロック図が表現するプロセス間に悪影響を与えるおそれはない。
【００８０】
図７は、ポートの入れ替え方法を示すフローチャートである。まず、図５に示すように、クロスポイントＣＰ１を算出する（Ｓ２０１）。次に、ポートの入れ替えを実施するプロセスを選択する（Ｓ２０２）。その際に、クロスポイントＣＰ１を有する結線の出力元もしくは入力先のプロセスを優先的に選択する。次に、図８に示すように、クロスしているポート結線の組み合わせを選択する（Ｓ２０３）。その際に、ポート結線のうちクロスポイントＣＰ１の数の多いポート結線を優先的に選択するとよい。次に、図９に示すように、選択した２つの結線について２つのポートを選択する（Ｓ２０４）。その際に、矢印の根元に位置する出力元の２つのポートを選択する。次に、図１０に示すように、選択した２つのポートの順序を入れ替える（Ｓ２０５）。これにより、選択した２つのポートの位置が交換される。この交換により、クロスポイントＣＰ１の数が変化する場合がある。
【００８１】
そのため、ポートの入れ替えを行った状態におけるクロスポイントＣＰ１の数を再計算する（Ｓ２０６）。そして、ポートの入れ替えの前後でクロスポイントＣＰ１の数を比較する（Ｓ２０７）。クロスポイントＣＰ１の数が減少していれば（Ｓ２０７：Ｙｅｓ）、Ｓ２０８に進む。クロスポイントＣＰ１の数が減少していなければ（Ｓ２０７：Ｎｏ）、Ｓ２０９に進む。Ｓ２０８では、ポートを入れ替えた後の状態のブロック図を保存する。Ｓ２０９では、ポートを入れ替える前の状態のブロック図に戻す。
【００８２】
図１０に示す状態のクロスポイントＣＰ１の数は、図５に示す状態のクロスポイントＣＰ１の数よりも少ない。そして、上記のフローチャートを何度も繰り返すことにより、クロスポイントＣＰ１の数は、減少する。そのため、クロスポイントＣＰ１の数が収束するまで処理を繰り返せばよい。例えば、５０００ステップ繰り返す。もちろん、これ以外のステップ数を採用してもよい。
【００８３】
３．変形例
Ｓ２０４において、矢印の先端に位置する入力先の２つのポートを選択してもよい。その場合であっても、クロスポイントＣＰ１の数を減少させることができるからである。
【００８４】
（第３の実施形態）
第３の実施形態について説明する。第３の実施形態のクロスポイントの最適化方法は、第１の実施形態の方法と第２の実施形態の方法とを組み合わせた方法である。
【００８５】
１．制御部
図１１は、制御部３００における各種の制御を行う各部を説明するためのブロック図である。制御部３００の有する各部は、それぞれ、ＣＰＵＣ１の少なくとも一部と、メモリＭ１の少なくとも一部とを用いて機能を発揮するものである。制御部３００は、プロセス情報取得部１１０と、プロセス選択部１２０と、プロセス位置情報変更部１４０と、クロスポイント算出部３５０と、プロセス位置情報保持部１６０と、ポート順序変更部２７０と、ポート順序保持部２９０と、その他の制御部ｏｔｈ１と、を有している。
【００８６】
プロセス情報取得部１１０と、プロセス選択部１２０と、プロセス位置情報変更部１４０とは、第１の実施形態のものと同様である。ポート順序変更部２７０と、ポート順序保持部２９０とは、第２の実施形態のものと同様である。
【００８７】
クロスポイント算出部３５０は、複数のプロセスの位置情報からプロセス間のクロスポイントＣＰ１の所持数を算出するクロスポイント算出機能を有する。つまり、クロスポイント算出部３５０は、ポート結線同士のクロスポイントＣＰ１を算出する。また、クロスポイント算出部３５０は、プロセス位置情報変更部１４０により複数のプロセスのうちの１つのプロセスの座標が変更される前後のクロスポイントＣＰ１を算出する。また、クロスポイント算出部３５０は、ポート順序変更部２７０による２つのポートの入れ替えの前後のポート結線同士のクロスポイントＣＰ１を算出する。
【００８８】
２．クロスポイントの最適化方法
図１２は、本実施形態のクロスポイントの最適化方法を説明するためのフローチャートである。まず、図４に示す第１の実施形態の最適化方法によりプロセスの位置座標を変更する（Ｓ３０１）。次に、図７に示す第２の実施形態のポートの入れ替え方法によりポートを入れ替える（Ｓ３０２）。これにより、クロスポイントＣＰ１の数は減少する。
【００８９】
ここで、Ｓ３０１およびＳ３０２における繰り返すステップ数は、系の大きさ等を考慮して任意に決定してよい。例えば、Ｓ３０１およびＳ３０２において、各５０００ステップ繰り返す。もちろん、これ以外のステップ数を採用してもよい。
【００９０】
３．変形例
３−１．実行順序の入れ替え
図１３は、変形例におけるクロスポイントの最適化方法を説明するためのフローチャート（その１）である。まず、図７に示す第２の実施形態のポートの入れ替え方法によりポートを入れ替える（Ｓ４０１）。次に、図４に示す第１の実施形態の最適化方法によりプロセスの位置座標を変更する（Ｓ４０２）。このように、図１２と処理順序を入れ替えてもよい。
【００９１】
３−２．繰り返し
図１４は、変形例におけるクロスポイントの最適化方法を説明するためのフローチャート（その２）である。まず、図４に示す第１の実施形態の最適化方法によりプロセスの位置座標を変更する（Ｓ５０１）。次に、図７に示す第２の実施形態のポートの入れ替え方法によりポートを入れ替える（Ｓ５０２）。次に、図４に示す第１の実施形態の最適化方法によりプロセスの位置座標を変更する（Ｓ５０３）。そして、図７に示す第２の実施形態のポートの入れ替え方法によりポートを入れ替える（Ｓ５０４）。このように、２種類の処理を繰り返してもよい。また、上記においては、２種類の処理を２回ずつ繰り返したが、２種類の処理を３回以上繰り返してもよい。
【００９２】
（第４の実施形態）
第４の実施形態について説明する。第４の実施形態のクロスポイントの最適化方法は、プロセス間の結線情報を仮想的に簡略化する方法である。
【００９３】
１．制御部
図１５は、制御部４００における各種の制御を行う各部を説明するためのブロック図である。制御部４００の有する各部は、それぞれ、ＣＰＵＣ１の少なくとも一部と、メモリＭ１の少なくとも一部とを用いて機能を発揮するものである。制御部４００は、プロセス情報取得部１１０と、プロセス選択部１２０と、仮想結線生成部４３０と、プロセス位置情報変更部１４０と、第１のクロスポイント算出部４５０と、プロセス位置情報保持部４６０と、ポート順序変更部２７０と、第２のクロスポイント算出部４８０と、ポート順序保持部２９０と、その他の制御部ｏｔｈ１と、を有している。
【００９４】
プロセス情報取得部１１０と、プロセス選択部１２０と、プロセス位置情報変更部１４０とは、第１の実施形態のものと同様である。ポート順序変更部２７０と、ポート順序保持部２９０とは、第２の実施形態のものと同様である。
【００９５】
仮想結線生成部４３０は、第１のプロセスから第２のプロセスまで至る仮想結線を生成する仮想結線生成機能を有する。
【００９６】
第１のクロスポイント算出部４５０は、プロセス位置情報変更部１４０による１つのプロセスの座標の変更の前後の仮想結線同士の仮想クロスポイントＶＣＰ１を算出する第１のクロスポイント算出機能を有する。
【００９７】
プロセス位置情報保持部４６０は、プロセス位置情報変更部１４０による１つのプロセスの座標の変更後の仮想クロスポイントＶＣＰ１の数が、そのプロセスの座標の変更前の仮想クロスポイントＶＣＰ１の数よりも小さい場合に、変更後のそのプロセスの座標を保持し、プロセス位置情報変更部１４０による１つのプロセスの座標の変更後の仮想クロスポイントＶＣＰ１の数が、そのプロセスの座標の変更前の仮想クロスポイントＶＣＰ１の数以上である場合に、変更前のそのプロセスの座標を保持する。
【００９８】
第２のクロスポイント算出部４８０は、ポート順序変更部２７０による２つのポートの入れ替えの前後のポート結線同士のクロスポイントＣＰ１を算出する第２のクロスポイント算出機能を有する。
【００９９】
２．クロスポイントの最適化方法
図１６は、本実施形態のクロスポイントの最適化方法を説明するためのフローチャートである。ここで、図１７は、初期状態のブロック図を例示する図である。図１７は、いくつかのクロスポイントＣＰ１を有する。まず、仮想結線生成部４３０は、仮想結線を生成する（Ｓ６０１）。仮想結線は、ポートを考慮しないプロセス間の入出力関係を示す結線である。このとき、ブロック図は、図１８のようになっている。つまり、どのポートからどのポートに関係情報が入出力されているかという情報を無視して、第１のプロセス（サブシステム）から第２のプロセス（サブシステム）への依存関係情報の有無のみを表す仮想的な結線情報のみを表示する。
【０１００】
次に、第１のクロスポイント算出部４５０は、仮想クロスポイントＶＣＰ１を算出する（Ｓ６０２）。次に、プロセス位置情報変更部１４０が、一つのプロセスの座標を変更する（Ｓ６０３）。そして、第１のクロスポイント算出部４５０は、再び、仮想クロスポイントＶＣＰ１を算出する（Ｓ６０４）。次に、その他の制御部ｏｔｈ１は、仮想クロスポイントＶＣＰ１が減少したか否かを判断する（Ｓ６０５）。仮想クロスポイントＶＣＰ１が減少していれば（Ｓ６０５：Ｙｅｓ）、Ｓ６０６に進む。仮想クロスポイントＶＣＰ１が減少していなければ（Ｓ６０５：Ｎｏ）、Ｓ６０３に進む。また、Ｓ６０３またはＳ６０６に進む際には、プロセス位置情報保持部４６０は、プロセスの位置情報を保持する。
【０１０１】
Ｓ６０６では、第２のクロスポイント算出部４８０が、ポート結線同士のクロスポイントＣＰ１を算出する（Ｓ６０６）。次に、ポート順序変更部２７０が、２つのポートの順序を入れ替える（Ｓ６０７）。次に、第２のクロスポイント算出部４８０が、ポート結線同士のクロスポイントＣＰ１を算出する（Ｓ６０８）。次に、その他の制御部ｏｔｈ１は、クロスポイントＣＰ１が減少したか否かを判断する（Ｓ６０９）。クロスポイントＣＰ１が減少していれば（Ｓ６０９：Ｙｅｓ）、終了する。クロスポイントＣＰ１が減少していなければ（Ｓ６０９：Ｎｏ）、Ｓ６０７に進む。また、Ｓ６０７に進む際または終了する際には、プロセス位置情報保持部４６０は、プロセスの位置情報を保持する。
【０１０２】
これにより、クロスポイントＣＰ１の数は減少する。
【０１０３】
３．変形例
本実施形態では、第１のクロスポイント算出部４５０は、仮想クロスポイントＶＣＰ１を計算する。その際に、クロスポイントＣＰ１を無視する。しかし、クロスポイントＣＰ１を一旦削除し、仮想クロスポイントＶＣＰ１の計算後に、削除したクロスポイントＣＰ１を復活させるようにしてもよい。
【実施例】
【０１０４】
１．プログラム
本実験では、第３の実施形態のプログラムおよび第４の実施形態のプログラムを使用して、クロスポイントの減少傾向について調べた。なお、第３の実施形態のプログラムでは、図１２のフローチャートの最適化方法を用いた。
【０１０５】
２．初期状態
図１９は、この試験において用いられた系の初期状態のブロック図である。図１９の状態では、クロスポイントは３０個存在している。
【０１０６】
３．試験結果
図２０は、第３の実施形態のプログラムを用いて最適化処理をした後のブロック図である。ここで、繰り返したステップ数は５００ステップである。図２０に示すように、クロスポイントが６個残留している。
【０１０７】
図２１は、第４の実施形態のプログラムを用いて最適化処理をした後のブロック図である。ここで、繰り返したステップ数は５００ステップである。図２１に示すように、クロスポイントの数は０である。したがって、この系における本質的クロスポイントの数は０である。
【０１０８】
図２２は、第３の実施形態および第４の実施形態のプログラムを用いて最適化処理をした場合におけるクロスポイントの推移を示すグラフである。図２２の横軸はステップ数である。図２２の縦軸はクロスポイントの数である。
【０１０９】
図２２に示すように、クロスポイントの数は、ステップ数の増加に伴って単調に減少している。また、第４の実施形態のプログラムでは、第３の実施形態のプログラムに比べて、クロスポイントの数の減少速度が速い。つまり、より少ないステップ数でクロスポイントの数が収束している。また、第４の実施形態のプログラムでは、クロスポイントの数が０に収束している。つまり、第４の実施形態の最適化方法は、この系における本質的クロスポイントを導出できた。一方、第３の実施形態のプログラムを用いた場合には、クロスポイントの数は６である。第３の実施形態の最適化方法は、この系における本質的クロスポイントを導出できなかった。このように、第４の実施形態の最適化方法は、第３の実施形態の最適化方法に比べて優れている。
【０１１０】
図２３は、図２２を拡大したグラフである。図２３に示すように、第４の実施形態のプログラムでは、第３の実施形態のプログラムに比べて、クロスポイントの数の減少速度が速い。
【符号の説明】
【０１１１】
Ｐ１…プログラム
１…プロセス管理装置
１０…処理装置
２０…入力部
３０…表示部
Ｃ１…ＣＰＵ
Ｍ１…メモリ
１００…制御部
１１０…プロセス情報取得部
１２０…プロセス選択部
１４０…プロセス位置情報変更部
１５０、２８０…クロスポイント算出部
１６０…プロセス位置情報保持部
２７０…ポート順序変更部
２９０…ポート順序保持部
４３０…仮想結線生成部
４５０…第１のクロスポイント算出部
４８０…第２のクロスポイント算出部
ｏｔｈ１…その他の制御部
ＨＤ１…不揮発性メモリ
【図１】
0006601817.tif 000002
【図２】
0006601817.tif 000003
【図３】
0006601817.tif 000004
【図４】
0006601817.tif 000005
【図５】
0006601817.tif 000006
【図６】
0006601817.tif 000007
【図７】
0006601817.tif 000008
【図８】
0006601817.tif 000009
【図９】
0006601817.tif 000010
【図１０】
0006601817.tif 000011
【図１１】
0006601817.tif 000012
【図１２】
0006601817.tif 000013
【図１３】
0006601817.tif 000014
【図１４】
0006601817.tif 000015
【図１５】
0006601817.tif 000016
【図１６】
0006601817.tif 000017
【図１７】
0006601817.tif 000018
【図１８】
0006601817.tif 000019
【図１９】
0006601817.tif 000020
【図２０】
0006601817.tif 000021
【図２１】
0006601817.tif 000022
【図２２】
0006601817.tif 000023
【図２３】
0006601817.tif 000024