JP2003076543A - プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム - Google Patents

プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム

Info

Publication number
JP2003076543A
JP2003076543A JP2001265001A JP2001265001A JP2003076543A JP 2003076543 A JP2003076543 A JP 2003076543A JP 2001265001 A JP2001265001 A JP 2001265001A JP 2001265001 A JP2001265001 A JP 2001265001A JP 2003076543 A JP2003076543 A JP 2003076543A
Authority
JP
Japan
Prior art keywords
state
event
program
transition table
state transition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001265001A
Other languages
English (en)
Inventor
Masahiko Watanabe
政彦 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cats Co Ltd
Original Assignee
Cats Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cats Co Ltd filed Critical Cats Co Ltd
Priority to JP2001265001A priority Critical patent/JP2003076543A/ja
Priority to EP02255852A priority patent/EP1293893A2/en
Priority to US10/229,102 priority patent/US20030046660A1/en
Publication of JP2003076543A publication Critical patent/JP2003076543A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Abstract

(57)【要約】 【課題】 組み込みシステムに最適なプログラムを生成
すること。 【解決手段】 状態遷移表からシステムが実行すべきア
クションまたは遷移先の状態が記述されているセルを抽
出してアクションを状態ごとに記述したアクションテー
ブル118を生成するアクションテーブル生成部108
と、状態遷移表からアクションまたは遷移先の状態があ
るセルのみを抽出して遷移先の状態を状態ごとに記述し
た遷移テーブル119を生成する遷移テーブル生成部1
09と、各状態に対する事象を記述した事象テーブル1
20を生成する事象テーブル生成部110と、事象発生
時に事象テーブル120を参照して各状態下における事
象の存在を確認し、アクションテーブル118と遷移テ
ーブル119とを参照して現在の状態下で発生事象のア
クションを実行するプログラムコード122を生成する
実行処理生成部111とを備えた。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、プログラム開発
対象のシステムの状態下における事象の発生に対して実
行する処理の内容を記述した状態遷移表に基づいてシス
テムで動作するプログラムを生成するプログラム生成装
置、プログラム生成方法およびその方法をコンピュータ
で実行させるためのプログラムに関する。
【0002】
【従来の技術】リアルタイム制御システムは、各種信号
の受信などシステム外部又は内部からの刺激である事象
(イベント)と、各種信号の受信待機などシステムがと
っている挙動である状態(ステート)とが複雑に組み合
わされ、しかもこれらの組み合わせに対応した処理、す
なわち、特定状態下で特定事象が発生した際にシステム
が実行する処理であるアクションも多数ある。このよう
なリアルタイム制御システムに組み込むべきプログラム
を開発する手法の1つとして、状態遷移表(STM:State
Transition Matrix)を用いたプログラム開発方法があ
る。状態遷移表とは、列又は行に事象(event)又は状
態(state)をそれぞれ配置した2次元のマトリクスで
表し、事象と状態との交差する部分(セル)に対応する
アクションとそのアクション後に遷移する遷移先を配置
したものである。
【0003】この状態遷移表には、事象駆動型(イベン
トドリブン)で実行されるものと、状態駆動型(ステー
トドリブン)で実行されるものがある。ここで、事象駆
動型(イベントドリブン)とは、プログラムの一カ所で
事象(イベント)を待ち、事象が発生したときに現在の
状態と発生した事象との交差点となるセルに記述された
アクションを実行するものである。また、状態駆動型
(ステートドリブン)とは、各状態ごとに事象(イベン
ト)を監視するものであり、各状態がアクティブになる
と、各状態に結びついた事象解析関数が起動され、事象
が発生しているか否かを確認するものである。
【0004】事象駆動型(イベントドリブン)の状態遷
移表からプログラムを生成して実装する場合には、2次
元テーブル型駆動方式とロジック型駆動方式の2種類の
実装方法が従来から一般的に知られている。
【0005】2次元テーブル型駆動方式の実装方法で
は、事象(イベント)と状態(ステート)とで交差する
セルのすべてに対して、事象、状態、アクションからな
る2次元テーブルを作成し、発生した事象の番号と現在
の状態の番号から2次元テーブルをアクセスしてアクシ
ョンを実行する方式のプログラムが生成される。
【0006】ロジック型駆動方式の実装方法では、2次
元テーブルのようなテーブルを用いるのではなく、発生
した事象に対するアクションとして、各状態毎にロジッ
クとして実行される処理をコールする形式となるプログ
ラムが生成される。
【0007】一方、状態駆動型(ステートドリブン)の
状態遷移表からプログラムを生成して実装する場合に
は、状態の親子関係、事象解析、および状態遷移時の定
型処理である状態アクティビティなどの情報を、すべて
状態ごとに保持する必要がある。このため、従来は、状
態情報テーブルを作成して、このテーブルに状態ごとの
各種情報(状態の親子関係、事象解析関数、状態アクテ
ィビティ関数など)をすべて保持しておき、状態遷移表
に記述された各状態のプライオリティ(親子関係のプラ
イオリティなど)を事象監視などのスケジューリングを
行う状態スケジューラを生成して、状態遷移表を駆動し
プログラム実行処理を実行していた。
【0008】
【発明が解決しようとする課題】しかしながら、このよ
うな状態遷移表からのプログラムの実装方法には次のよ
うな問題がある。まず事象駆動型の状態遷移表からプロ
グラムを実装する2次元テーブル型駆動方式の場合に
は、状態遷移表の事象または状態の数が増大すると、そ
れに応じてアクションの数も増大するため、その結果、
2次元テーブルのサイズが過大になるという問題があ
る。特に、組込みシステムの場合には、プログラム実行
の際に使用するメモリ容量は最小限にすることが必要と
なるシステムが多いため、2次元テーブル型駆動方式の
プログラムは、組込みシステムに適合したものではな
い。
【0009】また、ロジック型駆動方式の実装方式で
は、状態ごとにすべての事象に対応するアクションを分
岐するコードとなり、事象、状態の数が増大した場合に
は、プログラムコード量が膨大となるという問題があ
る。
【0010】一方、状態駆動型の状態遷移表からブログ
ラムを実装する従来の方式では、状態ごとに種々の情報
を保持しなければならいため、状態情報テーブルのサイ
ズが膨大となってしまう。また、これらの膨大な情報を
処理するために、状態スケジューラのプログラムコード
量も膨大となり、プログラム実行時のメモリ使用量も増
加してしまうという問題がある。このため、ほとんどの
組込みシステムでは状態スケジューラを用いた実装を適
用することができないという問題があった。
【0011】この発明は上記に鑑みてなされたもので、
プログラムコード量および実行時の使用メモリサイズを
低減するとともに、生成されるプログラムの実行速度を
向上させて、組み込みシステムに最適なプログラムを生
成することができるプログラム生成装置、プログラム生
成方法およびその方法をコンピュータに実行させるため
のプログラムを得ることを目的とする。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、請求項1にかかる発明は、プログラム開発の対象で
あるシステムの取り得る状態と、前記システムの外部又
は内部からの刺激である事象で特定される複数のセルを
有し、各セルに、対応する状態下で対応する事象が発生
した際に前記システムが実行すべきアクション内容また
は遷移すべき遷移先の状態を記述した事象駆動型の状態
遷移表に基づいて前記システムで動作するプログラムを
生成するプログラム生成装置において、前記状態遷移表
を入力する入力手段と、前記状態遷移表から、前記シス
テムが実行すべきアクション内容または遷移先の状態が
記述されているセルのみを抽出して、前記アクション内
容を前記状態ごとに記述したアクションテーブルを生成
するアクションテーブル生成手段と、前記状態遷移表か
ら、アクション内容または遷移先の状態が記述されてい
るセルのみを抽出して、前記遷移先の状態を前記状態ご
とに記述した遷移テーブルを生成する遷移テーブル生成
手段と、前記状態遷移表から、各状態に対して存在する
事象を記述した事象テーブルを生成する事象テーブル生
成手段と、事象の発生時に、前記事象テーブルを参照し
て、各状態下における事象の存在を確認し、前記アクシ
ョンテーブルと前記遷移テーブルとを参照して、現在の
状態下における発生した事象に対するセルのアクション
内容を実行する実行処理プログラムを生成する実行処理
生成手段と、を備えたことを特徴とする。
【0013】この請求項1にかかる発明によれば、事象
駆動型の状態遷移表からシステムが実行すべきアクショ
ン内容または遷移先の状態が記述されているセルのみを
抽出してアクション内容を前記状態ごとに記述したアク
ションテーブルと、アクション内容または遷移先の状態
が記述されているセルのみを抽出して遷移先の状態を状
態ごとに記述した遷移テーブルとを生成しているので、
すべてのセルに対してアクション内容や遷移先を記述し
たテーブルを生成する場合に比べて、プログラムコード
量が小さくなる。
【0014】また、アクション内容や遷移先が存在する
セルのみに対して上記各テーブルを生成していることか
ら、各状態に対して存在する事象を記述した事象テーブ
ルを生成し、事象の発生時に、事象テーブルを参照し
て、各状態下における事象の存在を確認し、前記アクシ
ョンテーブルと前記遷移テーブルとを参照して、現在の
状態下における発生した事象に対するセルのアクション
内容を実行する実行処理プログラムを生成することで、
プログラム実行も従来と同様に行える。
【0015】従って、この請求項1によれば、プログラ
ム実行に影響を与えずに、プログラムコード量および使
用時のメモリサイズを減少させることができる。
【0016】請求項2にかかる発明は、プログラム開発
の対象であるシステムの取り得る状態と、前記システム
の外部又は内部からの刺激である事象で特定される複数
のセルを有し、各セルに、前記システムが実行すべきア
クション内容または遷移すべき遷移先の状態を記述し、
各状態で事象の発生を監視する状態駆動型の状態遷移表
に基づいて前記システムで動作するプログラムを生成す
るプログラム生成装置において、前記状態遷移表を入力
する入力手段と、前記状態遷移表から、各状態ごとに事
象解析処理または定型処理を記述した状態アクティビテ
ィ情報テーブルを生成する状態アクティビティ情報テー
ブル生成手段と、前記状態遷移表から、上位の状態であ
る親状態の識別情報を列挙して記述した親状態ID情報
テーブルを生成する親状態ID情報テーブル生成手段
と、前記状態遷移表から、親状態の下位の状態であるサ
ブ状態の識別情報を列挙して記述したサブ状態ID情報
テーブルを生成するサブ状態ID情報テーブル生成手段
と、前記親状態ID情報テーブルと前記サブ状態ID情
報テーブルとに基づいて各状態が親状態かサブ状態かを
判別し、判別結果と前記状態アクティビティ情報テーブ
ルとに基づいて状態ごとに事象解析処理または定型処理
を実行する実行処理プログラムを生成する実行処理生成
手段と、を備えたことを特徴とする。
【0017】この請求項2にかかる発明によれば、状態
アクティビティ情報テーブルを生成して各状態ごとに事
象解析処理または定型処理を定義し、また親状態ID情
報テーブルとサブ状態ID情報テーブルとを生成して、
各状態が親状態かサブ状態かだけを定義しておいた上
で、プログラム実行時に親状態ID情報テーブルとサブ
状態ID情報テーブルとに基づいて各状態が親状態かサ
ブ状態かを判別し、この判別結果と状態アクティビティ
情報テーブルとに基づいて状態ごとに事象解析処理また
は定型処理を実行する実行処理プログラムを生成するこ
とで、状態ごとに親状態とサブ状態の関係を予め保持し
ておく必要がなくなり、状態に関する状態情報テーブル
のサイズを小さくすることができる。また、プログラム
実行時に、親状態かサブ状態かを判別し状態アクティビ
ティ情報テーブルとに基づいて状態ごとに事象解析処理
または定型処理を実行するので、状態スケジューラを設
ける必要がなくなる。従って、本発明によれば従来の実
装方式に比べてプログラムコード量の削減を図ることが
でき、メモリ使用量も低減させることができる。さらに
は、プログラムの実行速度の向上を図ることができる。
【0018】請求項3にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、事象または状態を階層化して複数の状態遷移表を統
合した一つの状態遷移表を入力するものであることを特
徴とする。
【0019】この請求項3にかかる発明によれば、事象
または状態を階層化して複数の状態遷移表を統合した一
つの状態遷移表を用いることで、巨大化、複雑化する事
象または状態を抽象化することができ、状態遷移が過大
となることを防止できる。これにより、状態遷移表から
生成するプログラムのコード量が少なくなり、プログラ
ム実行時のメモリ使用量の減少が図られる。
【0020】請求項4にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、複数の状態からなる並列状態を記述した状態遷移表
を入力するものであることを特徴とする。
【0021】この請求項4にかかる発明によれば、複数
の状態からなる並列状態を記述した状態遷移表を用いる
ことで、並列実行する分の状態の増加を抑えることがで
き、これにより状態遷移表から生成するプログラムのコ
ード量が少なくなり、プログラム実行時のメモリ使用量
の減少を図ることができる。
【0022】請求項5にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、前記事象をその発生形式により分類して記述した状
態遷移表を入力するものであることを特徴とする。
【0023】この請求項5にかかる発明によれば、事象
をその発生形式により分類して記述した状態遷移表を用
いることで、事象としてリアルタイムOSのシステムコ
ールを使用する場合、変数を使用する場合、メッセージ
バッファを使用する場合、割込みを使用する場合、関数
をコールする場合などの情報を明確にしてプログラムコ
ードを生成することができる。
【0024】請求項6にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、前記遷移先の状態を、予め定めた省略値の状態また
は過去に遷移した状態に基づいて定めた状態遷移表を入
力するものであることを特徴とする。
【0025】この請求項6にかかる発明によれば、遷移
先の状態を、予め定めた省略値の状態または過去に遷移
した状態に基づいて定めた状態遷移表を用いることで、
従来、フラグを用いた処理で行っていた状態の管理を容
易にするとともに、このような状態の管理を隠蔽するこ
とができる。
【0026】請求項7にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、複数の状態遷移表を配列化した一つの状態遷移表で
あって、その配列数を記述した状態遷移表を入力するも
のであることを特徴とする。
【0027】この請求項7にかかる発明によれば、複数
の状態遷移表を配列化した一つの状態遷移表であって、
その配列数を記述した状態遷移表を用いることで、複数
の状態を1つの状態遷移表で容易に管理することがで
き、またプログラムコード量の減少およびプログラム実
行時のメモリ使用量の低減を図ることができる。
【0028】請求項8にかかる発明は、請求項1または
2に記載のプログラム生成装置において、前記入力手段
は、特定の事象の発生または特定の状態への遷移におい
て実行される定型的なアクションを記述した状態遷移表
を入力するものであることを特徴とする。
【0029】この請求項8にかかる発明によれば、特定
の事象の発生または特定の状態への遷移おいて実行され
る定型的なアクションを記述した状態遷移表を用いるこ
とで、事象の発生または状態の遷移ごと動作させるアク
ションを1カ所にまとめて記述し、セルごとに記述する
必要がないため、状態遷移表の保守性を向上させること
ができる。
【0030】請求項9にかかる発明は、プログラム開発
の対象であるシステムの取り得る状態と、前記システム
の外部又は内部からの刺激である事象で特定される複数
のセルを有し、各セルに、対応する状態下で対応する事
象が発生した際に前記システムが実行すべきアクション
内容または遷移すべき遷移先の状態を記述した事象駆動
型の状態遷移表に基づいて前記システムで動作するプロ
グラムを生成するプログラム生成方法において、前記状
態遷移表を入力する入力ステップと、前記状態遷移表か
ら、前記システムが実行すべきアクション内容が記述さ
れているセルのみを抽出して、前記アクション内容を前
記状態ごとに記述したアクションテーブルを生成するア
クションテーブル生成ステップと、前記状態遷移表か
ら、遷移先の状態が記述されているセルのみを抽出し
て、前記遷移先の状態を前記状態ごとに記述した遷移テ
ーブルを生成する遷移テーブル生成ステップと、前記状
態遷移表から、各状態に対して存在する事象を記述した
事象テーブルを生成する事象テーブル生成ステップと、
事象の発生時に、前記事象テーブルを参照して、各状態
下における事象の存在を確認し、前記アクションテーブ
ルと前記遷移テーブルとを参照して、現在の状態下にお
ける発生した事象に対するセルのアクション内容を実行
する実行処理プログラムを生成する実行処理生成ステッ
プと、を含んでいることを特徴とする。
【0031】この請求項9にかかる発明によれば、事象
駆動型(イベントドリブン)の状態遷移表からシステム
が実行すべきアクション内容が記述されているセルのみ
を抽出してアクション内容を前記状態ごとに記述したア
クションテーブルと、遷移先の状態が記述されているセ
ルのみを抽出して遷移先の状態を状態ごとに記述した遷
移テーブルとを生成しているので、すべてのセルに対し
てアクション内容や遷移先を記述したテーブルを生成す
る場合に比べて、プログラムコード量が小さくなる。
【0032】また、アクション内容や遷移先が存在する
セルのみに対して上記各テーブルを生成していることか
ら、各状態に対して存在する事象を記述した事象テーブ
ルとを生成し、事象の発生時に、事象テーブルを参照し
て、各状態下における事象の存在を確認し、前記アクシ
ョンテーブルと前記遷移テーブルとを参照して、現在の
状態下における発生した事象に対するセルのアクション
内容を実行する実行処理プログラムを生成することで、
プログラム実行も従来と同様に行える。
【0033】従って、この請求項9によれば、プログラ
ム実行に影響を与えずに、プログラムコード量および使
用時のメモリサイズを減少させることができる。
【0034】請求項10にかかる発明は、プログラム開
発の対象であるシステムの取り得る状態と、前記システ
ムの外部又は内部からの刺激である事象で特定される複
数のセルを有し、各セルに、前記システムが実行すべき
アクション内容または遷移すべき遷移先の状態を記述
し、各状態で事象の発生を監視する状態駆動型の状態遷
移表に基づいて前記システムで動作するプログラムを生
成するプログラム生成装置において、前記状態遷移表を
入力する入力ステップと、前記状態遷移表から、各状態
ごとに事象解析処理または定型処理を記述した状態アク
ティビティ情報テーブルを生成する状態アクティビティ
情報テーブル生成ステップと、前記状態遷移表から、上
位の状態である親状態の識別情報を列挙して記述した親
状態ID情報テーブルを生成する親状態ID情報テーブ
ル生成ステップと、前記状態遷移表から、親状態の下位
の状態であるサブ状態の識別情報を列挙して記述したサ
ブ状態ID情報テーブルを生成するサブ状態ID情報テ
ーブル生成ステップと、前記親状態ID情報テーブルと
前記サブ状態ID情報テーブルとに基づいて各状態が親
状態かサブ状態かを判別し、判別結果と前記状態アクテ
ィビティ情報テーブルとに基づいて状態ごとに事象解析
処理または定型処理を実行する実行処理プログラムを生
成する実行処理生成ステップと、を含んでいることを特
徴とする。
【0035】この請求項10にかかる発明によれば、状
態アクティビティ情報テーブルを生成して各状態ごとに
事象解析処理または定型処理を定義し、また親状態ID
情報テーブルとサブ状態ID情報テーブルとを生成し
て、各状態が親状態かサブ状態かだけを定義しておいた
上で、プログラム実行時に親状態ID情報テーブルとサ
ブ状態ID情報テーブルとに基づいて各状態が親状態か
サブ状態かを判別し、この判別結果と状態アクティビテ
ィ情報テーブルとに基づいて状態ごとに事象解析処理ま
たは定型処理を実行する実行処理プログラムを生成する
ことで、状態ごとに親状態とサブ状態の関係を予め保持
しておく必要がなくなり、状態に関する状態情報テーブ
ルのサイズを小さくすることができる。また、プログラ
ム実行時に、親状態かサブ状態かを判別し状態アクティ
ビティ情報テーブルとに基づいて状態ごとに事象解析処
理または定型処理を実行するので、状態スケジューラを
設ける必要がなくなる。従って、本発明によれば従来の
実装方式に比べてプログラムコード量の削減を図ること
ができ、メモリ使用量も低減させることができる。さら
には、プログラムの実行速度の向上を図ることができ
る。
【0036】請求項11にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、事象または状態を階層化して複数の状態遷
移表を統合した一つの状態遷移表を入力するものである
ことを特徴とする。
【0037】この請求項11にかかる発明によれば、事
象または状態を階層化して複数の状態遷移表を統合した
一つの状態遷移表を用いることで、巨大化、複雑化する
事象または状態を抽象化することができ、状態遷移が過
大となることを防止できる。これにより、状態遷移表か
ら生成するプログラムのコード量が少なくなり、プログ
ラム実行時のメモリ使用量の減少が図られる。
【0038】請求項12にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、複数の状態からなる並列状態を記述した状
態遷移表を入力するものであることを特徴とする。
【0039】この請求項12にかかる発明によれば、複
数の状態からなる並列状態を記述した状態遷移表を用い
ることで、並列実行する分の状態の増加を抑えることが
でき、これにより状態遷移表から生成するプログラムの
コード量が少なくなり、プログラム実行時のメモリ使用
量の減少を図ることができる。
【0040】請求項13にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、前記事象をその発生形式により分類して記
述した状態遷移表を入力するものであることを特徴とす
る。
【0041】この請求項13にかかる発明によれば、事
象をその発生形式により分類して記述した状態遷移表を
用いることで、事象としてリアルタイムOSのシステム
コールを使用する場合、変数を使用する場合、メッセー
ジバッファを使用する場合、割込みを使用する場合、関
数をコールする場合などの情報を明確にしてプログラム
コードを生成することができる。
【0042】請求項14にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、前記遷移先の状態を、予め定めた省略値の
状態または過去に遷移した状態に基づいて定めた状態遷
移表を入力するものであることを特徴とする。
【0043】この請求項14にかかる発明によれば、遷
移先の状態を、予め定めた省略値の状態または過去に遷
移した状態に基づいて定めた状態遷移表を用いること
で、従来フラグを用いた処理で行っていた状態の管理を
容易に行えるとともに、このような状態の管理を隠蔽す
ることができる。
【0044】請求項15にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、複数の状態遷移表を配列化した一つの状態
遷移表であって、その配列数を記述した状態遷移表を入
力するものであることを特徴とする。
【0045】この請求項15にかかる発明によれば、複
数の状態遷移表を配列化した一つの状態遷移表であっ
て、その配列数を記述した状態遷移表を用いることで、
複数の状態を1つの状態遷移表で容易に管理することが
でき、またプログラムコード量の減少およびプログラム
実行時のメモリ使用量の低減を図ることができる。
【0046】請求項16にかかる発明は、請求項9また
は10に記載のプログラム生成方法において、前記入力
ステップは、特定の事象の発生または特定の状態への遷
移において実行される定型的なアクションを記述した状
態遷移表を入力するものであることを特徴とする。
【0047】この請求項16にかかる発明によれば、特
定の事象の発生または特定の状態への遷移おいて実行さ
れる定型的なアクションを記述した状態遷移表を用いる
ことで、事象の発生または状態の遷移ごと動作させるア
クションを1カ所にまとめて記述し、セルごとに記述す
る必要がないため、状態遷移表の保守性を向上させるこ
とができる。
【0048】また、請求項17にかかる発明は、請求項
9〜16のいずれか一つに記載された方法をコンピュー
タに実行させるプログラムであるので、請求項9〜17
のいずれか一つの動作をコンピュータによって実行する
ことができる。
【0049】
【発明の実施の形態】以下に添付図面を参照して、この
発明にかかるプログラム生成装置、プログラム生成方法
およびその方法をコンピュータに実行させるプログラム
の好適な実施の形態を詳細に説明する。以下に示す実施
の形態は、本発明をC言語プログラム生成装置、C言語
プログラム生成方法およびC言語プログラム生成プログ
ラムに適用したものである。
【0050】(実施の形態1)実施の形態1のC言語プ
ログラム生成装置は、イベントドリブン(事象駆動型)
の状態遷移表(STM:State Transition Matrix)か
らC言語プログラムコード(ソースコード)を生成する
ものである。
【0051】ここで、状態遷移表について説明する。図
2は状態遷移表の一例を示す説明図である。また、図3
は状態遷移図の一例を示す説明図である。状態遷移表と
は、図2に示すように、表の行に開発対象のシステムが
受信する事象(発生する事象)(Event)を、列にシス
テムが取りうる状態(State)をとり、事象と状態の交
差点をセルとして、そのセルの上段に次の遷移先の状態
を、下段にアクションを記述したものである。そして、
システムがある状態にいるときに、ある事象が発生した
場合には、現在の状態と受信した事象の交差するセルに
記述されたアクションを実行し、その後、セルに記述さ
れた遷移先の状態にシステムが遷移することを示すもの
である。例えば、図2では、事象(Event)としてE1
(イベントNo.0)、E2(イベントNo.1)があ
り、状態としてS1(状態No.0)、S2がある。こ
こで、状態S2にはそのサブ状態としてS2_1(状態
No.1)、S2_2(状態No.2)があるものとす
る。
【0052】ここで、この状態遷移表で表現されたシス
テムの現在の状態がS1であり、このとき事象E1を受
信したとすると(事象E1が発生)、E1とS1の交差
するセルに記述されたアクション関数Action()
が実行され、システムの状態はそのセルに記述されたS
2_2に遷移する。
【0053】図3は、図2に示す状態遷移表と同等なシ
ステムの動作を記述した状態遷移図である。図3に示し
ように、同じシステムの動作を表現する場合でも、状態
遷移表の方が、状態遷移図よりもわかりやすくなってい
る。また状態遷移表では、すべての状態に対して、すべ
ての事象に対する遷移先、アクションがセルとして示さ
れる、状態遷移図に比べて,状態と事象のパターンを漏
れなくあげることができ、より正確にシステムの動作を
表現することができるようになっている。
【0054】図33は、この発明の実施の形態1である
C言語プログラム生成装置のハードウェア構成を示すブ
ロック図である。図33に示すように、このC言語プロ
グラム生成装置は、CPUなどの制御部3301と、R
OM(Read Only Memory)やRAM(Ramdom Access Me
mory)などの記憶装置3306と、ハードディスクおよ
びハードディスクドライブ装置(HDD)、CDドライ
ブ装置などの外部記憶装置3305と、プリンタなどの
出力装置3304と、ディスプレイ装置などの表示装置
3303と、キーボードやマウスなどの入力装置330
2を備えており、コンピュータを利用した通常の構成で
ある。
【0055】実施の形態1のC言語プログラム生成プロ
グラムは、外部記憶装置3305であるハードディスク
またはCDもしくはフロッピー(登録商標)ディスクに
格納されており、これら外部記憶装置3305から記憶
装置3306であるRAMにロードすることにより実行
されるようになっている。また、ハードディスクには、
状態遷移表や状態遷移表からC言語プログラム生成プロ
グラムで生成されたC言語プログラムコードファイルが
格納される。
【0056】また、表示装置3303には、後述する状
態遷移表が表示され、この状態遷移表をキーボード、マ
ウスなどの入力装置3302を介して完成させて入力装
置3302から状態遷移表をプリグラム生成プログラム
に入力するようになっている。
【0057】ユーザの操作により入力装置3302から
状態遷移表が入力される。また、出力装置3304であ
るプリンタには、作成した状態遷移表や生成されたC言
語プログラムコードを出力するようになっている。
【0058】尚、本実施の形態のC言語プログラム生成
装置で実行されるC言語プログラム生成プログラムは、
CD−ROMまたはFD等にインストール可能な形式の
ファイルで提供される。なお、このようなインストール
可能な形式のファイルを、ネットワークからのダウンロ
ードで提供するようにしても良い。
【0059】次に、実施の形態1に係るC言語プログラ
ム生成装置の機能的構成について説明する。図1は、実
施の形態1に係るC言語プログラム生成装置の機能的構
成を示すブロック図である。
【0060】図1に示すように、実施の形態1に係るC
言語プログラム生成装置は、状態遷移表を入力するST
M入力部102と、状態遷移表の形式的な文法チェック
などを行うSTM解析部103と、入力された状態遷移
表からC言語プログラムコード(ソースコード)122
を生成するコード生成部101と、生成されたプログラ
ムコードをハードディスクなどに格納する出力部112
とから構成される。
【0061】コード生成部101は、さらに、STM初
期化処理生成部104と、事象・状態ID定義生成部1
05と、事象解析処理生成部106と、アクション処理
生成部107と、アクションテーブル生成部108と、
遷移テーブル生成部109と、事象テーブル生成部11
0と、実行処理生成部111とから構成される。
【0062】図1において、デフォルト変換情報11
3、状態変数114、事象ID情報115、状態ID情
報116、事象解析ロジック117、アクションテーブ
ル118、遷移テーブル119、事象テーブル120、
STMロジック121、プログラムコード122は、プ
ログラム生成過程においてファイル形式で作成され、外
部記憶装置3305に格納される。
【0063】STM入力部102は、表示装置3303
に状態遷移表エディタを表示して、ユーザが入力装置3
302から状態遷移表エディタを使用した作成した状態
遷移表を入力して、外部記憶装置3305に格納する。
また、STM入力部102は、ユーザが入力装置330
2から状態遷移表エディタを使用して作成したデフォル
ト変換情報113を入力し、外部記憶装置3305に格
納する。
【0064】STM解析部103は、状態遷移表の形式
的な文法チェックなどを行うものである。図4は、実施
の形態1にかかるC言語プログラム生成装置のSTM解
析部103による解析処理手順を示すフローチャートで
ある。
【0065】STM解析部103は、まず外部記憶装置
から状態遷移表を読み込み(ステップS401)、構文
エラーの有無を解析する(ステップS402)。構文エ
ラーがない場合には、さらに整合性エラーの有無をチェ
ックし(ステップS403)、整合性エラーがない場合
には解析終了メッセージを表示装置3303または出力
装置3304に出力して処理を終了する(ステップS4
10)。整合性エラーがある場合には、エラーメッセー
ジを出力して(ステップS404)、ユーザの継続指定
がなければコード生成不可メッセージを出力して処理を
終了する(ステップS405、S406)。
【0066】ステップS402において、構文エラーが
発見された場合には、ユーザがデフォルト生成指定を行
っているか否かをチェックし(ステップS407)、デ
フォルト生成指定がある場合には、エラーメッセージを
出力して(ステップS408)、デフォルト変換情報1
13を生成する(ステップS409)。
【0067】ここで、デフォルト変換情報113とは、
事象の変換情報が未登録であった場合に自動的に生成さ
れる事象解析情報である。例えば、事象E1として、
「#CHGE1 data.code == EVENT1」という変換情報が登録
され、事象E2として何も登録されていない場合には、
事象解析処理はE1と同様に以下のように生成される。
【0068】 if(data.code == EVENT1) { アクション実行処理(事象ID1); } else if(E2){ アクション実行処理(事象ID2); } なお、デフォルト変換情報には、if-else文、if-if文、
switch文のいずれを使用するかの情報も生成される。
【0069】STM初期化処理生成部104は、デフォ
ルト変換情報113を入力し、状態遷移表の数分の変数
を宣言し、各変数に初期値を与えるSTM初期化処理フ
ァイルを生成する。STM初期化処理ファイルには、現
在の状態を初期化する処理が記述される。
【0070】事象・状態ID定義生成部105は、状態
遷移表からすべての事象と状態を取得して、各事象の事
象IDを割り付けた事象ID情報115と、各状態の状
態IDを割り付けた状態ID情報116をそれぞれファ
イル形式で生成する。
【0071】事象解析処理生成部106は、状態遷移表
に定義されているすべての事象を取得して、受信した事
象が状態遷移表で定義された事象と合致するか否かとい
う事象を判定する処理を事象解析ロジック117として
生成する。このとき、デフォルト変換情報113を入力
し、事象の判定処理について登録されていれば、これを
用いて事象解析ロジック117を生成する。
【0072】アクション処理生成部107は、状態遷移
表で定義されているアクションを読み出して、現在の状
態と受信した事象の交差するセルのアクションの実体的
な定義をしたアクション処理ファイルを生成する。図5
は実施の形態1のC言語プログラム生成装置におけるア
クション処理生成部107で実行される処理の手順を示
すフローチャートである。
【0073】アクション処理生成部107は、状態遷移
表のデータからセルのアクション部を抽出して(ステッ
プS501)、アクションリストとして追加する。そし
てアクションが重複しているものについては、一つのア
クションのみを残してアクションリストから削除する
(ステップS502)。つぎに、アクションリスト数分
のアクションとしての関数のスケルトン(関数の処理を
記述せずに関数宣言のみ記述したもの)を生成する(ス
テップS503)。そして、デフォルト変換情報113
を入力し、アクションの関数の処理内容(スケルトンに
記述する中身)が定義されている場合には、その処理内
容をスケルトンに埋め込む(ステップS504)。
【0074】アクションテーブル生成部108は、アク
ションテーブル118を生成するものである。図6は、
実施の形態1にかかるC言語プログラム生成装置のアク
ションテーブル生成部108によるアクションテーブル
生成処理の手順を示すフローチャートである。
【0075】アクションテーブル生成部108は、状態
遷移表のアクションまたは遷移先の状態が定義されてい
るセルから、アクションを状態ごとに列挙して、アクシ
ョンを事象と状態の2次元配列テーブルに登録したアク
ションテーブル118をファイル形式で生成する(ステ
ップS601)。ここで、アクションまたは遷移先の状
態が定義されているセルだけからアクションを抽出し、
アクションおよび遷移先の状態が未定義のセルからは何
も抽出しない。
【0076】そして、コード量削減オプションがプログ
ラム生成コマンド入力時にユーザにより指定されている
場合には、2次元配列のテーブルを1次元テーブルに変
換してアクションテーブル118とする(ステップS6
02)。
【0077】図10は、図2の状態遷移表に基づいて生
成されたアクションテーブルの一例を示す説明図であ
る。図10に示すように、アクションテーブル118に
は、各状態(S1,S2_1,S2_2)ごとに、アク
ション関数Action()を列挙した配列(_CStateActionPro
c_Sx[])でテーブル化が実現されている。なお、「&_No
neFunc」は、遷移先の状態が存在するがアクションは存
在しないことを示している。
【0078】遷移テーブル生成部109は、状態遷移表
のデータから遷移テーブルを生成するものである。図7
は、実施の形態1にかかるC言語プログラム生成装置の
遷移テーブル生成部109による遷移テーブル生成処理
の手順を示すフローチャートである。遷移テーブル生成
部109は、状態遷移表のデータからアクションまたは
遷移先の状態が記述されているセルのみを抽出して、遷
移先の状態を識別子(ID)を用いて状態ごとにテーブ
ル形式で記述した遷移テーブル119を生成する(ステ
ップS701)。ここで、アクションまたは遷移先の状
態が定義されているセルだけから遷移先の状態を抽出
し、アクションおよび遷移先の状態が未定義のセルから
は何も抽出しない。図11は、図2の状態遷移表に基づ
いて生成された遷移テーブル119の一例を示す説明図
である。図11に示すように、遷移テーブルには、各状
態(S1,S2_1,S2_2)ごとに、遷移先の状態
を列挙した配列(_CStateTrans_Sx[])でテーブル化が
実現されている。
【0079】事象テーブル生成部110は、状態遷移表
から事象テーブル120を生成するものである。図8
は、実施の形態1にかかるC言語プログラム生成装置の
事象テーブル生成部110による事象テーブル生成処理
の手順を示すフローチャートである。事象テーブル生成
部110は、各状態に対して存在する事象を抽出して、
状態ごとに受け付ける事象を識別子(ID)を用いて格
納した事象テーブル120を生成する(ステップS80
1)。
【0080】アクションテーブル118及び遷移テーブ
ル119が上述のように、アクションまたは遷移先の状
態の記述があるセルのみをテーブル化しているため、受
信した事象に対応する状態のアクションを実行する場合
に、テーブルを検索させるために、後述する実行処理プ
ログラムによってこの事象テーブルが参照される。すな
わち、事象テーブルによって、状態に対する事象が存在
するかを判断される。
【0081】図12は、図2の状態遷移表に基づいて生
成された事象テーブル120の一例を示す説明図であ
る。図12に示すように、事象テーブル120には、各
状態(S1,S2_1,S2_2)ごとに、存在する事
象の事象ID(E0、E1など)を列挙した配列(_CSt
ateAction_Sx[])でテーブル化が実現されている。
【0082】実行処理生成部111は、状態遷移表から
事象、状態を取得してプログラムコード(C言語ソース
コード)122を生成するものである。図9は、実施の
形態1にかかるC言語プログラム生成装置の実行処理生
成部111による事象テーブル生成処理の手順を示すフ
ローチャートである。
【0083】実行処理生成部111は、次の実行処理を
行うソースコードを生成し(ステップS901)、ST
Mロジック121に格納する。このソースコードでは、
状態変数114を読み込んで現在アクティブな状態(実
際には状態No)を取得する。そして、事象解析ロジッ
ク117を読み込んで現在入力された事象(実際には事
象No)を取得する。そして、アクションテーブル11
8と事象テーブル120を参照して、取得した状態と事
象とに対応するアクションを抽出する処理を行ってい
る。
【0084】そして、アクション終了後、次の遷移先
を、遷移テーブル119から実行する処理を生成してS
TMロジック121に追加する(ステップS902)。
【0085】図13は、図2の状態遷移表に基づいて生
成されたコードにおいて各テーブルの参照部分の一例を
示す説明図である。図13に示すように、コード中で、
_CStateAction[][]により事象テーブル120を参照し
ている。また、_CStateActionProc[][]によりアクショ
ンテーブル118を参照し、_CStateTrans[][]により遷
移テーブル119を参照していることがわかる。
【0086】出力部112では、上述の過程で生成され
た、状態変数114、事象テーブル120、事象ID情
報115、状態ID情報116、アクションテーブル1
18、遷移テーブル119、事象解析ロジック117、
STMロジック121をC言語プログラムコード122
に変換し、外部記憶装置3305に格納する。これによ
り、状態遷移表からC言語プログラムコード122が生
成される。
【0087】このように実施の形態1のC言語プログラ
ム生成装置では、事象駆動(イベントドリブン)される
システムにおいて、状態遷移表からシステムが実行すべ
きアクション内容または遷移先の状態が記述されている
セルのみを抽出してアクション内容を状態ごとに記述し
たアクションテーブルと、アクションまたは遷移先の状
態が記述されているセルのみを抽出して遷移先の状態を
状態ごとに記述した遷移テーブルとを生成しプログラム
コード量が小さくなるとともに、生成されたプログラム
の実行時に使用メモリサイズを減少させることができ
る。このため、メモリ容量に制限のある組み込みシステ
ムに最適なプログラムを自動生成することが可能とな
る。
【0088】(実施の形態2)実施の形態1のC言語プ
ログラム生成装置は、事象駆動型の状態遷移表に基づい
てC言語プログラムコード122を生成するものであっ
たが、この実施の形態2のC言語プログラム生成装置
は、状態駆動型の状態遷移表に基づいてC言語プログラ
ムコード122を生成するものである。実施の形態2の
C言語プログラム生成装置のハードウェア構成は、実施
の形態1と同様であるので説明を省略する。
【0089】図14は、実施の形態2にかかるC言語プ
ログラム生成装置の機能的構成を示すブロック図であ
る。図14に示すように、実施の形態2に係るC言語プ
ログラム生成装置は、状態遷移表を入力するSTM入力
部1402と、状態遷移表の形式的な文法チェックなど
を行うSTM解析部1403と、入力された状態遷移表
からC言語プログラムコード(ソースコード)1421
を生成するコード生成部1401と、生成されたプログ
ラムコード1421をハードディスクなどの外部記憶装
置3305に格納する出力部1412とから構成され
る。
【0090】図14において、デフォルト変換情報14
13、状態変数1414、状態ID情報1415、状態
ごとの事象解析ロジック1416、アクティビティ情報
テーブル1417、親状態ID情報テーブル1418、
サブ状態ID情報テーブル1419、STMロジック1
420、プログラムコード1421は、プログラム生成
過程においてファイル形式で作成され、外部記憶装置3
305に格納される。
【0091】コード生成部1401は、さらに、STM
初期化処理生成部1404と、状態ID定義生成部14
05と、アクション処理生成部1406と、状態ごとの
事象解析処理生成部1407と、状態アクティビティ情
報テーブル生成部1408と、親状態ID情報テーブル
生成部1409と、サブ状態ID情報テーブル生成部1
410と、実行処理生成部1411とから構成される。
【0092】ここで、STM入力部1402とSTM解
析部1403については、実施の形態1のC言語プログ
ラム生成装置と同様であるため説明を省略する。
【0093】STM初期化処理生成部1404は、実施
の形態1のC言語プログラム生成装置と同様に、状態遷
移表から状態を管理する変数を取得して、STM初期化
処理ファイルを生成する。STM初期化処理ファイルに
は、現在の状態を初期化する処理が記述される。
【0094】状態ID定義生成部1405は、状態遷移
表からすべての状態を取得して、各状態に状態IDを割
り付け、状態ID情報1415をファイル形式で生成す
る。実施の形態2のC言語プリグラム生成装置では、状
態駆動型の状態遷移表に基づいてC言語プログラムコー
ドを生成するため、以下の処理では、状態ごとに事象解
析を行う。このため、状態IDの割り付けのみを行い、
事象IDの割り付け処理は行っていない。
【0095】アクション処理生成部1406は、状態遷
移表で定義されているアクションを読み出して、現在の
状態と受信した事象の交差するセルのアクションの実体
的な定義をしたアクション処理ファイルを生成する。具
体的な処理は、実施の形態1で説明したアクション処理
生成部107による処理と同様である。
【0096】状態ごとの事象解析処理生成部1407
は、状態遷移表に定義されているすべての事象を状態ご
とに取得して、受信した事象が状態遷移表で定義された
事象と合致するか否かの解析処理を状態ごとに行う状態
ごとの事象解析処理ファイルを生成する。図15は、実
施の形態2のC言語プログラム生成装置の状態ごとの事
象解析処理生成部1407による事象解析処理の手順を
示すフローチャートである。状態ごとの事象解析処理生
成部1407では、まず状態遷移表のデータから状態を
一つ取得する(ステップS1501)。そして、デフォ
ルト変換情報1413を読み込んで、デフォルト変換情
報1413に事象を判定するロジックがあれば、そのロ
ジックに対応した状態ごとの事象解析ロジック1416
を生成して外部記憶装置3305に格納する(ステップ
S1502)。そして、ステップS1501、S150
2の処理を、状態遷移表のデータにあるすべての状態に
ついて繰り返し行い(ステップS1503)、最終の状
態を処理した後に事象解析処理を終了する。
【0097】状態アクティビティ情報テーブル生成部1
408は、状態アクティビティ情報テーブル1417を
生成するものである。図16は、実施の形態2のC言語
プログラム生成装置の状態アクティビティ情報テーブル
生成部1408による状態アクティビティ情報テーブル
生成処理の手順を示すフローチャートである。
【0098】状態アクティビティ情報テーブル生成部1
408は、状態ごとの事象解析ロジック1416を読み
込んで、状態ごとに呼び出すアクション、アクティビテ
ィを登録した状態アクティビティ情報テーブル1417
を生成する(ステップ1601)。ここで、アクティビ
ティとは、状態遷移時の定型的処理を示すものである。
【0099】図19は、図2の状態遷移表に基づいて生
成された状態アクティビティ情報テーブル1417の一
例を示す説明図である。図19に示すように、状態アク
ティビティ情報テーブルには、各状態(S1,S2_
1,S2_2)ごとに、事象解析処理関数(Sx_EventAna
lysis)を登録されている。なお、図2の状態遷移表で
はアクティビティが記述されていないため、アクティビ
ティ関数の登録はなされていないが、状態遷移表にアク
ティビティの記述がある場合には、事象解析処理関数と
同様に状態アクティビティ情報テーブル1417に登録
される。なお、「CFunc_NULL」は、関数が存在しないこ
とを示している。
【0100】親状態ID情報テーブル生成部1409
は、親状態ID情報テーブル1418を生成するもので
ある。図17は、実施の形態2のC言語プログラム生成
装置の親状態ID情報テーブル生成部1409による親
状態ID情報テーブル生成処理の手順を示すフローチャ
ートである。
【0101】親状態ID情報テーブル生成部1409
は、状態ID情報1415を読み込んで、各状態がサブ
状態を有する親状態の場合には、親状態ID情報テーブ
ル1418に親情報IDを設定し、親状態な存在しない
場合には、NULLを設定した親状態ID情報テーブル
1418を生成する(ステップS1701)。ここで、
親状態とは、サブ状態の上位の状態であり、図2に示す
状態遷移表においてS2が親状態となる。また、サブ状
態とは、親状態の下位の状態であり、図2の状態遷移表
ではS2_1,S2_2がサブ状態となる。
【0102】図20は、図2の状態遷移表に基づいて生
成された親状態ID情報テーブルの一例を示す説明図で
ある。図20では、図2の状態遷移表におけるサブ状態
S2_1およびS2_2の親状態S2の親状態IDが
「_S2」と定義されている。なお、「CState_NULL」
は、親状態が存在しないことを示している。
【0103】サブ状態ID情報テーブル生成部1410
は、状態遷移表からサブ状態ID情報テーブル1419
を生成するものである。図18は、実施の形態2のC言
語プログラム生成装置のサブ状態ID情報テーブル生成
部1410によるサブ状態ID情報テーブル生成処理の
手順を示すフローチャートである。
【0104】サブ状態ID情報テーブル生成部1410
は、状態ID情報1415を読み込んで、読み込んだ状
態の状態IDにサブ状態を示すIDを設定し、サブ状態
が存在しない場合にはNULLを設定することにより、
サブ状態ID情報テーブル1419を生成する(ステッ
プS1801)。
【0105】図21は、図2の状態遷移表に基づいて生
成されたサブ状態ID情報テーブル1419の一例を示
す説明図である。図21では、図2の状態遷移表におけ
る親状態S2のサブ状態S2_1のサブ状態IDが「_
S2_1」と定義されている。なお、「CState_NULL」
は、サブ状態が存在しないことを示している。
【0106】実行処理生成部1411は、状態遷移表か
ら事象、状態を取得して次の処理を行うソースコードを
生成しSTMロジック1420に格納する。このソース
コードでは、親状態ID情報テーブル1418とサブ状
態ID情報テーブル1419とを参照して各状態の上
位、下位を判別する。そして、アクティビティ情報テー
ブル1417によって状態ごとに事象解析処理または定
型処理を実行する。
【0107】図22は、図2の状態遷移表に基づいて生
成された実行処理プログラムの一例を示す説明図であ
る。図22に示すように、実行処理プログラムでは、_S
tateEntry関数によって、親状態ID情報テーブル14
18とサブ状態ID情報テーブル1419における定義
から、各状態が親状態かサブ状態かを判別している。ま
た、EventAnalysis関数によって事象解析処理を実行し
ている。
【0108】そして、実施の形態1のC言語プログラム
生成装置と同様に、出力部1412によってC言語プロ
グラムコードが生成され、外部記憶装置3305に格納
される。
【0109】このように実施の形態2のC言語プログラ
ム生成装置によれば、アクティビティ情報テーブル14
17を生成して各状態ごとに事象解析処理または定型処
理を定義し、また親状態ID情報テーブル1418とサ
ブ状態ID情報テーブル1419とを生成して、各状態
が親状態かサブ状態かだけを定義しておいた上で、プロ
グラム実行時に親状態ID情報テーブルとサブ状態ID
情報テーブルとに基づいて各状態が親状態かサブ状態か
を判別し、この判別結果とアクティビティ情報テーブル
1417とに基づいて状態ごとに事象解析処理または定
型処理を実行するプログラムコードを生成することで、
プログラムコード量の削減を図るとともに、メモリ使用
量を低減させることができ、プログラムの実行速度の向
上を図ることができる。
【0110】(実施の形態3)この実施の形態3にかか
るC言語プログラム生成装置は、事象、状態を階層化し
て複数の状態遷移表を統合した一つの状態遷移表を入力
するものである。実施の形態3にかかるC言語プログラ
ム生成装置のハードウェア構成、機能的構成およびプロ
グラム生成の処理については、実施の形態1のC言語プ
ログラム生成装置と同様であるので説明を省略する。
【0111】図23は、実施の形態3のC言語プログラ
ム生成装置に入力する事象階層化を行った状態遷移表の
説明図である。図23に示すように、この状態遷移表
は、状態S1における事象E1に対応するセルのアクシ
ョンとして「(白四角記号)0.1」の記号が付されて
おり、これは下位の状態遷移表を示すものである。かか
る階層化部分については、コード生成部101によって
図23に示すように、m0_1FSMCall()関数のプログラ
ムが生成される。
【0112】このような事象階層化を状態遷移表で可能
にすることにより、巨大化、複雑化する事象を抽象化し
て、結果的に状態遷移表が膨大かつ複雑化することを防
止することができる。特に開発対象のシステムがインタ
ーネットなどの通信に接続した場合、通信メッセージに
は多種多様のコマンド、ステータスが存在するので、こ
れらの事象を平面的ではなく階層的に記述することがで
き、ユーザにとって便宜なものとなる。
【0113】図24は、実施の形態3のC言語プログラ
ム生成装置に入力する状態階層化を行った状態遷移表の
説明図である。図24の上段に示すように、状態階層化
を行わない場合には2個の状態遷移表を使用しなければ
ならないが、図24の下段に示すように、状態S2のサ
ブ状態であるS2_1、S2_2を下位階層として記述
することにより、巨大化、複雑化する状態を抽象化し
て、結果的に状態遷移表が膨大かつ複雑化することを防
止することができる。例えば、携帯電話のような小さな
液晶画面でたくさんのモードがある場合(同一ボタンで
もモードによって意味が異なる場合)、各モードをその
まま状態として定義すると状態数が膨大となるが、状態
(モード)を階層化して表現した場合には1つの状態遷
移表に集約でき、システム動作の把握を容易に行うこと
ができる。
【0114】(実施の形態4)この実施の形態4にかか
るC言語プログラム生成装置は、並列状態を組み込んだ
状態遷移表を入力するものである。この状態遷移表は状
態駆動型の実装方式で採用できる。実施の形態4にかか
るC言語プログラム生成装置のハードウェア構成、機能
的構成およびプログラム生成の処理については、実施の
形態2のC言語プログラム生成装置と同様であるので説
明を省略する。
【0115】図25は、実施の形態4のC言語プログラ
ム生成装置に入力する並列状態を組み込んだ状態遷移表
の説明図である。図25に示すように、点線部で囲んだ
状態は並列実行可能な状態であることを示している。
【0116】この図25の状態遷移表を入力した場合に
は、状態S2での事象解析処理において、並列状態のS
2_1、S2_2の事象解析を実行する。
【0117】このように、実施の形態4のC言語プログ
ラム生成装置では、並列状態を組み込んだ状態遷移表を
入力することにより、並列数分の状態の増加を抑えるこ
とができる。このため、生成されるプログラムのコード
量も削減されることになる。また、このような並列状態
を状態遷移表に組み込むことにより、例えば、将来的な
携帯電話のように通話をしながらデータ通信を行うとい
った並列の処理を容易に記述することができる。
【0118】(実施の形態5)この実施の形態5にかか
るC言語プログラム生成装置は、事象をその発生形式に
より分類して記述した状態遷移表を入力するものであ
る。実施の形態5にかかるC言語プログラム生成装置の
ハードウェア構成、機能的構成およびプログラム生成の
処理については、実施の形態1のC言語プログラム生成
装置と同様であるので説明を省略する。
【0119】図26は、実施の形態5のC言語プログラ
ム生成装置に入力する事象の発生形式で分類して記述し
た状態遷移表の説明図である。事象の発生形式による分
類としては、変数型事象、割り込み型事象、インメイル
型事象、関数コール型事象がある。
【0120】変数型事象は、変数の値の変化を事象とし
てとらえたものであり、図26の事象(Event)の欄にお
ける「E1」、「A==0」が該当する。割り込み型事
象は、CPUがプログラムに対して外部からの刺激があ
ったことを直接通知するものであり、図26の事象にお
ける「IINT」の欄の記述が該当する。インメイル型
事象は、状態遷移表内に存在する階層化された状態遷移
表間でメッセージなどを送受信する事象であり、図26
の事象における長方形で囲まれた「INM1()」の記
述が該当する。関数コール型事象は、関数の呼び出しを
事象としたものであり、図26の事象における「voi
d A()」の記述が該当する。
【0121】図27は、実施の形態5のC言語プログラ
ム生成装置に入力するインメイル型事象を有する状態遷
移表と、インメイル型事象の記述から生成されるプログ
ラムの一例を示した説明図である。図27に示すインメ
イル型事象をC言語プログラム生成装置に入力した場
合、コード生成部101により事象の欄の左方から順に
解析され、まずインメイルAのif文が生成され、その
if文のブロックにインメイルBのif文とインメイル
Cのelse if文が並列に生成される。そして、イ
ンメイルCのelse if文のブロックには、事象の
欄の最右欄の変数Aに関するif文が生成される。
【0122】図28は、実施の形態5のC言語プログラ
ム生成装置に入力する割り込み型事象を有する状態遷移
表と、割り込み型事象の記述から生成されるプログラム
の一例を示した説明図である。図28に示す割り込み型
事象をC言語プログラム生成装置に入力した場合、コー
ド生成部101により事象の欄の左方から順に解析さ
れ、まず割り込みAを受信した旨を示すinterru
pt文が生成され、そのブロックに、中央の欄の変数A
の値を判断するswitch文が生成される。そして、
このswitch文のブロックに事象の欄の最右欄に記
述されたDEF_A、DEF_BおよびDEF_Cの値
のcase文が並列に生成され、case文の中で事象
解析(イベントNo)が記述される。
【0123】図29は、実施の形態5のC言語プログラ
ム生成装置に入力する関数コール型事象を有する状態遷
移表と、関数コール型事象の記述から生成されるプログ
ラムの一例を示した説明図である。図29に示す関数コ
ール型事象をC言語プログラム生成装置に入力した場
合、コード生成部101によって事象の欄に記述された
関数が生成され、関数内で事象解析(イベントNo)お
よび状態遷移表の駆動命令(STM駆動)が記述され
る。
【0124】このように実施の形態5のC言語プログラ
ム生成装置では、事象の型を分類した状態遷移表を使用
することにより、リアルタイムOSのシステムコールの
使用、変数の使用、メッセージバッファの使用、割込み
の使用、関数コールの使用という情報をもってプログラ
ムコードを自動生成することができる。このため、デバ
イスドライバのように割込みを扱い、かつアプリケーシ
ョンタスクからコールされる場合、複数の事象の型を用
意することで、プログラムコードとの対応を取ることが
できる。
【0125】(実施の形態6)この実施の形態6にかか
るC言語プログラム生成装置は、状態階層化を有する場
合に、親の状態に遷移したときの遷移先のサブ状態を、
予め定めた省略値の状態または過去に遷移した状態に基
づいて定めた状態遷移表を入力するものである。実施の
形態6にかかるC言語プログラム生成装置のハードウェ
ア構成、機能的構成およびプログラム生成の処理につい
ては、実施の形態1のC言語プログラム生成装置と同様
であるので説明を省略する。
【0126】遷移先の決定方法として、予め定められた
サブ状態に遷移する固定型遷移と、過去にアクティブと
なったことのあるサブ状態に遷移する記憶型遷移と、過
去にアクティブになったサブ状態をすべて記憶してお
き、前回アクティブになったサブ状態へ遷移する深層記
憶型遷移がある。
【0127】図30は、実施の形態6のC言語プログラ
ム生成装置に入力する深層記憶型遷移を有する状態遷移
表の説明図である。図30において、状態S1で事象E
1が発生したときに遷移する親状態S2のサブ状態(S
2_1、S2_2)への遷移は、「S2(D)」と記述
することにより、深層記憶型遷移、すなわち前回アクテ
ィブになったサブ状態へ遷移することになる。なお、固
定型遷移の場合には「S2(F)」と記述し、記憶型遷
移の場合には「S2(F)」と記述する。
【0128】このような遷移の型が指定された状態遷移
表が入力された場合、コード生成部101は、遷移先の
情報または履歴を保持するテーブルなどを生成すればよ
く、これにより、遷移先へ移るたびにフラグなどをたて
るなどの処理が必要なくなる。
【0129】このように実施の形態6のC言語プログラ
ム生成装置では、遷移の型を明示した状態遷移表を使用
しているので、従来フラグで行っていた状態管理を隠蔽
することができる。例えば、ファクシミリ、コピー、プ
リンタなどを搭載した複合機のように、過去に動作した
モードを記憶する必要がある場合に最適なプログラムを
生成することが可能となる。
【0130】(実施の形態7)この実施の形態7にかか
るC言語プログラム生成装置は、複数の状態遷移表を配
列化した一つの状態遷移表であって、その配列数を記述
した状態遷移表(クローン状態遷移表)を入力するもの
である。実施の形態7にかかるC言語プログラム生成装
置のハードウェア構成、機能的構成およびプログラム生
成の処理については、実施の形態1のC言語プログラム
生成装置と同様であるので説明を省略する。
【0131】実施の形態7で使用するクローン状態遷移
表は、一つの状態遷移表から複数の状態遷移表を生成す
るものである。このクローン状態遷移表は、図2に示す
状態遷移表の最上左欄に状態遷移表NOまたは状態遷移
表名称に配列数[n]を記述することによって宣言す
る。
【0132】このような配列数が宣言された状態遷移表
がC言語プログラム生成装置に入力された場合、コード
生成部101は、配列数分の状態遷移表が入力された場
合と同様に配列数分のプログラムを生成する。
【0133】このように実施の形態7のC言語プログラ
ム生成装置では、クローン状態遷移表を使用しているの
で、複数の状態を1つの状態遷移表で管理することがで
きる。このため、通信制御プロトコルタスクが複数の相
手局や複数のチャネルの管理を同一プロトコルで行う場
合に、最適なプログラムを生成することができる。
【0134】(実施の形態8)この実施の形態8にかか
るC言語プログラム生成装置は、特定の事象の発生また
は特定の状態への遷移において実行される定型的なアク
ション(アクティビティ)を記述した状態遷移表を入力
するものである。実施の形態8にかかるC言語プログラ
ム生成装置のハードウェア構成、機能的構成およびプロ
グラム生成の処理については、実施の形態1のC言語プ
ログラム生成装置と同様であるので説明を省略する。
【0135】アクティビティには、事象の発生に応じて
実行されるイベントアクティビティと、状態の遷移に伴
って実行されるステートアクティビティがある。図31
は、実施の形態8のC言語プログラム生成装置に入力す
るイベントアクティビティを指定した状態遷移表の説明
図である。
【0136】イベントアクティビティとしては、事象の
解析処理が実行される前に実行される定型的処理である
イベント解析スタートアクティビティと、事象の解析処
理が開始され、アクション、遷移があればそれぞれを実
行し、次の事象を待つ直前に実行されるイベント解析エ
ンドアクティビティなどがある。イベント解析スタート
アクティビティは、図31に示すように事象の欄に「丸
付きS」で記述し、イベント解析エンドアクティビティ
は、図31に示すように事象の欄に「丸付きE」で記述
する。
【0137】このように実施の形態8のC言語プログラ
ム生成装置では、イベントアクティビティを指定した状
態遷移表を使用しているので、アクションセルに記述す
ることがないため、1箇所にまとめることができ、保守
性が向上する。例えば、LSI制御の場合、特定の制御
信号を受信(事象発生)した際に、特定のコマンドをL
SIに発行することでLSIとの通信を行う際に、イベ
ントアクティブティに登録し、他のLSIに変えた場合
には、イベントアクティビティのみを修正すれば容易に
保守を行うことができる。
【0138】また、ステートアクティビティとしては、
状態がアクティブになったとき(その状態に遷移したと
き)に実行されるステートスタートアクティビティと、
状態がアクティブでなくなるとき(次の状態へ遷移する
とき)に実行されるステートエンドアクティビティと、
状態駆動型の状態遷移表が事象の監視を切り替える場合
に実行されるディスパッチアクティビティなどがある。
【0139】図32は、実施の形態8のC言語プログラ
ム生成装置に入力するステートアクティビティを指定し
た状態遷移表の説明図である。ステートスタートアクテ
ィビティは、図32に示すように状態の欄に「丸付き
S」で記述し、事象解析エンドアクティビティは、図3
2に示すように状態の欄に「丸付きE」で記述する。ま
た、ディスパッチアクティビティは、図32に示すよう
に状態の欄に「丸付きM」で記述する。このようなアク
ティビティが指定された場合のプログラム生成の処理は
実施の形態1のコード生成部101による処理と同様で
ある。
【0140】このように実施の形態8のC言語プログラ
ム生成装置では、ステートアクティビティを指定した状
態遷移表を使用しているので、特定の状態に依存する処
理を登録することができる。例えば、オートクルーズコ
ントロールで走行中に絶えず現在の速度値をサンプリン
グする場合に、オートクルーズ走行状態に速度サンプリ
ングモードアクティビティを登録すれば良い。
【0141】(実施の形態9)この実施の形態8にかか
るC言語プログラム生成装置は、特定の事象の発生また
は特定の状態への遷移において実行される定型的なアク
ション(アクティビティ)を記述した状態遷移表を入力
するものである。実施の形態8にかかるC言語プログラ
ム生成装置のハードウェア構成、機能的構成およびプロ
グラム生成の処理については、実施の形態1のC言語プ
ログラム生成装置と同様であるので説明を省略する。
【0142】以上、実施の形態1〜9で使用する状態遷
移表は、タスク、ドライバ、ハンドラなどのような所属
に分類してコンピュータ上に登録することができる。こ
の場合には、登録された情報からリアルタイムOS向け
のTCB(Task Control Block)やDCB(Driver Contro
l Block)や割り込みベクタテーブルへの割込みハンドラ
のアドレスを自動的に生成することが可能となる。
【0143】なお、実施の形態1〜9において説明した
C言語プログラム、状態遷移表は一例を示すものであ
り、これらのものに本発明が限定されるものではない。
また、実施の形態1〜9では、本発明をC言語プログラ
ムを生成する装置に適用したが、他のプログラミング言
語を生成する装置に適用することも可能である。
【0144】
【発明の効果】以上説明したように、請求項1にかかる
発明によれば、プログラム実行に影響を与えずに、プロ
グラムコード量および使用時のメモリサイズを減少させ
ることができるという効果を奏する。
【0145】請求項2にかかる発明によれば、プログラ
ムコード量の削減を図ることができるとともに、メモリ
使用量も低減させることができ、さらには、プログラム
の実行速度の向上を図ることができるという効果を奏す
る。
【0146】請求項3にかかる発明によれば、状態遷移
表が過大となることを防止して、状態遷移表から生成す
るプログラムのコード量が少なくなり、プログラム実行
時のメモリ使用量の減少が図られるという効果を奏す
る。
【0147】請求項4にかかる発明によれば、並列実行
する分の状態の増加を抑えることができ、状態遷移表か
ら生成するプログラムのコード量が少なくなり、プログ
ラム実行時のメモリ使用量の減少を図ることができると
いう効果を奏する。
【0148】請求項5にかかる発明によれば、事象とし
てリアルタイムOSのシステムコールを使用する場合、
変数を使用する場合、メッセージバッファを使用する場
合、割込みを使用する場合、関数をコールする場合など
の情報を明確にしてプログラムコードを生成することが
できるという効果を奏する。
【0149】請求項6にかかる発明はによれば、フラグ
を用いた処理で行っていた状態の管理を容易に可能とす
るとともに、このような状態の管理を隠蔽することがで
きるという効果を奏する。
【0150】請求項7にかかる発明によれば、複数の状
態を1つの状態遷移表で管理することを容易に行うこと
ができ、またプログラムコード量の減少およびプログラ
ム実行時のメモリ使用量の低減が図られるという効果を
奏する。
【0151】請求項8にかかる発明によれば、状態遷移
表の保守性を向上させることができるという効果を奏す
る。
【0152】請求項9にかかる発明によれば、プログラ
ム実行に影響を与えずに、プログラムコード量および使
用時のメモリサイズを減少させることができるという効
果を奏する。
【0153】請求項10にかかる発明によれば、プログ
ラムコード量の削減を図ることができるとともに、メモ
リ使用量も低減させることができ、さらには、プログラ
ムの実行速度の向上を図ることができるという効果を奏
する。
【0154】請求項11にかかる発明によれば、状態遷
移表が過大となることを防止して、状態遷移表から生成
するプログラムのコード量が少なくなり、プログラム実
行時のメモリ使用量の減少が図られるという効果を奏す
る。
【0155】請求項12にかかる発明によれば、並列実
行する分の状態の増加を抑えることができ、状態遷移表
から生成するプログラムのコード量が少なくなり、プロ
グラム実行時のメモリ使用量の減少を図ることができる
という効果を奏する。
【0156】請求項13にかかる発明によれば、事象と
してリアルタイムOSのシステムコールを使用する場
合、変数を使用する場合、メッセージバッファを使用す
る場合、割込みを使用する場合、関数をコールする場合
などの情報を明確にしてプログラムコードを生成するこ
とができるという効果を奏する。
【0157】請求項14にかかる発明はによれば、フラ
グを用いた処理で行っていた状態の管理を容易に可能と
するとともに、このような状態の管理を隠蔽することが
できるという効果を奏する。
【0158】請求項15にかかる発明によれば、複数の
状態を1つの状態遷移表で管理することを容易に行うこ
とができ、またプログラムコード量の減少およびプログ
ラム実行時のメモリ使用量の低減が図られるという効果
を奏する。
【0159】請求項16にかかる発明によれば、状態遷
移表の保守性を向上させることができるという効果を奏
する。
【0160】請求項17にかかる発明によれば、請求項
9〜16のいずれか一つの動作をコンピュータによって
実行することができるという効果を奏する。
【図面の簡単な説明】
【図1】実施の形態1に係るC言語プログラム生成装置
の機能的構成を示すブロック図である。
【図2】状態遷移表の一例を示す説明図である。
【図3】状態遷移図の一例を示す説明図である。
【図4】実施の形態1にかかるC言語プログラム生成装
置のSTM解析部103による解析処理手順を示すフロ
ーチャートである。
【図5】実施の形態1のC言語プログラム生成装置にお
けるアクション処理生成部で実行される処理の手順を示
すフローチャートである。
【図6】実施の形態1にかかるC言語プログラム生成装
置のアクションテーブル生成によるアクションテーブル
生成処理の手順を示すフローチャートである。
【図7】実施の形態1にかかるC言語プログラム生成装
置の遷移テーブル生成部による遷移テーブル生成処理の
手順を示すフローチャートである。
【図8】実施の形態1にかかるC言語プログラム生成装
置の事象テーブル生成部による事象テーブル生成処理の
手順を示すフローチャートである。
【図9】実施の形態1にかかるC言語プログラム生成装
置の実行処理生成部111による事象テーブル生成処理
の手順を示すフローチャートである。
【図10】図2の状態遷移表に基づいて生成されたアク
ションテーブルの一例を示す説明図である。
【図11】図2の状態遷移表に基づいて生成された遷移
テーブルの一例を示す説明図である。
【図12】図2の状態遷移表に基づいて生成された事象
テーブルの一例を示す説明図である。
【図13】図2の状態遷移表に基づいて生成された実行
処理プログラムにおいて各テーブルの参照部分の一例を
示す説明図である。
【図14】実施の形態2にかかるC言語プログラム生成
装置の機能的構成を示すブロック図である。
【図15】実施の形態2のC言語プログラム生成装置の
状態ごとの事象解析処理生成部による事象解析処理の手
順を示すフローチャートである。
【図16】実施の形態2のC言語プログラム生成装置の
状態アクティビティ情報テーブル生成部による状態アク
ティビティ情報テーブル生成処理の手順を示すフローチ
ャートである。
【図17】実施の形態2のC言語プログラム生成装置の
親状態ID情報テーブル生成部による親状態ID情報テ
ーブル生成処理の手順を示すフローチャートである。
【図18】実施の形態2のC言語プログラム生成装置の
サブ状態ID情報テーブル生成部によるサブ状態ID情
報テーブル生成処理の手順を示すフローチャートであ
る。
【図19】図2の状態遷移表に基づいて生成された状態
アクティビティ情報テーブルの一例を示す説明図であ
る。
【図20】図2の状態遷移表に基づいて生成された親状
態ID情報テーブルの一例を示す説明図である。
【図21】図2の状態遷移表に基づいて生成されたサブ
状態ID情報テーブルの一例を示す説明図である。
【図22】図2の状態遷移表に基づいて生成された実行
処理プログラムにの一例を示す説明図である。
【図23】実施の形態3のC言語プログラム生成装置に
入力する事象階層化を行った状態遷移表の説明図であ
る。
【図24】実施の形態3のC言語プログラム生成装置に
入力する状態階層化を行った状態遷移表の説明図であ
る。
【図25】実施の形態4のC言語プログラム生成装置に
入力する並列状態を組み込んだ状態遷移表の説明図であ
る。
【図26】実施の形態5のC言語プログラム生成装置に
入力する事象の発生形式で分類して記述した状態遷移表
の説明図である。
【図27】実施の形態5のC言語プログラム生成装置に
入力するインメイル型事象を有する状態遷移表と、イン
メイル型事象の記述から生成されるプログラムの一例を
示した説明図である。
【図28】実施の形態5のC言語プログラム生成装置に
入力する割り込み型事象を有する状態遷移表と、割り込
み型事象の記述から生成されるプログラムの一例を示し
た説明図である。
【図29】実施の形態5のC言語プログラム生成装置に
入力する関数コール型事象を有する状態遷移表と、関数
コール型事象の記述から生成されるプログラムの一例を
示した説明図である。
【図30】実施の形態6のC言語プログラム生成装置に
入力する深層記憶型遷移を有する状態遷移表の説明図で
ある。
【図31】実施の形態8のC言語プログラム生成装置に
入力するイベントアクティビティを指定した状態遷移表
の説明図である。
【図32】実施の形態8のC言語プログラム生成装置に
入力するステートアクティビティを指定した状態遷移表
の説明図である。
【図33】実施の形態1および2のC言語プログラム生
成装置のハードウェア構成を示すブロック図である。
【符号の説明】
101,1401 コード生成部 102,1402 STM入力部 103,1403 STM解析部 104,1404 STM初期化処理生成部 105 事象・状態ID定義生成部 106 事象解析処理生成部 107,1406 アクション処理生成部 108 アクションテーブル生成部 109 遷移テーブル生成部 110 事象テーブル生成部 111,1411 実行処理生成部 112,1412 出力部 113,1413 デフォルト変換情報 114 状態変数(ファイル) 115 事象ID情報 116 状態ID情報 117,1416 事象解析ロジック 118 アクションテーブル 119 遷移テーブル 120 事象テーブル 121,1420 STMロジック 122,1421 プログラムコード 1405 状態ID定義生成部 1407 状態ごとの事象解析処理生成部 1408 状態アクティビティ情報テーブル生成部 1409 親状態ID情報テーブル生成部 1410 サブ状態ID情報テーブル生成部 1417 アクティビティ情報テーブル 1418 親状態ID情報テーブル 1419 サブ状態ID情報テーブル 3301 制御部 3302 入力装置 3303 表示装置 3304 出力装置 3305 外部記憶装置 3306 記憶装置

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 プログラム開発の対象であるシステムの
    取り得る状態と、前記システムの外部又は内部からの刺
    激である事象で特定される複数のセルを有し、各セル
    に、対応する状態下で対応する事象が発生した際に前記
    システムが実行すべきアクション内容または遷移すべき
    遷移先の状態を記述した事象駆動型の状態遷移表に基づ
    いて前記システムで動作するプログラムを生成するプロ
    グラム生成装置において、 前記状態遷移表を入力する入力手段と、 前記状態遷移表から、前記システムが実行すべきアクシ
    ョン内容または遷移先の状態が記述されているセルのみ
    を抽出して、前記アクション内容を前記状態ごとに記述
    したアクションテーブルを生成するアクションテーブル
    生成手段と、 前記状態遷移表から、アクション内容または遷移先の状
    態が記述されているセルのみを抽出して、前記遷移先の
    状態を前記状態ごとに記述した遷移テーブルを生成する
    遷移テーブル生成手段と、 前記状態遷移表から、各状態に対して存在する事象を記
    述した事象テーブルを生成する事象テーブル生成手段
    と、 事象の発生時に、前記事象テーブルを参照して、各状態
    下における事象の存在を確認し、前記アクションテーブ
    ルと前記遷移テーブルとを参照して、現在の状態下にお
    ける発生した事象に対するセルのアクション内容を実行
    する実行処理プログラムを生成する実行処理生成手段
    と、 を備えたことを特徴とするプログラム生成装置。
  2. 【請求項2】 プログラム開発の対象であるシステムの
    取り得る状態と、前記システムの外部又は内部からの刺
    激である事象で特定される複数のセルを有し、各セル
    に、前記システムが実行すべきアクション内容または遷
    移すべき遷移先の状態を記述し、各状態で事象の発生を
    監視する状態駆動型の状態遷移表に基づいて前記システ
    ムで動作するプログラムを生成するプログラム生成装置
    において、 前記状態遷移表を入力する入力手段と、 前記状態遷移表から、各状態ごとに事象解析処理または
    定型処理を記述した状態アクティビティ情報テーブルを
    生成する状態アクティビティ情報テーブル生成手段と、 前記状態遷移表から、上位の状態である親状態の識別情
    報を列挙して記述した親状態ID情報テーブルを生成す
    る親状態ID情報テーブル生成手段と、 前記状態遷移表から、親状態の下位の状態であるサブ状
    態の識別情報を列挙して記述したサブ状態ID情報テー
    ブルを生成するサブ状態ID情報テーブル生成手段と、 前記親状態ID情報テーブルと前記サブ状態ID情報テ
    ーブルとに基づいて各状態が親状態かサブ状態かを判別
    し、判別結果と前記状態アクティビティ情報テーブルと
    に基づいて状態ごとに事象解析処理または定型処理を実
    行する実行処理プログラムを生成する実行処理生成手段
    と、 を備えたことを特徴とするプログラム生成装置。
  3. 【請求項3】 前記入力手段は、事象または状態を階層
    化して複数の状態遷移表を統合した一つの状態遷移表を
    入力するものであることを特徴とする請求項1または2
    に記載のプログラム生成装置。
  4. 【請求項4】 前記入力手段は、複数の状態からなる並
    列状態を記述した状態遷移表を入力するものであること
    を特徴とする請求項1または2に記載のプログラム生成
    装置。
  5. 【請求項5】 前記入力手段は、前記事象をその発生形
    式により分類して記述した状態遷移表を入力するもので
    あることを特徴とする請求項1または2に記載のプログ
    ラム生成装置。
  6. 【請求項6】 前記入力手段は、前記遷移先の状態を、
    予め定めた省略値の状態または過去に遷移した状態に基
    づいて定めた状態遷移表を入力するものであることを特
    徴とする請求項1または2に記載のプログラム生成装
    置。
  7. 【請求項7】 前記入力手段は、複数の状態遷移表を配
    列化した一つの状態遷移表であって、その配列数を記述
    した状態遷移表を入力するものであることを特徴とする
    請求項1または2に記載のプログラム生成装置。
  8. 【請求項8】 前記入力手段は、特定の事象の発生また
    は特定の状態への遷移において実行される定型的なアク
    ションを記述した状態遷移表を入力するものであること
    を特徴とする請求項1または2に記載のプログラム生成
    装置。
  9. 【請求項9】 プログラム開発の対象であるシステムの
    取り得る状態と、前記システムの外部又は内部からの刺
    激である事象で特定される複数のセルを有し、各セル
    に、対応する状態下で対応する事象が発生した際に前記
    システムが実行すべきアクション内容または遷移すべき
    遷移先の状態を記述した事象駆動型の状態遷移表に基づ
    いて前記システムで動作するプログラムを生成するプロ
    グラム生成方法において、 前記状態遷移表を入力する入力ステップと、 前記状態遷移表から、前記システムが実行すべきアクシ
    ョン内容が記述されているセルのみを抽出して、前記ア
    クション内容を前記状態ごとに記述したアクションテー
    ブルを生成するアクションテーブル生成ステップと、 前記状態遷移表から、遷移先の状態が記述されているセ
    ルのみを抽出して、前記遷移先の状態を前記状態ごとに
    記述した遷移テーブルを生成する遷移テーブル生成ステ
    ップと、 前記状態遷移表から、各状態に対して存在する事象を記
    述した事象テーブルを生成する事象テーブル生成ステッ
    プと、 事象の発生時に、前記事象テーブルを参照して、各状態
    下における事象の存在を確認し、前記アクションテーブ
    ルと前記遷移テーブルとを参照して、現在の状態下にお
    ける発生した事象に対するセルのアクション内容を実行
    する実行処理プログラムを生成する実行処理生成ステッ
    プと、 を含んでいることを特徴とするプログラム生成方法。
  10. 【請求項10】 プログラム開発の対象であるシステム
    の取り得る状態と、前記システムの外部又は内部からの
    刺激である事象で特定される複数のセルを有し、各セル
    に、前記システムが実行すべきアクション内容または遷
    移すべき遷移先の状態を記述し、各状態で事象の発生を
    監視する状態駆動型の状態遷移表に基づいて前記システ
    ムで動作するプログラムを生成するプログラム生成装置
    において、 前記状態遷移表を入力する入力ステップと、 前記状態遷移表から、各状態ごとに事象解析処理または
    定型処理を記述した状態アクティビティ情報テーブルを
    生成する状態アクティビティ情報テーブル生成ステップ
    と、 前記状態遷移表から、上位の状態である親状態の識別情
    報を列挙して記述した親状態ID情報テーブルを生成す
    る親状態ID情報テーブル生成ステップと、 前記状態遷移表から、親状態の下位の状態であるサブ状
    態の識別情報を列挙して記述したサブ状態ID情報テー
    ブルを生成するサブ状態ID情報テーブル生成ステップ
    と、 前記親状態ID情報テーブルと前記サブ状態ID情報テ
    ーブルとに基づいて各状態が親状態かサブ状態かを判別
    し、判別結果と前記状態アクティビティ情報テーブルと
    に基づいて状態ごとに事象解析処理または定型処理を実
    行する実行処理プログラムを生成する実行処理生成ステ
    ップと、 を含んでいることを特徴とするプログラム生成方法。
  11. 【請求項11】 前記入力ステップは、事象または状態
    を階層化して複数の状態遷移表を統合した一つの状態遷
    移表を入力するものであることを特徴とする請求項9ま
    たは10に記載のプログラム生成方法。
  12. 【請求項12】 前記入力ステップは、複数の状態から
    なる並列状態を記述した状態遷移表を入力するものであ
    ることを特徴とする請求項9または10に記載のプログ
    ラム生成方法。
  13. 【請求項13】 前記入力ステップは、前記事象をその
    発生形式により分類して記述した状態遷移表を入力する
    ものであることを特徴とする請求項9または10に記載
    のプログラム生成方法。
  14. 【請求項14】 前記入力ステップは、前記遷移先の状
    態を、予め定めた省略値の状態または過去に遷移した状
    態に基づいて定めた状態遷移表を入力するものであるこ
    とを特徴とする請求項9または10に記載のプログラム
    生成方法。
  15. 【請求項15】 前記入力ステップは、複数の状態遷移
    表を配列化した一つの状態遷移表であって、その配列数
    を記述した状態遷移表を入力するものであることを特徴
    とする請求項9または10に記載のプログラム生成方
    法。
  16. 【請求項16】 前記入力ステップは、特定の事象の発
    生または特定の状態への遷移において実行される定型的
    なアクションを記述した状態遷移表を入力するものであ
    ることを特徴とする請求項9または10に記載のプログ
    ラム生成方法。
  17. 【請求項17】 請求項9〜16のいずれか一つに記載
    された方法をコンピュータに実行させるプログラム。
