説明

プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体

【課題】 状態遷移情報の変更点だけをプログラムに反映させることで、プログラム開発を効率化する。
【解決手段】 状態遷移情報100の変更点だけが既存のプログラムコード104に反映されるため、ユーザがプログラムコード104に直接加えた変更と、状態遷移情報100に加えた変更が同じプログラムコード104上で並存でき、プログラム開発が効率化される。生成されたプログラムコード104に直接加えられた変更を、元の状態遷移情報100に反映されることで、プログラムにあわせてユーザが状態遷移情報100を書き換える作業が不要になり、プログラム開発が効率化される。

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、状態遷移情報を使ってソフトウェアの開発を支援する技術の改良に関するもので、より具体的には、状態遷移情報の変更点だけをプログラムに反映させることで、プログラム開発を効率化したものである。
【0002】
【従来の技術】プログラムの開発を支援する技術の1つとして、状態遷移図を使ってプログラムを自動生成する技術が知られている。この状態遷移図は、プログラムの動作を、複数の状態の間での遷移(移り変わり)として表わしたものであり、このような状態遷移図の内容を表わす情報を状態遷移情報と呼ぶ。
【0003】なお、「状態遷移図」は状態遷移情報を表わす形式の1つに過ぎず、状態遷移情報は遷移表など他の形式で表すこともできる。このため、状態遷移図からプログラムを自動生成するというのは、実質的には状態遷移情報からプログラムを自動生成することを意味し、本出願で「状態遷移図」というときは、「状態遷移情報」に読み替えることができるものとする。
【0004】上に述べた状態遷移図はいくつもの状態を含み、ある状態から別の状態への遷移は、何らかのイベントによって起きる。このような状態遷移図からプログラムを自動生成する場合、状態やイベントに付けることができる名前、例えば状態名やイベント名などと、プログラム中で使うことができる識別子、例えば画面名、GUI部品名、変数名などとは互いに異なっている。
【0005】このような状態遷移図からプログラムを作成する場合、状態遷移情報を状態遷移表という表の形式で表現しておいて、それをプログラム中の配列変数として生成することと、状態遷移情報から、プログラミング言語の条件分岐などの制御文を使ったプログラムを作成することが考えられる。
【0006】
【発明が解決しようとする課題】ところで、上に述べたように制御文を使って自動生成されたプログラムをエディタなど別のツールを使ってユーザが直接修正した後、状態遷移図から新しいプログラムを再び自動生成する場合、従来では、すでにあるプログラムの全体を、新しく生成されるプログラムで置き換えていた。
【0007】このため、ユーザによる修正点は新しいプログラムによって上書きされ、新しいプログラムの中では保持されなかった。この結果、ユーザがプログラムに直接加えた修正と、ユーザが状態遷移図に加えた修正とを、新しく生成するプログラムの上で並存させることはできなかった。
【0008】また、従来では、状態遷移図からプログラムを生成することはできても、逆にプログラムから状態遷移図を生成することはできなかった。このため、例えばユーザが直接変更を加えたプログラムから状態遷移図を生成することで、変更の内容を状態遷移図に反映させることはできなかった。
【0009】このように、従来では、状態遷移図とプログラムとの間で、一方に加えた変更を他方に反映させようとしても制約が多く、プログラム開発を効果的に支援できないという問題点があった。
【0010】本発明は、上に述べたような従来技術の問題点を解決するために提案されたもので、その目的は、状態遷移情報の変更点だけをプログラムに反映させることで、プログラム開発を効率化することである。また、本発明の他の目的は、同様にプログラムから状態遷移図を生成することで、プログラム開発を効率化することである。
【0011】
【課題を解決するための手段】上に述べた目的を達成するため、請求項1の発明は、状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援装置において、状態遷移情報のどこがどのように変更されたかを解析する情報解析手段と、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作するプログラム操作手段と、プログラムのどこがどのように変更されたかを解析するプログラム解析手段と、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作する情報操作手段と、を備えたことを特徴とする。請求項4の発明は、請求項1の発明を方法という見方からとらえたもので、状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援方法において、状態遷移情報のどこがどのように変更されたかを解析するステップと、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作するステップと、プログラムのどこがどのように変更されたかを解析するステップと、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作するステップと、を含むことを特徴とする。請求項6の発明は、請求項1,4の発明を、コンピュータプログラムを記録した記録媒体という見方からとらえたもので、コンピュータによって、状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援用ソフトウェアを記録した記録媒体において、そのソフトウェアは前記コンピュータに、状態遷移情報のどこがどのように変更されたかを解析させ、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作させ、プログラムのどこがどのように変更されたかを解析させ、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作させることを特徴とする。請求項1,4,6の発明では、状態遷移図から生成したプログラムをユーザが別のツールなどで直接変更したあと、もとの状態遷移図を変更して再びプログラムを生成しても、すでにあるプログラム全体を上書きすることはない。すなわち、状態遷移図の変更点だけが既存のプログラムに反映されるため、ユーザがプログラムに直接加えた変更と、状態遷移図に加えた変更が同じプログラム上で並存でき、プログラム開発が効率化される。また、この発明では、生成されたプログラムに直接加えられた変更を、元の状態遷移情報に反映されることで、プログラムにあわせてユーザが状態遷移図を書き換える作業が不要になり、プログラム開発が効率化される。これらによって、状態遷移情報とプログラムの間で、変更点を反映させて整合性を保つ処理が双方向に可能となる。つまり、状態遷移情報とプログラムの一方を変更したとき、他方の全体を上書きすることなく、変更点だけが他方に反映されるので、反映される側でユーザが直接加えた変更と反映される変更とが両方有効になる。このため、ユーザは、どのような点を変更したいかに応じて、状態遷移情報とプログラムのうち都合のよい方を変更することができ、プログラム開発が効率化される。
【0012】請求項2の発明は、請求項1記載のプログラム開発支援装置において、プログラム中で使われる互いに重複しない識別子を生成する生成手段と、状態遷移情報中で使われるどの名前とプログラムで使われるどの識別子とが対応するかを表わす名前対応表と、状態遷移情報中のどのような構造とプログラム中のどのような構造とがどのように対応するかを表すプログラム生成情報と、を備えたことを特徴とする。請求項5の発明は、請求項2の発明を方法という見方からとらえたもので、請求項4記載のプログラム開発支援方法において、プログラム中で使われる互いに重複しない識別子を生成するステップを含み、状態遷移情報中で使われるどの名前とプログラムで使われるどの識別子とが対応するかを表わす名前対応表と、状態遷移情報中のどのような構造とプログラム中のどのような構造とがどのように対応するかを表すプログラム生成情報と、を使うことを特徴とする。請求項2,5の発明では、状態遷移情報とプログラムとの間で、どの名前とどの識別子とが対応し、また、どの構造とどの構造とがどう対応するかを、それぞれ名前対応表とプログラム生成情報を使って容易に判断できるので、解析や変更を効果的に行なうことができる。例えば、状態遷移情報中の名前をプログラム中の識別子に変換してプログラムの一部を作るとき、互いに重複しない識別子を生成し、生成した識別子をもとの名前と対応付けて名前対応表に登録しておけば、名前と識別子のどちらからでも対応する他方を検索することができる。
【0013】請求項3の発明は、複数の画面を切り替えながら実行されるプログラムの開発を支援する請求項1又は2記載のプログラム開発支援装置において、前記状態遷移情報は、前記各画面に対応する複数の状態ごとに、どのようなイベントが発生したときに他のどの状態に遷移するかと、遷移のときにどのようなアクションを行うか、とを記述し、前記プログラムは、前記各状態に対応する複数の画面ごとに、前記イベントを発生させるためにどのようなGUI部品を画面に表示するかと、前記イベントが発生したときにどのような処理を実行するか、とを記述することを特徴とする。請求項3の発明では、設計者は、画面の移り変わりを設計するとき、実際のプログラムで何という識別子を使うか意識することなく、状態間の遷移を表す状態遷移図や遷移表といった状態遷移情報の形で解りやすく記述することができる。そして、このような状態遷移図で新しく作成された状態や遷移を自動的にプログラムに挿入したり、また、状態遷移図から削除されたり不要になった状態や遷移を自動的にプログラム中から削除したりすることで、イベント駆動型のプログラムを生成したり、状態遷移情報の変更に合わせて操作することができる。このため、複数の画面を切り替えながら実行されるプログラムの開発が効率化される。
【0014】
【発明の実施の形態】以下、この発明の実施の形態(以下「実施形態」という)について図面を参照しながら説明する。なお、この発明は、周辺機器を持つコンピュータを、ソフトウェアで制御することによって実現されることが一般的と考えられる。この場合、そのソフトウェアは、この明細書の記載にしたがった命令を組み合わせることで作られ、上に述べた従来技術と共通の部分には従来技術で説明した手法も使われる。また、そのソフトウェアは、プログラムコードだけでなく、プログラムコードの実行のときに使うために予め用意されたデータも含む。
【0015】そして、そのソフトウェアは、CPU、コプロセッサ、各種チップセットといった処理装置、キーボードやマウスといった入力装置、メモリやハードディスク装置といった記憶装置、ディスプレイやプリンタといった出力装置などの物理的な資源を活用することでこの発明の作用効果を実現する。
【0016】但し、この発明を実現する具体的なソフトウェアやハードウェアの構成はいろいろ変更することができる。例えば、ソフトウェアの形式には、コンパイラ、インタプリタ、アセンブラなどいろいろあり、外部との情報をやり取りするにも、フロッピーディスクなどの着脱可能な記録媒体、ネットワーク接続装置などいろいろ考えられる。また、この発明を実現するソフトウェアやプログラムを記録したCD−ROMのような記録媒体は、単独でもこの発明の一態様である。さらに、この発明の機能の一部をLSIなどの物理的な電子回路で実現することも可能である。
【0017】以上のように、コンピュータを使ってこの発明を実現する態様はいろいろ考えられるので、以下では、この発明や実施形態に含まれる個々の機能を実現する仮想的回路ブロックを使って、この発明と実施形態とを説明する。
【0018】〔1.構成〕図1は、この実施形態の構成を示す機能ブロック図である。この実施形態は、状態遷移情報100(前記状態遷移図にあたる)とプログラムコード104(前記プログラムにあたる)との間で相互に、一方を変更したときにその変更を他方に反映させるようにしたプログラム開発支援装置である。
【0019】また、この実施形態は、この図に示すように、名前対応表101と、識別子生成部102と、プログラム生成情報103と、状態遷移図解析部105と、プログラムコード操作部106と、プログラムコード解析部107と、状態遷移図操作部108と、を備えている。
【0020】〔1−1.状態遷移情報とプログラムコードの関係〕これらのうち、状態遷移情報100は、開発しようとするプログラムの内容を、状態遷移の形で設計した情報である。この状態遷移情報100では、プログラムの動作が、複数の互いに違った状態又は同じ状態の間の遷移(移り変わり)で表わされていて、状態と状態との結び付き(遷移)が、その遷移を起こすイベント(処理)や条件で表現されている。
【0021】ここで、状態遷移情報100とプログラムコード104は互いに対応するものであるが、この実施形態で生成されるプログラムコード104は、いくつかの「画面」の間を「イベント」で移り変わることで動作するものとする。この場合、このプログラムの内容を表わす状態遷移情報100の中では、プログラムコード104における個々の「画面」はそれぞれ互いに違った「状態」として表わされ、プログラムコード104における個々の「イベント」はそれぞれ互いに違った「遷移」として格納されているものとする。
【0022】〔1−2.名前対応表の概略〕また、名前対応表101は、状態遷移情報100に含まれるいろいろな名前、具体的には状態の名前(状態名)、遷移のイベントの名前(イベント名)、条件の名前(条件名)、変数の名前(変数名)、関数の名前(関数名)などが、プログラム中で使うためにどのような識別子に割り当てられているかを表わす情報である。なお、状態遷移情報100中の要素の固有名詞を「名前」、プログラムコード104中の要素の固有名詞を「識別子」と呼ぶ。
【0023】なお、状態遷移情報100中の互いに違った状態でも同じイベント名や条件名などを持っている可能性があり、同様に、プログラムコード104中の互いに違った画面でも、同じGUI部品の識別子や同じ変数名を持っている可能性がある。このため、状態遷移情報100内のイベント名や条件名などの名前を名前対応表101に格納するときは、名前の後ろに状態名が付け加えられる。これによって、状態遷移情報100内の互いに違った状態について、同じイベント名や条件名が記述されていても、イベント名同士や条件名同士を互いに識別することができる。
【0024】同じように、名前対応表101では、プログラムコード104内のGUI部品の識別子や変数名にも、画面の識別子を付け加えることで、別の画面上の同じGUI部品や同じ変数名と区別する。
【0025】〔1−3.識別子生成部〕次に、識別子生成部102は、状態遷移情報100に含まれるイベント名や条件名といったいろいろな名前に対して、プログラムコード104中で使うための識別子を生成する部分であり、具体的には、名前として与えられる文字列ごとに、すでに生成して定義されているものと同じ識別子にならないように別の新しい識別子を生成するものである。また、この識別子生成部102は、プログラムコード104中で使われる識別子に対して、状態遷移情報100中で使われる名前を、互いに重複しないように生成する機能も持っている。
【0026】なお、状態遷移情報100中のイベントや条件に対して付ける名前を名前対応表101に登録するとき、この識別子生成部102は、イベント名や条件名の後ろに、それらのイベントが発生した状態名や、条件判断を必要とする状態名を付け加えることで、他の状態で同じ名前のイベントなどが発生した場合と区別する。
【0027】同じように、プログラムコード104中で使われる識別子を名前対応表101に登録するとき、識別子生成部102は、例えばボタンやプルダウンリストといったGUI部品の識別子の後ろにそのGUI部品が置かれる画面名を付け加えることで、他の画面のボタンやプルダウンリストと区別する。
【0028】〔1−4.プログラム生成情報〕また、プログラム生成情報103は、状態遷移情報100中のどのような構造とプログラムコード104中のどのような構造とがどのように対応するかを表すものである。すなわち、プログラム生成情報103は、開発対象とするプログラムコード104を状態遷移情報100から生成するためのいろいろな情報であり、例えば、プログラムコード104の実行時の状態を表わす状態変数の識別子、プログラムの骨組みを表わすスケルトンコード、プログラムを構成するプログラム部品のスケルトンコード、及びプログラム構文の情報などが含まれる。
【0029】〔1−5.プログラムコード〕また、プログラムコード104は、コンピュータ上で実際に動作するプログラムであり、ここではイベント駆動型プログラムであるものとする。このイベント駆動型プログラムとは、イベントの発生によって、イベントごとにそれぞれ予め対応付けられていたコードが実行されるようなプログラムである。
【0030】このプログラムコード104の中には、どのような画面を使うか、個々の画面上に存在するGUI部品の位置や色といった属性を定義する情報、個々のイベントが発生したときにどのようなプログラムが実行されるかというイベントごとのプログラム部品などが記述されている。なお、イベントとは、プログラムコード104実行時に発生しうる出来事であり、例えば、GUI部品に対する操作や時間経過などを指す。
【0031】〔1−6.状態遷移図解析部〕また、状態遷移図解析部105は、状態遷移情報100に含まれる情報を解析することで、状態遷移情報100に含まれる「状態」「イベント」「条件」などのうちどれが新しく追加され、どれが削除されたかといった解析結果を得て、この解析結果をプログラムコード操作部106に渡す部分である。
【0032】また、状態遷移図解析部105は、それら「状態」「イベント」「条件」などが、すでに名前対応表101に含まれているかどうかを調べるだけでなく、すでに名前対応表101に存在している名前に対しては、名前対応表101から対応する識別子を検索して割り当てる機能を持つ。
【0033】また、新しく作られた名前、すなわち名前対応表101に存在しない名前に関しては、識別子生成部102が生成する新しい識別子を割り当てると共に、この割当に基づいて名前対応表101を更新する。
【0034】〔1−7.プログラムコード操作部〕また、プログラムコード操作部106は、すでに存在するプログラムコード104を操作する部分であり、具体的には、プログラムコード104中の画面について挿入、削除、属性変更を行ったり、画面に置かれるGUI部品について挿入、削除、属性変更を行ったり、イベントが発生したときに実行されるプログラム部品の挿入や削除などを行う。
【0035】〔1−8.プログラムコード解析部〕次に、プログラムコード解析部107は、プログラムコード104に含まれる画面、GUI部品、条件の属性、イベントが発生したときに実行されるプログラム部品の動作に付けられた識別子がすでに名前対応表101に含まれているかどうかを解析し、解析結果を状態遷移図操作部108に渡す部分である。
【0036】すなわち、このプログラムコード解析部107は、すでに名前対応表101に存在する識別子については、その識別子に状態遷移情報100中で対応する名前を、名前対応表101から検索して割り当てる。また、新しく作成された識別子、すなわち名前対応表101に存在しないものについては、状態遷移情報100中で使う名前を決める。例えば、プログラムコード104中の画面やGUI部品の属性の中に、画面に表示する文字列を定義している部分があれば、その文字列を状態遷移情報100中で名前として使うことにして、その文字列を使って名前対応表101を更新する。
【0037】また、例えばプログラムコード104中で属性を定義している部分にそのような文字列がない場合には、識別子生成部102が作成する新しい名前を割当て、その名前を使って名前対応表101を更新する。
【0038】〔1−9.状態遷移図操作部〕状態遷移図操作部108は、状態遷移情報100を操作する部分であり、外部からキーボードやフロッピーディスクなどの入力装置を介して状態遷移情報100を読み込むほか、状態遷移情報100に対して状態の挿入と削除、イベントの挿入と削除、条件の挿入と削除、アクションの挿入と削除、といった操作が可能である。
【0039】〔1−10.状態遷移情報〕次に、この実施形態で使う状態遷移情報100の例を図2に示す。なお、図2で表を上下2つに分けているのは図示する形式上の都合のためで、実際にはこのように分ける必要はない。すなわち、この状態遷移情報100は、「メインメニュー画面」「時刻設定画面」といった状態ごとに、アクション(入)、アクション(出)、イベント、条件、遷移先、遷移時アクションという情報を定義しているものである。
【0040】つまり、状態欄200にはシステムがとりうる「状態」が列挙されていて、このように状態遷移情報100に記述されている個々の「状態」は、プログラムコード104中の「画面」に対応する。また、アクション(入)欄201に記述されているアクション(入)は、遷移が発生してその状態になるときに実行される動作である。このアクション(入)は、プログラムコード104では、その「画面」の表示に切り替わる直前に実行されるプログラムの部分に対応する。
【0041】一方、アクション(入)とは逆に、アクション(出)欄202に記述されているアクション(出)は、その画面から別の画面の表示に切り替わる直前に実行されるプログラムである。
【0042】また、遷移時アクション欄206に記述されている遷移時アクションは、該当する遷移が発生したときに実行されるプログラムである。なお、アクション(入)欄201、アクション(出)欄202、遷移時アクション欄206には、関数の呼び出しや変数への操作などが列挙される。
【0043】また、イベント欄203には、それぞれの状態から他の状態へ遷移するきっかけとして、ボタンの押されたことや、一定時間の経過といったイベントを記述することができる。また、条件欄204には、プルダウンリストの選択状況や変数の値などといった条件を記述することができる。ここで、プルダウンリストとは、ユーザがリストの中から項目を1つ選ぶためのGUI部品であり、例えば、図2の条件欄204で、プルダウンリストについて「設定内容=時刻」とあるのは、設定内容を表わすプルダウンリストから「時刻」という項目が選ばれている状態を表わし、この状態のときに「条件」は真となる。
【0044】なお、この条件欄204には、複数の条件を列挙することができ、個々の条件同士は、AND、OR、XORといった論理演算子や、括弧を使った演算順序の指定などで結合しておくこともできる。
【0045】また、遷移先欄205には、遷移先の画面が記述されている。つまり、状態欄200に記述されている状態で、イベント欄203に記述されているイベントが発生し、条件欄204に記述されている条件が真であるとき、遷移時アクション欄206に記述されている動作を実行し、遷移先欄205に記述されている状態に遷移する。
【0046】〔1−11.名前対応表の例〕次に、名前対応表101の例を図3に示す。すなわち、この名前対応表101は、状態遷移情報100中で使われている名前の文字列と、プログラムコード104中で使われている識別子の文字列との対応関係を表わす対照表である。この名前対応表101では、状態遷移情報用の名前欄301の中に存在する名前は、それまでに状態遷移情報100に存在した名前であり、プログラム用の識別子欄302の中に存在する識別名は、それまでにプログラムコード104中に存在した識別子である。
【0047】したがって、例えば、この実施形態をプログラム開発支援用ソフトウェアを使って実現する場合、過去にそのソフトウェアを使ったときに状態遷移情報100内にあった名前は名前欄301に記述され、過去にそのソフトウェアを使ったときにプログラムコード104内にあった識別子は識別子欄302に記述されていることになる。
【0048】なお、この実施形態では、状態遷移情報100内に新しい名前が追加されたときはそれに基づいてプログラムコード104中にも新しい識別子が追加され、逆にプログラムコード104内に新しい識別子が追加されたときは状態遷移情報100内にも新しい名前が追加される。そして、いずれの場合も新しい名前と識別子とは、1対1の対応関係で名前対応表101に登録されるので、名前対応表101内の名前と識別子とは、必ず同数存在することになる。
【0049】また、名前対応表101の属性欄300は、対応する識別子がプログラムコード104中のどの種類のものに割り当てられているかを表わすもので、具体的には、画面、GUI部品、プルダウンリスト、変数、関数などの種別が記述される。なお、過去に一旦名前対応表101に含まれていた名前や識別子であっても、その後、現在までの間に状態遷移情報100やプログラムコード104から削除されていたものは、その削除に伴って名前対応表101からも削除されているので、名前対応表101中には含まれない。
【0050】〔1−12.プログラムコードの例〕次に、図4と図5は、プログラムコード104の構造を示す例である。すなわち、プログラムコード104は、システム定義ファイル400(図4)と、1つ以上の画面定義ファイル500(図5)から構成される。
【0051】〔1−12−1.システム定義ファイル〕このうちシステム定義ファイル400は、開発対象となっているプログラムがどのような画面を持っているかと、そのプログラムが実行時にどのようなプログラムファイルを必要とするかを列挙したものであり、ここでいうプログラムファイルは、プログラミング言語に標準の入出力モジュール、定義済関数、ランタイムルーチン、ダイナミックリンクライブラリなどを含む。具体的には、システム定義ファイル400には、図4に示すように、開発対象のシステムで使う画面定義ファイル500の名前が列挙されている。
【0052】〔1−12−2.画面定義ファイル〕一方、画面定義ファイル500は、状態すなわち画面1つにつき1つ存在していて、図5に示すように、個々の画面の内容を定義するものである。例えば、図5に例示する画面定義ファイル500では、画面定義部501で、画面の位置やサイズといった画面の属性が記述されていて、GUI部品定義部502では、その画面に配置されるGUI部品が定義されている。
【0053】また、個々の画面には複数のGUI部品が存在する場合もあり、そのような場合は、画面定義ファイル500にも複数のGUI部品定義部502が含まれる。そして、画面やGUI部品の定義は、1つのまとまりごとに、予約語「begin」から「end」の間に記述され、画面上に存在するGUI部品の定義は、画面定義部501の「begin」と「end」の中に、さらに入れ子にされた「begin」と「end」の間に記述される。
【0054】ここで、「begin」「end」などを含む言語仕様は、プログラム生成情報103に含まれる。また、画面が表示されているときにタイマの時間経過といったイベントが発生した場合や、各GUI部品においてイベントが発生した場合に実行されるプログラム部品は、イベント用関数定義部503に記述されている。なお、このイベント用関数定義部503は、各画面の各GUI部品ごとに格納されている。
【0055】〔2.作用〕上に述べたように構成されたこの実施形態は次のような作用を有する。
〔2−1.大まかな作用〕この実施形態では、状態遷移情報100に加えられた変更に基づいてプログラムコード104を更新することと、逆に、プログラムコード104に加えられた変更に基づいて状態遷移情報100を更新することができる。
【0056】すなわち、まず、状態遷移情報100からプログラムコード104を生成するときは、状態遷移情報100のどの部分がどのように変更されたかを状態遷移図解析部105が解析し、この解析結果にしたがって、プログラムコード操作部106が、プログラムコード104のうち変更点に対応する部分だけを操作して更新する。
【0057】また、生成されたプログラムコード104から、逆に状態遷移情報100を生成するときは、プログラムコード104のどの部分がどのように変更されたかをプログラムコード解析部107が解析し、この解析結果にしたがって、状態遷移図操作部108が、状態遷移情報100のうち変更点に対応する部分だけを操作して更新する。
【0058】なお、状態遷移情報100かプログラムコード104の一方から他方を生成するときは、状態遷移情報100中のどの名前と、プログラムコード104中のどの識別子とが対応するかが名前対応表101に記録される。このとき、新しい名前又は識別子が登場したときは、識別子生成部102がそれに対応する識別子又は名前を生成し、両者は名前対応表に追加登録される。また、状態遷移情報100又はプログラムコード104のどのような変更に対して、対応するプログラムコード104又は状態遷移情報100をどのように変更すればよいかは、プログラム生成情報103に基づいて判断される。
【0059】このように、この実施形態では、状態遷移情報100とプログラムコード104との間で、一方が変更されたとき、他方を上書きすることなく、変更点が他方に反映される。このため、ユーザは、状態遷移情報100又はプログラムコード104のうち都合の良いほうで変更の作業を行なうことができ、しかも、一方の変更に合わせて他方をユーザが変更しなくとも、両者の整合性が保たれ、プログラム開発が効率化される。
【0060】なお、状態遷移情報100やプログラムコード104を「変更」するというのは、この出願では、すでにある状態遷移情報100やプログラムコード104を更新するだけでなく、与えられた状態遷移情報100から最初にプログラムコード104を生成するような場合を含むものとする。つまり、状態遷移情報100の全体が与えられた場合、状態遷移情報100は全体が「変更」されたと考え、この変更に対応して、プログラムコード104もその全体が「変更」されたと考える。
【0061】また、同様に、ユーザが所定の操作をすることによって、例えばある時点のプログラムコード104の全体から、状態遷移情報100の全体を改めて新しく生成したり、その逆の処理を行うこともできる。
【0062】〔2−2.プログラムコードの生成〕まず、状態遷移情報100からプログラムコード104を生成する手順を図7のフローチャートに示す。
〔2−2−1.状態遷移情報の解析〕この手順では、まず、状態遷移図解析部105が、状態遷移情報100のどの部分がどのように変更されたかを解析する。但し、上に述べたように、プログラムコード104が生成されていない状態で、与えられた状態遷移情報100に基づいて最初にプログラムコード104を生成するときは、状態遷移情報100の全体が変更されたものと解析され、プログラムコード104の全体が生成される。
【0063】〔2−2−1−1.新しい名前の検索〕状態遷移情報100の解析では、まず、状態遷移図解析部105は、状態遷移情報100中のいろいろな名前が名前対応表101にあるかどうかを調べる(ステップ700)。ここで状態遷移情報100中の名前としては(図2R>2)、状態欄200にある状態名、イベント欄203にあるイベント名、条件欄204にある条件名のほか、アクション(入)欄201、アクション(出)欄202、遷移時アクション欄206にある変数名や関数名などが挙げられる。
【0064】なお、ステップ700で状態遷移情報100中の名前を名前対応表101から検索する場合、同じ名前でも後ろに状態名を加えることで区別される。例えば、イベントの名前は、イベント名とそのイベント発生する状態の名前とを連結したものとして名前対応表101から検索される。このため、別の状態が同じイベント名のイベント発生させる場合でも、2つのイベントが混同されることはない。条件など他の種類の名前についてもそのように検索される。
【0065】ステップ700で調べた名前が名前対応表101に存在しない場合は(ステップ701)、状態遷移図解析部105は、その名前は新しく作成されたものとして新規リストに登録するとともに(ステップ702)、その名前を追加することで名前対応表101を更新する。
【0066】ここで、新規リストとは、状態遷移情報100からプログラムコード104を生成するとき、前回生成したときには状態遷移情報100に含まれていなかったが現在では状態遷移情報100に加えられている新しい名前を登録しておくリストである。また、状態遷移図解析部105は、新しく名前対応表101に登録された名前に対して、識別子生成部102に新しい識別子を生成させ、新しい名前に、このように生成された新しい識別子を対応付けて名前対応表101に登録する。
【0067】このように、状態遷移情報100に含まれる名前を1つずつ取り出して、ステップ700から702の処理を繰り返した結果、全ての名前について調べ終わると(ステップ703)、新規リストは図8に例示するような状態となる。この図8は、プログラムコード104と名前対応表101がまだ作られていない状態で状態遷移情報100を与え、初めてプログラムコード104を生成しようとする処理で、ステップ703までの処理が終わったときの新規リストを示している。
【0068】〔2−2−1−2.削除された名前の検索〕次に、状態遷移図解析部105は、名前対応表101中で状態遷移情報100用の名前欄301に登録されている個々の名前を改めて1つずつ選び、状態遷移情報100中に存在するかどうを調べる(ステップ704)。なお、この検索でも、ステップ700で新しい名前を検索したときと同じように、例えばイベント名に状態名を付けることで、別の状態の同じイベント名と区別する。
【0069】そして、ステップ704で調べた名前が状態遷移情報100中に存在しない場合は(ステップ705)、その名前は状態遷移情報100が編集された結果として削除されたものと解釈できるので、状態遷移図解析部105は、その名前を削除された名前として削除リストに登録する(ステップ706)。ここで、削除リストとは、状態遷移情報100からプログラムコード104を生成するとき、前回生成したときには状態遷移情報100に含まれていたが現在では状態遷移情報100から削除されている名前を登録しておくリストである。
【0070】このように、名前対応表101に含まれる名前を1つずつ取り出して、ステップ704から706の処理を繰り返した結果、全ての名前について調べ終わると(ステップ707)、新規リストは図9に例示するような状態となる。
【0071】この例は、状態遷移情報100からプログラムコード104を前回生成したときと比べて、状態遷移情報100から時刻設定画面が削除されていた場合の削除リストである。この例では、時刻設定の初期化を行う関数も削除リストに入っているが、これは、時刻設定画面が状態遷移情報100から削除されたときに、この画面に関連する遷移のイベントも削除されるので、該当する関数の呼び出しが状態遷移情報100中には存在しなくなるためである。このように、ある画面が状態遷移情報100から削除されると、それに関連して削除されるものの名前も削除リストに登録されることになる。
【0072】〔2−2−2.プログラムコードの操作〕次に、プログラムコード操作部106は、上に述べたような解析の結果、すなわち新規リスト、削除リスト、更新された名前対応表などを使ってプログラムコード104を操作する。
【0073】〔2−2−2−1.システム定義ファイルの更新〕すなわち、プログラムコード操作部106は、まず、状態遷移情報100中に存在する状態名を、名前対応表101に基づいて、プログラムコード104中で使われる画面名に変換してシステム定義ファイル400に登録する(ステップ708)。
【0074】また、プログラムコード操作部106は、削除リスト中の状態名を、ステップ708と同じようにプログラムコード104中で使われる画面名に変換し、システム定義ファイル400からその画面に関するファイル名を削除し(ステップ709)、不要になった画面定義ファイル500は削除又は改名しておく。
【0075】〔2−2−2−2.画面定義ファイルの更新〕続いて、プログラムコード操作部106は、個々の画面定義ファイル500の内容を次のように更新する。
【0076】〔2−2−2−3.画面定義ファイルの用意〕すなわち、プログラムコード操作部106は、状態遷移情報100中の個々の状態すなわち画面を1つずつ選び、その状態について次の処理を行う(ステップ710)。まず、選んだ状態が新規リストに入っていない既存の状態ならば、前回作成したプログラムコード104のファイルから、既存の画面定義ファイル500を読み込んで操作の対象とする(ステップ711)。
【0077】このように、既存の状態について前回作成したプログラムコード104の部分をそのまま読み込んで使うことで、ユーザが別のツールなどでプログラムコード104に直接施した変更が、上書きされることなく、更新後の新しいプログラムコード104でも有効となる。
【0078】一方、選んだ状態が新規リストに入っている新しい状態であれば、その状態に対応する新しい画面のために、プログラム生成情報103から画面定義部501の原形となるスケルトンコードを読み込んで画面定義ファイル500を作成する(ステップ711)。
【0079】このように状態遷移情報100に新しく追加された状態に基づいて、新しい画面の画面定義ファイル500を作るとき、画面定義ファイル500の画面定義部501中に画面のタイトルを表わす属性があれば、その属性の属性値としては、状態遷移情報100に追加された状態の状態名を設定する。
【0080】ここで、画面のタイトルとは、複数の画面を互いに見分けられるようにユーザに対して表示される文字列であり、例えば、複数の画面をマルチウインドウの形式で表示するユーザインタフェースでは、画面の最上部にタイトルが表示されるものが多く、その表示されている部分はタイトルバーなどと呼ばれる。
【0081】このようなタイトルの属性値として、例えば、画面定義部501に「title = “メインメニュー画面”」のように状態遷移情報100中の状態名を記述しておき、プログラムコード104の実行時に、この状態名を画面上に表示することで、状態遷移情報100とプログラムコード104との対応がとりやすくなり、プログラム開発が効率化される。
【0082】〔2−2−2−4.GUI部品の削除〕続いて、プログラムコード操作部106は、このように用意された画面定義ファイル500から、削除リストに入っているGUI部品に対応するGUI部品定義部502を削除する(ステップ712)。この場合、GUI部品に対応してどのGUI部品定義部502を削除するかは、プログラム生成情報103に含まれている言語仕様に基づいて判断することが可能であり、具体的には「begin」と「end」で囲まれた範囲が削除の単位となる。
【0083】例えば、時刻設定画面の「完了」ボタンを削除するには「begin btn000scr001」から「end」までの部分を削除すればよい。また、このようにGUI部品が削除されるときは、イベントが発生したときに実行されるプログラム部品のうちこのGUI部品に付属する部分も不要となるので同様に削除する。この場合、「func処理関数名」と対応する「」に囲まれた部分を削除する。例えば、メインメニュー画面の「選択」ボタンを削除するには、「begin btn000scr_pressed{」から「}」の部分を削除する。
【0084】〔2−2−2−5.GUI部品の挿入〕また、プログラムコード操作部106は、用意された画面定義ファイル500の画面定義部501に、必要なGUI部品定義部502を追加する(ステップ713)。すなわち、プログラムコード操作部106は、新規リストに入っているGUI部品のスケルトンコードを読み込み、このスケルトンコードに基づいて新しいGUI部品定義部502を作るが、その名前としては、追加されたGUI部品に名前対応表101で対応付けられた識別子を使う。
【0085】このとき、画面定義部501中に、GUI部品のタイトルを表わす属性があれば、その属性の属性値として、そのGUI部品に状態遷移情報100中で付けられていた名前を設定する。GUI部品について「タイトル」というときは、GUI部品の上に表示される文字列である。そして、このタイトルを例えばtitleという属性が表わす場合、「title = “完了”」のように設定しておくことで、「完了」とタイトルが表示されたGUI部品を生成することができる。
【0086】なお、上に述べたようなGUI部品定義部502の新規作成や削除のとき、プログラムコード操作部106は、すでに画面定義ファイル500の中に存在していて新規作成や削除の対象になっていないGUI部品の定義部には手を加えないので、プログラムコード104に対して直接行われた属性の変更はプログラムコード104が操作されてもそのまま保持される。
【0087】なお、GUI部品の削除は、画面定義ファイル500を1つ用意するごとに行っても、全ての画面定義ファイル500を用意してから一括して行ってもよいが、削除対象のGUI部品がどの画面定義ファイル500に含まれているかは次のように判断することができる。
【0088】例えば、ボタンやプルダウンリストなどのGUI部品は、状態遷移情報100のなかではイベント名や条件名などの名前に、そのイベントに対応するボタンや条件に対応するプルダウンリストの名前が後ろに付加した形で登録されている。このため、付加された部分を参照することで、削除対象のGUI部品が含まれる画面のファイルがわかるので、該当する画面ファイルから該当するGUI部品に関する部分を削除することができる。
【0089】〔2−2−2−6.イベントプログラムの生成〕さらに、プログラムコード操作部106は、GUI部品に付属する遷移について、イベントプログラムを生成する(ステップ714)。例えば、ある画面で「完了」ボタンが押されたときに「メインメニュー画面」に戻るという処理を考える。このような処理を実現するには、「完了」ボタンに対応する名前のGUI部品のボタンが押し下げられた場合というイベントに対して、このイベントが起きたときに行う処理をイベント用関数定義部503に記述する。このようにイベントが起きたときに行う処理を定めた部分をイベントプログラムと呼ぶ。
【0090】この場合は、イベント用関数定義部503には、遷移先を指定する命令「next = “メインメニュー画面”」と、遷移を起こす関数「transition」の呼び出しを記述する。また、遷移に条件が付随していた場合は、上に述べた「next = “メインメニュー画面”」のような命令の前にif文などの条件判断を記述すればよい。イベント用関数定義部503にこのようなif文を使った例を図5に示す。この場合、if文の条件は、プルダウンリストの状態は変数の値に関する条件式などであり、これらも、状態遷移情報100内のGUI部品や変数などの名前をそれぞれ名前対応表101に基づいて変換した識別子としてプログラムコード104中に挿入される。
【0091】〔2−2−2−7.付属ファイルの生成〕次に、プログラムコード操作部106は、プログラムコード104を実行するために必要な付属ファイルの生成を行う。この付属ファイルの名称も、画面定義ファイル500と同じようにシステム定義ファイル400に登録されている。そして、付属ファイルの内容は図6に例示するようになっており、図2で説明したアクション(入)とアクション(出)が記述されている。また、図6R>6の付属ファイルに記述されている関数「transition」は実際の遷移を起こす部分であり、この部分を実行することで画面を切り替える。また、「preaction」と「postaction」はそれぞれ、状態遷移情報100中のアクション(入)欄201とアクション(出)欄202に記述されている動作を、名前対応表101で変換したうえで、プログラムコード104内に埋め込んだものである。
【0092】なお、以上に述べたように、状態遷移情報100を解析した結果にしたがって、プログラムコード104を操作するとき、状態遷移情報100のどの部分がどのように変更されたときに、プログラムコード104のどの部分をどのように操作するかは、プログラム生成情報103を参照することで判断される。
【0093】〔2−3.状態遷移情報の作成〕次に、プログラムコード104から状態遷移情報100を作成する処理手順を図12のフローチャートに示す。
【0094】〔2−3−1.プログラムコードの解析〕プログラムコード104から状態遷移情報100を生成するときは、まず、プログラムコード解析部107が、プログラムコードのどの部分がどのように変更されているかを解析する。
【0095】〔2−3−1−1.新しい名前の検索〕まず、プログラムコード解析部107は、プログラムコード104中に用いられている画面、GUI部品(ボタンやプルダウンリスト)、変数、関数などの個々の識別子について名前対応表101中の識別子と照らし合わせることで、名前対応表101に存在するかどうか調べる(ステップ1200)。そして、プログラムコード104にあって名前対応表101にない識別子は(ステップ1201)、新規に作成されたものとして、新規リストに登録する(ステップ1202)。
【0096】このように新しい識別子を探すとき、関数に関しては、呼び出されることがない関数を削除するために、関数の呼び出しをしている部分を調べる。このように新しくプログラムコードに追加された識別子を登録した結果、新規リストは図10のようになる。図10は、状態遷移情報100と名前対応表101が存在しない状態から、新しく状態遷移情報100を作成する場合の図である。
【0097】また、ステップ1202では、プログラムコード解析部107は、識別子生成部102に、新規リストに登録された識別子に対して、すでに名前対応表101にある名前と重複しない新しい名前を生成させ、新しく見つけた識別子とこのように生成された名前とを対応づけて名前対応表101を追加登録する。
【0098】このようにプログラムコードに新しく追加された画面やGUI部品の識別子に対応する名前を付ける際に、画面定義部501中にその画面やGUI部品のタイトルを表す属性があり、なおかつ、その属性の属性値が名前対応表101中のどの名前とも重複しない場合には、そのタイトルを状態遷移情報100中での名前とする。なお、タイトルとは画面やGUI部品の上に表示される文字列である。
【0099】例えば、プログラムコード中で「title = “メインメニュー画面”」といった定義を行なっている部分を解析して“メインメニュー画面”という言葉を取り出し、それを状態遷移情報100中で用いる名前とする。こうすることで、実行時にプログラムコード104と状態遷移情報100の対応がとりやすくなる。
【0100】一方、プログラムコード104中の画面定義部501中に、新しい画面やGUI部品のタイトルを表す属性が無い場合や、存在してもそれが名前対応表101中にすでにある名前のどれかと重複する場合には、識別子生成部102が例えば文字や数字の組み合わせなどで生成する名前を、その画面やGUI部品につける。
【0101】〔2−3−1−2.削除された名前の検索〕すべての識別子について名前対応表101にあるかどうの確認が済むと(ステップ1203)、プログラムコード解析部107は、名前対応表101中のプログラム用識別子欄302にある個々の識別子について、プログラムコード104中の識別と照らし合わせることで、プログラムコード104中に存在しない識別子を探す(ステップ1204)。そして、名前対応表101にあってプログラムコード104にない識別子は(ステップ1205)、プログラムコード104をユーザが直接編集することで削除されたと解釈し、その識別子を削除リストに登録する(ステップ1206)。
【0102】このように削除された識別を登録した結果、削除リストは図11のようになる。図11は、画面の識別子scr001がプログラムコード104から削除されていた場合を例にしている。また、この例では、関数の識別子func003も削除リストに入っているが、これは画面scr001がプログラムコード104から削除されたときに、遷移イベントも削除されるので、解析の結果、関数func003がどこからも呼ばれなくなっていることが判明するためである。
【0103】〔2−3−2.状態遷移情報の操作〕削除されたかの確認が全ての識別子について済むと(ステップ1207)、次に、状態遷移図操作部108は、上に述べたような解析の結果、すなわち、新規リスト、削除リスト、更新された名前対応表101などを使って、状態遷移情報100を操作する(ステップ1208〜1213)。
【0104】〔2−3−2−1.状態の登録と削除〕この操作では、状態遷移図操作部108は、まず、新規リストに登録されている新しい画面を、識別子生成部102によって作成される名前に変換したうえで、状態遷移情報100の状態欄200に登録する(ステップ1208)。次に、削除リストに登録されている画面に対応する状態名を状態遷移情報100の該当する行から削除する(ステップ1209)。
【0105】続いて、状態遷移図操作部108は、プログラムコード104中の個々の画面定義部501を選び、その画面定義部501に対応する画面及び状態遷移情報100について、以下の操作を行なう(ステップ1210)。すなわち、状態遷移図操作部108は、状態遷移情報100の中で、選んだ画面に対応する状態の行のイベント欄203、条件欄204、遷移先欄205、遷移時アクション欄206に対して、以下の操作を行う。
【0106】〔2−3−2−2.GUI部品に対応する行の削除〕まず、状態遷移図操作部108は、削除リスト中に、その状態に存在していたGUI部品(ここではボタン)が入っている場合、すなわちそのようなGUI部品の識別子が登録されている場合には、そのGUI部品に対応する状態遷移情報100中の名前を名前対応表101から調べる。そして、状態遷移図操作部108は、状態遷移情報100の該当する状態について、そのような削除されたGUI部品に対応するイベント欄203、条件欄204、遷移先欄205、遷移時アクション欄206を削除する。
【0107】〔2−3−2−3.GUI部品に対応する行の登録〕次に、状態遷移図操作部108は、新規リストに登録されている画面及びGUI部品について、状態遷移情報100中で対応する状態のイベント欄203、条件欄204、遷移先欄205、遷移時アクション欄206の更新を行う。このような更新を行なうためには、プログラムコード解析部107が、プログラムコード104のうち、個々のGUI部品のイベント用関数定義部503に使われている識別子に対応する名前を名前対応表101から調べ、状態遷移情報100のうち調べた名前に該当する行を操作の対象とする。
【0108】例えば、あるイベント用関数定義部503にif文がある場合には、それを条件と解釈し、この条件で用いられている、変数やプルダウンリストの識別子を名前対応表101で状態遷移情報100中で使う名前に変換して、該当する行の条件欄204に登録する。
【0109】また、そのときの遷移先を検索するためには「next=scr001」というような遷移先を指定している部分を解析する。これにより、次の画面が、scr001であると解釈できる。そして、状態遷移情報操作部108は、この識別子を、名前対応表101を用いて、状態遷移情報100で用いる名前に変換して、該当する行の遷移先欄205に登録する。またこのとき、ほかの関数の呼び出しや、変数への操作などのステートメントがあれば、それら呼び出しやステートメントに使われている識別子を同様に名前対応表101で変換して、該当する行の遷移時アクション欄206に登録する。
【0110】また、上に述べたように、プログラムコード104を解析した結果にしたがって状態遷移情報100を操作するとき、プログラムコード104で追加された部分がプログラムコード104のどのような構造をどのように構成している部分であるときに、状態遷移情報100のどの欄に何を登録するかは、プログラム生成情報103を参照することで判断される。
【0111】ここで、状態遷移情報100中に存在し、新規作成や削除の対象になっていないイベント、条件、遷移先、遷移時アクションには、状態遷移情報操作部108は手を加えないので、状態遷移情報100に対して直接行なわれた属性の変更は保持される。
【0112】〔3.効果〕以上のように、本実施形態によれば、状態遷移情報100から生成したプログラムコード104をユーザが別のツールなどで直接変更したあと、もとの状態遷移情報100を変更して再びプログラムを生成しても、すでにあるプログラムコード104全体を上書きすることはない。すなわち、状態遷移情報100の変更点だけが既存のプログラムコード104に反映されるため、ユーザがプログラムコード104に直接加えた変更と、状態遷移情報100に加えた変更が同じプログラムコード104上で並存でき、プログラム開発が効率化される。
【0113】また、生成されたプログラムコード104に直接加えられた変更を、元の状態遷移情報100に反映されることで、プログラムにあわせてユーザが状態遷移情報100を書き換える作業が不要になり、プログラム開発が効率化される。
【0114】これらによって、この実施形態では、状態遷移情報100とプログラムコード104の間で、変更点を反映させて整合性を保つ処理が双方向に可能となる。つまり、状態遷移情報100とプログラムコード104の一方を変更したとき、他方の全体を上書きすることなく、変更点だけが他方に反映されるので、反映される側でユーザが直接加えた変更と反映される変更とが両方有効になる。このため、ユーザは、どのような点を変更したいかに応じて、状態遷移情報100とプログラムコード104のうち都合のよい方を変更することができ、プログラム開発が効率化される。
【0115】また、この実施形態では、状態遷移情報100とプログラムコード104との間で、どの名前とどの識別子とが対応し、また、どの構造とどの構造とがどう対応するかを、それぞれ名前対応表101とプログラム生成情報103を使って容易に判断できるので、解析や変更を効果的に行なうことができる。例えば、状態遷移情報100中の名前をプログラム中の識別子に変換してプログラムコード104の一部を作るとき、互いに重複しない識別子を生成し、生成した識別子をもとの名前と対応付けて名前対応表101に登録しておけば、名前と識別子のどちらからでも対応する他方を検索することができる。
【0116】特に、この実施形態では、設計者は、画面の移り変わりを設計するとき、実際のプログラムで何という識別子を使うか意識することなく、状態間の遷移を表す状態遷移図や遷移表といった状態遷移情報100の形で解かりやすく記述することができる。そして、このような状態遷移情報100で新しく作成された状態や遷移を自動的にプログラムコード104に挿入したり、また、状態遷移情報100から削除されたり不要になった状態や遷移を自動的にプログラムコード104中から削除したりすることで、イベント駆動型のプログラムコード104を生成したり、状態遷移情報100の変更に合わせて操作することができる。このため、複数の画面を切り替えながら実行されるプログラムの開発が効率化される。
【0117】〔4.他の実施形態〕なお、本発明は上記実施形態に限定されるものではなく、次に例示するような他の実施形態も含むものである。例えば、状態遷移情報は状態遷移図や状態遷移表など、どのような形式で表しておいてもよい。また、開発対象とするプログラムの形式や分野などは自由で、例えば、複数の画面を切り替えて実行されるものには限定されない。
【0118】また、上に述べた実施形態では、状態遷移情報やプログラムコードの全体についてどのような変更があったかをまとめて解析した後、解析結果にしたがったプログラムコードや状態遷移情報の操作もまとめて行ったが、このような解析と操作とは、状態遷移情報やプログラムコードの一部分ずつごとに順次行うこともできる。また、状態遷移情報の変更点をプログラムコードに反映させることと、プログラムコードから状態遷移情報を生成することは、必ずしも双方向に両方できる必要はなく、どちらか一方だけできるように実施することもできる。
【0119】また、上に述べた実施形態では、状態遷移情報中の要素を表す言葉を「名前」と呼び、プログラムコード中の要素を表す言葉を「識別子」と呼んだが、これらの言葉は例示に過ぎず、他の呼び方をしてもよいし、例えば状態遷移情報中の名前であっても特に意味のない記号や数字を使ったり、逆に、プログラムコード識別子として何らかの意味のある単語などを使うこともできる。
【0120】また、識別子を生成する手段、名前対応表、プログラム生成情報の具体的な構成や形式は自由であり、また、これらは独立した存在ではなく、例えば解析部105,107、操作部106,108などの一機能や付属物として構成することもできる。
【0121】
【発明の効果】以上のように、この発明によれば、状態遷移情報の変更が、プログラム全体を上書きすることはなくプログラムに反映されるので、ユーザがプログラムに直接加えた変更と、状態遷移情報に加えた変更が同じプログラム上で並存でき、プログラム開発が効率化される。
【図面の簡単な説明】
【図1】本発明の実施形態の構成を示す機能ブロック図。
【図2】本発明の実施形態における状態遷移情報の例を示す図。
【図3】本発明の実施形態における名前対応表の内容例を示す図。
【図4】本発明の実施形態におけるシステム定義ファイルの内容例を示す図。
【図5】本発明の実施形態における画面定義ファイルの内容例を示す図。
【図6】本発明の実施形態における付属ファイルの内容例を示す図。
【図7】本発明の実施形態において、状態遷移情報からプログラムコードを生成する手順を示すフローチャート。
【図8】本発明の実施形態において、状態遷移情報からプログラムコードを生成するときの新規リストの内容例を示す図。
【図9】本発明の実施形態において、状態遷移情報からプログラムコードを生成するときの削除リストの内容例を示す図。
【図10】本発明の実施形態において、プログラムコードから状態遷移情報を生成するときの新規リストの内容例を示す図。
【図11】本発明の実施形態において、プログラムコードから状態遷移情報を生成するときの削除リストの内容例を示す図。
【図12】本発明の実施形態において、プログラムコードから状態遷移情報を生成する手順を示すフローチャート。
【符号の説明】
100…状態遷移情報
101…名前対応表
102…識別子生成部
103…プログラム生成情報
104…プログラムコード
105…状態遷移情報解析部
106…プログラムコード操作部
107…プログラムコード解析部
108…状態遷移情報操作部
200…状態欄
201…アクション(入)欄
202…アクション(出)欄
203…イベント欄
204…条件欄
205…遷移先欄
206…遷移時アクション欄
300…属性欄
301…状態遷移情報用名前欄
302…プログラ用識別子欄
400…システム定義ファイル
500…画面定義ファイル
501…画面定義部
502…GUI部品定義部
503…イベント用関数定義部
600…変数宣言部
601…遷移実行部
602…アクション(入)記述部
603…アクション(出)記述部
604…関数実装部
700…状態遷移情報中から新しい名前を検索するステップ
702…状態遷移情報内の新しい名前を新規リストに登録するステップ
704…状態遷移情報内から削除された名前を検索するステップ
706…状態遷移情報内から削除された名前を削除リストに登録するステップ
708…システム定義ファイルを更新するステップ
709…不要な画面定義ファイルを削除するステップ
711…画面定義ファイルを用意するステップ
712…状態遷移情報から削除されたGUI部品に関する部分を削除するステップ
713…状態遷移情報に追加されたGUI部品に関する部分を挿入するステップ
714…イベントプログラムを生成するステップ
1200…プログラムコードから新しい識別子を検索するステップ
1202…プログラム内の新しい識別子を新規リストに登録するステップ
1204…プログラム内から削除された識別子を検索するステップ
1206…プログラム内から削除された識別子を削除リストに登録するステップ
1208…プログラムコード中の新しい画面に対応する状態を状態遷移情報に挿入するステップ
1209…プログラムコードから削除された画面に対応する状態を状態遷移情報から削除するステップ
1211…プログラムコードから削除されたGUI部品に関する部分を状態遷移情報から削除するステップ
1212…プログラムコードに追加されたイベントに対応する内容を状態遷移情報に挿入するステップ

