(57)【要約】【課題】作図者の意図を反映したソフトウェアモデルを自動で作図する手段を提供する。【解決手段】モデル作図者の編集作業情報を記録し、その記録情報を元に、ソフトウェアモデルの各要素同士の関連度を設定する。ソフトウェアモデルを構成する各要素に力学モデルを適用してソフトウェアモデルの各要素を自動で配置する。その際、力学モデルに、編集作業情報から算出した関連度に応じた力を設定し、作図者の意図に準じた各要素の配置を決定する。【選択図】  図７
2019160108.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロック間に力学モデルを適用して各ブロック間の関連付を行う第１関連付処理部と、
前記各ブロックの作業ログ情報から前記各ブロック間の関連性を求めて、前記ブロック間の関連付を行う第２関連付処理部と、
前記第１関連付処理部と前記第２関連付処理部によって関連付された情報に応じて前記各ブロックの配置を求める移動量演算部と、
前記移動量演算部による移動量に基づいて前記各ブロックの配置を修正する座標修正部と、
前記座標修正部の情報に応じて各ブロックを表示する表示部と、
を備えたソフトウェアモデル自動作図システム。
【請求項２】
請求項１におけるソフトウェアモデル自動作図システムにおいて、
前記作業ログ情報は各ブロックの閲覧又は編集の少なくとも一つに要する時間であることを特徴とするソフトウェアモデル自動作図システム。
【請求項３】
請求項２におけるソフトウェアモデル自動作図システムにおいて、
前記第２関連付処理部は各ブロックの閲覧又は編集終了時刻と次の閲覧又は編集開始時刻の差が所定の時間間隔より短い場合に、各ブロック同士に関連が有ると判定することを特徴とするソフトウェアモデル自動作図システム。
【請求項４】
請求項１から３のいずれか１項に記載のソフトウェアモデル自動作図システムにおいて、
前記第１関連付処理部は、ブロック間の距離を導出する際に用いるブロックの境界線にはブロック外形に外接する楕円を用いて関連性を求めることを特徴とするソフトウェアモデル自動作図システム。
【請求項５】
請求項１から４のいずれか１項に記載のソフトウェアモデル自動作図システムにおいて、
前記力学モデルは、ブロック間距離に応じた斥力とバネ力であることを特徴とするソフトウェアモデル自動作図システム。
【請求項６】
請求項１から５のいずれか１項に記載のソフトウェアモデル自動作図システムにおいて、
前記各ブロックの座標から前記ブロック間の関連性を求める関連度逆算部を備えることを特徴とするソフトウェアモデル自動作図システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアモデル自動作図システムに関する。
【背景技術】
【０００２】
車載制御装置に搭載されるソフトウェアの設計において、設計効率向上のために、制御ソフトウェアの構造や振る舞いをモデルとして表現したソフトウェアモデルを用いたモデルベース開発が広く用いられている。ここで、車載制御装置に求められる機能の増加／高度化により、搭載されるソフトウェアは複雑化／大規模化しており、それにあわせてソフトウェアモデルも複雑化／大規模化する傾向にある。制御ソフトウェアモデルの複雑化／大規模化により、制御ソフトウェアモデルを構成する要素を作図者の意図通りに見やすく配置するために必要な作業量は増加しており、これを自動で行うことが出来れば設計作業の効率は向上する。
【０００３】
ところで、ソフトウェアモデルはいわゆるノードとエッジで構成されたグラフに分類されるが、このようなグラフの自動配置を行う手法としてノードとエッジに力学モデルを適用するものが一般的に知られており、本手法を応用した特許文献１が存在する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−３０７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の手法によってソフトウェアモデルの自動配置を行おうとすると、配置はノードとエッジの接続関係によってのみ決定される。しかしながらソフトウェアモデルを作図する際には、ノードとエッジの接続関係だけでなく作図者が各ノードの機能的意味などを考慮しながらノードの配置を決定する。例えば機能的に関連があるノードを近くに配置したりする。そこで、本発明の課題は作図者の意図を考慮できるソフトウェアモデル自動作図システムを実現することである。
【課題を解決するための手段】
【０００６】
本発明では、課題を解決するため、ソフトウェアモデル作図者の作図動作を記録し、その記録をもとにソフトウェアモデルを構成するブロック同士の関連度を決定し、その関連度に応じてソフトウェアモデルのブロックの配置を決定する。
【発明の効果】
【０００７】
本発明によれば、ソフトウェアモデルの作図の際に、作図者の意図を反映したブロックの配置を自動で行うことが出来る。
【図面の簡単な説明】
【０００８】
【図１】ソフトウェアモデルの構成図
【図２】実施例が対象とするソフトウェアモデルの構成図
【図３】編集時刻記録に関する構成図
【図４】ソフトウェアモデルの各ブロックの編集／閲覧時間を示すグラフ
【図５】ソフトウェアモデルを編集／閲覧した場合の編集時刻格納テーブルの構成
【図６】実施例におけるソフトウェアモデル自動作図システムの構成図
【図７】実施例におけるソフトウェアモデル自動作図システムの動作フロー
【図８】実施例におけるブロック間の斥力の導出に用いる各寸法
【図９】ブロック間の距離とブロック間にかかる斥力の関係を示したグラフ
【図１０】本実施例における信号線によるブロック間にかかるバネ力の導出に用いる寸法
【図１１】図６における関連度格納テーブルの構成の例
【図１２】実施例における関連度逆算の構成図
【図１３】実施例における関連度逆算の動作フロー
【発明を実施するための形態】
【０００９】
以下、図面を用いて、本発明の実施例を説明する。
【実施例１】
【００１０】
図１はソフトウェアモデルの構成図である。ソフトウェアモデルはブロック１１と信号線１２で構成される。ブロック１１はその側面に信号線を接続できる複数の入力ポート１３と複数の出力ポート１４を持つ。信号線１２は入力ポート１３と出力ポート１４間を接続する形で配置される。ソフトウェアモデルは階層構造となり、ブロック１１はその内部にブロックの詳細な処理をあらわす子階層１５を持つこととができる。子階層はブロック１１と信号線１２で構成され上位階層と同等の構造をもつ。ここでブロックとはあるソフトウェアモデルを構成するための個々の機能を実行する処理を行うためのオブジェクトである。
【００１１】
図２は実施例において、本ソフトウェアモデル自動作図システムにより自動作図される対象となる、実施例が対象とするソフトウェアモデルの構成図である。
【００１２】
図３は実施例を実現するためのソフトウェアモデル自動作図システムのうち、編集／閲覧時刻情報の取得機能に関わる箇所の編集時刻記録に関する構成図である。作図者３１はモデル作図部３２により、ソフトウェアモデル３５を編集又は閲覧する。ソフトウェアモデル３５にはブロック座標情報３６と信号線の接続情報（信号線接続情報３７）が含まれる。編集時刻記録部３３はモデル作図部３２の動作をモニタしてソフトウェアモデルの各ブロックが編集又は閲覧された時刻を取得し、編集時刻格納テーブル３４に編集時刻情報を記録する。
【００１３】
図４は作図者３１がモデル作図部３２を介してソフトウェアモデルの各ブロックの編集／閲覧時間を示すグラフである。編集時刻記録部３３は、作図者がソフトウェアモデルを編集する際に任意のブロックを編集もしくは閲覧する際の開始時刻と終了時刻を取得し、開始時刻から終了時刻の期間が所定の時間ΔＴ０（有効編集閲覧時間４２）以上の場合に編集時刻格納テーブルに編集対象のブロックと編集開始時刻および編集終了時刻を格納する。
【００１４】
図５は図４の時間でソフトウェアモデルを編集/閲覧した場合の編集時刻格納テーブル３４の構成である。
【００１５】
図６は実施例におけるソフトウェアモデル自動作図システムの構成図であり、ソフトウェアモデル３５のブロックの移動に関わる箇所の構成である。編集時刻格納テーブル３４を元に関連度演算部６１が関連度格納テーブル６２にブロック間の関連度を格納する。移動量演算部６４はブロック座標情報３６と信号線接続情報３７、関連度格納テーブル６２を元に、各ブロックの移動量を演算する。座標修正部６５は移動量演算部６４の結果を元にブロック座標情報３６を更新する。終了判定部６３は収束判定し終了を判定する。
【００１６】
図７は実施例におけるソフトウェアモデル自動作図システムの動作フローである。ブロックの自動配置を行う際の処理手順である。
【００１７】
図７のステップ１においてソフトウェアモデル３５に配置されたブロックの初期状態を取得する。初期状態とは、ブロックのサイズと位置、ブロックの入出力ポートの位置、ブロックの仮想的な速度等を指す。
【００１８】
図７のステップ２において信号線によるブロックのポート間の接続関係を取得する。取得する情報は、接続元のポートと接続先のポートである。
【００１９】
図７のステップ３でブロック同士の関連度を演算する。ブロック間の関連度は図５に示す編集時刻格納テーブル３４の編集／閲覧時間４１から求める。編集時刻格納テーブル３４の各行の編集終了時刻とその次行の編集開始時刻の差が所定の時間間隔ΔＴＲ（有効関連時間範囲４３）より短い場合に、前後の行のブロック列のブロック同士に関連が有ると判定し、図１１に示す関連度格納テーブル６２の行と列それぞれが編集時刻格納テーブル３４の任意の行のブロックと次列のブロックと一致するマスの関連度を一定値加算する。
【００２０】
図７のステップ４でブロックの座標から、ブロック間にかかる力を導出する。ブロック間にかかる力は斥力として、ブロック間の距離に応じてブロック同士が反発する方向に力を与える。ここで、ソフトウェアモデルを構成するブロックは点ではなく主に長方形として表現される。ブロックが重なることはソフトウェアモデルの可読性を低下させるため、ブロック間の斥力はブロックが接触し重なり合う場合に増大させる。ブロック間の距離を導出するに用いるブロックの境界線にはブロック外形の長方形ではなくブロック外形に外接する楕円を用いる、これは長方形とした場合ブロックがブロックに引っかかってしまい望ましい配置に収束しづらくなるためである。
【００２１】
図８はブロック間の斥力の導出に用いる各寸法を示したものである。夫々のブロックの中心Ｏ１、Ｏ２間のｘ軸方向距離をｄｘ、ｙ軸方向距離をｄｙ、Ｏ１を原点とするｘ軸とＯ１、Ｏ２を通る線分がなす角をθとして、ブロック間の距離Ｄは以下の式にて導出する。
【００２２】
【数１】
2019160108.tif 000003
【００２３】
【数２】
2019160108.tif 000004
【００２４】
【数３】
2019160108.tif 000005
【００２５】
【数４】
2019160108.tif 000006
【００２６】
図９はブロック間の距離とブロック間にかかる斥力の関係を示したグラフである。ブロック間にかかる斥力は、力の作用する距離をＤ０として、ブロック同士がＤ０より近づいた場合に力が作用するように、以下式のように定義する。ここで、Ｋ１をブロック間の斥力係数とする。
【００２７】
【数５】
2019160108.tif 000007
【００２８】
ブロックｉとブロックｊ間に作用する斥力のｘ軸方向成分、ｙ軸方向成分は以下となる。
【００２９】
【数６】
2019160108.tif 000008
【００３０】
ブロックｉにかかるブロック間力のｘ軸方向成分、ｙ軸方向成分は以下となる。
【００３１】
【数７】
2019160108.tif 000009
【００３２】
図７のステップ５でブロック間を接続する信号線を仮想的なバネとみなし、ブロックにかかる信号線によるバネ力演算を行う。図１０のように信号線ｎにより他のブロックと接続されているブロックｉにかかるばね力は以下の式による。ここで、Ｋｃｘをｘ方向のバネ係数、Ｋｃｙをｙ方向のばね係数、ｄｘ０をブロック間のｘ方向基準距離とする。
【００３３】
【数８】
2019160108.tif 000010
【００３４】
信号線ｎにおいてブロックｉが接続元の場合
【００３５】
【数９】
2019160108.tif 000011
【００３６】
信号線ｎにおいてブロックｉが接続先の場合
【００３７】
【数１０】
2019160108.tif 000012
【００３８】
ブロックｉに接続された信号線の総数がＮのときブロックｉにかかるバネ力の和は以下の式による。
【００３９】
【数１１】
2019160108.tif 000013
【００４０】
図７のステップ６で関連度による力の演算を行う。図7のステップ３で演算した関連度格納テーブル６２に格納された関連度から各ブロック間に作用する引力ないしは斥力を導出する。ブロックｉとブロックｊの関連度をＲ（ｉ、ｊ）とするとブロックｉとブロックｊに作用する力は以下式による。ここで、ＫＲを関連度係数、ｄｘ（ｉ、ｊ）をブロックの中心間のｘ方向距離、ｄｙ（ｉ、ｊ）をブロックの中心間のｙ方向距離とする。
【００４１】
【数１２】
2019160108.tif 000014
【００４２】
ブロックｉが関わる接続の総数がＮとすると、ブロックｉにかかる関連度による力は以下の式による。
【００４３】
【数１３】
2019160108.tif 000015
【００４４】
図７のステップ７で各ブロックにかかる合力を求める。ブロックにかかる合力は以下式による。
【００４５】
【数１４】
2019160108.tif 000016
【００４６】
図７のステップ８でブロックの移動を終了するか否かの判定を行う。全てのブロックで、ブロックにかかる合力の絶対値が閾値Ｆ０以下の場合、ブロックの移動が収束したと判断し処理を終了する。
【００４７】
【数１５】
2019160108.tif 000017
【００４８】
図７のステップ９でブロックにかかる力を元にブロックの移動量を求める。ブロックの仮想の重さをＭ、仮想の時間刻みをｄｔとして、以下式により、ブロックの速度と位置を求める。
【００４９】
【数１６】
2019160108.tif 000018
【００５０】
図７のステップ１０で前述のブロック位置をもとに、図６におけるブロック座標情報３６を更新し、図７のステップ４から以降の処理を実施する。
【００５１】
上記のようなソフトウェアモデル自動作図装置の構成とすることにより、作図者の意図を反映したソフトウェアモデルを自動で作図することが出来る。
【００５２】
図１２は自動作図された自動作図済ソフトウェアモデル１２１を作図者３１が修正した際などにソフトウェアモデルから関連度を逆算する、実施例における関連度逆算の構成図である。作図者３１はソフトウェアモデル自動作図システムにより自動作図された自動作図済ソフトウェアモデル１２１が作図者の設計の意図通りであるかを確認する。自動作図済ソフトウェアモデル１２１が作図者の意図通りとなっていない場合、作図者は、モデル作図部３２にてソフトウェアモデルの配置を修正する。関連度逆算部１２３は配置修正された修正ソフトウェアモデル１２２から、関連度を解析して、関連度格納テーブル６２に関連度を格納する。これにより、作業ログから取得した関連度に対して、より作図者の意図を反映した関連度を得ることが出来る。この修正された関連度格納テーブル６２を用いることで、以降のソフトウェアモデルを変更する場合において、自動作図システムによるソフトウェアモデルの自動作図がより作図者の意図を反映したものとなる。
【００５３】
図１３は図１２の実施例における関連度逆算の動作フローである。
【００５４】
図１３のステップ１で図１２の作図者３１がモデル作図部３２によりソフトウェアモデルのブロックの位置を変更する。
【００５５】
図１３のステップ２で関連度逆算部１２３はソフトウェアモデルのブロック間にかかる力を図７のステップ４と同様の方法で求める。
【００５６】
図１３のステップ３で関連度逆算部１２３はソフトウェアモデルの接続による力を図７のステップ５と同様の方法で求める。
【００５７】
図１３のステップ４で関連度逆算部１２３はソフトウェアモデルのブロックにかかる力を図１３のステップ２、ステップ３で求めた力の合力として求める。
【００５８】
図１３のステップ５で関連度逆算部１２３はソフトウェアモデルのブロックの配置と図１３のステップ４で求めた合力を元にブロック間の関連度を求め、関連度格納テーブル６２に関連度を格納する。
【００５９】
関連度の演算は、図１３のステップ２、ステップ３で求めた力の合力のｘ方向成分をＦＰｘ（ｉ）、ｙ方向成分をＦＰｙ（ｉ）、各ブロックにかかる関連度による力のｘ方向成分をＦＲｘ（ｉ）、ｙ方向成分をＦＲｙ（ｉ）、とすると、ブロックにかかる力のｘ成分Ｆｘ（ｉ）、ｙ成分Ｆｙ（ｉ）は以下式となる。
【００６０】
【数１７】
2019160108.tif 000019
【００６１】
自動配置されたソフトウェアモデルのブロック配置は、力学モデルによる力と、作業ログによる関連度による力の釣り合いが取れている状態となるため、ブロックにかかる力はゼロとなり、ＦＰｘ（ｉ）、ＦＰｙ（ｉ）とＦＲｘ（ｉ）、ＦＲｙ（ｉ）は以下の関係となる。
【００６２】
【数１８】
2019160108.tif 000020
【００６３】
以上を踏まえて、ブロックＮ個からなるソフトウェアモデルの場合、関連度は以下の式を満たすものとなる。
【００６４】
【数１９】
2019160108.tif 000021
【００６５】
上記の式を満たす関連度Ｒを反復法などを用いて求める。
【００６６】
上記のような関連度逆算部の構成とすることにより、作業ログのみから算出した関連度に対し、より作図者の意図が反映された関連度を取得することができる。この関連度を用いることで、再びソフトウェアモデルが作図者により変更された場合も、より作図者の意図を反映した自動作図を行うことができる。
【００６７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。複数のパソコンを用いてシステムを構成しても良いし、単一のパソコンで実現しても良い。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD（Solid State Drive）等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【符号の説明】
【００６８】
１１：ブロック
１２：信号線
１３：入力ポート
１４：出力ポート
１５：子階層
３１：作図者
３２：モデル作図部
３３：編集時刻記録部
３４：編集時刻格納テーブル
３５：ソフトウェアモデル
３６：ブロック座標情報
３７：信号線接続情報
４１：編集／閲覧時間
４２：有効編集閲覧時間
４３：有効関連時間範囲
６１：関連度演算部
６２：関連度格納テーブル
６３：終了判定部
６４：移動量演算部
６５：座標修正部
１２１：自動作図済ソフトウェアモデル
１２２：修正ソフトウェアモデル
１２３：関連度逆算部
【図１】
2019160108.tif 000022
【図２】
2019160108.tif 000023
【図３】
2019160108.tif 000024
【図４】
2019160108.tif 000025
【図５】
2019160108.tif 000026
【図６】
2019160108.tif 000027
【図７】
2019160108.tif 000028
【図８】
2019160108.tif 000029
【図９】
2019160108.tif 000030
【図１０】
2019160108.tif 000031
【図１１】
2019160108.tif 000032
【図１２】
2019160108.tif 000033
【図１３】
2019160108.tif 000034