JP2001265001A 2001-08-31 2001-08-31 プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム Pending JP2003076543A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001265001A JP2003076543A (ja) 2001-08-31 2001-08-31 プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム
EP02255852A EP1293893A2 (en) 2001-08-31 2002-08-21 State-Transition-Matrix based generation of a computer program
US10/229,102 US20030046660A1 (en) 2001-08-31 2002-08-28 Computer program for generating another computer program based on STM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001265001A JP2003076543A (ja) 2001-08-31 2001-08-31 プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム

Publications (1)

Publication Number Publication Date
JP2003076543A true JP2003076543A (ja) 2003-03-14

Family

ID=19091527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001265001A Pending JP2003076543A (ja) 2001-08-31 2001-08-31 プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム

Country Status (3)

Country Link
US (1) US20030046660A1 (ja)
EP (1) EP1293893A2 (ja)
JP (1) JP2003076543A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362343A (ja) * 2003-06-05 2004-12-24 Internatl Business Mach Corp <Ibm> ソースコード変換装置、ソースコード変換方法、およびプログラム
JP2006268332A (ja) * 2005-03-23 2006-10-05 Kyushu Institute Of Technology 対話情報処理装置及び対話情報処理方法
JP2006285582A (ja) * 2005-03-31 2006-10-19 Canon Inc プログラムコード生成装置、プログラムコード生成方法、及びコンピュータプログラム
JP2007299082A (ja) * 2006-04-28 2007-11-15 Fuji Electric Holdings Co Ltd ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP2010003084A (ja) * 2008-06-19 2010-01-07 Mitsubishi Electric Corp 状態遷移検証装置および状態遷移検証方法
JP2010020555A (ja) * 2008-07-10 2010-01-28 Fuji Soft Inc モデル検査支援装置
JP2016029558A (ja) * 2014-06-20 2016-03-03 アセット・ソチエタ・ア・レスポンサビリタ・リミタータASSET S.r.l. ワークフロー管理システムにおいて実行するためのアプリケーションを開発する方法、及びワークフロー管理システムにおいて実行するためのアプリケーションの生成を支援する装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799001B2 (en) * 2003-11-17 2014-08-05 Nuance Communications, Inc. Method and system for defining standard catch styles for speech application code generation
JP4874440B2 (ja) * 2004-06-29 2012-02-15 株式会社デンソー 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム
JP5163350B2 (ja) * 2008-05-19 2013-03-13 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
CN103052934B (zh) * 2010-06-02 2016-05-18 艾伦智能科技公司 逻辑表
US20150169303A1 (en) * 2013-12-13 2015-06-18 Qualcomm Incorporated Compiler optimization for finite state machines
US20210200758A1 (en) * 2019-12-27 2021-07-01 UiPath, Inc. Edge table representation of processes

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831580A (en) * 1985-07-12 1989-05-16 Nippon Electric Industry Co., Ltd. Program generator
JP3169896B2 (ja) * 1998-07-03 2001-05-28 日本電気株式会社 プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記憶した記憶媒体
US6681383B1 (en) * 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US7020850B2 (en) * 2001-05-02 2006-03-28 The Mathworks, Inc. Event-based temporal logic

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004362343A (ja) * 2003-06-05 2004-12-24 Internatl Business Mach Corp <Ibm> ソースコード変換装置、ソースコード変換方法、およびプログラム
JP4686117B2 (ja) * 2003-06-05 2011-05-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ソースコード変換装置、ソースコード変換方法、およびプログラム
JP2006268332A (ja) * 2005-03-23 2006-10-05 Kyushu Institute Of Technology 対話情報処理装置及び対話情報処理方法
JP4682322B2 (ja) * 2005-03-23 2011-05-11 国立大学法人九州工業大学 対話情報処理装置及び対話情報処理方法
JP2006285582A (ja) * 2005-03-31 2006-10-19 Canon Inc プログラムコード生成装置、プログラムコード生成方法、及びコンピュータプログラム
JP2007299082A (ja) * 2006-04-28 2007-11-15 Fuji Electric Holdings Co Ltd ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP4670724B2 (ja) * 2006-04-28 2011-04-13 富士電機ホールディングス株式会社 ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
JP2010003084A (ja) * 2008-06-19 2010-01-07 Mitsubishi Electric Corp 状態遷移検証装置および状態遷移検証方法
JP2010020555A (ja) * 2008-07-10 2010-01-28 Fuji Soft Inc モデル検査支援装置
JP2016029558A (ja) * 2014-06-20 2016-03-03 アセット・ソチエタ・ア・レスポンサビリタ・リミタータASSET S.r.l. ワークフロー管理システムにおいて実行するためのアプリケーションを開発する方法、及びワークフロー管理システムにおいて実行するためのアプリケーションの生成を支援する装置

