(57)【要約】【課題】  開発期間や開発コストを低減する組込コントローラ開発ツール、組込コントローラ、及び組込コントローラ開発プロセスを提供する。【解決手段】  実行順序抽出ツール１１はブロック線図１２ａおよびその下位構造であるブロック線図１２ｂを読み込み、ソフトウェア統合化手段１８が認識できるコードを出力する。ブロック名は、ブロックを一意的に示す「語幹」と本発明による開発ツールの動作を既定する「識別子」により構成される。語幹と識別子とは‘＿’（アンダーバー）により結合される。識別子「ｂｏｘ」をブロック名に持つブロックは下位構造を有することを示すため、実行順序抽出ツール１１は下位構造を示すブロック線図１２ｂも再帰的に検索する。識別子「ｃａｌｃ」をブロック名に持つブロックはソフトウェア部品に対応するため、このブロックが下位構造を有していたとしてもブロックの検索を打ち切る。【選択図】    図１
2005222221.tif 000002
【特許請求の範囲】
【請求項１】
時間的制約条件を有する組込システムのプログラムを開発するための組込コントローラ開発ツールであって、
複数個の演算処理ブロック間におけるデータの流れを示した有向グラフを入力とし、前記演算処理ブロックにつけられた付加情報に基づいて対象とする前記演算処理ブロックを選択する演算処理ブロック選択手段を有し、該演算処理ブロック選択手段により選択された前記演算処理ブロックを対象として該演算処理ブロックの実行順序情報を出力する
ことを特徴とする組込コントローラ開発ツール。
【請求項２】
請求項１に記載の組込コントローラ開発ツールにおいて、
前記付加情報は名前に付加された識別子である
ことを特徴とする組込コントローラ開発ツール。
【請求項３】
請求項１に記載の組込コントローラ開発ツールにおいて、
前記有向グラフはブロック線図である
ことを特徴とする組込コントローラ開発ツール。
【請求項４】
請求項３に記載の組込コントローラ開発ツールにおいて、
前記ブロック線図は階層的に記述されている
ことを特徴とする組込コントローラ開発ツール。
【請求項５】
請求項１に記載の組込コントローラ開発ツールにおいて、
前記有向グラフを閉路なし有向グラフに変換する閉路除去手段を有する
ことを特徴とする組込コントローラ開発ツール。
【請求項６】
請求項１に記載の組込コントローラ開発ツールにおいて、
前記実行順序情報は対象とする組込コントローラの開発言語で出力される
ことを特徴とする組込コントローラ開発ツール。
【請求項７】
請求項１ないし請求項６いずれか記載の組込コントローラ開発ツールを用いて開発される
ことを特徴とする組込コントローラ。
【請求項８】
請求項７に記載の組込コントローラにおいて、
輸送機器に用いる
ことを特徴とする組込コントローラ。
【請求項９】
請求項１ないし請求項６いずれか記載の組込コントローラ開発ツールを用いる
ことを特徴とする組込コントローラ開発プロセス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時間的制約条件を有する組込システムのプログラムを開発するための組込コントローラ開発ツールと、その組込コントローラ開発ツールを用いる組込コントローラ及び組込コントローラ開発プロセスとに関する。
【背景技術】
【０００２】
近年、ＧＵＩ（グラフィカル・ユーザ・インタフェース）を用いたソフトウェア開発手段が広く行なわれるようになっている。一般的に、コンピュータは逐次処理を行なうため、ＧＵＩから開発言語に変換するには、ＧＵＩで用いられる図面情報から実行順序を抽出し、処理を並べなおす手段が必要となってくる。例えば数値解析の分野では、解析対象の構成毎に計算順序が変化するため、ルールベースを用いて実行順序を抽出する方法が知られている（例えば特許文献１参照）。
【０００３】
また、互いにソフトウェア同士が複雑な依存関係を有する大規模ソフトウェア開発の分野では、ソースファイルの依存情報に基づいてソフトウェア統合作業の順序を決定する方法が知られている(例えば特許文献２参照）。
【０００４】
さらに、組み込みコントローラ開発ツールにおいては、制御系ブロック線図よりそのブロック線図の実行順序を画面上に表示するものが知られている(例えば非特許文献１参照）。
【特許文献１】特開平７−３１１７６２号公報
【特許文献２】特開２０００−２３１４７９号公報
【非特許文献１】The MathWorks Inc.， Simulink Model-Based and System-Based Design Version ５，（July  ２００２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記従来技術にあっては、いずれも開発対象の全情報を取得することができる統合開発環境を想定したものである。組み込みソフトでは、開発対象の性質が多岐にわたるため、各開発部分に別の開発ツールを用いて、それらを組み合わせて用いる場合が多い。例えば、制御記述部分はブロック線図作成ツール、状態判定部分は状態遷移記述手段、また、ハード依存部分はシステム記述言語という使い分けが行われる。これら全てに対応できる統合開発環境を用いて開発することも出来るが、一般的に大きな開発環境は導入費用、メンテナンス費用がかかり、特に多人数で開発を行なう場合コスト増となる。
【０００６】
本発明は、上述した事情に鑑みてなされるもので、単機能であるものの安価で速度や信頼性に優れる開発ツールを組み合わせた組込コントローラ開発プロセスを対象とし、その開発プロセスにおいて、ＧＵＩ記述から実行順序情報を取得するツールを提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するためなされた請求項１記載の本発明の組込コントローラ開発ツールは、時間的制約条件を有する組込システムのプログラムを開発するための組込コントローラ開発ツールであって、複数個の演算処理ブロック間におけるデータの流れを示した有向グラフを入力とし、前記演算処理ブロックにつけられた付加情報に基づいて対象とする前記演算処理ブロックを選択する演算処理ブロック選択手段を有し、該演算処理ブロック選択手段により選択された前記演算処理ブロックを対象として該演算処理ブロックの実行順序情報を出力することを特徴としている。このような特徴を有する本発明によれば、アプリケーションソフトウェアをソフトウェア部品の集まりとして表す際、その実行順序を有向グラフ表記により容易に得ることができるようになるため、プラットフォームソフトウェア上にアプリケーションソフトウェアを実装する手順が容易になるという効果がある。
【０００８】
請求項２記載の本発明の組込コントローラ開発ツールは、請求項１に記載の組込コントローラ開発ツールにおいて、前記付加情報は名前に付加された識別子であることを特徴としている。このような特徴を有する本発明によれば、実行順序の抽出対象となるブロックを有向グラフの付加情報、たとえば命名規則から判断することができるため、実際には製品に組み込まないシミュレーション用のブロック、たとえば模擬入力を発生するブロックが記載されている有向グラフでも実行順序抽出のために用いることができるようになる。したがって、組込ソフト本体をあらわす有向グラフ表記と、シミュレーション用の有向グラフ表記とを作成する必要がなく、開発期間が短くなるという効果がある。
【０００９】
請求項３記載の本発明の組込コントローラ開発ツールは、請求項１に記載の組込コントローラ開発ツールにおいて、前記有向グラフはブロック線図であることを特徴としている。このような特徴を有する本発明によれば、自動制御で事実上の標準表記方法となっているブロック線図を用いてソフトウェア部品の実行順序抽出を行うことができるようになるため、特に制御用組込機器の開発において、これまでの設計資産を利用することができ、開発期間の短縮やバグの作りこみを少なくする上で好適である。
【００１０】
請求項４記載の本発明の組込コントローラ開発ツールは、請求項３に記載の組込コントローラ開発ツールにおいて、前記ブロック線図は階層的に記述されていることを特徴としている。このような特徴を有する本発明によれば、階層表記されたブロック線図であっても命名規則などから構造を推測できるため、階層表記されたブロック線図からでも実行順序の抽出が可能であるという効果がある。
【００１１】
請求項５記載の本発明の組込コントローラ開発ツールは、請求項１に記載の組込コントローラ開発ツールにおいて、前記有向グラフを閉路なし有向グラフに変換する閉路除去手段を有することを特徴としている。閉路除去手段の作用効果は、発明を実施するための最良の形態の欄において、シリアライズ処理の中で説明する。
【００１２】
請求項６記載の本発明の組込コントローラ開発ツールは、請求項１に記載の組込コントローラ開発ツールにおいて、前記実行順序情報は対象とする組込コントローラの開発言語で出力されることを特徴としている。このような特徴を有する本発明によれば、実行順序情報は開発言語のコンパイラに可読な形式で出力されるため、そのまま実機に組み込めるという効果がある。
【００１３】
上記課題を解決するためなされた請求項７記載の本発明の組込コントローラは、請求項１ないし請求項６いずれか記載の組込コントローラ開発ツールを用いて開発されることを特徴としている。このような特徴を有する本発明によれば、開発の過程で実行順序抽出工程が短いため、開発期間や開発コストが低減できるという効果がある。
【００１４】
請求項８記載の本発明の組込コントローラは、請求項７に記載の組込コントローラにおいて、輸送機器に用いることを特徴としている。このような特徴を有する本発明によれば、特に開発期間や開発コストに関しての要求を高いレベルで両立させる必要がある自動車などの輸送機器に好適である。
【００１５】
上記課題を解決するためなされた請求項９記載の本発明の組込コントローラ開発プロセスは、請求項１ないし請求項６いずれか記載の組込コントローラ開発ツールを用いることを特徴としている。このような特徴を有する本発明によれば、実行順序抽出を自動化することにより開発期間や開発コストが低減できるという効果がある。
【発明の効果】
【００１６】
本発明によれば、開発期間や開発コストを低減することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら説明する。
図１に本発明による組込コントローラ開発ツール、組込コントローラのソフトウェア、および組込コントローラ開発プロセスの全体図を示す。なお、本発明で対象としている組込コントローラは、一定時間ごとにタスクを実行する周期タスクを有するものを想定している。
【００１８】
図１において、引用符号１１は実行順序抽出ツールを示す。これは組込コントローラ開発ツールの一つであり、本発明の対象である。また、引用符号１２ａ、１２ｂは実行順序抽出ツール１１に入力されるブロック線図を示す。なお、ブロック線図１２ｂはブロック線図１２ａの下位構造であり、階層的に記述される。また、ブロック線図１２ａは「Ｔｏｐ１＿ｂｏｘ」、ブロック線図１２ｂは「Ａ＿ｂｏｘ」と命名される。命名規則の一例については後述する。
【００１９】
引用符号１３ａ、１３ｂ、１３ｃはソフトウェア部品作成手段を示し、これらはブロック線図、実験データ、シミュレーション結果、開発言語による直接コーディングなどによりソフトウェアの一部分を作成する。なお、上記ソフトウェア部品とは、再利用しやすいように外部プログラムとの依存性を少なくしてソフトウェアの一部分を部品化したものである。
【００２０】
引用符号１４はソースコード集合体を示し、これは後述の組込コントローラ１９に組み込まれるソフトウェアのソースコード、定義ファイル、変数設定データファイル、メイクファイルなどを含む。ソースコード集合体１４中、引用符号１５で示される部分はタスク振り分け手段を示し、これは周期タスクを実現するタイマ割込みや外部割込みなどのイベントに基づきアプリケーションソフトウェア１６を実行する。アプリケーションソフトウェア１６は制御対象に依存する部分であり、通常制御対象に詳しい担当者がこの部分の作成を行なう。この部分、すなわちアプリケーションソフトウェア１６は製品の改良などにより変更が多い部分であるため、前記のようにソフトウェア部品を組み合わせてソフトウェアを作成することが有効である。本発明ではこのようにアプリケーションソフトウェア１６をソフトウェア部品の組み合わせとして実現する。また、アプリケーションソフトウェア１６が図１においては複数層（ここでは４並列）に表現されているが、これはタスク振り分け手段１５によって振り分けられる処理が複数個あることを表したものである。例えば、タイマ割込み、センサ信号割り込み、Ａ／Ｄ終了割込み、ソフトウェア割込みなどにより、各タスクは起動される。本発明による実行順序抽出ツール１１は、同一要因により起動されるタスク上で各ソフトウェア部品の順序関係を決定する。
【００２１】
アプリケーションソフトウェア１６において、「＿ｃａｌｃ」で終わる名前が付けられているものはソフトウェア部品である。図１において、ソフトウェア部品Ａ１＿ｃａｌｃ、Ａ２＿ｃａｌｃ、Ａ３＿ｃａｌｃ、Ｄ＿ｃａｌｃはソフトウェア部品作成手段１３ａにより作成される。また、ソフトウェア部品Ｂ＿ｃａｌｃはソフトウェア部品作成手段１３ｂにより作成される。また、ソフトウェア部品Ｃ＿ｃａｌｃはソフトウェア部品作成手段１３ｃにより作成される。また、ソフトウェア部品Ｅ＿ｃａｌｃはソフトウェア部品作成手段１３ｄにより作成される。
【００２２】
一方、「＿ｂｏｘ．ｈ」で終わる名前が付けられているヘッダファイル（アプリケーションソフトウェア１６における「Ａ＿ｂｏｘ」がこれに相当する）は、実行順序抽出ツール１１により作成された実行順序定義ファイルである。実行順序定義ファイルの作成方法の一例については後述する。
【００２３】
ソースコード集合体１４中、引用符号１７で示される部分はプラットフォームソフトウェアを示し、これはＯＳ、通信、入出力など組込コントローラの土台となるソフトウェアである。
【００２４】
引用符号１８はソフトウェア統合化手段を示し、１９は開発対象である組込コントローラを示す。ソフトウェア統合化手段１８は、ソースコード集合体１４を入力としてコンパイル、リンクを行い、実行可能ソフトウェアを作成する。ソフトウェア統合化手段１８により作成された実行可能ソフトウェアは、シリアル通信、ＲＯＭ書き込みなどにより組込コントローラ１９に転送される。
【００２５】
次に、図１のブロック線図１２ａ、１２ｂとソースコード集合体１４との対応について説明する。
【００２６】
図１において、ブロック線図１２ａの「Ａ＿ｂｏｘ」はソースコード集合体１４の同名ブロックである「Ａ＿ｂｏｘ」に対応する。また、ブロック線図１２ｂの「Ａ１＿ｓｉｍ＿ｃａｌｃ」はソースコード集合体１４の「Ａ１＿ｃａｌｃ」に対応する。同様に、ブロック線図１２ｂの「Ａ２＿ｓｉｍ＿ｃａｌｃ」はソースコード集合体１４の「Ａ２＿ｃａｌｃ」に、ブロック線図１２ｂの「Ａ３＿ｓｉｍ＿ｃａｌｃ」はソースコード集合体１４の「Ａ３＿ｃａｌｃ」に対応する。
【００２７】
ここで、ブロック名は、ブロック（演算処理ブロック）を一意的に示す「語幹」と本発明による開発ツールの動作を既定する「識別子」とにより構成される。語幹と識別子とは‘＿’（以降アンダーバーと表記）により結合される。図１の説明において用いられる識別子は「ｂｏｘ」、「ｃａｌｃ」、「ｓｉｍ」の３種である。
【００２８】
識別子「ｂｏｘ」をブロック名に持つブロックは下位構造を有することを示す。例えばブロック線図１２ａ中の「Ａ＿ｂｏｘ」は、ブロック線図１２ｂを下位構造として有する。識別子「ｃａｌｃ」をブロック名に持つブロックは、ソフトウェア部品に対応する。識別子「ｓｉｍ」は識別子「ｃａｌｃ」と共に用いられ、ブロックがシミュレーションモデルであることを表す。例えば、ブロック線図１２ａ中の「Ｂ＿ｓｉｍ＿ｃａｌｃ」はソフトウェア部品作成手段１３ｂにより定義・作成されるソフトウェア部品と対応し、「Ｂ＿ｓｉｍ＿ｃａｌｃ」はシミュレーションを行なうためのビヘイビアモデル（実際に組み込むコードではなく、シミュレーション上で動作を模擬するもの）であることを示す。
【００２９】
実行順序抽出ツール１１はブロック線図１２ａおよびその下位構造であるブロック線図１２ｂを読み込み、ソフトウェア統合化手段１８が認識できるコードを出力する。図１では「Ｔｏｐ１＿ｂｏｘ」と「Ａ＿ｂｏｘ」とで示されるヘッダファイル「Ｔｏｐ１＿ｂｏｘ．ｈ」と「Ａ＿ｂｏｘ．ｈ」とがこれに相当する。なお、本例ではファイル名称をブロック線図名称にあわせている。
【００３０】
なお、図１ではソフトウェア部品作成手段１３ａ〜１３ｄで生成されるブロックと、その挙動を示すビヘイビアモデルとに別の名前を付けているが、これは、ソフトウェア本体とビヘイビアモデルとをデータベースにより集中管理する場合を想定した為である。特に集中管理の必要がない場合には、ソフトウェア本体とビヘイビアモデルとに同一の名前を付けても差し支えない。例えばブロック線図１２ａにおいて、Ｂ＿ｓｉｍ＿ｃａｌｃのかわりにＢ＿ｃａｌｃと命名しても良い。
【００３１】
また、図１では実行順序抽出ツール１１とソフトウェア部品作成手段１３ａ〜１３ｄとを別体として実現しているが、一般的にはどちらもコンピュータにより実現されるため、この両者を一つのコンピュータで同時に実現する方式も考えられる。図２は図１のソフトウェア部品作成手段１３ａ〜１３ｄを同時に備えた実行順序抽出ツール１１を用いて本発明を実現した一実施例である。この場合、ソフトウェア本体とビヘイビアモデルとの区別が必要なくなるため、識別子「＿ｓｉｍ」が付加されないブロック名となっている。
【００３２】
次に、図３を用いて実行順序抽出ツール１１の動作について説明する。
【００３３】
図３において、引用符号２１は実行順序抽出ツール１１の主処理、２２は主処理２１より呼び出される副処理を示す。主処理２１は引用符号２３のデータフロー図２３を入力とし、実行順序抽出ツール１１の実行結果は副処理２２においてソースファイル２４として出力される。
【００３４】
データフロー図２３は、処理や機能をブロックとして表現し、データを矢印などの表現を用いて記載したものである。図１におけるブロック線図１２ａ、１２ｂは図３のデータフロー図２３に相当する。データフロー図２３の例としては、ブロック線図以外にも業務管理に用いるＰＥＲＴ図や複雑な同期システムを記述するペトリネットなどが存在する。いずれも矢印とノードの組み合わせ(有向グラフ)によって表現が可能である。本発明では組込コントローラ開発ツールを対象としており、特に最適制御やＰＩＤ制御といった制御システムの開発効率化を目指すため、以後の説明ではデータフロー図やブロック線図、有向グラフとを特に区別せず扱うものとする。
【００３５】
ソースファイル２４は、図１の「Ｔｏｐ１＿ｂｏｘ」や「Ａ＿ｂｏｘ」で示される「Ｔｏｐ１＿ｂｏｘ．ｈ」や「Ａ＿ｂｏｘ．ｈ」といったヘッダファイルを指すものである。
【００３６】
図３において、主処理２１はデータフロー図２３を読み込み、階層内順序抽出処理に移行する。ここで階層内順序抽出処理の概要は副処理２２に記載されている。
【００３７】
副処理２２は、まずデータフロー図２３に記載されるブロック名を逐次読み出し、ブロック名の識別子に基づき処理を選択する（演算処理ブロック選択手段に相当）。ブロック名識別子が「＿ｂｏｘ」ならば、これは下位階層を有するため、下位階層における順序を抽出する作業を行なう。ここで、順序を抽出する処理は副処理２２そのものなので、副処理２２は下位階層がなくなるまで再帰的に呼び出される。
【００３８】
ブロック名抽出後、データフロー図２３に記載される矢印から、ブロック間のつながりを有向グラフとして実行順序抽出ツール１１内に構築する。有向グラフの内部表現としては、例えば遷移可能行列や、ネットリストなど一般的に知られた手法が用いられる。構築したブロック間のつながりはシリアライズ処理によってブロックの実行順序情報に変換される。例えば、実行順にブロック名が並んだ１次元リストとして表現される。このシリアライズ処理の概要については後述する。
【００３９】
シリアライズ処理の後、識別子により処理が選択される（演算処理ブロック選択手段に相当）。まずブロック名に識別子がない場合、ソフトウェア部品とはみなさず、実行順序情報より削除する。本実施例では組込コントローラ１９に組込可能であることを保証されたソフトウェア部品の組み合わせとして定義するため、ソフトウェア部品以外のブロックはシミュレーションのためだけに用いる要素と判断する。
【００４０】
次に、ブロック名に「＿ｓｉｍ」を含む場合（演算処理ブロック選択手段に相当）、「＿ｓｉｍ」を削除する。例えば、ブロック名が「Ｂ＿ｓｉｍ＿ｃａｌｃ」の場合、「Ｂ＿ｃａｌｃ」に変換される。
【００４１】
上記の操作を行なった後、実行順序情報を書き出し、ソースファイル２４とする。ソースファイル２４の例は後述する。
【００４２】
最後に、副処理２２は再帰呼び出しされる場合があるため、現在の階層をチェックし、最上位層であればそのまま主処理２１に戻り、さもなければ上位階層に復帰してリターンする。
【００４３】
次に、図４および図５を参照しながらシリアライズ処理の概要について説明する。
【００４４】
シリアライズ処理は、ブロック線図から各ブロックの実行順序を抽出し、実行順に並べることである。例として、図４に示すブロック線図について説明する。ここで「Ｉｎ」は入力ブロック、「Ｏｕｔ」は出力ポートである。「Ｍｏｎｉｔｏｒ」はシミュレーション結果表示のためのモニタブロックであり、「ＵｎｉｔＤｅｌａｙ」は１サンプリング前の値を出力するブロックである。Ｇｏｔｏ［タグ名］は同じタグ名を持つＦｒｏｍ［タグ名］ブロックへの矢印と等価である。
【００４５】
シリアライズ処理は以下の手順で行なう。
（１）１つのブロック（ここでは「ｓｔａｒｔ」）を追加し、全ての終点ブロックからそのブロックに矢印を付加する。
（２）ブロック線図の矢印の方向を全て反対に付け直す。
（３）タグ名の等しい「Ｆｒｏｍ」と「Ｇｏｔｏ」について、「Ｆｒｏｍ」から「Ｇｏｔｏ」へ矢印を付加する。
（４）後退弧（後戻りする矢印）を切断する（図４の変数ｘ８、ｘ２１が図５には存在しない）。
（５）完成した後戻りなし有向グラフ（図５）に示した各ブロックについてそれらの実行順序を抽出する。
【００４６】
なお、後戻りなし有向グラフの順序抽出方法については、例えば「石畑 清，アルゴリズムとデータ構造，岩波書店（１９８９）」に開示されるため、ここでは詳しい説明を省略する。
【００４７】
今回のように離散時間制御を目的とした組込システムの場合、時間遅れ要素（ここでは「ＵｎｉｔＤｅｌａｙ」）を伴わないループが存在すると、ブロック線図では「代数ループ」となり、シミュレーションを行なうことが出来ない。そのため、きちんと動作する組込システムを表現したブロック線図では、もしループが存在するならばそのループは常に時間遅れ要素を伴う。時間遅れは通常マイコン内のタイマによって実現されるが、ソフトウェア部品としてソフトウェアを再利用するという観点からは、タイマといったハードウェア依存部分はアプリケーションソフトウェア１６からは分離しておく方が望ましい。本実施例において、時間遅れ要素は通常タスク振り分け手段１５によって実現する構成とした。このため、単純に時間遅れ要素の一方の矢印を切断して順序を抽出しても、アプリケーションソフトウェア１６の範囲では問題ない。
【００４８】
図６は前記手順により抽出された実行順序情報である。これを用いて図３に示したソースファイル２４を生成する方法を以下に示す。なお、各ブロックに対応する部分はＣ言語表記としている（Ｃ言語に限定するものではない。Ｃ言語は一例である）。ここでｘ１〜ｘ２４は図４中の矢印に付加した変数名に対応している。例えば第６行め、「ＵｎｉｔＤｅｌａｙ２（＆ｘ８，＆ｘ１０）；」は変数ｘ８、ｘ１０を参照呼出しすることに相当する。
【００４９】
ここで、特に処理に関係しない入出力ポートを削除し、Ｇｏｔｏ−Ｆｒｏｍの対応を考慮すると図７のように書き直すことが出来る。図７はＣ言語のヘッダファイルとして実現した例である。図７において、文頭の「＃ｉｎｃｌｕｄｅ＜ｄｅｆＶｅｒ．ｈ＞」はプラットフォームソフトウェア１７とアプリケーションソフトウェア１６内での変数（例えば入力ｘ１や出力ｘ１７など）との対応を定義したファイルであり、通常プラットフォームソフトウェアでの定義に従って手動生成、またはデータベース情報から手順に従って生成されるものである。図６のような実行順序情報が得られれば、ａｗｋやｐｅｒｌといったスクリプト言語を用いて図７のようなファイルを生成することは容易である。
【００５０】
さらに、関数の引数を隠蔽することにより図８のように記載することも可能である。図８において、＃ｉｎｃｌｕｄｅ＜ｆｕｎｃＡ．ｈ＞より６行にわたって記載されるインクルードファイルは図７における引数付き関数を、引数を明示しない「＿ｕｐｄａｔｅ（）」関数として定義しなおすことにより実現できる。図８のような記法は変数情報を考慮する必要がなくなるために実行順序抽出ツール１１の実現が容易となる。
【００５１】
各ブロックの命名規則を利用して実行順序抽出の対象とするブロックを選択する方法について説明したが、本発明は命名規則に拠らずとも、各ブロックに付加する追加情報によって選別することも可能である。例えば、各ブロックに対し注釈をつけられるブロック線図エディタを実行順序抽出ツール１１が使用している場合、図９のように注釈部分を付記することで実行順序抽出の対象とするブロックを選別できる。例えば図９中のｉｎはｉｎｔｅｒｎａｌの略で、実行順序抽出ツール１１内部で定義可能なブロック、ｅｘはｅｘｔｅｒｎａｌの略で、外部定義ブロックを表す注釈である。また、ａｔｏｍはａｔｏｍｉｃの略でこれ以上分解して順序を抽出する必要のないブロックであり、ｎｅｓｔはｎｅｓｔｉｎｇの略で、下位階層が存在するブロックを表す注釈である。ソフトウェア部品をデータベースに登録する際にこれらの属性を定義しておき、自動的に属性が注釈に反映させるシステムを構築しておけば、容易に運用できる。
【００５２】
以上、図面を参照しながら説明してきたように、実行順序抽出ツール１１はブロック線図１２ａおよびその下位構造であるブロック線図１２ｂを読み込み、ソフトウェア統合化手段１８が認識できるコードを出力する。ブロック名は、ブロックを一意的に示す「語幹」と本発明による開発ツールの動作を既定する「識別子」により構成される。語幹と識別子とは‘＿’（アンダーバー）により結合される。識別子「ｂｏｘ」をブロック名に持つブロックは下位構造を有することを示すため、実行順序抽出ツール１１は下位構造を示すブロック線図１２ｂも再帰的に検索する。識別子「ｃａｌｃ」をブロック名に持つブロックはソフトウェア部品に対応するため、このブロックが下位構造を有していたとしてもブロックの検索を打ち切る。
【００５３】
本発明によれば、アプリケーションソフトウェアをソフトウェア部品の集まりとして表す際、その実行順序を有向グラフ表記により容易に得ることができるようになるため、プラットフォームソフトウェア上にアプリケーションソフトウェアを実装する手順が容易になるという効果がある。この場合、実行順序の抽出対象となるブロックを有向グラフの付加情報、たとえば命名規則から判断することができるため、実際には製品に組み込まないシミュレーション用のブロック、たとえば模擬入力を発生するブロックが記載されている有向グラフでも実行順序抽出のために用いることができるようになる。したがって、組込ソフト本体をあらわす有向グラフ表記と、シミュレーション用の有向グラフ表記とを作成する必要がなく、開発期間が短くなるという効果がある。
【００５４】
また、本発明によれば、自動制御で事実上の標準表記方法となっているブロック線図を用いてソフトウェア部品の実行順序抽出を行うことができるようになるため、特に制御用組込機器の開発において、これまでの設計資産を利用することができ、開発期間の短縮やバグの作りこみを少なくする上で好適である。
【００５５】
また、本発明によれば、階層表記されたブロック線図であっても命名規則などから構造を推測できるため、階層表記されたブロック線図からでも実行順序の抽出が可能であるという効果がある。
【００５６】
また、本発明によれば、実行順序情報は開発言語のコンパイラに可読な形式で出力されるため、そのまま実機に組み込めるという効果がある。
【００５７】
一方、本発明により実現された組込コントローラは、その開発の過程で実行順序抽出工程が短いため、開発期間や開発コストが低減できるという効果がある。この特性は、特に開発期間や開発コストに関しての要求を高いレベルで両立させる必要がある自動車などの輸送機器に好適である。
【００５８】
また、本発明により実現された組込コントローラ開発プロセスは、実行順序抽出を自動化することにより開発期間や開発コストが低減できるという効果がある。
【００５９】
その他、本発明は本発明の主旨を変えない範囲で種々変更実施可能なことは勿論である。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施の形態を示す全体図である。
【図２】本発明の別の例の全体図である。
【図３】実行順序抽出ツールの動作を示すアクティビティ図である。
【図４】シリアライズ処理の概要図である。
【図５】シリアライズ処理の概要図（後戻りなし有向グラフ）である。
【図６】抽出された実行順序情報である。
【図７】実行順序情報をＣ言語のヘッダファイルとして表した例である。
【図８】実行順序情報をＣ言語のヘッダファイルとして表し、引数を隠蔽した例である。
【図９】注釈部分を付記したブロック図である。
【符号の説明】
【００６１】
１１…実行順序抽出ツール
１２…ブロック線図
１３…ソフトウェア部品作成手段
１４…ソースコード集合体
１５…タスク振り分け手段
１６…アプリケーションソフトウェア
１７…プラットフォームソフトウェア
１８…ソフトウェア統合化手段
１９…組込コントローラ
２１…実行順序抽出ツールの主処理
２２…主処理より呼び出される副処理
２３…データフロー図
２４…ソースファイル
【図１】
2005222221.tif 000003
【図２】
2005222221.tif 000004
【図３】
2005222221.tif 000005
【図４】
2005222221.tif 000006
【図５】
2005222221.tif 000007
【図６】
2005222221.tif 000008
【図７】
2005222221.tif 000009
【図８】
2005222221.tif 000010
【図９】
2005222221.tif 000011