(57)【要約】【課題】状態間の遷移の際に行うプログラム処理が、実行制限時間を超えた場合に、その処理を構成する関数のうち、どの関数が実行制限時間を超えているかを特定し、その特定した関数を利用者に視覚的に認識させる。【解決手段】プログラム設計支援装置１が、状態間の遷移の際に行うプログラム処理を細分化して関数ごとに表示部２０に表示する。そして、ボトルネック検出条件設定部１３０が、その関数ごとの実行制限時間として閾値を設定させる。そして、各関数ごとの処理時間の実測値を検出することで、ボトルネック検出部１５０が実測値と閾値とを比較し、実測値が閾値を超えた関数について、表示制御部１６０が表現形式を視覚的に変更して表示させることを特徴とする。【選択図】図１
2010211682.tif 000002
【特許請求の範囲】
【請求項１】
プログラムにおける状態の遷移に関する情報を表示部に表示することにより、プログラム設計を支援するプログラム設計支援装置であって、
前記状態間の遷移の際に処理するプログラムを細分化した１つ以上の関数が記憶された記憶部を備え、
前記記憶部に記憶された関数を表示部に表示し、前記関数の処理ごとに許容される処理時間である所定の閾値を入力部を介して設定させ、前記関数ごとの処理時間である実測値を検出することで、前記実測値と前記閾値とを比較し、前記実測値が前記閾値を超えた関数について、表現形式を視覚的に変更して前記表示部に表示すること
を特徴とするプログラム設計支援装置。
【請求項２】
プログラムにおける状態の遷移と、前記状態の遷移の際に実行される前記プログラムの処理であるファンクションとを含む状態遷移に関する情報を表示部に表示することにより、プログラム設計を支援するプログラム設計支援装置であって、
複数の状態間の遷移、前記遷移の際に実行されるファンクション、および前記ファンクションの処理を構成する１つ以上の関数、を含む状態遷移情報が記憶される記憶部と、
前記記憶部に記憶された状態遷移情報に基づいて、前記ファンクションを構成する前記関数を前記表示部に表示させ、前記関数の処理ごとに許容される処理時間である所定の閾値を設定させるボトルネック検出条件設定部と、
前記ファンクションの処理を実行するファンクション実行部と、
前記実行されたファンクションを構成する各関数ごとの処理時間である実測値を検出するトレース情報生成部と、
前記検出された実測値と、前記関数ごとに設定された閾値とを比較するボトルネック検出部と、
前記比較した結果、前記関数の処理時間である実測値が前記閾値を超えている場合に、当該関数の前記表示部における表現形式を視覚的に変更して表示させる表示制御部と、
を備えることを特徴とするプログラム設計支援装置。
【請求項３】
前記プログラム設計支援装置は、
複数の状態項目と、前記複数の状態間を遷移する契機となるイベント項目と、前記状態項目および前記イベント項目に対応して前記遷移の際に実行される前記ファンクションを定義する処理情報定義セルと、を含む状態遷移表を前記表示部に表示させる状態・イベント制御部をさらに備え、
前記状態・イベント制御部は、
前記関数の処理時間である実測値が前記閾値を超えている場合に、当該関数を含むファンクションを定義する前記処理情報定義セルについて、前記表示部における表現形式を、前記表示制御部を介して視覚的に変更して前記状態遷移表を表示させること
を特徴とする請求項２に記載のプログラム設計支援装置。
【請求項４】
プログラムにおける状態の遷移と、前記状態の遷移の際に実行される前記プログラムの処理であるファンクションとを含む状態遷移に関する情報を表示部に表示することにより、プログラム設計を支援するプログラム設計支援装置に用いられるプログラム設計支援方法であって、
前記プログラム設計支援装置は、
複数の状態間の遷移、前記遷移の際に実行されるファンクション、および前記ファンクションの処理を構成する１つ以上の関数、を含む状態遷移情報が記憶される記憶部を備え、
前記記憶部に記憶された状態遷移情報に基づいて、前記ファンクションを構成する前記関数を前記表示部に表示させ、前記関数の処理ごとに許容される処理時間である所定の閾値を設定させるステップと、
前記ファンクションの処理を実行するステップと、
前記実行されたファンクションを構成する各関数ごとの処理時間である実測値を検出するステップと、
前記検出された実測値と、前記関数ごとに設定された閾値とを比較するステップと、
前記比較した結果、前記関数の処理時間である実測値が前記閾値を超えている場合に、当該関数の前記表示部における表現形式を視覚的に変更して表示させるステップと、
を実行することを特徴とするプログラム設計支援方法。
【請求項５】
請求項４に記載のプログラム設計支援方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム設計支援装置、プログラム設計支援方法、およびプログラムに関する。
【背景技術】
【０００２】
従来、情報処理を実行する制御プログラムの開発を行うに当たって、要求仕様の検討を行って機能仕様書を作成し、この機能仕様書に基づいて設計仕様を検討して外部仕様書を作成し、この外部仕様書に基づいてプログラミングを行ってソースコードからなる制御プログラムを作成する一連の作業を行うことが一般的であった。
【０００３】
この外部仕様書を分かりやすくするために、状態遷移図または状態遷移表を用いて仕様設計を支援する方法が現在では多く行われている。
【０００４】
近年では、開発プログラムの規模や機能の拡大に伴い、仕様設計支援の方法として状態遷移表を用いる場合でも、遷移状態数の肥大化や処理内容の複雑化が進んでいる状況にある。
【０００５】
この仕様書の作成を支援する手法として状態遷移エディタを用意し、この状態遷移エディタに対して、状態遷移定義、アクション定義、並びに許容される制限時間を同時に定義するプログラム設計支援装置の発明が開示されている（例えば、特許文献１参照）。なお、アクションとは、ある状態から別の状態へ遷移する際に行う処理のことをいう。
【０００６】
特許文献１に記載された発明は、状態遷移情報に記述されたアクションのうち、処理の実行に許容される時間（実行制限時間）が指定されたアクションについて、実際の処理の実行に要する時間とその実行制限時間とを比較する。
【０００７】
図１５は、特許文献１の発明の概要を示す状態遷移図の例である。図１５に示す例においては、状態遷移におけるある状態を丸で表し、状態間の遷移を矢印で表す。また、遷移の契機となるイベントと、遷移において実行するアクションと、アクションの実行制限時間は、それぞれ「／」を用いてつないだ「イベント／アクション／実行制限時間」で表現されている。例えば、この状態遷移エディタにおいて、状態「ＳＮ１」と状態「ＳＮ２」との遷移間に「ｅｎＡ／ａｎ１２／ｔＡ」と定義すると、「ｅｎＡ」イベントが発生したときに、「ａｎ１２」のアクションを実行し、このときの実行制限時間の値は「ｔＡ」であるという定義内容となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−２６８８７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載された技術は、状態遷移エディタに対して、状態遷移、アクション、および実行制限時間を定義するが、このとき、実行制限時間を１つの状態遷移につき１つのアクションにしか設定できないため、処理時間が実行制限時間を超えた場合には、そのアクション内のどこの箇所に問題があるかを特定することが困難であった。
また、特許文献１に記載された技術においては、状態遷移図（状態遷移情報）に実行制限時間が記載されたアクションについて、実際の処理の実行に要する時間と実行制限時間との比較結果を利用者に通知する方法が明確化されていないという問題があった。
【００１０】
このような背景に鑑みて本発明がなされたのであり、本発明は、状態間の遷移の際に行うプログラム処理が、実行制限時間を超えた場合に、問題点を利用者に視覚的に認識させる、プログラム設計支援装置、プログラム設計支援方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記課題を解決するため、本発明のプログラム設計支援装置、プログラム設計支援方法、およびプログラムは、状態間の遷移の際に行うプログラム処理を細分化して関数ごとに表示させ、その関数ごとに実行制限時間としての閾値を設定させる。そして、各関数ごとの処理時間の実測値を測定することで、実測値と閾値とを比較し、実測値が閾値を超えた関数について、表現形式を視覚的に変更して表示させることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、状態間の遷移の際に行うプログラム処理が、実行制限時間を超えた場合に、問題点を利用者に視覚的に認識させる、プログラム設計支援装置、プログラム設計支援方法、およびプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るプログラム設計支援装置の構成例を示す機能ブロック図である。
【図２】本実施形態に係る状態遷移情報データベースに記憶される状態遷移情報（状態遷移表）の一例を示す図である。
【図３】本実施形態に係るファンクション定義部により定義される個々の関数の処理を示すシーケンス図である。
【図４】本実施形態に係るボトルネック検出条件設定部が表示させる閾値設定画面の一例を示す図である。
【図５】本実施形態に係るタイマ情報データベースに記憶されるタイマ情報の一例を示す図である。
【図６】本実施形態に係るトレース情報データベースに記憶されるトレース情報の一例を示す図である。
【図７】本実施形態に係る状態遷移情報（状態遷移表）の具体例を示す図である。
【図８】図７で示す状態遷移表におけるPowerOn処理の内容を示すシーケンス図である。
【図９】本実施形態に係るプログラム設計支援装置が行う処理の流れを示すフローチャートである。
【図１０】本実施形態に係る閾値設定画面の具体例を示す図である。
【図１１】本実施形態に係る閾値設定画面に閾値が入力された場合のタイマ情報の具体例を示す図である。
【図１２】本実施形態に係るトレース情報生成部が生成するトレース情報の具体例を示す図である。
【図１３】本実施形態に係る状態遷移表の具体例に警告表示を加えた図である。
【図１４】本実施形態に係るプログラム設計支援画面を示すである。
【図１５】従来技術の概要を示す状態遷移図の例である。
【発明を実施するための形態】
【００１４】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１５】
図１は、本実施形態に係るプログラム設計支援装置１の構成例を示す機能ブロック図である。
図１に示すように、プログラム設計支援装置１は、制御部１０と、表示部２０と、入力部３０と、記憶部４０と、メモリ部５０とを含んで構成される。
【００１６】
制御部１０は、後記する記憶部４０内の状態遷移情報データベース（ＤＢ：DataBase）４１に記憶された状態遷移情報２００を用いて処理シーケンス図を表示させ、この処理シーケンス図に表示される個々の関数の処理時間が、所定の閾値を超えた場合には、該当する関数の表示を視覚的に変更するように制御する。また、制御部１０は、状態・イベント制御部１１０と、ファンクション実行部１２０と、ボトルネック検出条件設定部１３０と、トレース情報生成部１４０と、ボトルネック検出部１５０と、表示制御部１６０とを含んで構成される。なお、この制御部１０の機能は、例えばプログラム設計支援装置１の記憶部４０に記憶されたプログラムをＣＰＵ（Central Processing Unit）がメモリ部５０に展開し実行することで実現される。
【００１７】
状態・イベント制御部１１０は、後記する記憶部４０内の状態遷移情報データベース（ＤＢ）４１に記憶された状態遷移情報２００の設定・変更や、その状態遷移情報２００に基づく状態遷移の制御を行う。また、状態・イベント制御部１１０は、表示制御部１６０を介して状態遷移情報２００を表示部２０に表示させる。
【００１８】
図２は、本実施形態に係る状態遷移情報データベース４１に記憶される状態遷移情報（状態遷移表）２００の一例を示す図である。図２に示すように、状態遷移表２００は、イベントを行項目、状態を列項目に配置する状態遷移情報である。この状態遷移表２００の行項目、並びに列項目には、それぞれ１，２，…，Ｎまでの正の整数である番号が割り振られている。この行項目と列項目が交わる箇所を処理情報定義セル２０１と呼ぶ。
【００１９】
この処理情報定義セル２０１は、上段と下段のブロックに分割され、上段のブロックをファンクション定義部２０２、下段のブロックを遷移先定義部２０３と呼ぶ。ここで、ファンクション定義部２０２には、コール（プログラム等を読み出して実行すること）するファンクション名称が定義され、遷移先定義部２０３には、ファンクション定義部２０２実行後に遷移する遷移先の名称が定義される。なお、ここでファンクションとは、状態間を遷移する際に処理するプログラムを意味する。
【００２０】
図２の状態遷移表２００を具体的に説明すると、状態「Ｓ１」でのイベント「Ｅ１」発生で、「Function Ａ」（ファンクション）を実行し、「Function Ａ」が所定時間内に完了すれば状態「Ｓ２」に遷移し、所定時間内に完了しない場合には状態「Ｓ１」に遷移（「Ｓ１」の状態を維持する）する定義となっている。また、状態「Ｓ２」でのイベント「Ｅ２」発生で、「Function Ｂ」（ファンクション）を実行後、状態「Ｓ１」に遷移する。なお、前記した特許文献１におけるアクションは、本実施形態においてファンクション定義部２０２に定義されるファンクションに相当する。
このような状態遷移の制御を、状態・イベント制御部１１０が行い、また、後記する表示制御部１６０を介して、この状態遷移表２００を表示部２０に表示させる。
【００２１】
また、図２に示す状態情報定義セル２０１には、ファンクション定義部２０２に定義されるファンクション（例えば、「Function Ａ」）を細分化した処理である個々の関数（例えば、後記する図３の「Function ａ１」「Function ａ２」）が処理順序に従って関連付けて定義されている。
図３は、本実施形態に係るファンクション定義部２０２により定義される個々の関数の処理を示すシーケンス図である。図３に示す処理シーケンス図においては、処理情報定義セル２０１のファンクション定義部２０２で定義されたファンクションにおいて、実行される個々の関数の処理が時系列に示される。この図３の例では、「Function Ａ」の実行処理において、具体的には、関数「Function ａ１」をコールした後、関数「Function ａ２」をコールする処理を行う。なお、状態・イベント制御部１１０は、表示制御部１６０を介して、この処理シーケンス図を表示部２０に表示させる。
【００２２】
図１に戻り、ファンクション実行部１２０は、状態・イベント制御部１１０の処理に伴い、各ファンクションのプログラム処理を実行する。
【００２３】
ボトルネック検出条件設定部１３０は、表示制御部１６０を介して表示部２０に、ファンクションごとの各関数の処理シーケンス図を表示し、該当する各関数の処理時間についての実行制限時間である閾値をユーザに設定させる閾値設定画面１０００を表示する。
【００２４】
図４は、本実施形態に係るボトルネック検出条件設定部１３０が表示させる閾値設定画面１０００の一例を示す図である。図４に示すように、ユーザは、表示部２０に表示された閾値設定画面１０００において、各関数ごとに各関数の実行制限時間である閾値の設定を行う。例えば、関数「Function ａ１」の閾値を「Ｔ１ ｍｓ」と設定し、関数「Function ａ２」の閾値を「Ｔ２ ｍｓ」とユーザに設定させることができる。
【００２５】
ボトルネック検出条件設定部１３０は、ユーザにより各関数の閾値が設定されると、その設定内容を、記憶部４０内のタイマ情報データベース（ＤＢ）４２に記憶する。
図５は、本実施形態に係るタイマ情報データベース４２に記憶されるタイマ情報３００の一例を示す図である。タイマ情報３００には、図４で示した閾値設定画面１０００においてユーザが関数ごとに設定した閾値３０１が記憶される。このタイマ情報３００には、タイマＩＤ（Identification）、タスク名、処理情報定義セル番号、関数名（Function）、および閾値３０１が記憶される。
このようにすることで、ボトルネック検出条件設定部１３０は、ファンクションをさらに細分化した各関数ごとの実行制限時間を閾値３０１として設定することができる。
【００２６】
図１に戻り、トレース情報生成部１４０は、状態・イベント制御部１１０とファンクション実行部１２０の制御により実行された各ファンクションごとの処理内容であるトレース情報４００を生成し、生成したトレース情報４００を記憶部４０内のトレース情報データベース（ＤＢ）４３に記憶させる。
【００２７】
図６は、本実施形態に係るトレース情報データベース４３に記憶されるトレース情報４００の一例を示す図である。トレース情報４００には、タイムスタンプ４０１、タスク名、処理情報定義セル番号、状態、関数名が記憶させる。図６においては、例えば、「Function ａ１」が時刻「00002000」msに「Enter」（「Enter」の状態が維持される処理の開始を意味する）し、同じく「Function ａ１」が時刻「00003000」msに「Exit」（処理の終了を意味する）したことを示している。
トレース情報生成部１４０は、各関数が処理されるごとに、タイムスタンプ４０１を記憶し、その処理内容を含めたトレース情報４００を生成し、記憶部４０に記憶する処理を行う。
【００２８】
図１に戻り、ボトルネック検出部１５０は、トレース情報４００（図６参照）の解析を行うことによりタイマ情報３００（図５参照）に設定された閾値３０１を超えた処理時間となる関数を検出する処理を行う。
具体的には、ボトルネック検出部１５０は、タイマ情報３００において閾値３０１が設定された関数について、トレース情報４００の解析を行う。つまり、ボトルネック検出部１５０は、閾値３０１が設定されている関数の状態が「Enter」、並びに「Exit」となるタイムスタンプ４０１を検索して、その関数の実行時間（実測値）の算出を行う。
そして、ボトルネック検出部１５０は、算出した実行時間とタイマ情報３００に記憶された閾値３０１とを比較し、実行時間が閾値３０１を超えているか否かを判定する。そして、ボトルネック検出部１５０は、実行時間が閾値３０１を超えていた場合には、表示制御部１６０にその情報を通知する。
【００２９】
表示制御部１６０は、状態・イベント制御部１１０、ボトルネック検出条件設定部１３０、およびボトルネック検出部１５０により生成された各情報に基づき、表示部２０に情報を表示させる制御を行う。また、表示制御部１６０が、ボトルネック検出部１５０から実行時間が閾値３０１を超える関数についての情報を取得している場合には、状態・イベント制御部１１０の制御に基づき、その関数に関する表示を視覚的に変更させたプログラム設計支援画面２０００（後記する図１４参照）を表示部２０に表示させる。
【００３０】
次に、表示部２０は、液晶ディスプレイ等の表示手段により構成され、表示制御部１６０の制御の基に、状態遷移情報２００（図２参照）、閾値設定画面１０００（図４参照）、プログラム設計支援画面２０００（図１４参照）等を表示させる。
【００３１】
入力部３０は、例えば、キーボード、タッチパネル、マウス等を含む入力手段により構成され、外部からのプログラム設計支援装置１への指示を受け付ける。
【００３２】
記憶部４０は、ハードディスクやフラッシュメモリ等の記憶手段からなり、状態遷移情報データベース（ＤＢ）４１と、タイマ情報データベース（ＤＢ）４２と、トレース情報データベース（ＤＢ）４３とを含んで構成させる。
【００３３】
メモリ部５０は、ボトルネック検出条件設定部１３０により設定されたタイマ情報３００や、トレース情報生成部１４０が生成したトレース情報４００等を一時的に記憶しておく記憶手段であり、ＲＡＭ（Random Access Memory）やキャッシュメモリ等により構成される。
【００３４】
次に、図１〜図６を参照しつつ、図７〜図１４に沿って、本プログラム設計支援装置１の処理の流れについて説明する。まず、プログラム設計支援装置１を実行する前提となるプログラム実行処理の具体例について説明する。
【００３５】
図７は、本実施形態に係る状態遷移情報（状態遷移表）２００´の具体例を示す図である。
図７に示す状態遷移表２００´に基づき、パワーオフ状態（図２の状態遷移表２００のＳ１に相当）時の電源オン（図２の状態遷移表２００のＥ１に相当）のイベント発生で、セル１−１の処理情報定義セル２０１が、状態・イベント制御部１１０により実行される。そして、ファンクション定義部２０２に基づき、「PowerOn」（ファンクション）が、ファンクション実行部１２０により実行され、この処理が所定時間内に完了すれば、パワーオン状態に遷移する。一方所定時間内に完了しなければ、パワーオフ状態に遷移する。
【００３６】
次に、パワーオン状態での電源オフのイベント発生で、セル２−２の処理情報定義セル２０１が、状態・イベント制御部１１０により実行され、パワーオフ状態に遷移する。
ここで、状態遷移表２００´のセル１−２，２−１の処理情報定義セル２０１には、何も定義されていない。
【００３７】
図８は、図７で示す状態遷移表２００´におけるPowerOn処理の内容を示すシーケンス図である。図８に示すように、図７で示した状態遷移表２００´におけるセル１−１の状態情報定義セル２０１のファンクション定義部２０２に定義されるPowerOn（ファンクション）の内容が処理シーケンス図として表示されている。具体的には、処理内容として関数「Initial_FuncＡ」をコールした後に、関数「Initial_FuncＢ」をコールする処理を行うことが示されている。
なお、図８の処理シーケンス図は、表示部２０に表示された図７で示される状態遷移表２００´のセル１−１の処理情報定義セル２０１が、キーボードやタッチパネル等の入力部３０を介してユーザにより選択されることで、状態・イベント制御部１１０が表示制御部１６０を介して表示部２０に表示させる。
【００３８】
このようなプログラム実行処理を前提として、状態・イベント制御部１１０およびファンクション実行部１２０を動作させるときの、プログラム設計支援装置１を用いた処理について説明する。
図９は、本実施形態に係るプログラム設計支援装置１が行う処理の流れを示すフローチャートである。
【００３９】
まず、ボトルネック検出条件設定部１３０により表示部２０に表示された閾値設定画面１０００´において、ユーザにより入力部３０を介して、各関数の処理時間の閾値３０１が設定される（ステップＳ９０１）。
図１０は、本実施形態に係る閾値設定画面１０００´の具体例を示す図である。図１０に示すように、関数「Initial_FuncＡ」について閾値「１００ｍｓ」、関数「Initial_FuncＢ」について閾値「２００ｍｓ」が、ユーザにより設定される。
なお、この閾値設定画面１０００´は、ユーザが表示部２０に表示された図７に示す状態遷移表２００´のセル１−１の処理情報定義セル２０１を入力部３０を介して選択し、図８に示す処理シーケンス図が表示された画面において、例えば、閾値設定釦を画面内に設け、ユーザによりその閾値設定釦が押下されることで、この閾値設定画面１０００´を表示させるようにすることができる。
【００４０】
また、ユーザにより閾値３０１が閾値設定画面１０００´に入力されると、ボトルネック検出条件設定部１３０は、タイマ情報データベース４２内の後記するタイマ情報３００´（図１１参照）に、閾値３０１に関する情報を記憶する。
図１１は、本実施形態に係る閾値設定画面１０００´に閾値３０１が入力された場合のタイマ情報３００´の例を示した図である。図１１に示すように、各関数名に対応して閾値３０１が記憶される。
【００４１】
次に、ボトルネック検出条件設定部１３０に、閾値３０１が入力されたことを契機として、または、閾値設定画面１０００´の画面内に設けられた確認釦が押下されること等を契機として、状態・イベント制御部１１０およびファンクション実行部１２０は、プログラムの実行処理を行う（ステップＳ９０２）。
【００４２】
このプログラムの実行処理に伴って、トレース情報生成部１４０は、トレース情報４００´の生成処理を行う（ステップＳ９０３）。
図１２は、本実施形態に係るトレース情報生成部１４０が生成するトレース情報４００´の具体例を示す図である。図１２に示すように、例えば、関数「Initial_FuncＡ」の状態「Enter」の処理時間がタイムスタンプ「00001000」と記憶され、関数「Initial_FuncＡ」の状態「Exit」の処理時間がタイムスタンプ「00001050」と記憶される。
【００４３】
次に、ボトルネック検出部１５０は、タイマ情報３００´（図１１参照）に記憶されているタスクαの処理情報定義セル番号１−１における関数ごとの処理時間をトレース情報４００´（図１２参照）から算出する（ステップＳ９０４）。
具体的には、図１２のトレース情報４００´のタイムスタンプ４０１において、タスクαについての処理情報定義セル番号１−１の関数「Initial_FuncＡ」の状態「Enter」のタイムスタンプ「00001000」と、同じく関数「Initial_FuncＡ」の状態「Exit」のタイムスタンプ「00001050」を検出することで、同関数の処理時間が「50」msと算出される。
また、関数Initial_FuncＢ」の状態「Enter」のタイムスタンプ「00001051」と、同じく関数「Initial_FuncＢ」の状態「Exit」のタイムスタンプ「00001301」を検出することで、同関数の処理時間が「250」msと算出される。
【００４４】
次に、ボトルネック検出部１５０は、処理時間を算出した関数のうちの１つを選択し（ステップＳ９０５）、算出した関数の実行時間（実測値）が、図１０において設定された閾値（図１１の閾値３０１）を超えているか否かを判定する（ステップＳ９０６）。
実測値が閾値３０１を超えていない場合は（ステップＳ９０６→Ｎｏ）、次のステップＳ９０８へ進む。一方、実測値が閾値３０１を超えている場合は（ステップＳ９０６→Ｙｅｓ）、ボトルネック検出部１５０は、表示制御部１６０にその情報を通知（ステップＳ９０７）した上で、ステップＳ９０８へ進む。
【００４５】
ステップＳ９０８において、ボトルネック検出部１５０は、全ての関数を処理したか否かを判定する（ステップＳ９０５で選択できる関数があるか否かを判定する）。ここで全ての関数の処理を終えていない場合には、ステップＳ９０５へ戻り処理を続ける。一方、全ての関数の処理を終えている場合には、ステップＳ９０９へ進む。
【００４６】
ステップＳ９０９において、表示制御部１６０は、状態・イベント制御部１１０の制御に基づき、処理時間の実測値が、閾値３０１を超えた関数について、ユーザにその旨を視覚的に認識させためのプログラム設計支援画面２０００の表示を行う。
図１３は、本実施形態に係る状態遷移表２００´（図７参照）に警告表示を加えた図である。また、図１４は、本実施形態に係る閾値設定画面１０００´（図１０参照）に警告表示を加えたプログラム設計支援画面２０００を示す図である。図１３に示すように、状態遷移表２００´のセル１−１の処理情報定義セル２０１を例えばハッチング表示し、表示形式を視覚的に変更することで、表示形式が変更された処理情報定義セル２０１内の関数の中に、実測値が閾値３０１を超えている関数が存在することを示す。また、図１４に示すように閾値設定画面１０００´においてユーザが設定した閾値３０１に加え実測値を表示し、実測値が閾値３０１を超えた関数について表示形式を視覚的に変更したハッチング処理等を行う。このように、表示形式を変更することで、ユーザに、その関数が閾値３０１を超えた処理時間を要することを認識させる。
【００４７】
なお、本実施形態における視覚的な表示形式の変更は、ハッチング処理に限定されず、例えば、表示部の該当箇所に色彩を付加したり、吹き出しを表示して閾値３０１を超えている旨を明記したり、該当関数の表記をハイライト表示する等の処理が含まれ、ユーザが表示部２０において、実測値が閾値３０１を超えている関数を視覚的に認識することができるものであればよい。
【００４８】
このようにすることで、本実施形態に係る、プログラム設計支援装置、プログラム設計支援方法、およびプログラムによれば、状態間の遷移の際に行うプログラム処理が、実行制限時間を超えた場合に、その処理を構成する関数のうち、どの関数が実行制限時間を超えているかを特定し、その特定した関数を利用者に視覚的に認識させることが可能となる。そのため、プログラム設計において、開発・保守効率の向上を図ることができる。
【符号の説明】
【００４９】
１      プログラム設計支援装置
１０    制御部
２０    表示部
３０    入力部
４０    記憶部
４１    状態遷移情報ＤＢ
４２    タイマ情報ＤＢ
４３    トレース情報ＤＢ
５０    メモリ部
１１０  状態・イベント制御部
１２０  ファンクション実行部
１３０  ボトルネック検出条件設定部
１４０  トレース情報生成部
１５０  ボトルネック検出部
１６０  表示制御部
２００  状態遷移情報（状態遷移表）
２０１  処理情報定義セル
２０２  ファンクション定義部
２０３  遷移先定義部
３００  タイマ情報
４００  トレース情報
１０００  閾値設定画面
２０００  プログラム設計支援画面
【図１】
2010211682.tif 000003
【図２】
2010211682.tif 000004
【図３】
2010211682.tif 000005
【図４】
2010211682.tif 000006
【図５】
2010211682.tif 000007
【図６】
2010211682.tif 000008
【図７】
2010211682.tif 000009
【図８】
2010211682.tif 000010
【図９】
2010211682.tif 000011
【図１０】
2010211682.tif 000012
【図１１】
2010211682.tif 000013
【図１２】
2010211682.tif 000014
【図１３】
2010211682.tif 000015
【図１４】
2010211682.tif 000016
【図１５】
2010211682.tif 000017