Also Published As

Publication number Publication date
US20030046660A1 (en) 2003-03-06
EP1293893A2 (en) 2003-03-19

Similar Documents

Publication Publication Date Title
JP5259714B2 (ja) 実行順序決定装置、実行順序決定プログラム、実行順序決定回路及び情報処理装置
MXPA04006404A (es) Interfases y clases de estructura de automatizacion de interfase del usuario.
JP2003076543A (ja) プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム
CN105786603B (zh) 一种基于分布式的高并发业务处理系统及方法
CN103744734A (zh) 一种任务作业处理方法、装置及系统
CN112738060B (zh) 微服务数据的处理方法、装置、微服务处理平台及介质
US11455173B2 (en) Management of artificial intelligence development platform
EP1372070A1 (en) Vehicle-mounted multimedia device
US9208058B2 (en) Providing directional debugging breakpoints
US20110214092A1 (en) System and Method for Management of User Interactions Using Configurable Listeners in a Data Processing System
CN102473096A (zh) 创建用于计算设备的软件组件的方法、装置以及计算机程序
CN113626095A (zh) 配置中心的切换方法、切换系统、电子设备及存储介质
CN111611040A (zh) 一种低配置车载系统的显示控制方法、系统、介质及终端
US20070038462A1 (en) Overriding default speech processing behavior using a default focus receiver
JP2009245409A (ja) リソース自動構築システム及び自動構築方法並びにそのための管理用端末
JP2008191074A (ja) 出力調停プログラム及び装置
JPH11272382A (ja) コンピュータシステム
JPWO2009131167A1 (ja) マルチプロセッサ制御装置、その方法及びそのプログラム
JP2000163345A (ja) デバイス制御システムおよび情報登録方法、デバイス利用方法、並びにコンピュータプログラムを記録した記録媒体
JP2001318796A (ja) 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム
US20230229402A1 (en) Intelligent and efficient pipeline management
WO2022259497A1 (ja) シナリオ設定装置、シナリオ設定方法及びシナリオ設定プログラム
JP5251197B2 (ja) メッセージ処理方法、メッセージ処理装置、及びプログラム
US6032176A (en) Data-independent type computer system: processing machine, data machine and man-machine interface therein
KR100784476B1 (ko) 웹 애플리케이션 구축 장치 및 그 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050509

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050705