【特許請求の範囲】
【請求項1】 状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援装置において、状態遷移情報のどこがどのように変更されたかを解析する情報解析手段と、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作するプログラム操作手段と、プログラムのどこがどのように変更されたかを解析するプログラム解析手段と、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作する情報操作手段と、を備えたことを特徴とするプログラム開発支援装置。
【請求項2】 プログラム中で使われる互いに重複しない識別子を生成する生成手段と、状態遷移情報中で使われるどの名前とプログラムで使われるどの識別子とが対応するかを表わす名前対応表と、状態遷移情報中のどのような構造とプログラム中のどのような構造とがどのように対応するかを表すプログラム生成情報と、を備えたことを特徴とする請求項1記載のプログラム開発支援装置。
【請求項3】 複数の画面を切り替えながら実行されるプログラムの開発を支援する請求項1又は2記載のプログラム開発支援装置において、前記状態遷移情報は、前記各画面に対応する複数の状態ごとに、どのようなイベントが発生したときに他のどの状態に遷移するかと、遷移のときにどのようなアクションを行うか、とを記述し、前記プログラムは、前記各状態に対応する複数の画面ごとに、前記イベントを発生させるためにどのようなGUI部品を画面に表示するかと、前記イベントが発生したときにどのような処理を実行するか、とを記述することを特徴とするプログラム開発支援装置。
【請求項4】 状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援方法において、状態遷移情報のどこがどのように変更されたかを解析するステップと、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作するステップと、プログラムのどこがどのように変更されたかを解析するステップと、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作するステップと、を含むことを特徴とするプログラム開発支援方法。
【請求項5】 プログラム中で使われる互いに重複しない識別子を生成するステップを含み、状態遷移情報中で使われるどの名前とプログラムで使われるどの識別子とが対応するかを表わす名前対応表と、状態遷移情報中のどのような構造とプログラム中のどのような構造とがどのように対応するかを表すプログラム生成情報と、を使うことを特徴とする請求項4記載のプログラム開発支援方法。
【請求項6】 コンピュータによって、状態遷移情報を使ってプログラムの開発を支援するプログラム開発支援用ソフトウェアを記録した記録媒体において、そのソフトウェアは前記コンピュータに、状態遷移情報のどこがどのように変更されたかを解析させ、状態遷移情報の各部分とプログラムの各部分との対応関係に基づいて、状態遷移情報での前記変更に対応するプログラムの部分を操作させ、プログラムのどこがどのように変更されたかを解析させ、プログラムの各部分と状態遷移情報の各部分との対応関係に基づいて、プログラムでの前記変更に対応する状態遷移情報の部分を操作させることを特徴とするプログラム開発支援用ソフトウェアを記録した記録媒体。

【図1】
image rotate


【図2】
image rotate


【図11】
image rotate


【図3】
image rotate


【図4】
image rotate


【図8】
image rotate


【図9】
image rotate


【図10】
image rotate


【図5】
image rotate


【図6】
image rotate


【図7】
image rotate


【図12】
image rotate


【公開番号】特開平11−327889
【公開日】平成11年(1999)11月30日
【国際特許分類】
【出願番号】特願平10−134968
【出願日】平成10年(1998)5月18日
【出願人】(000003078)株式会社東芝 (54,554)