JP2006012017A - 状態にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法,ならびに、この対応情報の生成プログラム、対応情報生成装置、および対応情報生成方法 - Google Patents

状態にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法,ならびに、この対応情報の生成プログラム、対応情報生成装置、および対応情報生成方法 Download PDF

Info

Publication number
JP2006012017A
JP2006012017A JP2004191242A JP2004191242A JP2006012017A JP 2006012017 A JP2006012017 A JP 2006012017A JP 2004191242 A JP2004191242 A JP 2004191242A JP 2004191242 A JP2004191242 A JP 2004191242A JP 2006012017 A JP2006012017 A JP 2006012017A
Authority
JP
Japan
Prior art keywords
state
correspondence information
program
action
exception
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.)
Granted
Application number
JP2004191242A
Other languages
English (en)
Other versions
JP4874440B2 (ja
Inventor
Hitoshi Hoshino
仁 星野
Yasuhiro Yamada
康宏 山田
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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2004191242A priority Critical patent/JP4874440B2/ja
Priority to US11/156,494 priority patent/US7802237B2/en
Publication of JP2006012017A publication Critical patent/JP2006012017A/ja
Application granted granted Critical
Publication of JP4874440B2 publication Critical patent/JP4874440B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 システムの状態とイベントとの組にアクションを割り当てる対応情報に基づいたプログラム生成において、生成されたプログラムの実行時に状態が想定外のものになった場合でも、システムの挙動の不安定化を抑える。
【解決手段】 パーソナルコンピュータは、記憶媒体から状態遷移表を読み出し、その状態遷移表中のイベントを、1イベント毎に選択し、選択したイベント毎に状態を1つずつ選択する。そして、その状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報がこの状態遷移表にexeptionマークとして含まれているか否かに基づいて判定し、その判定結果に基づいて、状態に例外が発生した場合に、状態遷移表において例外状態に割り当てられた状態遷移や処理を実行するためのプログラムを生成する。
【選択図】 図5

Description

本発明は、状態遷移表や状態遷移図等の、状態とイベントとの組にアクションを割り当てる対応情報に基づいたプログラムを生成する技術、および対応情報を生成する技術に関し、特に組込み制御システムに用いて好適である。
従来、組み込み制御システムの分野では、イベント(システム外部からの入力信号の変化やシステム内部で発生した変化)が発生すると、この発生したイベント、およびイベントが発生した時のシステムの状態に対応したアクション(処理や状態間の遷移)が実行されるようなシステム設計が為されている。
このような設計のシステムを実現するため、システムの開発者は、このシステムの設計書として、そのシステムの状態とイベントの組に対するアクションの割り当てについての対応情報をあらかじめ記述することがある。対応情報は、表形式の状態遷移表や、図形式の状態遷移図等で表現される。
開発者は、この対応情報に基づいて、このシステムを実現するためのプログラムを、例えばプログラミング言語Cで作成する。さらに近年は、状態遷移表や状態遷移図の入力を受けると、その内容をプログラミング言語のソースコードに自動的に変換するプログラム生成装置が開発されている(例えば特許文献1参照)。
以下、図1〜図3を用い、従来の対応情報を用いたプログラム生成の一例を概説する。図1は、従来から用いられている状態遷移表の一例である。この対応表において、各行には1つのイベントが対応し、各列には1つの状態が対応している。図1においては、例えば、状態1とイベントE1の組には、状態1から状態2への遷移および処理Aから成るアクションが割り当てられている。
また、この状態遷移表中の状態は、1つの状態が子の状態を含むことができるような階層構造を形成している。例えば、図1においては、状態2は状態2−1および状態2−2を含んでいる。ここで、逆三角形41、42が付された状態は、その状態が属する階層において最初に移行する状態を示している。
図2は、従来から用いられている状態遷移図の一例である。この図中においては、状態は角の丸い長方形で表され、状態間の遷移が矢印線で表され、矢印線に付された文字が、その矢印線の状態遷移が起こる原因となるイベント、およびそのイベントが発生したときに実行される処理を示している。
したがって、ある状態を始点とする矢印線、およびその矢印線に付された文字から、その状態と、その状態において発生することが想定されるイベントが特定でき、またその状態とイベントの組に割り当てられたアクションが特定できる。
また、この状態遷移図においては、ある状態の子の状態は、その状態の中に記載されている。また、黒丸を始点とする矢印線の先にある状態は、その状態が属する階層において最初に移行する状態を示している。
図1の状態遷移表と図2の状態遷移図が示すシステムの振る舞いは同一である。すなわち、これらの図は、
(1)状態1においてイベントE1が発生すると処理Aが実行されて状態2−1に遷移する
(2)状態2−1においてイベントE1が発生すると状態2−2に遷移する
(3)状態2−2においてイベントE1が発生すると処理Bが実行されて状態2−1に遷移する
(4)状態2−2においてイベントE2が発生すると処理Cが実行されて状態1に遷移する
という4種類のアクションを表している。
図3は、図1、図2に示した対応情報に基づいて従来のプログラム生成装置が生成したCソースコードのリストである。このCソースコードは、現在のシステムの状態を記憶媒体から読み出すGetState()関数、および現在発生しているイベントを記憶媒体から読み出すGetEvent()関数によって特定した状態およびイベントの組に基づいて、上記の(1)〜(4)のアクションを実行するような記載となっている。
特開2003−76543号公報
しかし、従来のプログラム生成装置では、システムにおいて想定される状態をまず規定し、それらの状態に対応したアクションを設計書に記述するようになっている。したがって、設計書および生成したプログラムには、設計時に想定していない状態に対するアクションは全く含まれない。
このため、従来のプログラム生成装置で作成されたプログラムは、そのプログラムを実行するシステムの状態を示すデータが何らかの理由で想定外の値に変化してしまうと、システムの挙動が全く予期できないものとなってしまうという不安定性を有しており、自動車などの安全性を重視するシステムに適用することが困難であった。
本発明は上記点に鑑み、システムの状態とイベントとの組にアクションを割り当てる対応情報に基づいたプログラム生成において、生成されたプログラムの実行時に状態が想定外のものになった場合でも、システムの挙動の不安定化を抑えることを目的とする。
上記目的を達成する本発明の第1の特徴は、プログラム生成プログラムが、コンピュータに、「状態に対してアクションを割り当てた対応情報を読み出し、読み出された前記対応情報中の状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報がこの対応情報に含まれているか否かに基づいて判定し、読み出された対応情報に基づいてプログラムAを生成する機能」を実現させることである。
ただし、プログラムAとは、「現在の状態を記憶媒体中の状態情報に基づいて検出し、検出した状態が通常状態に該当するという条件に基づいて、この状態に上記の対応情報が割り当てたアクションを実行し、検出した状態が通常状態のいずれにも該当しないという条件に基づいて、例外状態に対応情報が割り当てたアクションを実行する」という機能をコンピュータに実現させるものである。
このようになっているので、このプログラム生成プログラムを実行するコンピュータは、例外状態と、それが例外状態である旨の情報を含む対応情報を読み出すと、「検出した状態が通常状態のいずれにも該当しない」という条件に基づいて、その例外状態に対応情報が割り当てたアクションを実行するプログラムAを生成する。
したがって、対応情報に基づいたプログラム生成において、生成されたプログラムAの実行時に状態が想定外のものになった場合でも、例外状態に割り当てられたアクションが実行されるようになっているので、システムが予期しない挙動をすることがない。それゆえ、本発明によって、システムの挙動の不安定化を抑えることができる。
なお、ここでは、「判定手段によって通常状態と判定された状態」を単に通常状態といい、「判定手段によって例外状態と判定された状態」を単に例外状態という。
また、プログラム実行プログラムの実行によってコンピュータが読み出す対応情報は、状態とイベントとの組に対してアクションを割り当てており、プログラムAがコンピュータに実現させる機能は、検出した状態が通常状態に該当するという条件に基づいて、この状態および検出したイベントの組に対応情報が割り当てたアクションを実行し、検出した状態が通常状態のいずれにも該当しないという条件に基づいて、例外状態および検出したイベントの組に対応情報が割り当てたアクションを実行し、さらに実行するアクションが状態遷移を含んでいる場合、遷移先の状態を状態情報として記憶媒体に記憶させるものであってもよい。
このようになっていることで、検出した状態が通常状態のいずれにも該当しない場合におけるシステムの挙動について、発生イベントに基づいたよりきめ細かい設定を行うことができる。
また、より具体的には、プログラム生成プログラムによって実現するコンピュータの機能において、読み出しは、状態とイベントとの組に対するアクションの割り当てについての対応情報を、一組毎に読み出すようになっており、判定は、対応情報が一組読み出される毎に、その組に係る状態が例外状態であるか通常状態であるかを判定するようになっており、プログラムAの生成は、読み出された組に係る状態が例外状態と判定される毎に、当該プログラムAの、コンピュータに「検出した状態が通常状態のいずれにも該当しないという条件に基づいて、例外状態に対応情報が割り当てたアクションを実行する」という機能を実現させる部分を生成するようになっていてもよい。
また、例外状態は、検出した状態が通常状態のいずれにも該当しない場合のための状態であるので、対応情報中のアクションにおいて、例外状態への遷移が含まれていると、不都合が発生する可能性がある。そこで、プログラム生成プログラムは、読み出された対応情報において、1つの状態に割り当てられたアクションが、例外状態への状態遷移を含むことに基づいて、警告メッセージを出力するよう、コンピュータを機能させてもよい。
このようになっていることで、例外状態へ遷移する状態が対応情報に含まれることが警告されるので、開発者が例外状態へ遷移する状態を対応情報に含める恐れが低減する。
また、対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっている場合があるので、そのような場合は、生成されるプログラムAは、それを実行するコンピュータが、検出した状態がある通常状態に該当し、かつその該当する通常状態の子の通常状態のいずれにも該当しないという条件に基づいて、その該当する通常状態の子である例外状態に対応情報が割り当てたアクションを実行するようになっていてもよい。
また、プログラム生成プログラムは、それを実行するコンピュータが、読み出された対応情報中の例外状態が子の状態を有することに基づいて、警告メッセージを出力するよう作成されていてもよい。このようになっていることで、開発者が、例外状態の子の状態を対応情報に含める恐れが低減する。
また、プログラム生成プログラムは、それを実行するコンピュータが、読み出された対応情報中の1つの状態に、複数の例外状態が子として含まれていることに基づいて、警告メッセージを出力するよう作成されていてもよい。このようになっていることで、1つの状態の子に複数の例外状態がある状況、すなわち、同一階層に複数の例外状態がある状況、が発生する恐れが低減する。
また、対応情報中の「例外状態である旨の情報」とは、対応情報中の状態の名称に含まれる所定の情報であってもよいし、対応情報に含まれる、例外情報であるか否かを示す所定のデータ項目であってもよい。
また、対応情報は、状態を示す図形および状態遷移を示すこれら図形間の矢印を有する図形情報であり、「例外状態である旨の情報」とは、その図形が所定の形状であるという情報であってもよい。
また、この第1の特徴に係る発明は、このようなプログラム生成プログラムに規定される機能を実現するプログラム生成装置としても、また、このようなプログラム生成プログラムに規定される手順を実施するプログラム生成方法としても、把握することが可能である。
また、本発明の第2の特徴は、ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる機能をコンピュータに実現させる対応情報生成プログラムが、さらに、ユーザによる例外状態およびその例外状態に対応するアクションの設定入力を受け付ける機能、および受け付けた例外状態に受け付けた対応するアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報を、上記のプログラム生成装置に読み出させるために記憶媒体に記憶させる機能を、コンピュータに実現させることである。
このようになっていることで、ユーザの例外状態および対応するアクションの入力に基づいて、その例外状態にそのアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報が記憶媒体に記憶され、上記のプログラム生成装置がこれに基づいて上記のプログラムAを生成する。
したがって、対応情報に基づいたプログラム生成において、生成されたプログラムAの実行時に状態が想定外のものになった場合でも、例外状態に割り当てられたアクションが実行されるようになっているので、システムが予期しない挙動をすることがない。それゆえ、本発明によって、システムの挙動の不安定化を抑えることができる。
また、対応情報生成プログラムは、それを実行するコンピュータが、例外状態への状態遷移を含むアクションの設定入力を受け付けることに基づいて警告メッセージを出力するよう作成されていてもよい。このようになっていることで、例外状態へ遷移する状態が対応情報に含まれることが警告されるので、開発者が例外状態へ遷移する状態を対応情報に含める恐れが低減する。
また、対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっている場合があるので、そのような場合は、対応情報生成プログラムは、受け付けた例外状態がある通常状態の子であり、かつその通常状態の子として他の例外状態が対応情報に含まれていることに基づいて、警告メッセージを出力するよう作成されていてもよい。このようになっていることで、1つの状態の子に複数の例外状態がある状況、すなわち、同一階層に複数の例外状態がある状況、が発生する恐れが低減する。
また、対応情報生成プログラムは、それを実行するコンピュータが、ユーザから、例外状態が子の状態を持つような入力を受けたことに基づいて、警告メッセージを出力するよう作成されていてもよい。このようになっていることで、開発者が、例外状態の子の状態を対応情報に含める恐れが低減する。
また、対応情報生成プログラムは、それを実行するコンピュータが、対応情報に基づく映像を表示装置に表示させるように作成されており、表示させる映像は、状態を示す図形および状態遷移を示すこれら図形間の矢印を有する図形情報であり、状態を示す図形は、通常状態と例外状態とで異なっているようになっていてもよい。このようになっていることで、ユーザにとって通常状態と例外状態との区別が容易になる。
また、対応情報生成プログラムは、それを実行するコンピュータが、対応情報に基づく映像を表示装置に表示させるように作成されており、表示させる映像は、状態とアクションの対応関係を表形式で示すものであり、その表中、例外状態については、それが例外状態であることを示すマークが付されているようになっていてもよい。このようになっていることで、ユーザにとって通常状態と例外状態との区別が容易になる。
また、この第2の特徴に係る発明は、このような対応情報生成プログラムに規定される機能を実現する対応情報生成装置としても、また、このような対応情報生成プログラムに規定される手順を実施する対応情報生成方法としても、把握することが可能である。
また、本発明の第3の特徴は、プログラム生成プログラムが、状態に対してアクションを割り当てた対応情報を読み出し、読み出された対応情報が、状態が例外となった際のアクションの指定を含むことを判定し、読み出された対応情報に基づいてプログラムAを生成することである。
ただし、プログラムAは、「現在の状態を記憶媒体中の状態情報に基づいて検出し、 検出した状態に該当する対応情報中の状態に対応情報が割り当てたアクションを実行し、 検出した状態が対応情報中の状態のいずれにも該当しないという条件に基づいて、対応情報において指定された、状態が例外となった際のアクションを実行する」という機能をコンピュータに実現させるものである。
このようになっているので、このプログラム生成プログラムを実行するコンピュータは、状態が例外となった際のアクションの指定を含む対応情報を読み出すと、「検出した状態が対応情報中の状態のいずれにも該当しない」という条件に基づいて、その例外状態に対応情報が割り当てたアクションを実行するプログラムAを生成する。
したがって、対応情報に基づいたプログラム生成において、生成されたプログラムAの実行時に状態が想定外のものになった場合でも、対応情報において指定された、状態が例外となった際のアクションが実行されるようになっているので、システムが予期しない挙動をすることがない。それゆえ、本発明によって、システムの挙動の不安定化を抑えることができる。
また、対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっている場合があるので、そのような場合は、生成されるプログラムAは、それを実行するコンピュータが、検出した状態が対応情報中のある状態に該当し、かつその該当する状態の子の状態のいずれにも該当しないという条件に基づいて、対応情報において、その該当する状態の子から成る状態階層に関連づけて指定された、状態が例外となった際のアクションを実行するようになっていてもよい。
また、この第3の特徴に係る発明は、このようなプログラム生成プログラムに規定される機能を実現するプログラム生成装置としても、また、このようなプログラム生成プログラムに規定される手順を実施するプログラム生成方法としても、把握することが可能である。
また、本発明の第4の特徴は、ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる機能をコンピュータに実現させる対応情報生成プログラムが、「ユーザによる状態が例外となった際のアクションの指定の設定入力を受け付け、受け付けた指定を含む対応情報を、上記のプログラム生成装置に読み出させるために記憶媒体に記憶させる」機能をコンピュータに実現させることである。
このようになっていることで、ユーザによる状態が例外となった際のアクションの指定の設定入力に基づいて、その指定の情報を含む対応情報が記憶媒体に記憶され、上記のプログラム生成装置がこれに基づいて上記のプログラムAを生成する。
したがって、対応情報に基づいたプログラム生成において、生成されたプログラムAの実行時に状態が想定外のものになった場合でも、例外状態に割り当てられたアクションが実行されるようになっているので、システムが予期しない挙動をすることがない。それゆえ、本発明によって、システムの挙動の不安定化を抑えることができる。
また、この第4の特徴に係る発明は、このような対応情報生成プログラムに規定される機能を実現する対応情報生成装置としても、また、このような対応情報生成プログラムに規定される手順を実施する対応情報生成方法としても、把握することが可能である。
(第1実施形態)
以下、本発明の第1実施形態について説明する。図4に、本実施形態に係るプログラム生成装置と対応情報生成装置とを兼ねるパーソナルコンピュータ1の構成を示す。このパーソナルコンピュータ1は、ディスプレイ11、入力装置12、RAM13、ROM14、HDD(ハードディスクドライブ)15、CPU(演算装置に相当する)16等から構成される。
ディスプレイ11は、CPU16(コンピュータに相当する)から受けた映像信号を、ユーザ(開発者)に対して映像として表示する。
入力装置12は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU16に出力する。
RAM13は読み出し、書き込み可能な揮発性記憶媒体であり、ROM14は読み出し専用の不揮発性記憶媒体であり、HDD15は読み出し、書き込み可能な不揮発性記憶媒体である。ROM14、HDD15には、CPU16が読み出して実行するプログラム等があらかじめ記憶されている。またHDD15には、後述するモデルが記憶されている。
RAM13は、CPU16がROM14、HDD15に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、および作業用のデータを一時的に保存するための記憶領域として用いられる。
CPU16は、パーソナルコンピュータ1に電源が投入されることによって起動すると、ROM14から所定のブートプログラムを読み出して実行し、このブートプログラムに規定されるオペレーティングシステム(以下OSと記す)その他のプログラムをHDD15から読み出して実行することにより、起動処理を行う。起動処理以後、電源が遮断されるまで、CPU16は、入力装置12からの信号、OSによって予め定められたスケジュール等に基づいて、HDD15に記録されている各種プログラムを当該OS上のプロセスとして実行する。また、上記の起動処理およびプロセスにおいて、CPU16は必要に応じて入力装置12から信号の入力を受け付け、またディスプレイ11に映像信号を出力し、またRAM13、HDD15に対してデータの読み出し/書き込みの制御を行う。
本実施形態においては、CPU16は、プログラム生成プログラムを実行するようになっている。このプログラム生成プログラムは、RAM13またはHDD15に記憶されている対応情報を参照するようになっている。
対応情報とは、状態とイベントの組に対応するアクションの割り当てを示す情報をいう。対応情報は、ユーザがテキストエディタ、表計算アプリケーション等を用いて別途あらかじめ作成しておいてもよい。また、CPU16は、対応情報生成プログラムを実行することで、ユーザによる状態、イベントおよびアクションの入力に基づいて、状態とイベントの組に、その組に対応するアクションを割り当て、その割り当てを示す対応情報を、HDD15に記憶させ、かつユーザに表示する機能をCPU16に実現させるようになっていてもよい。
対応情報の例としては、状態遷移表、状態遷移図等がある。プログラム生成プログラムは、対応情報を読み出し、その対応情報中の状態が例外状態であるか通常状態であるかを判定し、その判定結果に基づいて、以下の機能(1)〜(3)をコンピュータに実現させるソースコードを生成するためのプログラムである。
機能(1): 現在の状態を記憶媒体中の状態情報に基づいて検出する
機能(2): イベントの発生を検出する
機能(3): 検出した状態およびイベントに割り当てられたアクションを実行する
ただし、機能(3)は、より具体的には、「検出した状態が通常状態に該当する」という条件に基づいて、この状態および検出したイベントの組に対応情報が割り当てたアクションを実行し、「検出した状態が子を有さない通常状態のいずれにも該当しない」という条件に基づいて、例外状態および検出したイベントの組に対応情報が割り当てたアクションを実行することを特徴とする。
なお、ソースコードが実現させる機能の記載において、通常状態とは、プログラム生成プログラム100の実行によって通常状態と判定された状態のことである。また、例外状態とは、プログラム生成プログラム100の実行によって例外状態と判定された状態のことである。
ここで、状態とは、このソースコードからコンパイルによって生成されるオブジェクトコードを実行するコンピュータシステムにおける、当該コードの実行状態をいう。本実施形態においては、1つの状態は、複数の状態を子として含むことができるようになっている。またそれら子状態は、更に複数の状態を子として含むことができるようになっている。ここで、1つの状態の子の状態は、同一の状態階層に属する状態であるという。また、どの状態の子でもない状態は、最上位の状態階層に属する状態であるという。
このように、状態は階層構造となることができ、状態の親子関係は任意の階層だけ多重させることができる。
また、コードの実行が想定通りであれば、実行状態は必ず、子を有さない状態(以降末端状態と記す)のいずれかに該当するようになっている。そして、本実施形態においては、現在の実行状態は、その実行状態に該当する末端状態を含む全ての状態(親状態、親状態の親状態等)に該当するものとする。
また、本実施形態においては、ある状態の子状態とは、その状態が直下に含む状態のみをいい、その直下の状態にさらに含まれる状態は除外される。例えば、状態αが子として状態β、状態γを含んでおり、状態βが更に子として状態δ、状態εを有している場合、
状態αにとっては、状態δ、状態εは、子状態ではなく孫状態である。
また、イベントとは、その実行におけるコンピュータシステム外部からの入力の変化やコンピュータシステム内部で発生した変化等、コンピュータシステムに対する刺激をいう。また、アクションとは、そのプログラムによって規定された演算処理、入出力処理、および状態間の遷移の処理等をいう。
以下、このようなプログラム生成プログラムを実行するCPU16の作動について詳細に説明する。まず、図5に、本実施形態においてCPU16がソースコードを生成する際に参照する対応情報の一例を示す。
この図に例示される対応情報は、表形式の状態遷移表である。この状態遷移表は、3行6列構成のセルから成り、最上行を除く各行が1つのイベントについてのアクションの情報を示している。また、最左列を除く各行が末端状態の1つについてのアクションの情報を示している。したがって、この状態遷移表においては、ある行のある列に該当するセルは、その列に対応する末端状態にシステムがあるときに、その行に対応するイベントが発生した場合のアクションを表すことになる。
なお、各行のイベントの名称および識別番号は、その行の最左列のセルに表され、各列の状態の名称および識別番号は、その列の最上行のセルに表される。例えば、2行目は、名称がE1、識別番号が0のイベントについての行であり、4列目は、名称が状態2−2、識別番号が1−1の状態についての行である。また、その末端状態の列の最上行には、その状態を含む状態全ての名称および識別番号が、上から階層順に格納されるようになっている。
ここで状態の識別番号の付与規則について説明する。まず、最上位の階層に属する状態の識別番号は、1つの数字である。そして、それ以外の状態の識別番号は、親状態の識別番号に1つのハイフンと1つの階層内番号を続けて付加したものとなっている。階層内番号とは、同じ階層中の状態間で同じにならないように割り当てられた数字である。
例えば、図5の状態遷移表においては、状態2の識別番号は数字の1であり、状態2−2の番号は、状態2の識別番号にハイフンを付し、さらに自己の階層内番号として1を付した1−1となっている。
以上のようなデータ構造により、状態遷移表は、末端状態およびイベントの組のそれぞれに、一種類のアクションを割り当てることになる。
また、一行目の最左端を除く各セルには、defaultマークおよびexceptionマークの有無の情報を示すことができる。defaultマークがあるということは、そのセルに対応する状態が始状態であることを表している。exceptionマークがあるということは、そのセルに対応する状態が例外状態であることを表している。したがって、このdefaultマーク、exceptionマークのための項目は、状態が例外情報であるか否かを示す所定のデータ項目である。
なお、この図5の例においては、状態遷移表の各列は、末端状態に割り当てられたアクションを表すようになっているが、状態遷移表は、末端以外の状態についての列を有していてもよい。そして、そのような末端以外の状態の列には、その列に対応する状態にシステムがあるときに、その行に対応するイベントが発生した場合のアクションを表すようになっていてもよい。
次に、このような状態遷移表から、その状態遷移表に規定された機能をコンピュータに実現させるプログラム生成プログラムについて説明する。図6〜図9に、このプログラム生成プログラム100のフローチャートを示す。また、プログラム生成プログラム100が実行されることで、CPU16によって図5の対応表から生成されるCソースコードを図10に示す。なお、図10のCソースコードの各行の左端には、説明の便宜のために、実際にはない行番号を付してある。
CPU16は、ユーザによる入力装置12を用いた所定の起動操作を検出することにより、このプログラム生成プログラム100の実行を開始する。
CPU16は、まずステップ110で、全体の前処理を行う。例えば、図5の状態遷移表の場合には、生成するCソースコード等のためのRAM13上の作業領域の確保、図10の01行目〜07行目、および69行目のコードの生成等を行う。01行目〜03行目、および69行目のコードは、図10のCソースコード全体を1つの関数として表現するための文であり、03行目および69行目の中括弧で挟まれた領域が、この関数の処理内容となる。
また、04、05行目は、現在の状態を記憶する変数st、st2の型宣言文である。また、06行目は、発生するイベントを記憶する変数evの型宣言文である。また、07行目は、GetEvent関数を呼び出し、その戻り値を変数evに代入することで、記憶媒体中の発生したイベントの情報を参照するための文である。なお、GetEvent関数は、呼び出されることで、前回呼び出されて以降発生したイベントの識別番号を戻り値として返すように外部で定義されている。
なお、01行目〜07行目の内容は、参照する状態遷移表の内容に基づいて、後述する後処理で変更が加えられるようになっていてもよい。
続いてステップ120で、RAM13またはHDD15中の状態遷移表を読み出し、その状態遷移表中の最初のイベント、すなわち2行目のイベントを選択する。例えば、図5においては、イベントE1に相当する。
続いてステップ130で、上述したステップ120の処理または後述するステップ180の処理の結果現在イベントを選択しているか否かを判定する。選択していれば続いてステップ140を実行し、選択していなければ続いてステップ190を実行する。
ステップ140では、選択したイベントに対する前処理のコードを生成する。具体的には、当該選択したイベントに割り当てられたアクションが実行される条件を示す文を生成する。例えば、図5の状態遷移表の場合には、イベントE1に対応する08行目のコメント文および09行目のif文、イベントE2に対応する38行目のコメント文および39行目のif文が当該コードに相当する。なお、09行目のif文中の評価式(ev && EventE1)は、発生したイベントの1つにイベントE1がある場合にのみ真となる。また、39行目の評価式(ev && EventE2)は、発生したイベントの1つにイベントE2がある場合にのみ真となる。
続いてステップ150では、状態階層を最上位に設定する。すなわち、RAM13中の設定状態階層を指定する階層変数に、最上位の状態階層、すなわち、親を有さない状態から成る状態階層の指定を代入する。なお、階層変数には、その状態階層を特定する情報として、その状態階層の状態の親状態の識別番号が含まれる。これは、その状態階層がどの状態の子階層であるかの情報である。ただし、最上位の状態階層の場合は、階層変数には、その状態階層がどの状態の子階層でもない旨の情報が含まれる。
続いてステップ160では、選択イベント、すなわちステップ120またはステップ180で選択されたイベント、についての各状態のための処理を行うためのサブルーチン200を呼び出す。この処理によって、当該選択されたイベントと各状態との各組に割り当てられたアクションが、そのイベントがその状態のときに発生した場合のアクションの実行文として、ステップ150で生成された前処理用の文の後に追加される。このサブルーチン200の処理については、後述する。
続いてステップ170で、選択イベントに対する後処理のコードを生成する。具体的には、当該選択したイベントに割り当てられたアクションが記述される範囲の終わりを示す文を、ステップ160で生成されたコードの後に生成する。例えば、図5の状態遷移表の場合には、37行目および68行目の、ifブロックの終了を示す中括弧が、当該コードに相当する。
続いてステップ180では、状態遷移表中の次のイベントを選択する。次のイベントとは、状態遷移表の各行に対応するイベントのうち、プログラム生成プログラム100の実行開始以来まだ選択されていないものを1つ選択することに相当する。プログラム生成プログラム100の実行開始以来まだ選択されていないイベントが1つもなければ、何も選択しない。ステップ180の後、続いてステップ130を実行する。
ステップ130でイベントが選択されていないと判定された場合に続いて実行されるステップ190では、全体の後処理を行う。例えば、図5の状態遷移表においては、上記の01〜07行の内容を、読み出した状態遷移表に基づいて変更する。
次に、サブルーチン200の処理について詳述する。図6に、このサブルーチン200のフローチャートを示す。
CPU16は、このサブルーチン200の実行を開始すると、まずステップ210で、設定された状態階層に対する前処理を行う。設定された状態階層とは、プログラム生成プログラム100のステップ150または後述するステップ430で階層変数として設定された、この各状態用サブルーチンに渡す引数としての状態階層である。
ここでいう前処理とは、具体的には、現在の状態が、その状態階層中のどの状態に該当するかを、記憶媒体中の状態情報に基づいて特定するための文、およびその状態階層における各状態において選択イベントが発生したときのアクションの実行文を列挙するための範囲の始まりを示す文を生成することをいう。文の生成位置は、このサブルーチン200の呼び出し前に生成されたコード、すなわち、ステップ140における前処理のコードまたは後述するステップ410における前処理のコード、の直後である。
例えば、図5の状態遷移表の場合には、10行目、17行目、40行目および48行目の代入文、ならびに11行目、18行目、41行目および48行目のswitch文が、当該コードに相当する。
上記の10行目、17行目および40行目の代入文は、記憶媒体に記憶された現在の状態情報を読み出すGetState()関数を呼び出し、その戻り値を状態用の変数に代入する文である。
ここで、GetState関数について説明する。GetState関数は、呼び出されることで、記憶媒体に記憶されている状態情報を読み出し、呼び出し時に渡された引数に基づいて、状態情報の一部を戻り値として返すように外部で定義されている。なお、後述する通り、状態情報は、実行状態が該当する末端状態の識別番号となっている。
具体的には、GetState関数は、−1を第2引数として呼び出されることで、読み出した状態情報中の、ハイフンを区切りとした最初の数字部分、すなわち、最上位の状態階層において実行状態に該当する状態の識別番号を戻り値として返す。そして、GetState関数は、1を第2引数として呼び出されることで、読み出した状態情報中の、ハイフンを区切りとした2番目の数字部分、すなわち、最上位の状態階層の子階層において実行状態に該当する状態の識別番号を戻り値として返す。このようになっていることで、GetState関数は、現在の実行状態が、その状態階層中のどの状態に該当するかを、状態情報に基づいて特定することができる。
続いてステップ220で、設定された状態階層で最初の状態を選択する。なお、ある状態がどの状態階層に属するかは、その状態が状態階層変数に含まれる識別番号に該当する状態の子状態であるか否かを、状態遷移表に基づいて判定する。
続いてステップ230で、ステップ220、または後述するステップ270で選択された状態があるか否かを判定する。あれば続いてステップ240を実行し、なければ続いてステップ280を実行する。
ステップ240では、選択された状態が例外状態であるか否かを、状態遷移表の当該状態の列の情報に基づいて判定する。具体的には、状態遷移表の当該状態の列中のexceptionマークがあることに基づいて、選択された状態が例外状態であることを判定する。なお、例外状態の名称は、特定の文字列(例えば“例外”)を含むように記載すると取り決められている場合、状態遷移表の当該状態の列中の状態の名称に、その特定の文字列が含まれることに基づいて、選択された状態が例外状態であると判定してもよい。例外状態である場合、続いてステップ250の処理を実行し、例外状態でない場合すなわち通常状態である場合、続いてステップ260の処理を実行する。
ステップ250では、選択された状態についての例外状態のコードを、ステップ210で生成した前処理用のコードの後に、生成する。例外状態のコードとは、「検出した状態が子を有さない通常状態のいずれにも該当しない」という条件に基づいて、例外状態および検出したイベントの組に状態遷移表が割り当てたアクションを実行する機能を記述するコードである。この例外状態のコード生成の処理については後述する。
ステップ260では、選択された状態についての通常状態のコードを、ステップ210で生成した前処理用のコードの後に、生成する。通常状態のコードとは、「検出した状態が通常状態に該当する」という条件に基づいて、この状態および検出したイベントの組に状態遷移表が割り当てたアクションを実行する機能を記述するコードである。なお、条件としては、「検出した状態が子を有さない通常状態に該当する」であってもよい。この通常状態のコード生成の処理については後述する。
ステップ250、260に続いては、ステップ270で、状態遷移表に基づいて、設定された状態階層中の次の状態を選択する。次の状態とは、設定された状態階層の状態のうち、今回のサブルーチン200の実行開始以来まだ選択されていないものを1つ選択することに相当する。今回のサブルーチン200の実行開始以来まだ選択されていないイベントが1つもなければ、何も選択しない。ステップ270の後、続いてステップ230を実行する。
ステップ230で状態が選択されていないと判定された場合に続いて実行されるステップ280では、設定された状態階層全体の後処理を行う。ここでいう後処理とは、具体的には、現在のその状態階層についての状態を特定するための文、およびその状態階層における各状態において選択イベントが発生したときのアクションの実行文を列挙するための範囲の終わりを示すコードを生成することをいう。例えば、図5の状態遷移表の場合には図10のCソースコードの30行目、36行目、61行目および67行目の中括弧が、当該コードに相当する。
ステップ280の後、サブルーチン200の処理が終了し、処理はこのサブルーチン200の呼び出し元の終了時点、すなわちステップ170の開始時点または後述するステップ450の開始時点に戻る。
続いて、ステップ250の例外状態コード生成処理について詳述する。図8にこの処理の詳細なフローチャートを示す。
まずステップ310で、現在設定された状態階層で例外状態のコードが既に生成済みか否かを判定する。生成済みの場合、現在の状態階層に例外状態が複数存在することになる。そこでこの場合、続いてステップ370で例外状態が複数存在する旨の警告メッセージをディスプレイ11およびHDD15に出力した上でステップ250の処理を終了する。生成済みでない場合、続いてステップ320の処理を実行する。
ステップ320では、現在選択された例外状態が子状態を有しているか否かを、状態遷移表に基づいて判定する。子状態が存在する場合、続いてステップ370で例外状態の子状態が存在する旨の警告メッセージをディスプレイ11およびHDD15に出力した上でステップ250の処理を終了する。子状態が存在しない場合、続いてステップ330を実行する。
ステップ330では、例外状態用のコードとして、「検出した状態が設定された状態階層のどの通常状態にも該当しない」という条件に基づいて、この例外状態および検出したイベントの組に対応情報が割り当てたアクションを実行するためのコードの前処理部分を、直前に生成されたコードのうしろに生成する。
具体的には、「検出した状態が設定された状態階層のどの通常状態にも該当しない」という条件文、および、その条件文の条件が満たされたときに実行される文の範囲の開始位置を示す文を生成する。例えば、図5の状態遷移図の場合、図10の26行目、32行目、57行目および63行目のdefault:文が、当該コードに相当する。このdefault文は、上述したswitch文およびcase文と対になって記述され、switch文の引数に指定された変数が、case文の指定する値のいずれにも合致しない場合、そのdefault:文から対応するbreak文までの範囲の文を実行する機能を実現するようになっている。
ここで、「検出した状態が設定された状態階層のどの通常状態にも該当しない」ことは、その設定された状態階層についての状態の変数、例えば図10においては変数stまたはst2が、case文が指定する値のいずれにも合致しないことに相当する。
ステップ340では、例外状態に定義された処理のコードを生成する。すなわち、この例外状態および選択されたイベントの組に状態遷移表が割り当てたアクションを実行するためのコードを、ステップ330で生成した処理の後に生成する。例えば、図5の状態遷移図の場合、図10の27〜28行目、33〜34行目、54〜55行目および68〜69行目のAction()関数およびSetState()関数の呼び出し文が、当該コードに相当する。なおここで、Action()関数はその引数に記載された処理を実行するように、外部で定義された関数である。また、SetState()関数は、GetState()関数によって参照できるRAM等の記憶媒体中の状態情報を示す値を、その引数に記載された値に書き換えるように、外部で定義された関数である。ここで、SetState()関数に渡される引数は、当該アクションが含む状態遷移の遷移先の識別番号である。
ステップ350では、この例外状態から他の例外状態への遷移があるか否かを判定する。これは、直前のステップ340によって生成されたコード中に、SetState()関数の呼び出し文があり、その引数の示す状態が例外状態である旨の情報が状態遷移図中にあるか否かで判定する。例外状態への遷移がある場合、続いてステッ370で、例外状態への遷移がある旨の警告メッセージをディスプレイ11およびHDD15に出力した上でステップ250の処理を終了する。例外状態への遷移がない場合、続いてステップ360の処理を実行する。
ステップ360では、例外状態用のコードとして、「検出した状態が設定された状態階層のどの通常状態にも該当しない」という条件に基づいて、この例外状態および検出したイベントの組に対応情報が割り当てたアクションを実行するためのコードの後処理部分を生成する。
具体的には、「検出した状態が設定された状態階層のどの状態とも合致しない」という条件が満たされたときに実行される文の範囲の終了位置を示す文を、ステップ340で生成したコードの後に、生成する。例えば、図5の状態遷移図の場合、図10の29行目、35行目、60行目および66行目のbreak文が、当該コードに相当する。
ステップ360の後、ステップ250の処理は終了し、続いて上述したステップ270が実行される。
続いて、ステップ260の通常状態のコード生成処理の詳細について説明する。この通常状態のコード生成処理の詳細なフローチャートを図9に示す。
まずステップ410で、選択された通常状態用の前処理コードを、直前に生成されたコードのうしろに生成する。具体的には「検出した状態が当該通常状態に該当する」という条件文、および、その条件文の条件が満たされたときに実行される文の範囲の開始位置を示す文を生成する。例えば、図5の状態遷移図の場合、図10の12行目、16行目、19行目、22行目、42行目、46行目、49行目および53行目のcase:文が、当該コードに相当する。
続いてステップ420では、状態遷移表に基づいて、選択された状態に子状態が存在するか否かを判定する。子状態が存在する場合、続いてステップ430を実行し、子状態が存在しない場合、すなわち選択された状態が末端状態の場合、続いてステップ460の処理を実行する。
ステップ430では、状態の階層を子状態の階層に設定する。具体的には、階層変数を、ステップ420で存在するとした子状態の階層を示す値に設定する。
続いてステップ440では、選択イベントに対する各状態の処理、すなわち図7に詳細にフローチャートとして示したサブルーチン200の処理を、再起的に呼び出して実行する。このようにすることで、処理が続いてステップ450に戻るときには、子状態以下の階層についてのコード生成が終了している。すなわち、このステップ260の開始時における選択状態についてのコードの内に、入れ子状に、子状態以下の階層についてのコードが追加される。
続いてステップ450では、状態階層を元に戻す。すなわち、階層変数を、ステップ430で変更される前の値に戻す。
ステップ450の後、続いてステップ460を実行する。
ステップ460では、選択状態に定義された処理のコードを生成する。すなわち、この状態および選択されたイベントの組に状態遷移表が割り当てたアクションを実行するためのコードを、ステップ410で生成した処理の後に生成する。例えば、図5の状態遷移図の場合、図10の13〜14行目、20行目、23〜24行目および54〜55行目のAction()関数およびSetState()関数の呼び出し文が、当該コードに相当する。
続いてステップ470では、選択された通常状態から例外状態への遷移があるか否かを判定する。これは、直前のステップ460によって生成されたコード中に、SetState()関数の呼び出し文があり、その引数の示す状態が例外状態である旨の情報が状態遷移図中にあるか否かで判定する。例外状態への遷移がある場合、続いてステッ490で、例外状態への遷移がある旨の警告メッセージをディスプレイ11およびHDD15に出力した上でステップ260の処理を終了する。例外状態への遷移がない場合、続いてステップ480の処理を実行する。
ステップ480では、選択された状態の後処理のコードを生成する。具体的には、「検出した状態が選択された通常状態に該当する」という条件が満たされたときに実行される文の範囲の終了位置を示す文を、ステップ460で生成したコードの後に、生成する。例えば、図5の状態遷移図の場合、図10の15行目、21行目、25行目、45行目、52行目および56行目のbreak文が、当該コードに相当する。
ステップ480の後、ステップ260の処理は終了し、続いて上述したステップ270が実行される。
以上のようなプログラム生成プログラム100をCPU16が実行することで、パーソナルコンピュータ1は、RAM13またはHDD15から状態遷移表を読み出す(ステップ120参照)。そして、その状態遷移表中のイベントを、ステップ130〜180を繰り返すことで1イベント毎に選択する。そして、選択したイベント毎にステップ230〜270を繰り返すことで、ある状態階層について、当該イベントと状態を1状態毎に選択する。そして、その状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報がこの対応情報に含まれているか否かに基づいて判定し(ステップ240参照)、読み出された対応情報に基づいて上記の(1)〜(3)の機能を有するCソースコードを生成する(ステップ250、260参照)。そして、通常状態が子を有する場合は、ステップ440で、ステップ210〜280を再帰的に実行することで、最上位の階層から末端の階層まで全ての階層の状態について、上記の判定およびCソースコードの生成が行われる。
また、ステップ210〜280が再帰的に実行されることで、親子関係にある通常状態についてのCソースコードは入れ子状に生成される。したがって、ある設定された階層の例外状態について生成されるコードにおいて、「検出した状態がその状態階層のどの通常状態にも該当しない」ことを判定する部分は、その親の階層の通常状態のコードにおいて、「検出した状態がその状態階層の通常状態に該当する」という条件が満たされた場合にのみ実行されるようになる。したがって、「検出した状態が設定された状態階層のどの通常状態にも該当しない」という条件は、その設定された状態階層が最上位のものでない限り、「検出した状態がある通常状態に該当し、検出した状態がその通常状態の子の通常状態のいずれにも該当しない」という条件と同等である。
ここで、図10のCソースコードにおいては、現在の状態を記憶媒体中の状態情報に基づいて検出する機能(1)は、GetState()関数を呼び出す部分によって実現される。そして、 イベントの発生を検出する機能(2)は、GetEvent()関数を呼び出す部分によって実現される。また、検出した状態およびイベントに割り当てられたアクションを実行する機能(3)は、case文とbreak文、またはdefault文とbreak文に挟まれたAction()関数およびSetState()関数を呼び出す部分によって実現される。
そして、機能(3)のうち、「検出した状態が通常状態に該当する」という条件に基づいて、この状態および検出したイベントの組に対応情報が割り当てたアクションを実行する機能は、case文とbreak文に挟まれたAction()関数およびSetState()関数を呼び出す部分によって実現される。
そして、機能(3)のうち、「検出した状態が子を有さない通常状態のいずれにも該当しない」という条件に基づいて、例外状態および検出したイベントの組に対応情報が割り当てたアクションを実行する機能は、default文とbreak文に挟まれたAction()関数およびSetState()関数を呼び出す部分によって実現される。
なお、「検出した状態が子を有さない通常状態のいずれにも該当しない」という条件が満たされる場合は、具体的には、「検出した状態が状態階層の通常状態のいずれにも該当しない」という条件が満たされる場合と、「検出した状態がある通常状態に該当し、かつ、検出した状態が、その通常状態の子階層において通常状態のいずれにも該当しない」という条件が満たさせる場合の2に分かれる。
そして、「検出した状態が状態階層の通常状態のいずれにも該当しない」という条件が満たされる場合は、最上位の状態階層に属する例外状態に割り当てられたアクションが実行される。また、「検出した状態がある通常状態に該当し、かつ、検出した状態が、その通常状態の子階層において通常状態のいずれにも該当しない」という条件が満たさせる場合は、その該当する通常状態の子階層に属する例外状態に割り当てられたアクションが実行される。
このようになっているので、対応情報に基づいたプログラム生成において、生成されたプログラムの実行時に状態が想定外のものになった場合でも、例外状態に割り当てられたアクションが実行されるようになっているので、システムが予期しない挙動をすることがない。それゆえ、本発明によって、システムの挙動の不安定化を抑えることができる。
また、例外状態にもイベント毎にアクションが割り当てられているので、検出した状態が通常状態のいずれにも該当しない場合におけるシステムの挙動について、発生イベントに基づいたよりきめ細かい設定を行うことができる。
また、例外状態は、検出した状態が末端の通常状態のいずれにも該当しない場合のため、すなわち状態が想定外となってしまった場合のための状態である。したがって、対応情報中のアクションにおいて、例外状態への遷移が含まれていると、不都合が発生する可能性がある。本実施形態のパーソナルコンピュータ1は、プログラム生成プログラム100のステップ350とステップ370の組、およびステップ470とステップ490の組は、読み出された対応情報において、1つの状態に割り当てられたアクションが、例外状態への状態遷移を含むことに基づいて、警告メッセージを出力するようになっているので、例外状態へ遷移する状態が対応情報に含まれることが警告され、開発者が例外状態へ遷移する状態を対応情報に含める恐れが低減する。
また、プログラム生成プログラム100を実行することで、パーソナルコンピュータ1は、読み出された対応情報中の例外状態が子の状態を有することに基づいて、警告メッセージを出力するようになっている(ステップ320、ステップ370参照)。このようになっていることで、開発者が、間違って例外状態の子の状態を対応情報に含める恐れが低減する。
また、プログラム生成プログラム100を実行することで、パーソナルコンピュータ1は、読み出された対応情報中の1つの状態に、複数の例外状態が子として含まれていることに基づいて、警告メッセージを出力するよう作成されている(ステップ310、ステップ370参照)。このようになっていることで、1つの状態の子に複数の例外状態がある状況、すなわち、同一階層に複数の例外状態がある状況が発生する恐れが低減する。
なお、本実施形態においては、プログラム生成プログラム100が読み出す対応情報としては、図11に示すような状態遷移図であってもよい。
この図11の状態遷移図は、図5に示した状態遷移表と同等の内容を表している。したがって、図11の状態遷移図から生成されるCソースコードは、図5の状態遷移表と同じく、図10のようになる。
状態遷移図は、領域を画定する図形(以下領域図形と記す)と、その領域図形間を繋ぐ矢印線を有している。1つの領域図形が1つの状態に相当し、矢印線が状態間の遷移を示している。図11においては、丸みのある長方形が通常状態に相当し、二重丸が例外状態に相当する。
また、状態が親と子の関係にあるとき、親側の状態の領域図形は、子側の状態の領域図形を直接含むようになっている。したがって、ある階層に属する複数の状態の領域図形は、同じ親状態の領域図形に直接含まれる。また、どの領域図形にも含まれない領域図形は、最上位の階層の状態に対応する。図11においては、例えば、領域図形31に相当する状態2は、領域図形32に相当する状態2−1、領域図形33に相当する状態2−2を子として含んでいる。
また、通常状態の領域図形には、その通常状態の名称および識別番号が表示されるようになっている。また、各矢印線には、その矢印線に相当する状態遷移の起こる原因となるイベントの名称、およびその状態遷移と共に実行される処理が記載される。図11においては、例えば、矢印34は、状態1においてイベントE1が発生すると、処理Aと共に状態1から状態2への状態遷移が実行されることを示している。また矢印34は、状態2−2においてイベントE2が発生すると、処理Cと共に状態2−2から状態1への状態遷移が実行されることを示している。また矢印36は、状態2−1においてイベントE1が発生すると、状態2−1から状態2−2への状態遷移が実行されることを示している。
また、黒丸の図形から矢印線で繋がれた先の状態が、その状態階層において最初に遷移する先の状態である。
なお、例外状態は、通常状態と区別された特別な図形として表現してもよいが、通常状態と同じ領域図形を用いて表現してもよい。この場合は、例外状態の名称には、所定の文字列を含めるようにする等の取り決めをしておけば、どの状態が例外状態であるかを特定することができる。この場合は、例外状態の名称が、それが例外情報である旨の情報となる。このような場合、従来から用いられている状態遷移図作成プログラムを用いて例外状態を表現することが可能となる。
なお、状態遷移図は、RAM13またはHDD15に記憶されるときには、状態毎のエントリからなるデータとなり、各エントリは、その状態の階層、その状態の親状態、その状態の子状態、状態の名称および識別番号、状態の図形を示す情報、状態に定義されたイベント、そのイベントに対応するアクション(処理および状態遷移)の情報を有する。
なお、状態遷移図においては、1つの状態は1つの領域図形として表され、同じイベントが複数の矢印線として表され、あるイベントに相当する矢印線が必ずしも全ての状態から始まっていないという特徴を有している。
したがって、プログラム生成プログラム100のように、まずイベントを選択し、次にそのイベント毎に状態階層を1つずつ選択し、その後にその状態階層中の状態を1つずつ選択し、それら選択されたイベントと状態の組に対するCソースコードを生成するようになっている、いわゆるイベントドリブン型のプログラム以外にも、まず状態階層を選択し、次にその状態階層中の状態を1つずつ選択し、その後にその状態において定義されたイベントを1つずつ選択し、それら選択されたイベントと状態の組に対するCソースコードを生成するようになっているような、いわゆるステートドリブン型のプログラム生成プログラムをCPU16が実行することで、状態遷移図からCソースコードを生成するようになっていてもよい。
(第2実施形態)
次に、本発明の第2実施形態について説明する。本実施形態が第1実施形態と異なるのは、第1実施形態において示した、ユーザの状態およびイベントの入力を受け付け、その入力に基づいて、状態とイベントの組に、その組に対応するアクションを割り当て、その割り当てを示す対応情報を、HDD15に記憶させ、かつユーザに表示する機能をCPU16に実現させる対応情報生成プログラムが、下記(A)〜(D)等の機能をCPU16に実現させるようになっていることである。
機能(A):例外状態の入力を受け付ける。
機能(B):ユーザから例外状態への状態遷移を含むアクションを受け付けることに基づいて警告メッセージを出力し、入力の受け付けをキャンセルする。
機能(C):受け付けた例外状態と同一階層に他の例外状態が含まれていることに基づいて、警告メッセージを出力し、入力の受け付けをキャンセルする。
機能(D):例外状態の子の状態が生じるような入力を受けたことに基づいて、警告メッセージを出力し、入力の受け付けをキャンセルする。
以下、このような対応情報生成プログラムについて詳しく説明する。CPU16は、ユーザによる入力装置12の操作に基づいて、対応情報生成プログラムの実行を開始する。そしてCPU16は、この対応情報生成プログラムの実行中、編集対象となる対応情報(状態遷移図または状態遷移表)の指定をユーザの入力装置12の操作により受け付け、その受け付けた対応情報をHDD15から読み出し、状態遷移図ならば図形式で、状態遷移表なら表形式でディスプレイ11に表示させる。
そしてCPU16は、この対応情報生成プログラムの実行中、状態、イベント、アクションの新規作成、内容変更、削除のためのユーザの操作を入力装置12から受けると、その操作に基づいた新規作成、内容変更、削除を、その編集対象となる対応情報に反映させ、その反映の結果の対応情報をディスプレイ11に表示させ、またHDD15に上書きする。
図12および図13に、この対応情報生成プログラムの一部であり、例外状態の受け付けを行うための部分である例外状態変更受付プログラム700および例外状態新規受付プログラム800のフローチャートを示す。
例外状態変更受付プログラム700は、通常状態から例外状態への変更を受け付けるための部分である。
この例外状態変更受付プログラム700の実行は、ユーザによる1つの状態の選択操作を入力装置12が受けた時に始まり、まずステップ710で、その選択を受け付ける。
続いてステップ715で、状態の属性を通常状態から例外状態に変更する要求を受け付ける。具体的には、通常状態から例外状態への変更のための所定の操作を、入力装置12を介して検出するまで待ち、検出すると、続いてステップ720に進む。
ステップ720では、編集対象の対応情報に基づいて、選択された状態と同一階層の他の状態に例外状態があるか否かを判定する。あれば続いてステップ725を実行し、なければ続いてステップ745で、警告情報として同一階層に2以上の例外状態がある旨のエラーメッセージを出力し、受け付けた変更の操作を編集中の対応情報に反映せずに破棄し、その後例外状態変更受付プログラム700の処理を終了する。
ステップ725では、編集対象の対応情報に基づいて、選択された状態が子状態を有しているか否かを判定する。有していなければ、続いてステップ730を実行し、有していなければ続いてステップ745で、警告情報として子を有する例外状態を作成しようとしている旨のエラーメッセージを出力し、受け付けた変更の操作を編集中の対応情報に反映せずに破棄し、その後例外状態変更受付プログラム700の処理を終了する。
ステップ730では、編集対象の対応情報に基づいて、選択された状態から例外状態への遷移が1つでも定義されているか否かを判定する。例外状態への遷移が定義されているとは、当該状態に割り当てられたアクション中に、例外状態への遷移が含まれていることをいう。例外状態への遷移が含まれてなければ、続いてステップ735の処理を実行する。例外状態への遷移が含まれていれば、続いてステップ745で、警告情報として例外状態への遷移がある状態を作成しようとしている旨のエラーメッセージを出力し、受け付けた変更の操作を編集中の対応情報に反映せずに破棄し、その後例外状態変更受付プログラム700の処理を終了する。
ステップ735では、選択された状態を例外情報に変更する。具体的には、対応情報中の、選択された状態の属性の値を例外状態である旨の値に変更する。
続いてステップ740では、選択された状態の表現を例外状態用に変更する。具体的には、ステップ735で変更された後の対応情報を、HDD15に上書きし、またディスプレイ11に出力する。これによって、ディスプレイ11に表示される当該状態が、通常状態用の表示から、例外状態用の表示に変化する。ステップ740の後、例外状態変更受付プログラム700の処理は終了する。
このような例外状態変更受付プログラム700を実行するCPU16は、対応情報中の通常状態を例外状態に変更する要求を受け付けると(ステップ715参照)、変更対象の状態と同じ状態階層に他の例外状態がなく(ステップ720参照)、変更対象の状態が子を有さず(ステップ730参照)、変更対象への遷移が定義されていない(ステップ735参照)という3つの条件が満たされる場合に、この変更対象の状態を例外状態に変更し(ステップ735参照)、変更結果をディスプレイ11、HDD15に出力する(ステップ740参照)。そして、これら3つの条件の1つでも満たされない場合は、警告情報を出力し、変更の要求をキャンセルする(ステップ745参照)。
次に、例外状態新規受付プログラム800について説明する。例外状態新規受付プログラム800は、対応情報生成プログラムの、例外状態の新規追加を受け付けるための部分である。
この例外状態新規受付プログラム800の実行は、ユーザによる新たな例外状態作成のための操作を入力装置12が受けた時に始まり、まずステップ810で、新たな例外状態の定義、すなわち名称等の情報の入力を受け付ける。
続いてステップ820で、どの状態階層に例外状態を定義するかの選択をユーザに促す表示をディスプレイ11に出力し、入力装置12を用いたその選択操作を検出するまで待つ。
選択操作を検出すると、続いてステップ830で、編集対象の対応情報に基づいて、選択された状態階層に他の例外状態が存在するか否かを判定する。他の例外状態存在しない場合、続いてステップ840を実行する。例外状態が存在する場合、続いてステップ850で、警告情報として同一階層に2以上の例外状態がある旨のエラーメッセージを出力し、受け付けた状態追加の操作を編集中の対応情報に反映せずに破棄し、その後例外状態新規受付プログラム800処理を終了する。
ステップ840では、編集対象の対応情報の選択された状態階層に、ステップ810で受け付けた情報に基づいて、新規な例外状態を追加し、その追加が反映された対応情報をディスプレイ11およびHDD15に出力し、その後例外状態新規受付プログラム800の処理を終了する。
このような例外状態新規受付プログラム800を実行するCPU16は、例外状態を新規追加する要求を受け付けると(ステップ810、820参照)、変更対象の状態と同じ状態階層に他の例外状態がない(ステップ830参照)という条件が満たされる場合に、受け付けた状態を新規例外状態として対応情報に追加し、追加結果をディスプレイ11、HDD15に出力する(ステップ840参照)。そして、この条件が満たされない場合は、警告情報を出力し、新規追加の要求をキャンセルする(ステップ850参照)。
次に、図14に、この対応情報生成プログラムの一部であり、例外状態の受け付けを行うための部分であるイベント新規受付プログラム900のフローチャートを示す。
イベント新規受付プログラム900は、対応情報生成プログラム中の、編集対象の対応情報の状態に新たにイベントを定義するための部分である。
このイベント新規受付プログラム900の実行は、ユーザによる新たなイベント定義の対象となる状態の選択操作を入力装置12が検出したときに始まり、まず、ステップ910では、その選択操作を受け付け、対象の状態を特定する。
続いてステップ920で、当該選択した状態に対するイベントの新規定義の旨の操作を入力装置12が検出するまで待ち、検出すると、その要求を受け付け、続いてステップ930に進む。
続いてステップ930で、選択した状態でそのイベントが発生したときの遷移先の状態選択を促す旨のメッセージをディスプレイ11に出力し、ユーザによる入力装置12を用いた選択を検出すると、続いてステップ940を実行する。
ステップ940では、ステップ930で選択された遷移先の状態が例外状態であるか否かを、編集対象の対応情報に基づいて判定する。例外状態でなければ続いてステップ950を実行する。例外状態であれば続いてステップ970で、警告情報として遷移先が例外情報である旨のエラーメッセージを出力し、受け付けたイベントを編集中の対応情報に反映せずに破棄し、その後例外状態新規受付プログラム900の処理を終了する。
ステップ950では、イベントの内容、すなわち、イベントの名称、識別番号、選択した状態でそのイベントが発生したときの処理等の設定の入力を促す表示をディスプレイ11に行わせ、入力装置12に対する設定操作を検出するまで待ち、設定操作があると、続いてステップ960を実行する。
ステップ960では、検出した設定の内容を、編集対象の対応情報に反映させる。すなわち、選択された状態から選択された遷移先へ移るためのイベントの名称、そのイベントの発生時の処理等の情報を対応情報に追加する。そして、この内容が反映された後の対応情報を、ディスプレイ11に出力し、またHDD15に上書きする。ステップ960の後、イベント新規受付プログラム900の処理は終了する。
このようなイベント新規受付プログラム900を実行するCPU16は、ある状態に対するイベントの新規追加の要求を受け付けると(ステップ920、930参照)、その状態においてそのイベントが発生したときの遷移先が例外状態でない(ステップ940参照)という条件が満たされる場合に、受け付けたイベントを、その状態における新規イベントとして対応情報に追加し、追加結果をディスプレイ11、HDD15に出力する(ステップ960参照)。そして、この条件が満たされない場合は、警告情報を出力し、イベント追加の要求をキャンセルする(ステップ970参照)。
CPU16が以上のような例外状態変更受付プログラム700、例外状態新規受付プログラム800、イベント新規受付プログラム900を含む対応情報生成プログラムを実行することで、パーソナルコンピュータ1は、ユーザによる例外状態とイベントの組、およびその組に対応するアクションの設定入力を受け付ける。そして、受け付けた組に受け付けた対応するアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む情報を、対応情報としてHDD15に記憶させる、さらにディスプレイ11に表示させる。
このようになっていることで、ユーザの例外状態、イベント、および対応するアクションの入力に基づいて、その例外状態とイベントの組にそのアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報が記憶媒体に記憶され、第1実施形態に示したプログラム生成プログラム100の実行によって、この対応情報に基づいてCソースコードがプログラムA生成される。
また、対応情報生成プログラムは、例外状態への状態遷移を含むアクションを受け付けることに基づいて、警告メッセージを出力して受け付けたアクションをキャンセルするよう作成されているので、例外状態へ遷移する状態が対応情報に含まれることが警告されるので、開発者が例外状態へ遷移する状態を対応情報に含める恐れが低減する。
また、対応情報生成プログラムは、受け付けた例外状態と同一階層に他の例外状態がある場合、すなわち、受け付けた例外状態がある通常状態の子であり、かつ通常状態の子として他の例外状態が対応情報に含まれている場合、警告メッセージを出力して受け付けた例外状態をキャンセルするよう作成されているので、1つの状態の子に複数の例外状態がある状況、すなわち、同一階層に複数の例外状態がある状況、が発生する恐れが低減する。
また、対応情報生成プログラムは、ユーザから、例外状態の入力を受け付けることで、子を有する例外状態が生成されることに基づいて、警告メッセージを出力して受け付けた入力をキャンセルするよう作成されているので、開発者が、例外状態の子の状態を対応情報に含める恐れが低減する。
なお、上記のステップ740、840および960におけるディスプレイ11の表示映像が状態遷移図である場合、図11に示したように、例外状態は二重丸、通常状態は角が丸い長方形という風に、例外状態と通常状態の図形が異なっているので、ユーザにとって通常状態と例外状態との区別が容易になる。
また、上記のステップ740、840および960におけるディスプレイ11の表示映像が状態遷移表である場合、図5に示したように、例外状態には、それが例外状態である旨の印として、exeptionマークが付されるようになっていてもよい。
なお、上記の各実施形態において、CPU16が、プログラム生成プログラムおよび対応情報生成プログラムを実行するコンピュータに相当する。
また、CPU16が、プログラム生成プログラム100のステップ120の処理を実行することで、読み出し手段として機能する。
また、CPU16が、図7のステップ240を実行することで、判定手段として機能する。
また、CPU16が、図7のステップ250およびステップ260が、生成手段、として機能する。
また、CPU16が、図12のステップ710、715、図13のステップ810、図14のステップ910を実行することで、受付手段として機能する。
また、CPU16が、図12のステップ740、図13のステップ840、図14のステップ960を実行することで、記憶制御手段および表示制御手段として機能する。
また、CPU16が、図12のステップ745、図13のステップ850、図14のステップ970を実行することで、警告手段として機能する。
また、対応情報生成プログラムは、ユーザから、例外状態の子として状態の入力を受けたことに基づいて、警告メッセージを出力し、受けた入力をキャンセルする警告手段としてCPU16を機能させるようになっていてもよい。
また、図10に示したCソースコードが、プログラム生成プログラムの実行によって生成されるプログラムAに相当する。
また、例えばCPU16等のコンピュータが、図10のCソースコードの10行目、17行目、40行目、47行目のGetState()関数の呼び出し部分を実行することで、状態検出機能を実現する。
また、例えばCPU16等のコンピュータが、図10の7行目のGetEvent()関数の呼び出しを実行することで、イベント検出機能を実現する。
また、例えばCPU16等のコンピュータが、図10の12〜15行目、19〜21行目、22〜25行目、53〜56行目の、case文、Action()関数およびSetState()関数の呼び出し、break文の部分を実行することで、通常実行機能を実現する。
また、例えばCPU16等のコンピュータが、図10の27〜29行目、32〜35行目、57〜60行目、63〜66行目の、default文、Action()関数およびSetState()関数の呼び出し、break文の部分を実行することで、例外実行機能を実現する。
また、本実施形態の状態遷移図および状態遷移表は、例外状態とイベントとの組にアクションを割り当てているが、必ずしもこのようになっておらずともよい。例えば、例外状態には、イベントによらずにアクションが割り当てられていてもよい。そしてこのような状態遷移図および状態遷移表から生成するプログラムは、現在の状態が末端の通常状態のいずれにも該当しない場合、その例外状態に割り当てられたアクションを実行するよう、コンピュータを機能させるようになっていてもよい。
また、上記の実施形態の対応情報においては、状態階層毎に例外状態が設けられているが、必ずしもこのようになっておらずともよい。例えば、1つの状態遷移図、状態遷移表には、状態階層数にかかわらずただ1つだけ例外状態が設けられ、プログラム生成装置は、「検出した状態が末端の状態のいずれにも該当しない場合、その例外状態に割り当てられたアクションを実行する機能をコンピュータに実現させる」プログラムを生成するようになっていてもよい。
また、本実施形態におけるプログラム生成装置からによって生成されるのはCソースコードだが、プログラム生成プログラムから生成されるのはソースコードに限らず、オブジェクトコードであってもよい。
また、本実施形態においては、プログラム生成プログラムの実行によって生成されたプログラム中、「検出した状態が末端の状態のいずれにも該当しない場合」を検出するための文としては、switchと対で現れるdefault文が用いられているが、必ずしもこれに限らない。例えば、if文と対で現れるelse文が用いられてもよい。
また、本実施形態においては、対応情報中における、状態が例外となった際のアクションの指定が、ある状態が例外状態である旨の情報、およびその例外状態に割り当てられたアクションの指定の情報として実現されているが、必ずしもこのようになっている必要はない。
例えば、対応情報中の状態は、例外状態と通常状態とを区別する情報は有さず、状態に例外が発生した場合に実行するアクションの情報、すなわち例外アクション情報を付加情報として有するようになっていてもよい。そして更に、例外アクション情報は、対応情報中の各状態階層のそれぞれに1つずつ関連づけられた形で、対応情報中に記載されていてもよい。
例外アクション情報が状態階層毎に割り当てられている場合、プログラム生成プログラムを実行するCPU16が、対応情報を読み出し、以下の機能(a)〜(e)をコンピュータに実現させるようなソースコードを生成するようになっていればよい。
機能(a): 現在の状態を記憶媒体中の状態情報に基づいて検出する
機能(b): イベントの発生を検出する
機能(c): 検出した状態およびイベントに割り当てられたアクションを実行する
機能(d): 検出した状態が対応情報中の状態のいずれにも該当しないという条件に基づいて、最上位の状態階層に割り当てられた例外アクションを実行する。
機能(e): 検出した状態が対応情報中のある状態に該当し、かつその該当する状態の子の状態のいずれにも該当しないという条件に基づいて、その子の状態が属する状態階層に関連づけられた例外アクションを実行する。
また、このような例外アクションの入力を受け付けるために、対応情報生成プログラムは、第2実施形態で示した(A)〜(D)の機能に代えて、状態階層と関連づけられた例外アクションの入力を受け付け、受け付けた例外アクションを含む対応情報を、HDD15に記憶させ、ディスプレイ11に表示させる機能をCPU16に実現させるようになっていてもよい。
具体的には、ディスプレイ11に例外アクション設定受付用の表示を行い、ユーザによる12を用いた、関連する状態階層およびアクションの設定入力を受けると、その受け付けた設定入力をHDD15に記憶させ、さらにその例外アクションの存在を示す対応情報の表示をディスプレイ11に行わせる。
例えば、対応情報が状態遷移図なら、受け付けた関連する状態階層を子として有する状態の領域図形内部に、受け付けたアクションを示す文字列や例外アクションがある旨のマークを表示させる。また、対応情報が状態遷移表なら、受け付けた関連する状態階を子として有する状態の列に、例外アクションがある旨、またはそのアクションの内容を示すマークを表示させてもよい。この際、受け付けた関連する状態階層が最上位の階層なら、図5のような表の1行1列目に、例外アクションがある旨、またはそのアクションの内容を示すマークを表示させてもよい。
従来の状態遷移表を示す図表である。 従来の状態遷移図である。 従来の状態遷移表、状態遷移図から生成されるCソースコードのリストである。 本発明の第1実施形態におけるパーソナルコンピュータ1のハードウェア構成を示す図である。 状態遷移表の一例を示す図表である。 プログラム生成プログラム100のフローチャートである。 サブルーチン200のフローチャートである。 図7のステップ250を詳細に示すフローチャートである。 図7のステップ260を詳細に示すフローチャートである。 プログラム生成プログラム100を実行することで、図5の状態遷移表に基づいてCPU16が生成するCソースコードのリストである。 状態遷移図の一例を示す図である。 例外状態変更受付プログラム700のフローチャートである。 例外状態新規受付プログラム800のフローチャートである。 イベント新規受付プログラム900のフローチャートである。
符号の説明
1…パーソナルコンピュータ、11…ディスプレイ、12…入力装置、13…RAM、
14…ROM、15…HDD、16…CPU、31〜33…領域図形、
34〜36…矢印線、41、42…逆三角形、100…プログラム生成プログラム、
200…サブルーチン、700…例外状態変更受付プログラム、
800…例外状態新規受付プログラム、900…イベント新規受付プログラム。

Claims (26)

  1. 状態に対してアクションを割り当てた対応情報を読み出す読み出し手段、
    読み出された前記対応情報中の状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報が前記対応情報に含まれているか否かに基づいて判定する判定手段、および
    読み出された対応情報に基づいてプログラムAを生成する生成手段、としてコンピュータを機能させるプログラム生成プログラム。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態が通常状態に該当するという条件に基づいて、この状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が通常状態のいずれにも該当しないという条件に基づいて、例外状態に前記対応情報が割り当てたアクションを実行する例外実行機能、をコンピュータに実現させる。
  2. 前記読み出し手段は、状態とイベントとの組に対してアクションを割り当てた対応情報を読み出し、
    前記プログラムAがコンピュータに実現させる前記通常実行機能は、検出した状態が通常状態に該当するという条件に基づいて、この状態および検出したイベントの組に前記対応情報が割り当てたアクションを実行し、
    前記プログラムAがコンピュータに実現させる前記例外実行機能は、検出した状態が通常状態のいずれにも該当しないという条件に基づいて、例外状態および検出したイベントの組に前記対応情報が割り当てたアクションを実行し、
    さらに前記プログラムAは、イベントの発生を検出するイベント検出機能をコンピュータに実現させ、
    また、前記通常実行機能および例外実行機能は、実行するアクションが状態遷移を含んでいる場合、遷移先の状態を状態情報として前記記憶媒体に記憶させることを特徴とする請求項1に記載のプログラム生成プログラム。
  3. 前記読み出し手段は、状態とイベントとの組に対するアクションの割り当てについての対応情報を、一組毎に読み出し、
    前記判定手段は、前記対応情報が一組読み出される毎に、その組に係る状態が例外状態であるか通常状態であるかを判定し、
    前記生成手段は、読み出された組に係る状態が例外状態と判定される毎に、前記プログラムAの、コンピュータに前記例外実行機能を実現させる部分を生成することを特徴とする請求項2に記載のプログラム生成プログラム。
  4. 前記生成手段は、読み出された対応情報において、1つの状態に割り当てられたアクションが、例外状態への状態遷移を含むことに基づいて、警告メッセージを出力することを特徴とする請求項1ないし3のいずれか1つに記載のプログラム生成プログラム。
  5. 前記対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっており、
    前記例外実行機能は更に、検出した状態がある通常状態に該当し、かつその該当する通常状態の子の通常状態のいずれにも該当しないという条件に基づいて、その該当する通常状態の子である例外状態に前記対応情報が割り当てたアクションを実行することを特徴とする請求項1ないし4のいずれか1つに記載のプログラム生成プログラム。
  6. 前記生成手段は、読み出された対応情報中の例外状態が子の状態を有することに基づいて、警告メッセージを出力することを特徴とする請求項5に記載のプログラム生成プログラム。
  7. 前記生成手段は、読み出された対応情報中の1つの状態に、複数の例外状態が子として含まれていることに基づいて、警告メッセージを出力することを特徴とする請求項5または6に記載のプログラム生成プログラム。
  8. 前記判定手段が判定基準とする例外状態である旨の情報とは、前記対応情報中の状態の名称に含まれる所定の情報であることを特徴とする請求項1ないし7のいずれか1つに記載のプログラム生成プログラム。
  9. 前記対応情報は、状態を示す図形および状態遷移を示すこれら図形間の矢印を有する図形情報であり、
    前記判定手段が判定基準とする例外状態である旨の情報とは、前記図形が所定の形状をしているという情報であることを特徴とする請求項1ないし7のいずれか1つに記載のプログラム生成プログラム。
  10. 状態に対するアクションの割り当てについての対応情報を読み出す読み出し手段と、
    読み出された前記対応情報中の状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報が前記対応情報に含まれているか否かで判定する判定手段と、
    読み出した対応情報に基づいてプログラムAを生成する生成手段と、を備えたプログラム生成装置。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態が通常状態と判定された状態に該当する場合、この状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が通常状態と判定された状態のいずれにも該当しない場合、例外状態と判定された状態に前記対応情報が割り当てたアクションを実行する例外実行機能、をコンピュータに実現させる。
  11. 状態に対するアクションの割り当てについての対応情報を読み出す手順と、
    読み出された前記対応情報中の状態が例外状態であるか通常状態であるかを、その状態が例外状態である旨の情報が前記対応情報に含まれているか否かで判定する手順と、
    読み出した対応情報に基づいてプログラムAを生成する手順と、を備えたプログラム生成方法。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態が通常状態と判定された状態に該当する場合、この状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が通常状態と判定された状態のいずれにも該当しない場合、例外状態と判定された状態に前記対応情報が割り当てたアクションを実行する例外実行機能、をコンピュータに実現させる。
  12. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる機能をコンピュータに実現させる対応情報生成プログラムであって、
    ユーザによる例外状態およびその例外状態に対応するアクションの設定入力を受け付ける受付手段、および
    受け付けた例外状態に受け付けた対応するアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報を、請求項10に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる記憶制御手段として、コンピュータを機能させることを特徴とする対応情報生成プログラム。
  13. 前記受け付け手段が例外状態への状態遷移を含むアクションの設定入力を受け付けることに基づいて警告メッセージを出力する警告手段としてコンピュータを機能させることを特徴とする請求項12に記載の対応情報生成プログラム。
  14. 前記対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっており、
    前記警告手段は、前記受付手段が受け付けた例外状態がある通常状態の子であり、かつその通常状態の子として他の例外状態が前記対応情報に含まれていることに基づいて、警告メッセージを出力することを特徴とする請求項12または13に記載の対応情報生成プログラム。
  15. 前記対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっており、
    前記警告手段は、前記受付手段が、例外状態が子の状態を持つような設定入力を受けたことに基づいて、警告メッセージを出力することを特徴とする請求項12または13に記載のプログラム生成プログラム。
  16. 対応情報に基づく映像を表示装置に表示させる表示制御手段としてコンピュータを機能させ、
    前記表示制御手段が表示させる映像は、状態を示す図形および状態遷移を示すこれら図形間の矢印を有する図形情報であり、状態を示す図形は、通常状態と例外状態とで異なっていることを特徴とする請求項12ないし15のいずれか1つに記載の対応情報生成プログラム。
  17. 対応情報に基づく映像を表示装置に表示させる表示制御手段としてコンピュータを機能させ、
    前記表示制御手段が表示させる映像は、状態とアクションの対応関係を表形式で示すものであり、その表中、例外状態については、それが例外状態であることを示すマークが付されていることを特徴とする請求項12ないし16のいずれか1つに記載の対応情報生成プログラム。
  18. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる対応情報生成装置であって、
    ユーザによる例外状態およびその例外状態に対応するアクションの設定入力を受け付ける受付手段と、
    受け付けた例外状態に受け付けた対応するアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報を、請求項10に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる記憶制御手段と、を備えた対応情報生成装置。
  19. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる対応情報生成方法であって、
    ユーザによる例外状態およびその例外状態に対応するアクションの設定入力を受け付ける手順と、
    受け付けた例外状態に受け付けた対応するアクションを割り当てる情報および当該状態が例外状態である旨の情報を含む対応情報を、請求項10に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる記憶制御手順と、を備えた対応情報生成方法。
  20. 状態に対してアクションを割り当てた対応情報を読み出す読み出し手段、
    読み出された前記対応情報が、状態が例外となった際のアクションの指定を含むことを判定する判定手段、および
    読み出された前記対応情報に基づいてプログラムAを生成する生成手段、としてコンピュータを機能させるプログラム生成プログラム。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態に該当する対応情報中の状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が対応情報中の状態のいずれにも該当しないという条件に基づいて、前記対応情報において指定された、状態が例外となった際のアクションを実行する例外実行機能、をコンピュータに実現させる。
  21. 前記対応情報における状態は、1つの状態が複数の状態を子として含むことができる階層構造となっており、
    前記判定手段は、同じ状態の子から成る状態階層に関連づけられた、状態が例外となった際のアクションの指定を含むことを判定し、
    前記例外実行機能は更に、検出した状態が前記対応情報中のある状態に該当し、かつその該当する状態の子の状態のいずれにも該当しないという条件に基づいて、前記対応情報において、その該当する状態の子から成る状態階層に関連づけて指定された、状態が例外となった際のアクションを実行することを特徴とする請求項20に記載のプログラム生成プログラム。
  22. 状態に対してアクションを割り当てた対応情報を読み出す読み出し手段と、
    読み出された前記対応情報が、状態が例外となった際のアクションの指定を含むことを判定する判定手段と、
    読み出された前記対応情報に基づいてプログラムAを生成する生成手段、を備えたプログラム生成装置。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態に該当する対応情報中の状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が対応情報中の状態のいずれにも該当しないという条件に基づいて、前記対応情報において指定された、状態が例外となった際のアクションを実行する例外実行機能、をコンピュータに実現させる。
  23. 状態に対してアクションを割り当てた対応情報を読み出す手順と、
    読み出された前記対応情報が、状態が例外となった際のアクションの指定を含むことを判定する手順と、
    読み出された前記対応情報に基づいてプログラムAを生成する手順と、を備えたプログラム生成方法。
    ただし、前記プログラムAは、
    現在の状態を記憶媒体中の状態情報に基づいて検出する状態検出機能、
    検出した状態に該当する対応情報中の状態に前記対応情報が割り当てたアクションを実行する通常実行機能、
    検出した状態が対応情報中の状態のいずれにも該当しないという条件に基づいて、前記対応情報において指定された、状態が例外となった際のアクションを実行する例外実行機能、をコンピュータに実現させる。
  24. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる機能をコンピュータに実現させる対応情報生成プログラムであって、
    ユーザによる状態が例外となった際のアクションの指定の設定入力を受け付ける受付手段、および
    前記受付手段が受け付けた前記指定を含む対応情報を、請求項22に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる記憶制御手段として、コンピュータを機能させることを特徴とする対応情報生成プログラム。
  25. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる対応情報生成装置であって、
    ユーザによる状態が例外となった際のアクションの指定の設定入力を受け付ける受付手段と、
    前記受付手段が受け付けた前記指定を含む対応情報を、請求項22に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる記憶制御手段と、を備えた対応情報生成装置。
  26. ユーザの入力に基づいて状態とその状態に対応するアクションを割り当てた対応情報を記憶媒体に記憶させる対応情報生成方法であって、
    ユーザによる状態が例外となった際のアクションの指定の設定入力を受け付ける手順と、
    前記受付手段が受け付けた前記指定を含む対応情報を、請求項22に記載のプログラム生成装置に読み出させるために記憶媒体に記憶させる手順と、を備えた対応情報生成方法。

JP2004191242A 2004-06-29 2004-06-29 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム Expired - Fee Related JP4874440B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004191242A JP4874440B2 (ja) 2004-06-29 2004-06-29 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム
US11/156,494 US7802237B2 (en) 2004-06-29 2005-06-21 Method, system and computer program product for generating program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004191242A JP4874440B2 (ja) 2004-06-29 2004-06-29 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム

Publications (2)

Publication Number Publication Date
JP2006012017A true JP2006012017A (ja) 2006-01-12
JP4874440B2 JP4874440B2 (ja) 2012-02-15

Family

ID=35658737

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004191242A Expired - Fee Related JP4874440B2 (ja) 2004-06-29 2004-06-29 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム

Country Status (2)

Country Link
US (1) US7802237B2 (ja)
JP (1) JP4874440B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007299082A (ja) * 2006-04-28 2007-11-15 Fuji Electric Holdings Co Ltd ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
EP1950657A2 (en) 2006-12-18 2008-07-30 Hitachi, Ltd. Control microcomputer verification device and vehicle-mounted control device
WO2008099657A1 (ja) * 2007-02-14 2008-08-21 Nec Corporation 半導体集積回路、デバッグ・トレース回路、および半導体集積回路動作観測方法
US11137988B2 (en) 2017-06-02 2021-10-05 Mitsubishi Electric Corporation Program code generation device and computer readable medium
US20220244709A1 (en) * 2019-05-20 2022-08-04 Markus Gruber Computer-implemented method for computer-aided generation of an executable control program for the control and/or regulation of a technical process

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009122815A (ja) * 2007-11-13 2009-06-04 Toshiba Corp ログ記録装置
US8959494B2 (en) 2012-03-20 2015-02-17 Massively Parallel Technologies Inc. Parallelism from functional decomposition
US9977655B2 (en) 2012-03-20 2018-05-22 Massively Parallel Technologies, Inc. System and method for automatic extraction of software design from requirements
US8762946B2 (en) 2012-03-20 2014-06-24 Massively Parallel Technologies, Inc. Method for automatic extraction of designs from standard source code
US9324126B2 (en) 2012-03-20 2016-04-26 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
US9424168B2 (en) 2012-03-20 2016-08-23 Massively Parallel Technologies, Inc. System and method for automatic generation of software test
US9146709B2 (en) 2012-06-08 2015-09-29 Massively Parallel Technologies, Inc. System and method for automatic detection of decomposition errors
US9229688B2 (en) * 2013-03-14 2016-01-05 Massively Parallel Technologies, Inc. Automated latency management and cross-communication exchange conversion
JP6838234B2 (ja) 2017-03-24 2021-03-03 日立Astemo株式会社 車両制御装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0646821B2 (ja) 1984-02-24 1994-06-15 富士通株式会社 状態遷移図作成処理方式
JPH08115107A (ja) 1994-10-17 1996-05-07 Hitachi Ltd 機器制御プログラム生成方式
US6724372B1 (en) * 1995-10-16 2004-04-20 Nec Corporation Ink trails on a wireless remote interface tablet and wireless remote ink field object
JP3169896B2 (ja) 1998-07-03 2001-05-28 日本電気株式会社 プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記憶した記憶媒体
US6871340B1 (en) * 1999-05-21 2005-03-22 Lucent Technologies Inc. System and method for generating software tools
JP2003076543A (ja) 2001-08-31 2003-03-14 Cats Kk プログラム生成装置、プログラム生成方法およびその方法をコンピュータに実行させるプログラム
US20040201647A1 (en) * 2002-12-02 2004-10-14 Mark Jackson Pulver Stitching of integrated circuit components
US7180328B2 (en) * 2003-05-23 2007-02-20 Sensory Networks, Inc. Apparatus and method for large hardware finite state machine with embedded equivalence classes

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007299082A (ja) * 2006-04-28 2007-11-15 Fuji Electric Holdings Co Ltd ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム
EP1950657A2 (en) 2006-12-18 2008-07-30 Hitachi, Ltd. Control microcomputer verification device and vehicle-mounted control device
US7730354B2 (en) 2006-12-18 2010-06-01 Hitachi, Ltd. Control microcomputer verification device and vehicle-mounted control device
WO2008099657A1 (ja) * 2007-02-14 2008-08-21 Nec Corporation 半導体集積回路、デバッグ・トレース回路、および半導体集積回路動作観測方法
US7911216B2 (en) 2007-02-14 2011-03-22 Nec Corporation Semiconductor integrated circuit, debug/trace circuit and semiconductor integrated circuit operation observing method
JP5151996B2 (ja) * 2007-02-14 2013-02-27 日本電気株式会社 半導体集積回路及びデバッグ・トレース回路
US11137988B2 (en) 2017-06-02 2021-10-05 Mitsubishi Electric Corporation Program code generation device and computer readable medium
US20220244709A1 (en) * 2019-05-20 2022-08-04 Markus Gruber Computer-implemented method for computer-aided generation of an executable control program for the control and/or regulation of a technical process
US12481268B2 (en) * 2019-05-20 2025-11-25 Markus Gruber Computer-implemented method for computer-aided generation of an executable control program for the control and/or regulation of a technical process

Also Published As

Publication number Publication date
US7802237B2 (en) 2010-09-21
US20060020949A1 (en) 2006-01-26
JP4874440B2 (ja) 2012-02-15

Similar Documents

Publication Publication Date Title
JP4874440B2 (ja) 状態とイベントの組にアクションを割り当てた対応情報に基づいてプログラムを生成するプログラム生成プログラム、プログラム生成装置、およびプログラム生成方法、ならびに、これらによって生成されるプログラム
US5467448A (en) Text formatting by the direct selection of borders in an editing display
JP3014284B2 (ja) ダイアログ・ボックスの表示方法及びシステム
US5754175A (en) Method and system for in-place interaction with contained objects
US6384849B1 (en) Method for displaying controls in a system using a graphical user interface
JPH06510879A (ja) ユーザインタフェースの記述用対話型ツールを作成するためにロードされたインタプリタ言語の利用
CN113590103B (zh) 实现图形化无代码开发用户界面的方法、计算机设备、存储介质
JP2004133892A (ja) プログラムに対してメッセージを発行するためのシステムおよび方法
KR20160006244A (ko) 반투명 메뉴 및 라이브 프리뷰
JP5761687B2 (ja) 数式出力コンピュータ、数式出力方法、数式出力プログラム、および数式出力プログラムを記録したコンピュータ読取可能な記録媒体
AU2008329949B2 (en) Logical structure design surface
JP2001092914A (ja) 異なるモードによるセル名前付き範囲内の新しい要素の導入のための電子スプレッドシート内の方法およびシステム
JPH0525345B2 (ja)
JP2004118550A (ja) テキスト編集装置及びプログラム
US8745512B2 (en) Method and computer-readable medium for interacting with a portion of an electronic document
US20100185944A1 (en) Layout apparatus, layout method, and storage medium
US20080040707A1 (en) Program monitoring method, computer, and abnormal monitoring program product
JP2007317086A (ja) 表示制御装置、表示制御手法
CN110286985B (zh) 一种用户界面显示方法、系统及相关组件
JP4738089B2 (ja) メニュー表示装置、メニュー表示方法、およびメニュー表示プログラム
JP3802743B2 (ja) ツリー構造作成描画装置として動作するようにプログラムされたコンピュータ、コンピュータを用いてツリー構造を作成し描画するための方法、およびコンピュータをツリー構造作成描画装置として動作させるためのプログラムを記録したコンピュータ読取可能な記録媒体
JP3728768B2 (ja) 文字列と罫線の混在処理方法およびその装置
JP2008165408A (ja) 情報処理装置、その制御方法及びプログラム
JP2005190369A (ja) フォルダ管理装置、フォルダ管理方法、フォルダ管理プログラム並びに記録媒体
CN120832049A (zh) 一种多层导航收起展示方法和设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091204

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111123

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141202

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4874440

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees