(57)【要約】  汎用描画ツールなどによって作成されたプログラムの仕様を記述する図表に基づいて、プログラムを作成するための技術に関する。プログラム作成装置は、図表読み取り部（８）と、機能部品抽出部（９）と、機能部品の図表における位置に基づいて、実行スレッドを推定する実行スレッド推定部（１１）と、機能部品同士の通信関係を推定する通信関係推定部（１３）と、機能部品保存部（１０）に保存された機能部品の情報、機能部品間関係保存部（１２）に保存された実行スレッドの情報および通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部（１４）と、機能部品間通信コードを作成する機能部品間通信コード作成部（１５）と、プログラム書き出し部（１６）とを備える。
2018012348.tif 000002
【特許請求の範囲】
【請求項１】
汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部（８、１０８、２０８、３０８）と、
読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部（９、１０９、２０９、３０９）と、
抽出された前記機能部品の情報を保存する機能部品保存部（１０、１１０、２１０、３１０）と、
前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定する実行スレッド推定部（１１、１１１、２１１、３１１）と、
前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定する通信関係推定部（１３、１１３、２１３、３１３）と、
前記実行スレッド推定部（１１、１１１、２１１、３１１）において推定された前記実行スレッドの情報、および、前記通信関係推定部（１３、１１３、２１３、３１３）において推定された前記通信関係の情報を保存する機能部品間関係保存部（１２、１１２、２１２、３１２）と、
前記機能部品保存部（１０、１１０、２１０、３１０）に保存された前記機能部品の情報、および、前記機能部品間関係保存部（１２、１１２、２１２、３１２）に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部（１４、１１４、２１４、３１４）と、
前記機能部品保存部（１０、１１０、２１０、３１０）に保存された前記機能部品の情報、および、前記機能部品間関係保存部（１２、１１２、２１２、３１２）に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部（１５、１１５、２１５、３１５）と、
前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部（１６、１１６、２１６、３１６）とを備える、
プログラム作成装置。
【請求項２】
前記実行スレッド推定部（１１、１１１、２１１、３１１）は、前記機能部品の前記図表における第１の軸上の位置に基づいて、前記実行スレッドを推定し、
前記通信関係推定部（１３、１１３、２１３、３１３）は、前記機能部品の前記図表における前記第１の軸と直交する第２の軸上の位置に基づいて、前記通信関係を推定する、
請求項１に記載のプログラム作成装置。
【請求項３】
前記機能部品抽出部（２０９）は、前記図表における前記機能部品の形状に基づいて、前記機能部品の種別を少なくとも機能および通信に分けて抽出し、
前記プログラム作成装置は、さらに、
前記種別が通信である前記機能部品の指向する方向に対応する前記図表における座標軸を前記第１の軸と推定する軸推定部（２１７）を備える、
請求項２に記載のプログラム作成装置。
【請求項４】
前記機能部品抽出部（１０９）は、前記図表における前記機能部品の形状に基づいて、前記機能部品の種別を少なくとも機能および通信に分けて抽出し、
前記プログラム作成装置は、さらに、
前記種別が通信である前記機能部品同士の接続関係を推定する接続関係推定部（１１７）を備え、
前記機能部品間通信コード作成部（１１５）は、前記接続関係推定部（１１７）において推定された前記接続関係の情報に基づいて、接続関係にある前記種別が通信である前記機能部品同士を１つの機能部品とみなして、前記機能部品間通信コードを作成する、
請求項１から請求項３のうちのいずれか１項に記載のプログラム作成装置。
【請求項５】
前記プログラム作成装置は、さらに、
前記機能部品保存部（３１０）に保存された前記機能部品の情報、および、前記機能部品間関係保存部（３１２）に保存された前記通信関係の情報に基づいて、他の前記機能部品との接続関係を有さない機能部品であるエラー機能部品を検出するエラー検出部（３１７）を備え、
前記機能部品コード作成部（３１４）は、前記エラー検出部（３１７）において検出された前記エラー機能部品を除く前記機能部品について前記機能部品コードを作成し、
前記機能部品間通信コード作成部（３１５）は、前記エラー検出部（３１７）において検出された前記エラー機能部品を除く前記機能部品について前記機能部品間通信コードを作成する、
請求項１から請求項４のうちのいずれか１項に記載のプログラム作成装置。
【請求項６】
請求項１から請求項５のうちのいずれか１項に記載された前記プログラム作成装置（４０９、５０９）と、
前記プログラム書き出し部（１６、１１６、２１６、３１６）によって書き出された前記プログラムを実行するプログラム実行装置（４０７、５１３）と、
前記プログラム作成装置（４０９、５０９）と、前記プログラム実行装置（４０７、５１３）とを、互いに通信可能に接続する装置間接続装置（４０８、５０８）とを備える、
プログラム作成実行装置。
【請求項７】
汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、
読み取られた前記図表から機能部品を抽出し、
前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定し、
前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定し、
前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、
前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、
前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す、
プログラム作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書に開示される技術は、プログラム作成装置、プログラム作成実行装置、および、プログラム作成方法に関するものである。
【背景技術】
【０００２】
従来から、中央演算処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、すなわち、ＣＰＵ）を搭載し、かつ、併せて設置されるディスク装置、または、メモリ装置などの情報記憶装置に保存されるアプリケーションプログラムを動作させることによって、所望の機能を実現するコンピュータがある。【０００３】
近年では、コンピュータの性能の高さ、または、コンピュータの使い勝手の良さは、主にプログラムの品質によって決まるようになってきている。そのため、プログラム作成の重要度が増してきている。【０００４】
通常、プログラムの作成に先立ち、プログラムの機能、または、プログラムの品質を定義する仕様書が作成される。その後、当該仕様書に基づいて、実際にコンピュータ上で実行されるプログラムが作成される。この際、作成の基となる仕様書と成果物であるプログラムとの間で、実行される動作を一致させることが要求される。【０００５】
実行される動作を一致させる方法の１つとして、仕様書からプログラムを自動作成する方法がある。特に、シークエンス図、または、ブロックダイアグラムなどの図表によってプログラムの動作を規定する方法は、プログラムの複雑な動作を分かりやすく記述することができるため、多く用いられている。【０００６】
仕様を記述する図表は、プログラム中に存在するさまざまな機能単位（以下、「機能部品」と略称する）を表すアイコン画像などの多角形と、機能間の関係を表す線との組み合わせによって表現される。ここで、機能部品間の関係を表す線とは、たとえば、機能部品間の通信、または、機能部品の持つデータの参照などを表す矢印などである。ある機能部品Ａと別の機能部品Ｂとの間に関係がある場合、Ａを表す多角形とＢを表す多角形とは、矢印などの線で互いに接続されて表現される。【０００７】
たとえば、特許文献１に開示される方法では、マウスなどのグラフィカルな操作デバイスを用いて、ファックスまたはスキャナなどの装置、または機能部品を表すアイコンを矢印で結び付けることによって機能関連性を記述する図表が用いられている。そして、この仕様を記述する図表に基づいて、実際にそれぞれの装置または機能部品を連携して動作させるプログラムを作成する。このような方法によって、仕様を記述する図表からプログラムを作成することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−３１７０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
コンピュータ上で矛盾のない実行結果を得るプログラムの仕様を過不足なく記述するためには、仕様を表す図表に含まれるすべての多角形は、互いに線によって接続されていることが要求される。【００１０】
従来技術では、仕様を記述する図表を作成する際に専用の描画ツールを利用することで、すべての多角形が互いに線によって接続されることを保証している。【００１１】
たとえば、特許文献１に開示された技術におけるこの保証は、次のようになされる。まず、仕様を記述する図表を作成する画面上で、機能部品を表すアイコンをいくつか設置する。次に、設置したあるアイコンから、機能部品間接続を表す矢印を伸ばす動作を行うと、当該矢印が、別の機能部品を表すアイコンへと接続されるまで、その他の編集が行われないようになっている。【００１２】
しかし、上記の場合、仕様を記述する図表を作成するためには、常に専用の描画ツールを使用する必要がある。このような専用ツールは、専門技術者向けであって専門外の利用者にとって入手が難しい場合がある。また、このような専用ツールは一般的でないため、多くの使用者は使用法の習得を新たに行う必要がある。これらの理由によって、専用ツールは利用しにくい。【００１３】
一方で、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）の描画ツールに代表される汎用描画ツールがある。このような汎用描画ツールは一般に広く使われ、多くの人が使用法をよく知っている。そのため、導入が容易であり、専門外の利用者にとっても利用しやすい。【００１４】
また、完全な仕様書となる前の段階、すなわち、プログラムの動作を考案する際に作成したアイディアを書き留めた書類、または、仕様書作成の指示に使用する一時的な書類を作成する手段として汎用描画ツールが使われることがあり、このような書類を完全な仕様書としても使用できれば、仕様書を作成する手間を省くことができ便利である。【００１５】
しかしながら、汎用描画ツールによって作成される図表は、ツールの操作に特に制限がない。また、その書式にも制限がない。【００１６】
そのため、このような図表に基づいてプログラムを作成することは、一般に困難であった。【００１７】
本願明細書に開示される技術は、以上に記載されたような問題を解決するためになされたものであり、汎用描画ツールなどによって作成されたプログラムの仕様を記述する図表に基づいて、プログラムを作成するための技術に関するものである。
【課題を解決するための手段】
【００１８】
本願明細書に開示される技術の第１の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部と、読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部と、抽出された前記機能部品の情報を保存する機能部品保存部と、前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定する実行スレッド推定部と、前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定する通信関係推定部と、前記実行スレッド推定部において推定された前記実行スレッドの情報、および、前記通信関係推定部において推定された前記通信関係の情報を保存する機能部品間関係保存部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部と、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部とを備える。【００１９】
また、本願明細書に開示される技術の第２の態様は、上記のプログラム作成装置と、前記プログラム書き出し部によって書き出された前記プログラムを実行するプログラム実行装置と、前記プログラム作成装置と、前記プログラム実行装置とを、互いに通信可能に接続する装置間接続装置とを備える。【００２０】
また、本願明細書に開示される技術の第３の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、読み取られた前記図表から機能部品を抽出し、前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定し、前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す。
【発明の効果】
【００２１】
本願明細書に開示される技術の第１の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部と、読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部と、抽出された前記機能部品の情報を保存する機能部品保存部と、前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定する実行スレッド推定部と、前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定する通信関係推定部と、前記実行スレッド推定部において推定された前記実行スレッドの情報、および、前記通信関係推定部において推定された前記通信関係の情報を保存する機能部品間関係保存部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部と、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部とを備えるものである。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。【００２２】
また、本願明細書に開示される技術の第２の態様は、上記のプログラム作成装置と、前記プログラム書き出し部によって書き出された前記プログラムを実行するプログラム実行装置と、前記プログラム作成装置と、前記プログラム実行装置とを、互いに通信可能に接続する装置間接続装置とを備える。このような構成によれば、プログラムを作成する機能部と、プログラムを実行する機能部とがそれぞれ同じ、または、異なる装置内で動作する場合であっても、それぞれの装置が装置間接続装置を介して互いに通信することによって、作成されたプログラムを共有することができる。したがって、作成されたプログラムを持ち運んでコピーするなどの手間を省くことができる。【００２３】
また、本願明細書に開示される技術の第３の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、読み取られた前記図表から機能部品を抽出し、前記機能部品の前記図表における位置に基づいて、前記機能部品が実行されるスレッドである実行スレッドを推定し、前記機能部品の前記図表における位置に基づいて、前記機能部品同士の通信関係を推定し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。【００２４】
本願明細書に開示される技術に関する目的と、特徴と、局面と、利点とは、以下に示される詳細な説明と添付図面とによって、さらに明白となる。
【図面の簡単な説明】
【００２５】
【図１】実施の形態に関する、プログラム作成実行装置を実現するための構成の概念的に例示する図である。
【図２】実施の形態に関する、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を例示する図である。
【図３】実施の形態に関する、機能部品情報表に書き込まれる情報を例示する図である。
【図４】実施の形態に関する、機能部品情報表に書き込まれる情報を例示する図である。
【図５】実施の形態に関する、機能部品情報表に書き込まれる情報を例示する図である。
【図６】実施の形態に関する、実行スレッドの推定動作を説明するためのフローチャートである。
【図７】実施の形態に関する、機能部品間関係情報表を例示する図である。
【図８】実施の形態に関する、機能部品間関係情報表を例示する図である。
【図９】実施の形態に関する、機能部品と通信機能部品との間の論理的接続関係の推定動作を説明するためのフローチャートである。
【図１０】実施の形態に関する、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を例示する図である。
【図１１】実施の形態に関する、プログラム作成実行装置を実現するための構成の概念的に例示する図である。
【図１２】実施の形態に関する、接続関係がある通信機能部品の推定動作を説明するためのフローチャートである。
【図１３】実施の形態に関する、通信機能部品統合情報表を例示する図である。
【図１４】実施の形態に関する、通信機能部品統合情報表を例示する図である。
【図１５】実施の形態に関する、プログラム作成実行装置を実現するための構成の概念的に例示する図である。
【図１６】実施の形態に関する、通信機能部品の方向を判定する動作を説明するためのフローチャートである。
【図１７】実施の形態に関する、プログラム作成実行装置を実現するための構成の概念的に例示する図である。
【図１８】実施の形態に関する、他のいずれの機能部品にも接続されていない、または、接続が不完全な機能部品があることを検出する動作を説明するためのフローチャートである。
【図１９】実施の形態に関する、プログラム作成実行装置を実現するための構成の概念的に例示する図である。
【図２０】実施の形態に関する、プログラム作成実行装置を実現するための他の構成の概念的に例示する図である。
【図２１】実施の形態に関する、プログラム作成装置を実現するための構成を概念的に例示する図である。
【図２２】実施の形態に関する、図２１に例示されるプログラム作成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【図２３】実施の形態に関する、図２１に例示されるプログラム作成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【発明を実施するための形態】
【００２６】
以下、添付される図面を参照しながら実施の形態について説明する。
【００２７】
なお、図面は概略的に示されるものであり、説明の便宜のため、適宜、構成の省略、または、構成の簡略化がなされるものである。また、異なる図面にそれぞれ示される構成などの大きさおよび位置の相互関係は、必ずしも正確に記載されるものではなく、適宜変更され得るものである。
【００２８】
また、以下に示される説明では、同様の構成要素には同じ符号を付して図示し、それらの名称と機能とについても同様のものとする。したがって、それらについての詳細な説明を、重複を避けるために省略する場合がある。
【００２９】
また、以下に記載される説明において、「上」、「下」、「側」、「底」、「表」または「裏」などの特定の位置と方向とを意味する用語が用いられる場合があっても、これらの用語は、実施の形態の内容を理解することを容易にするために便宜上用いられるものであり、実際に実施される際の方向とは関係しないものである。
【００３０】
＜第１の実施の形態＞
以下、本実施の形態に関するプログラム作成装置、プログラム作成実行装置、および、プログラム作成方法について説明する。
【００３１】
＜プログラム作成装置の構成について＞
図２１は、本実施の形態に関するプログラム作成装置を実現するための構成を概念的に例示する図である。
【００３２】
図２１に例示されるようにプログラム作成装置は、図表読み取り部８と、機能部品抽出部９と、機能部品保存部１０と、実行スレッド推定部１１と、通信関係推定部１０１３と、機能部品間関係保存部１２と、機能部品コード作成部１４と、機能部品間通信コード作成部１５と、プログラム書き出し部１６とを備える。
【００３３】
図表読み取り部８は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る機能部である。機能部品抽出部９は、読み取られた図表から機能部品を記述する図形を抽出する機能部である。
【００３４】
機能部品保存部１０は、抽出された機能部品の情報を保存する機能部である。実行スレッド推定部１１は、機能部品の図表における位置に基づいて、機能部品が実行されるスレッドである実行スレッドを推定する機能部である。
【００３５】
通信関係推定部１０１３は、機能部品の図表における位置に基づいて、機能部品同士の通信関係を推定する機能部である。機能部品間関係保存部１２は、実行スレッド推定部１１において推定された実行スレッドの情報、および、通信関係推定部１０１３において推定された通信関係の情報を保存する機能部である。
【００３６】
機能部品コード作成部１４は、機能部品保存部１０に保存された機能部品の情報、および、機能部品間関係保存部１２に保存された実行スレッドの情報および通信関係の情報に基づいて、機能部品コードを作成する機能部である。機能部品間通信コード作成部１５は、機能部品保存部１０に保存された機能部品の情報、および、機能部品間関係保存部１２に保存された実行スレッドの情報および通信関係の情報に基づいて、機能部品間通信コードを作成する機能部である。
【００３７】
プログラム書き出し部１６は、機能部品コードおよび機能部品間通信コードに基づいてプログラムを書き出す機能部である。
【００３８】
図２２および図２３は、図２１に例示されるプログラム作成装置を実際に運用する場合のハードウェア構成を概略的に例示する図である。
【００３９】
なお、図２２および図２３に例示されるハードウェア構成は、図２１に例示される構成とは数などが整合しない場合があるが、これは図２１に例示される構成が概念的な単位を示すものであることに起因する。
【００４０】
よって、少なくとも、図２１に例示される１つの構成が、図２２および図２３に例示される複数のハードウェア構成から成る場合と、図２１に例示される１つの構成が、図２２および図２３に例示されるハードウェア構成の一部に対応する場合と、さらには、図２１に例示される複数の構成が、図２２および図２３に例示される１つのハードウェア構成に備えられる場合とが想定され得る。
【００４１】
また、図２２および図２３に例示されるハードウェア構成は、図２１に例示されるプログラム作成装置の概念的な構成を具体化して例示するものである。したがって、図２１に例示されるプログラム作成装置の概念的な構成に対応するハードウェア構成に加えて、新たなハードウェア構成が追加される場合があるが、新たに追加されるそれらのハードウェア構成が備えられない場合であっても、本実施の形態に関するプログラム作成装置は成立し得る。
【００４２】
図２２では、図２１中のプログラム作成装置を実現するためのハードウェア構成として、演算を行う処理回路１００２Ａと、情報を記憶することができる記憶装置１００３と、マウスまたはキーボードなどの、情報を入力することができる入力装置１と、ディスプレイなどの、情報を出力することができる出力装置２とが示される。これらの構成は、後述する他の実施の形態においても同様である。
【００４３】
図２３では、図２１中のプログラム作成装置を実現するためのハードウェア構成として、演算を行う処理回路１００２Ｂと、マウスまたはキーボードなどの、情報を入力することができる入力装置１と、ディスプレイなどの、情報の出力を行うことができる出力装置２とが示される。これらの構成は、後述する他の実施の形態においても同様である。
【００４４】
機能部品保存部１０と、機能部品間関係保存部１２とは、記憶装置１００３または別の記憶装置（ここでは、図示しない）によって実現される。
【００４５】
記憶装置１００３は、たとえば、ハードディスク（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ、すなわち、ＨＤＤ）、ランダムアクセスメモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、すなわち、ＲＡＭ）、リードオンリーメモリ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ、すなわち、ＲＯＭ）、フラッシュメモリ、ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＰＲＯＭ）およびｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ（ＥＥＰＲＯＭ）などの、揮発性または不揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスクまたはＤＶＤなどを含むメモリ（記憶媒体）などによって構成されるなどを含むメモリ（記憶媒体）などによって構成される。
【００４６】
処理回路１００２Ａは、記憶装置１００３に格納されたプログラムを実行するものであってもよい。すなわち、たとえば、中央演算処理装置（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ、すなわち、ＣＰＵ）、マイクロプロセッサ、マイクロコンピュータ、デジタルシグナルプロセッサ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ、すなわち、ＤＳＰ）であってもよい。
【００４７】
処理回路１００２Ａが記憶装置１００３に格納されたプログラムを実行するものである場合、図表読み取り部８と、機能部品抽出部９と、実行スレッド推定部１１と、通信関係推定部１０１３と、機能部品コード作成部１４と、機能部品間通信コード作成部１５と、プログラム書き出し部１６とは、記憶装置１００３に格納されたプログラムが処理回路１００２Ａによって実行されるソフトウェア、ファームウェアまたはソフトウェアとファームウェアとの組み合わせにより実現される。なお、これら図表読み取り部８、機能部品抽出部９、実行スレッド推定部１１、通信関係推定部１０１３、機能部品コード作成部１４、機能部品間通信コード作成部１５、および、プログラム書き出し部１６の機能は、たとえば、複数の処理回路が連携することによって実現されてもよい。
【００４８】
ソフトウェアおよびファームウェアはプログラムとして記述され、記憶装置１００３に記憶されるものであってもよい。その場合、処理回路１００２Ａは、記憶装置１００３に格納されたプログラムを読み出して実行することによって、上記の機能を実現する。すなわち、記憶装置１００３は、処理回路１００２Ａに実行されることによって、上記の機能が結果的に実現されるプログラムを記憶するものであってもよい。
【００４９】
また、処理回路１００２Ｂは、専用のハードウェアであってもよい。すなわち、たとえば、単一回路、複合回路、プログラム化されたプロセッサ、並列プログラム化されたプロセッサ、集積回路（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ、すなわち、ＡＳＩＣ）、ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ（ＦＰＧＡ）またはこれらを組み合わせた回路であってもよい。
【００５０】
処理回路１００２Ｂが専用のハードウェアである場合、図表読み取り部８と、機能部品抽出部９と、実行スレッド推定部１１と、通信関係推定部１０１３と、機能部品コード作成部１４と、機能部品間通信コード作成部１５と、プログラム書き出し部１６とは、処理回路１００２Ｂが動作することにより実現される。なお、これら図表読み取り部８、機能部品抽出部９、実行スレッド推定部１１、通信関係推定部１０１３、機能部品コード作成部１４、機能部品間通信コード作成部１５、および、プログラム書き出し部１６の機能は、別々の回路で実現されてもよいし、単一の回路で実現されてもよい。
【００５１】
なお、上記の図表読み取り部８、機能部品抽出部９、実行スレッド推定部１１、通信関係推定部１０１３、機能部品コード作成部１４、機能部品間通信コード作成部１５、および、プログラム書き出し部１６の機能は、一部が記憶装置１００３に格納されたプログラムを実行するものである処理回路１００２Ａにおいて実現され、一部が専用のハードウェアである処理回路１００２Ｂにおいて実現されてもよい。
【００５２】
＜プログラム作成実行装置の構成について＞
図１は、本実施の形態に関するプログラム作成実行装置を実現するための構成の概念的に例示する図である。
【００５３】
図１に例示されるように、本実施の形態に関するプログラム作成実行装置７は、入力装置１と、出力装置２とにそれぞれ接続される。
【００５４】
また、プログラム作成実行装置７は、汎用描画アプリケーションを実行するアプリケーション実行部４と、プログラム実行部５と、情報保存部３と、プログラム作成部６とを備える。
【００５５】
ここで、アプリケーション実行部４、および、プログラム実行部５は、プログラム作成実行装置７で動作するオペレーティングシステム、または、モニタープログラムなどの機能を用いて、アプリケーションの動作を実行するためのソフトウェア、または、ハードウェアである。
【００５６】
ここで、アプリケーションとは、アプリケーション実行部４、および、プログラム実行部５によって実行される、特定の機能を実現するソフトウェアである。
【００５７】
プログラム実行部５によって実行されるソフトウェアの機能によっては、出力装置２に図表または文字などを描画することでその結果を利用者に提供してもよい。また、図表または文字などをファイルとして情報保存部３に保存することでその結果を利用者に提供してもよい。
【００５８】
入力装置１から入力される入力信号は、プログラム作成実行装置７において動作するオペレーティングシステム、または、モニタープログラムなどの機能を用いて、アプリケーション実行部４で動作するアプリケーション、および、プログラム実行部５で動作するアプリケーションへと送られる。同様に、それぞれのアプリケーションからの出力は出力装置２へと送られ、表示などに用いられる。
【００５９】
アプリケーション実行部４は、利用者が入力装置１を用いて入力した操作によってプログラムの仕様を記述する図表を作成する。そして、アプリケーション実行部４は、出力装置２に当該図表を表示させる。一方で、アプリケーション実行部４は、当該図表を情報保存部３に保存する。
【００６０】
プログラムの仕様を記述する図表は、データファイルとして情報保存部３に保存される。その形式は、たとえば、ｅｘｔｅｎｓｉｖｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ（ＸＭＬ）形式、または、Ｐｏｓｔｓｃｒｉｐｔ形式などのテキストファイルであってもよい。また、同等の情報を保持したバイナリ形式ファイルであってもよい。
【００６１】
情報保存部３は、アプリケーション実行部４、および、プログラム実行部５で実行されるアプリケーションの実行コード、アプリケーションが作成または参照する図表、または、数値データを記憶する機能を有する。また、情報保存部３は、必要なコードまたはデータを入出力する機能を有する。情報保存部３は、たとえば、半導体メモリ、または、磁気ディスクによって実現される。
【００６２】
プログラム作成部６は、情報保存部３に保存された、アプリケーション実行部４によって作成されたプログラムの仕様を記述する図表のデータファイルに基づいて、プログラム実行部５で実行可能なプログラムを作成する。また、プログラム作成部６は、作成した当該プログラムを実行コードファイルの形式で情報保存部３に保存する。
【００６３】
プログラム作成部６は、図表読み取り部８と、機能部品抽出部９と、機能部品保存部１０と、実行スレッド推定部１１と、機能部品間関係保存部１２と、機能−通信間関係推定部１３と、機能部品コード作成部１４と、機能部品間通信コード作成部１５と、プログラム書き出し部１６とを備える。機能−通信間関係推定部１３は、通信関係推定部１０１３に含まれる。
【００６４】
図表読み取り部８は、情報保存部３に保存された、アプリケーション実行部４によって作成されたプログラムの仕様を記述する図表のデータファイルを読み出す機能を有する。データファイルの読み出しは、たとえば、オペレーティングシステムのファイル読み出し機能などを用いることによって、容易に実現することができる。
【００６５】
機能部品抽出部９は、図表読み取り部８によって読み出されたデータファイルを走査し、データファイル内に保存されている図表に含まれる多角形、または、線を抽出する。そして、機能部品抽出部９は、図表に含まれる多角形、または、線を、プログラムの仕様における個々の機能を表す機能部品、機能同士の通信関係または依存関係を表す通信機能部品、または、個々の機能同士の通信関係または依存関係を説明するアノテーションを表すアノテーション機能部品であるとみなし、当該抽出結果を機能部品保存部１０へ保存する。
【００６６】
ここで、機能部品抽出機能の実現方法は、データファイルの形式に合わせた方法が選ばれる。たとえば、データファイルがＸＭＬ形式である場合は、既存技術を用いて容易に実装可能であるＸＭＬ形式のパーザによって抽出機能を実現することができる。
【００６７】
図２は、プログラムの仕様を記述する図表を例示する図である。ここで、説明のため、図２における空間位置は、左上が原点で、ｘ方向は右方向に正、ｙ方向は下方向に正とする。
【００６８】
図２に例示される図表が機能部品抽出部９に入力されると、機能部品抽出部９において以下のような処理が行われる。ここでは、例としてＸＭＬ形式のデータファイルの場合を説明する。
【００６９】
まず、データファイル先頭からＸＭＬタグを辿り、あらかじめ取り決めておいた機能部品を表すタグを見出す。たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）の描画ツールでは、図２における機能部品ａ、機能部品ｃ、および、機能部品ｇのような角の丸い四角形は、ｐ：ｓｐタグによって表現されている。また、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）の描画ツールでは、図２における機能部品ｂ、および、機能部品ｄのような矢印型の線コネクタは、ｐ：ｃｘｎＳｐタグによって表現されている。
【００７０】
見出されたタグに対して、機能部品情報表を作成する。図３、図４、および、図５は、機能部品情報表を例示する図である。
【００７１】
次に当該タグに対して、重複しない機能部品ＩＤを付加する。付加された機能部品ＩＤは、機能部品情報表に書き込まれる。
【００７２】
次に、当該タグの属性を参照し、そのタグに対応する図表が多角形であるか線であるかを判定する。たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）の描画ツールの場合、ｐ：ｃＮｖＰｒタグのｎａｍｅ要素の内容で具体的な図表種別を判断すればよい。
【００７３】
タグに対応する図表が多角形であった場合で、かつ、当該図表が吹き出し型図形などである場合には、当該図表はアノテーションを表すアノテーション機能部品であると判定する。また、タグに対応する図表が多角形であった場合で、かつ、当該図表が吹き出し型図形などではない場合には、当該図表は機能を表す機能部品であると判定する。ここで、吹き出し型図形とは、別の図表を指向、または、説明する要素を有する図形をいう。
【００７４】
また、タグに対応する図表が線であった場合、当該図表は通信を表す通信機能部品であると判定する。判定された種別は、機能部品情報表に書き込まれる。
【００７５】
次に、当該タグに、説明のための文が付随するかどうかを判定する。説明のための文が付随する場合は、当該文を取り出して機能部品情報表に書き込む。説明のための文が附随しない場合は、機能部品情報表には何も書き込まない。
【００７６】
次に、タグの属性を参照し、当該タグに対応する図表が機能部品であった場合、その図表の位置およびサイズを取得する。そして、図表の位置およびサイズを機能部品情報表に書き込む。
【００７７】
また、タグの属性を参照し、当該タグに対応する図表が通信機能部品であった場合、その図表の始点座標および終点座標をそれぞれ取得する。そして、図表の始点座標および終点座標を機能部品情報表に書き込む。
【００７８】
また、タグの属性を参照し、当該タグに対応する図表がアノテーション機能部品であった場合、その図表の指向先の座標を取得する。そして、図表の指向先の座標を機能部品情報表に書き込む。
【００７９】
たとえば、図２の機能部品ｅ、および、機能部品ｆに例示されるような吹き出し型図形であれば、吹き出しの位置を指向先の座標として用いる。
【００８０】
以上の処理を行った後、機能部品情報表を機能部品保存部１０に保存する。そして、当該タグへの処理は終了して、次のタグに対して上記処理を繰り返す。
【００８１】
図３、図４、および、図５は、上記処理を行った結果としてそれぞれの機能部品情報表に書き込まれる情報を例示する図である。
【００８２】
図３に例示される機能部品情報表は、図２における機能部品ｃに対して上記処理を行った結果を表すものである。また、図４に例示される機能部品情報表は、図２における機能部品ｂに対して上記処理を行った結果を表すものである。また、図５に例示される機能部品情報表は、図２における機能部品ｅに対して上記処理を行った結果を表すものである。
【００８３】
実行スレッド推定部１１は、機能部品保存部１０に保存された機能部品情報表の集合を参照する。そして、実行スレッド推定部１１は、それぞれの機能部品の位置に基づいて実行スレッドを推定する。
【００８４】
実行スレッド推定部１１は、推定した実行スレッドの情報を機能部品間関係情報表に書き込む。そして、実行スレッド推定部１１は、機能部品間関係情報表を機能部品間関係保存部１２に保存する。
【００８５】
実行スレッドの推定は、実行スレッド推定部１１によって、図６に例示されるフローチャートにしたがって行われる。ここで、図６は、実行スレッドの推定動作を説明するためのフローチャートである。
【００８６】
まず、機能部品保存部１０から、機能部品の機能部品情報表、または、アノテーション機能部品の機能部品情報表を１つ選択して取得する。これは、図６に例示されるステップＳＴ１０１に対応する動作である。そして、図６に例示されるステップＳＴ１０２へ進む。
【００８７】
次に、取得した機能部品情報表に対応する機能部品の特徴点を決定する。これは、図６に例示されるステップＳＴ１０２に対応する動作である。
【００８８】
たとえば、機能部品情報表に対応する機能部品が四角形である場合、角の座標が４つあるためその平均位置を特徴点としてもよい。また、たとえば、機能部品情報表に対応する機能部品が吹き出し型図形である場合、吹き出しの位置を特徴点としてもよい。
【００８９】
次に、特徴点の座標について、特定の座標軸を選択して当該座標軸へ射影する。これは、図６に例示されるステップＳＴ１０３に対応する動作である。
【００９０】
このとき、射影する座標軸は、図表の意味的に時間軸と一致する方向を選択する。たとえば、図２に例示された図表の場合、ｘ軸方向、すなわち、水平方向が処理の時間軸と一致している。そのため、ｘ軸へ射影する。
【００９１】
そして、特徴点を射影した座標を蓄積する。これは、図６に例示されるステップＳＴ１０４に対応する動作である。そして、図６に例示されるステップＳＴ１０５へ進む。
【００９２】
そして、機能部品種別が機能である機能部品情報表、または、機能部品種別がアノテーションである機能部品情報表に対して上記操作を繰り返し、射影座標群を得る。そして、機能部品種別が機能である機能部品情報表、または、機能部品種別がアノテーションである機能部品情報表のすべてに対して射影座標を得たか否かを判定する。これは、図６に例示されるステップＳＴ１０５に対応する動作である。
【００９３】
そして、すべての機能部品の機能部品情報表、および、すべてのアノテーション機能部品の機能部品情報表に関して上記操作を完了した場合、すなわち、図６に例示されるステップＳＴ１０５から分岐する「ＹＥＳ」に対応する場合には、図６に例示されるステップＳＴ１０６へ進む。
【００９４】
一方で、すべての機能部品の機能部品情報表、および、すべてのアノテーション機能部品の機能部品情報表に関して上記操作を完了していない場合、すなわち、図６に例示されるステップＳＴ１０５から分岐する「ＮＯ」に対応する場合には、図６に例示されるステップＳＴ１０１に戻る。
【００９５】
次に、射影座標群に対してグループ化を行う。そして、グループ化された座標のサブセットが同じスレッドで動作する、または、当該スレッドを含む同じプロセスで動作するとみなす。これは、図６に例示されるステップＳＴ１０６に対応する動作である。
【００９６】
ここで、具体的なグループ化の方法については、ｋ−近傍法、または、階層的クラスタリングなど、周知のアルゴリズムを利用して実現されてもよく、特に限定されない。
【００９７】
次に、同じスレッドで動作する、または、または、当該スレッドを含む同じプロセスで動作するとみなされた、機能部品種別が機能、または、アノテーションである機能部品それぞれに対して、機能部品間関係情報表を作成する。そして、同じスレッド、または、または、当該スレッドを含む同じプロセスで実行されることが判別することができるよう、「所属スレッド」項に対して共通のスレッドＩＤ番号を書き込む。これは、図６に例示されるステップＳＴ１０７に対応する動作である。
【００９８】
ここで、機能部品間関係情報表は、たとえば、図７、および、図８に例示されるような項目を有している。なお、図７、および、図８は、機能部品間関係情報表を例示する図である。図７、および、図８に例示されるように、機能部品間関係情報表には、機能部品ＩＤ、所属スレッド、関連通信機能部品、および、関連アノテーション機能部品の情報が書き込まれる。
【００９９】
次に、作成された機能部品間関係情報表を機能部品間関係保存部１２に書き込む。これは、図６に例示されるステップＳＴ１０８に対応する動作である。
【０１００】
機能−通信間関係推定部１３は、機能部品保存部１０に保存された機能部品情報表の集合を参照し、それぞれの機能部品の位置に基づいて、機能部品と通信機能部品との間の論理的接続関係を推定する。そして、機能−通信間関係推定部１３は、機能部品間関係保存部１２に保存されている機能部品間関係情報表に対して、機能部品と通信機能部品との関係を表す情報を書き込む。
【０１０１】
機能部品と通信機能部品との間の論理的接続関係の推定は、機能−通信間関係推定部１３によって、図９に例示されるフローチャートにしたがって行われる。ここで、図９は、機能部品と通信機能部品との間の論理的接続関係の推定動作を説明するためのフローチャートである。
【０１０２】
まず、機能部品保存部１０から、機能部品の機能部品情報表、または、通信機能部品の機能部品情報表を１つ選択して取得する。これは、図９に例示されるステップＳＴ２０１に対応する動作である。そして、図９に例示されるステップＳＴ２０２へ進む。
【０１０３】
次に、取得した機能部品情報表に対応する機能部品の特徴点を決定する。これは、図９に例示されるステップＳＴ２０２に対応する動作である。
【０１０４】
たとえば、機能部品情報表に対応する機能部品が四角形である場合、角の座標が４つあるためその平均位置を特徴点としてもよい。また、たとえば、機能部品情報表に対応する機能部品が線である場合、始点位置、および、終点位置を別の特徴点としてもよい。
【０１０５】
次に、特徴点の座標について、実行スレッド推定部１１において時間軸であるとみなした座標軸と直交する方向の座標軸を選択し、当該座標軸へ射影する。これは、図９に例示されるステップＳＴ２０３に対応する動作である。
【０１０６】
たとえば、図２に例示された図表の場合、ｘ軸方向、すなわち、水平方向が処理の時間軸と一致している。そのため、ｘ軸と直交するｙ軸へ射影する。
【０１０７】
そして、特徴点を射影した座標を蓄積する。これは、図９に例示されるステップＳＴ２０４に対応する動作である。そして、図９に例示されるステップＳＴ２０５へ進む。
【０１０８】
そして、機能部品の機能部品情報表、または、通信機能部品の機能部品情報表に対して上記操作を繰り返し、射影座標群を得る。そして、機能部品の機能部品情報表、または、通信機能部品の機能部品情報表のすべてに対して射影座標を得たか否かを判定する。これは、図９に例示されるステップＳＴ２０５に対応する動作である。
【０１０９】
そして、すべての機能部品の機能部品情報表、および、すべての通信機能部品の機能部品情報表に関して上記操作を完了した場合、すなわち、図９に例示されるステップＳＴ２０５から分岐する「ＹＥＳ」に対応する場合には、図９に例示されるステップＳＴ２０６へ進む。
【０１１０】
一方で、すべての機能部品の機能部品情報表、および、すべての通信機能部品の機能部品情報表に関して上記操作を完了していない場合、すなわち、図９に例示されるステップＳＴ２０５から分岐する「ＮＯ」に対応する場合には、図９に例示されるステップＳＴ２０１に戻る。
【０１１１】
次に、射影座標群に対してグループ化を行う。そして、グループ化された座標のサブセットが同じ機能に関連しているとみなす。これは、図９に例示されるステップＳＴ２０６に対応する動作である。
【０１１２】
ここで、通信機能部品については、その特徴点として始点座標と、終点座標との２種類があるため、グループ化は、始点座標、および、終点座標それぞれを独立であるとみなして行われる。
【０１１３】
また、具体的なグループ化の方法については、実行スレッド推定部１１において特徴点のグループ化に用いた方法と同じ、または異なる、周知のアルゴリズムを利用して実現されてもよい。
【０１１４】
次に、機能部品間関係保存部１２に保存された、同じ機能に関連しているとみなされた機能部品の機能部品間関係情報表を取得する。そして、当該機能部品間関係情報表の「関連通信機能部品」項に対して、関連付けられた通信機能部品の機能部品ＩＤを書き込む。これは、図９に例示されるステップＳＴ２０７に対応する動作である。
【０１１５】
ここで、図７、および、図８に例示されるように、「関連通信機能部品」項には複数の機能部品ＩＤを書き込むのに十分な記憶領域が確保されている。
【０１１６】
次に、作成された機能部品の機能部品間関係情報表を機能部品間関係保存部１２に再び保存する。これは、図９に例示されるステップＳＴ２０８に対応する動作である。
【０１１７】
機能部品コード作成部１４は、機能部品保存部１０に保存された機能部品情報表のうち、機能部品種別が「機能」であるものに対して、実際にプログラム実行部５において実行可能なプログラムのコードの一部を作成する機能を有する。このとき、機能部品間関係保存部１２に保存された機能部品間関係情報表を参照しながら作成を実行するようにしてもよい。ここで、プログラム実行部５において実行可能なプログラムのコードは、機能部品の機能を実行するコンピュータプログラムバイナリであってもよい。また、機能部品の機能を表現した図表または文字データのセットであってもよい。図表または文字データのセットは、たとえば、ｆｌａｓｈアニメーションデータまたはＭｉｃｒｏｓｏｆｔ  ＰｏｗｅｒＰｏｉｎｔ書類データ形式で実装されてもよい。
【０１１８】
実行可能なプログラムコードを作成する機能を実現する方法としては、たとえば、機能部品情報表の「説明」項に記載されている内容を参照し、事前に登録しておいたプログラムコードの集合の中から該当するものを選択して出力する方法によってもよい。
【０１１９】
また、対応する機能部品間関係情報表を参照し、関連するアノテーション機能部品が存在している場合には、当該アノテーション機能部品の「説明」項の内容を参照して具体的な処理内容を選択してもよい。
【０１２０】
事前に登録しておいたプログラムコードの集合の中から該当するものを選択して出力する具体的な方法については、既存技術で実現されているプログラム自動作成方法を用いて実現してもよい。
【０１２１】
機能部品間通信コード作成部１５は、機能部品保存部１０に保存された機能部品情報表のうち、機能部品種別が「通信」であるものに対して、実際にプログラム実行部５において実行可能なプログラムのコードの一部を作成する機能を有する。
【０１２２】
実行可能なプログラムコードを作成する機能を実現する方法としては、以下のようにすれば実現可能である。
【０１２３】
まず、機能部品間関係保存部１２に保存されている機能部品間関係情報群のうち、当該通信機能部品が含まれるものを検索する。
【０１２４】
次に、見出された機能部品間関係情報群について、対応する「所属スレッド」項を参照し、同一スレッドであれば関数呼び出しコード、別のスレッドであればスレッド間通信コード、別のプロセスであればプロセス間通信コードをそれぞれ作成する。
【０１２５】
具体的な関数呼び出しコード、スレッド間通信コード、および、プロセス間通信コードの内容については、事前に使用するプログラミング言語、または、ライブラリを定めておくことで決定することが可能である。
【０１２６】
プログラム書き出し部１６は、機能部品コード作成部１４と機能部品間通信コード作成部１５とによってそれぞれ作成されたプログラムのコードの一部を結合することによって、１つのプログラムを作成する。そして、プログラム書き出し部１６は、完成したプログラムを情報保存部３に保存する。
【０１２７】
なお、プログラム作成部６は、上記のそれぞれの処理部と同等の内容を実現するハードウェアによって実現されていてもよい。また、上記のそれぞれの処理部のうちの一部がハードウェアによって実現され、かつ、他の一部がソフトウェアによって実現されてもよい。
【０１２８】
また、上記の処理と同等の内容をすべて実現するソフトウェアと、当該ソフトウェアを実行するソフトウェア実行部とによって実現されてもよい。
【０１２９】
このような動作を行うことによって、汎用描画アプリケーションによって作成されたプログラムの仕様を記述する図表における機能部品が正しい位置に配置されていなくても、プログラムの仕様として正しい位置を推定することが可能になる。
【０１３０】
また、汎用描画アプリケーションによって作成されたプログラムの仕様を記述する図表において、機能部品を表す図表と機能部品間関係を表す図表とが結合されていなくても、関連の有無を推定することが可能になる。
【０１３１】
これによって、推定された位置、および、推定された関連の有無を利用することで、矛盾のない実行結果を得るプログラムを作成することができる。したがって、プログラムの動作を規定する仕様書の作成において、汎用描画プログラムが出力するプログラムの仕様を記述する図表が使用可能となる。
【０１３２】
＜第２の実施の形態＞
本実施の形態に関するプログラム作成装置、プログラム作成実行装置、および、プログラム作成方法について説明する。以下の説明においては、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１３３】
＜プログラム作成実行装置の構成について＞
第１の実施の形態では、機能部品と通信機能部品との間の論理的接続関係を推定することで、汎用描画ツールによって作成されるプログラムの仕様を記述する図表によるプログラムの作成を可能とした。しかしながら、前記図表の中には、通信機能部品同士の接続関係を考慮する必要があるものが存在している。
【０１３４】
図１０は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を例示する図である。図１０に例示されるように、当該図表では、ハードウェアドライバｈは、タイマーｊおよびイベント処理ｋの両方へ通信する旨が記述されている。
【０１３５】
ここで、ハードウェアドライバｈとイベント処理ｋとの間には、当該図表において矢印ｉの先にタイマーｊが位置する。そのため、重畳による意味の曖昧化を防ぐため、ハードウェアドライバｈとイベント処理ｋとを繋ぐために、線ｌと矢印ｍとを組み合わせて折れ線矢印を構成している。
【０１３６】
第１の実施の形態では、このような通信機能部品同士の接続を考慮することができない。結果として、ハードウェアドライバｈとイベント処理ｋとの間の論理的接続関係を誤って抽出してしまう場合がある。
【０１３７】
第２の実施の形態では、ある通信機能部品の終点と別の通信機能部品の始点とを優先してグループ化することによって、通信機能部品同士が組み合わせて表現されている論理的接続関係も正しく推定することが可能になる。
【０１３８】
図１１は、本実施の形態に関するプログラム作成実行装置を実現するための構成の概念的に例示する図である。
【０１３９】
図１１に例示されるように、本実施の形態に関するプログラム作成実行装置１０７は、入力装置１０１と、出力装置１０２とにそれぞれ接続される。
【０１４０】
ここで、入力装置１０１は、入力装置１と同等の機能を有する。また、出力装置１０２は、出力装置２と同等の機能を有する。
【０１４１】
また、プログラム作成実行装置１０７は、アプリケーション実行部１０４と、プログラム実行部１０５と、情報保存部１０３と、プログラム作成部１０６とを備える。
【０１４２】
ここで、アプリケーション実行部１０４は、アプリケーション実行部４と同様の機能を有する。また、プログラム実行部１０５は、プログラム実行部５と同様の機能を有する。また、情報保存部１０３は、情報保存部３と同様の機能を有する。
【０１４３】
プログラム作成部１０６は、図表読み取り部１０８と、機能部品抽出部１０９と、機能部品保存部１１０と、実行スレッド推定部１１１と、機能部品間関係保存部１１２と、機能−通信間関係推定部１１３と、機能部品コード作成部１１４と、機能部品間通信コード作成部１１５と、プログラム書き出し部１１６と、通信機能部品の統合を推定する統合推定部１１７とを備える。
【０１４４】
ここで、図表読み取り部１０８は、図表読み取り部８と同様の機能を有する。また、機能部品抽出部１０９は、機能部品抽出部９と同様の機能を有する。
【０１４５】
また、機能部品保存部１１０は、機能部品保存部１０と同様の機能を有する。また、実行スレッド推定部１１１は、実行スレッド推定部１１と同様の機能を有する。
【０１４６】
また、機能−通信間関係推定部１１３は、機能−通信間関係推定部１３と同様の機能を有する。また、機能部品コード作成部１１４は、機能部品コード作成部１４と同様の機能を有する。
【０１４７】
また、機能部品間通信コード作成部１１５は、機能部品間通信コード作成部１５と同様の機能を有する。また、プログラム書き出し部１１６は、プログラム書き出し部１６と同様の機能を有する。
【０１４８】
統合推定部１１７は、機能部品保存部１１０に保存された機能部品情報表の集合から通信機能部品を参照する。そして、統合推定部１１７は、通信機能部品群の間の接続関係を推定する。
【０１４９】
統合推定部１１７は、接続関係がある通信機能部品に対して通信機能部品統合情報表を作成する。そして、統合推定部１１７は、通信機能部品統合情報表を機能部品間関係保存部１１２に書き込む。
【０１５０】
機能部品間関係保存部１１２は、機能部品間関係保存部１２と同様の機能を有する。さらに、機能部品間関係保存部１１２は、統合推定部１１７で作成される通信機能部品統合情報表も保持することができる。
【０１５１】
機能部品間通信コード作成部１１５は、機能部品保存部１１０に保存された機能部品情報表のうち、機能部品種別が「通信」であるものに対して、実際にプログラム実行部１０５において実行可能なプログラムのコードの一部を作成する。
【０１５２】
以下では、本実施の形態に関するプログラム作成実行装置の動作について、特に、第１の実施の形態に関するプログラム作成実行装置の動作と異なる個所について詳細に説明する。
【０１５３】
接続関係がある通信機能部品の推定は、統合推定部１１７によって、図１２に例示されるフローチャートにしたがって行われる。ここで、図１２は、接続関係がある通信機能部品の推定動作を説明するためのフローチャートである。
【０１５４】
まず、機能部品保存部１１０から、通信機能部品の機能部品情報表を１つ選択して取得する。これは、図１２に例示されるステップＳＴ３０１に対応する動作である。そして、図１２に例示されるステップＳＴ３０２へ進む。
【０１５５】
次に、当該通信機能部品の特徴点、すなわち、終点座標および始点座標を取得する。これは、図１２に例示されるステップＳＴ３０２に対応する動作である。
【０１５６】
そして、特徴点の座標を蓄積する。これは、図１２に例示されるステップＳＴ３０３に対応する動作である。そして、図１２に例示されるステップＳＴ３０４へ進む。
【０１５７】
そして、機能部品保存部１１０に保存されている通信機能部品に対して上記操作を繰り返し、特徴点座標群を取得する。そして、機能部品保存部１１０に保存されている通信機能部品のすべてに対して特徴点座標を得たか否かを判定する。これは、図１２に例示されるステップＳＴ３０４に対応する動作である。
【０１５８】
そして、すべての通信機能部品に関して上記操作を完了した場合、すなわち、図１２に例示されるステップＳＴ３０４から分岐する「ＹＥＳ」に対応する場合には、図１２に例示されるステップＳＴ３０５へ進む。
【０１５９】
一方で、すべての通信機能部品に関して上記操作を完了していない場合、すなわち、図１２に例示されるステップＳＴ３０４から分岐する「ＮＯ」に対応する場合には、図１２に例示されるステップＳＴ３０１に戻る。
【０１６０】
次に、得られた特徴点座標群のうち、終点座標と始点座標とのペアすべての組み合わせに対して二次元空間でのグループ化を行う。そして、グループ化された終点座標と始点座標とのペアを、互いに接続関係にある通信機能部品であるとみなす。これは、図１２に例示されるステップＳＴ３０５に対応する動作である。
【０１６１】
ここで、具体的なグループ化の方法については、二次元空間向けのｋ−近傍法、または、階層的クラスタリングなど、周知のアルゴリズムを利用して実現してもよく、特に限定されるものではない。
【０１６２】
次に、互いに接続関係にある通信機能部品であるとみなされた通信機能部品それぞれに対して、通信機能部品統合情報表を作成する。そして、当該通信機能部品統合情報表の「関連通信機能部品」項に対して、接続関係にある機能部品ＩＤ番号を書き込む。これは、図１２に例示されるステップＳＴ３０６に対応する動作である。
【０１６３】
ここで、通信機能部品統合情報表は、たとえば、図１３、および、図１４に例示されるような項目を有している。なお、図１３、および、図１４は、通信機能部品統合情報表を例示する図である。図１３、および、図１４に例示されるように、通信機能部品統合情報表には、機能部品ＩＤの情報と、関連通信機能部品の情報とが書き込まれる。
【０１６４】
次に、作成された通信機能部品統合情報表を機能部品間関係保存部１１２に書き込む。これは、図１２に例示されるステップＳＴ３０７に対応する動作である。
【０１６５】
機能部品間通信コード作成部１１５は、機能部品保存部１１０に保存された機能部品情報表のうち、機能部品種別が「通信」であるものに対して、実際にプログラム実行部１０５において実行可能なプログラムのコードの一部を作成する機能を有する。
【０１６６】
まず、機能部品間通信コード作成部１１５は、機能部品保存部１１０に保存された機能部品情報表群を取得する。次に、機能部品間関係保存部１１２に保存された通信機能部品統合情報表を参照する。
【０１６７】
そして、通信機能部品統合情報表を参照して、互いに接続関係にある通信機能部品が存在している場合には、これらを結合した新たな通信機能部品を一時的に作成する。この一時的に作られる新たな通信機能部品は、互いに接続関係にある通信機能部品群のうち、終点座標と始点座標とが接続可能な機能部品同士をすべて接続したものである。
【０１６８】
次に、一時的に作られる新たな通信機能部品に対して、実際にプログラム実行部１０５において実行可能なプログラムのコードの一部を作成する。具体的なプログラムコードの作成方法は、第１の実施の形態における機能部品間通信コード作成部１５と同じ方法で実現される。
【０１６９】
このような動作を行うことによって、汎用描画ツールによって作成されるプログラムの仕様を記述する図表において、複数の通信機能部品の組み合わせによって単一の通信経路を表す図表がある場合においても、ある通信機能部品の終点と別の通信機能部品の始点とを優先してグループ化することによって、通信機能部品同士を組み合わせて表現されている論理的接続関係も正しく推定することができる。したがって、矛盾のない実行結果を得るプログラムを作成することが可能になる。
【０１７０】
＜第３の実施の形態＞
本実施の形態に関するプログラム作成装置、プログラム作成実行装置、および、プログラム作成方法について説明する。以下の説明においては、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０１７１】
＜プログラム作成実行装置の構成について＞
第１の実施の形態では、実行スレッド推定部および機能−通信間関係推定部において、汎用描画ツールによって作成されるプログラムの仕様を記述する図表の二次元空間座標のうちどちらかの軸が時間軸であることを特定し、これに基づいて、機能部品と通信機能部品との間の論理的接続関係を推定した。それによって、汎用描画ツールによって作成されるプログラムの仕様を記述する図表によるプログラムの作成を可能とした。
【０１７２】
しかしながら、どの空間軸を時間軸とみなすかについて自動的に判定されるようになれば、事前に時間軸を特定する手間が省けて便利である。
【０１７３】
本実施の形態では、通信機能部品として抽出された図表すべてに対して、始点から終点に向かう方向を統計的に処理することで、どの方向が時間軸に対応するかを自動的に判定することが可能となる。
【０１７４】
本実施の形態に関するプログラム作成実行装置の構成について説明する。
【０１７５】
図１５は、本実施の形態に関するプログラム作成実行装置を実現するための構成の概念的に例示する図である。
【０１７６】
図１５に例示されるように、本実施の形態に関するプログラム作成実行装置２０７は、入力装置２０１と、出力装置２０２とにそれぞれ接続される。
【０１７７】
ここで、入力装置２０１は、入力装置１と同等の機能を有する。また、出力装置２０２は、出力装置２と同等の機能を有する。
【０１７８】
また、プログラム作成実行装置２０７は、アプリケーション実行部２０４と、プログラム実行部２０５と、情報保存部２０３と、プログラム作成部２０６とを備える。
【０１７９】
ここで、アプリケーション実行部２０４は、アプリケーション実行部４と同様の機能を有する。また、プログラム実行部２０５は、プログラム実行部５と同様の機能を有する。また、情報保存部２０３は、情報保存部３と同様の機能を有する。
【０１８０】
プログラム作成部２０６は、図表読み取り部２０８と、機能部品抽出部２０９と、機能部品保存部２１０と、実行スレッド推定部２１１と、機能部品間関係保存部２１２と、機能−通信間関係推定部２１３と、機能部品コード作成部２１４と、機能部品間通信コード作成部２１５と、プログラム書き出し部２１６と、通信機能部品の方向を判定する方向判定部２１７とを備える。
【０１８１】
ここで、図表読み取り部２０８は、図表読み取り部８と同様の機能を有する。また、機能部品抽出部２０９は、機能部品抽出部９と同様の機能を有する。
【０１８２】
また、機能部品保存部２１０は、機能部品保存部１０と同様の機能を有する。また、機能部品コード作成部２１４は、機能部品コード作成部１４と同様の機能を有する。
【０１８３】
また、機能部品間通信コード作成部２１５は、機能部品間通信コード作成部１５と同様の機能を有する。また、プログラム書き出し部２１６は、プログラム書き出し部１６と同様の機能を有する。
【０１８４】
方向判定部２１７は、機能部品保存部２１０に保存された機能部品情報表の集合から通信機能部品を参照する。そして、方向判定部２１７は、通信機能部品群の方向を統計的に処理することによって、当該通信機能部品群が共通して指向する座標軸を推定する。
【０１８５】
そして、方向判定部２１７は、推定された座標軸種別を、実行スレッド推定部２１１と機能−通信間関係推定部２１３とに通知する。
【０１８６】
実行スレッド推定部２１１は、実行スレッド推定部１１と同様の機能を有する。さらに、実行スレッド推定部２１１は、実行スレッド推定時に使用する時間軸として、方向判定部２１７から通知された座標軸種別を利用する。
【０１８７】
機能−通信間関係推定部２１３は、機能−通信間関係推定部１３と同様の機能を有する。さらに、機能−通信間関係推定部２１３は、実行スレッド推定時に使用する時間軸として、方向判定部２１７から通知された座標軸種別を利用する。
【０１８８】
以下では、本実施の形態に関するプログラム作成実行装置の動作について、特に、第１の実施の形態に関するプログラム作成実行装置の動作と異なる個所について詳細に説明する。
【０１８９】
通信機能部品の方向を判定する動作は、方向判定部２１７によって、図１６に例示されるフローチャートにしたがって行われる。ここで、図１６は、通信機能部品の方向を判定する動作を説明するためのフローチャートである。
【０１９０】
まず、機能部品保存部２１０から、通信機能部品の機能部品情報表を１つ選択して取得する。これは、図１６に例示されるステップＳＴ４０１に対応する動作である。そして、図１６に例示されるステップＳＴ４０２へ進む。
【０１９１】
次に、当該通信機能部品の特徴点、すなわち、終点座標および始点座標のペアを取得する。これは、図１６に例示されるステップＳＴ４０２に対応する動作である。
【０１９２】
そして、特徴点の座標を蓄積する。これは、図１６に例示されるステップＳＴ４０３に対応する動作である。そして、図１６に例示されるステップＳＴ４０４へ進む。
【０１９３】
そして、機能部品保存部２１０に保存されている通信機能部品に対して上記操作を繰り返し、特徴点座標群を取得する。そして、機能部品保存部２１０に保存されている通信機能部品のすべてに対して特徴点座標を得たか否かを判定する。これは、図１６に例示されるステップＳＴ４０４に対応する動作である。
【０１９４】
そして、すべての通信機能部品に関して上記操作を完了した場合、すなわち、図１６に例示されるステップＳＴ４０４から分岐する「ＹＥＳ」に対応する場合には、図１６に例示されるステップＳＴ４０５へ進む。
【０１９５】
一方で、すべての通信機能部品に関して上記操作を完了していない場合、すなわち、図１６に例示されるステップＳＴ４０４から分岐する「ＮＯ」に対応する場合には、図１６に例示されるステップＳＴ４０１に戻る。
【０１９６】
次に、得られた終点座標と始点座標とのペアをベクトルとみなし、すべての通信機能部品におけるベクトルの集合に対して統計的な処理を行う。そして、時間軸に対応する図表中の座標軸を求める。これは、図１６に例示されるステップＳＴ４０５に対応する動作である。
【０１９７】
ここで、時間軸方向を求める統計的処理は、たとえば、主成分解析を用いれば容易に実現することができる。ベクトル群に対して主成分解析を実行すると、結果として固有ベクトルおよび固有値の集合を得る。ここで、固有値の一番大きい固有ベクトルを時間軸方向としてみなすことができる。
【０１９８】
このように時間軸方向とみなすことができる理由は、通信機能部品におけるベクトルは、時間軸方向には一方向きのものしか存在しない一方、他の軸方向にはさまざまな向きのものが含まれうるからである。
【０１９９】
ここで、具体的な統計的処理の方法については、主成分解析の他にも周知のアルゴリズムを利用して実現してもよく、特に限定されるものではない。
【０２００】
次に、推定された時間軸方向に対応する図表中の座標軸を、実行スレッド推定部２１１に通知する。これは、図１６に例示されるステップＳＴ４０６に対応する動作である。
【０２０１】
次に、推定された時間軸方向に対応する図表中の座標軸に対して直交する軸を、機能−通信間関係推定部２１３に通知する。これは、図１６に例示されるステップＳＴ４０７に対応する動作である。
【０２０２】
実行スレッド推定部２１１は、実行スレッド推定部１１と同様に、機能部品保存部２１０に保存された機能部品情報表の集合を参照し、それぞれの機能部品の位置から実行スレッドを推定する。そして、実行スレッド推定部２１１は、機能部品間関係情報表を作成して実行スレッド情報を書き込む。さらに、実行スレッド推定部２１１は、当該機能部品間関係情報表を機能部品間関係保存部２１２に保存する。
【０２０３】
実行スレッド推定部２１１が実行スレッド推定部１１と異なるのは、実行スレッド推定部１１では、特徴点の座標を射影する座標軸として、ある座標軸方向を事前に選択して与えていた部分について、実行スレッド推定部２１１では、方向判定部２１７から通知された座標軸を採用するようにしたことである。
【０２０４】
機能−通信間関係推定部２１３は、機能−通信間関係推定部１３と同様に、機能部品保存部２１０に保存された機能部品情報表の集合を参照し、それぞれの機能部品の位置から機能部品と通信機能部品との間の論理的接続関係を推定する。そして、機能−通信間関係推定部２１３は、機能部品間関係保存部２１２に保存されている機能部品間関係情報表に対して機能−通信機能部品の関係を表す情報を書き込む。
【０２０５】
機能−通信間関係推定部２１３が機能−通信間関係推定部１３と異なるのは、機能−通信間関係推定部１３では、特徴点の座標を射影する座標軸として、ある座標軸方向を事前に選択して与えていた部分について、機能−通信間関係推定部２１３では、方向判定部２１７から通知された座標軸を採用するようにしたことである。
【０２０６】
このような動作を行うことによって、汎用描画ツールによって作成されるプログラムの仕様を記述する図表における二次元空間座標のうち、どちらかの軸が時間軸であることを自動的に判断することができる。したがって、これに基づき機能部品と通信機能部品との間の論理的接続関係を推定することができる。そのため、汎用描画ツールによって作成されるプログラムの仕様を記述する図表によるプログラムの作成が可能となり、事前に時間軸を指定する手間を省くことができる。
【０２０７】
＜第４の実施の形態＞
本実施の形態に関するプログラム作成装置、プログラム作成実行装置、および、プログラム作成方法について説明する。以下の説明においては、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０２０８】
＜プログラム作成実行装置の構成について＞
第１の実施の形態では、機能部品と通信機能部品との間の論理的接続関係を推定することで、汎用描画ツールによって作成されるプログラムの仕様を記述する図表によるプログラムの作成を可能とした。
【０２０９】
しかしながら、汎用描画ツールによって作成される図表によるプログラム仕様書の作成時に、誤って、どこにも接続されない機能を表す図形、または、どこにも接続されない通信を表す図形が残ってしまうことがある。
【０２１０】
このような誤りを含む前記プログラム仕様書に対して第１の実施の形態のプログラム作成実行装置を適用すると、誤って存在している機能または通信のための無駄なプログラムコードが作成されたり、作成されたプログラムが正常に機能しなくなったりするなど問題が発生することがある。
【０２１１】
これを避けるため、第１の実施の形態のプログラム作成実行装置を使用する場合には、汎用描画ツールによって作成される図表によるプログラム仕様書の内容と、作成されたプログラムコードを見比べて確認する必要がある。
【０２１２】
本実施の形態では、機能部品または通信機能部品として抽出され、互いに論理的接続関係が推定された機能部品すべてに対して、他の機能部品に対する接続関係があるかどうかをチェックする。
【０２１３】
そうすることによって、他のいずれの機能部品にも接続されていない機能部品、または、不完全な接続しかなされておらず適切な接続関係を有さない機能部品を自動的に検出し、機能部品に基づくプログラムの作成を止めることが可能となる。すなわち、他の機能部品との接続関係を有さない機能部品を自動的に検出し、機能部品に基づくプログラムの作成を止めることができる。
【０２１４】
図１７は、本実施の形態に関するプログラム作成実行装置を実現するための構成の概念的に例示する図である。
【０２１５】
図１７に例示されるように、本実施の形態に関するプログラム作成実行装置３０７は、入力装置３０１と、出力装置３０２とにそれぞれ接続される。
【０２１６】
ここで、入力装置３０１は、入力装置１と同等の機能を有する。また、出力装置３０２は、出力装置２と同等の機能を有する。
【０２１７】
また、プログラム作成実行装置３０７は、アプリケーション実行部３０４と、プログラム実行部３０５と、情報保存部３０３と、プログラム作成部３０６とを備える。
【０２１８】
ここで、アプリケーション実行部３０４は、アプリケーション実行部４と同様の機能を有する。また、プログラム実行部３０５は、プログラム実行部５と同様の機能を有する。また、情報保存部３０３は、情報保存部３と同様の機能を有する。
【０２１９】
プログラム作成部３０６は、図表読み取り部３０８と、機能部品抽出部３０９と、機能部品保存部３１０と、実行スレッド推定部３１１と、機能部品間関係保存部３１２と、機能−通信間関係推定部３１３と、機能部品コード作成部３１４と、機能部品間通信コード作成部３１５と、プログラム書き出し部３１６と、エラー検出部３１７とを備える。
【０２２０】
ここで、図表読み取り部３０８は、図表読み取り部８と同様の機能を有する。また、機能部品抽出部３０９は、機能部品抽出部９と同様の機能を有する。
【０２２１】
また、機能部品保存部３１０は、機能部品保存部１０と同様の機能を有する。また、実行スレッド推定部３１１は、実行スレッド推定部１１と同様の機能を有する。
【０２２２】
また、機能−通信間関係推定部３１３は、機能−通信間関係推定部１３と同様の機能を有する。また、機能部品コード作成部３１４は、機能部品コード作成部１４と同様の機能を有する。
【０２２３】
また、機能部品間通信コード作成部３１５は、機能部品間通信コード作成部１５と同様の機能を有する。また、プログラム書き出し部３１６は、プログラム書き出し部１６と同様の機能を有する。
【０２２４】
エラー検出部３１７は、機能部品保存部３１０に保存された機能部品情報表すべてを順に走査し、かつ、機能部品間関係保存部３１２に保存された機能部品間関係情報表を参照することによって、他のいずれの機能部品にも接続されていない、または、接続が不完全な機能部品があることを検出する。そして、エラー検出部３１７は、検出した機能部品を機能部品コード作成部３１４と機能部品間通信コード作成部３１５とに通知する。
【０２２５】
機能部品コード作成部３１４は、機能部品コード作成部１４と同様の機能を有する。さらに、機能部品コード作成部３１４は、エラー検出部３１７から通知された機能部品については、プログラムコードの一部を作成しない。
【０２２６】
機能部品間通信コード作成部３１５は、機能部品間通信コード作成部１５と同様の機能を有する。さらに、機能部品間通信コード作成部３１５は、エラー検出部３１７から通知された機能部品については、プログラムコードの一部を作成しない。
【０２２７】
以下では、本実施の形態に関するプログラム作成実行装置の動作について、特に、第１の実施の形態に関するプログラム作成実行装置の動作と異なる個所について詳細に説明する。
【０２２８】
他のいずれの機能部品にも接続されていない、または、接続が不完全な機能部品があることを検出する動作は、エラー検出部３１７によって、図１８に例示されるフローチャートにしたがって行われる。ここで、図１８は、他のいずれの機能部品にも接続されていない、または、接続が不完全な機能部品があることを検出する動作を説明するためのフローチャートである。
【０２２９】
まず、機能部品保存部３１０から、機能部品情報表を１つ取得する。これは、図１８に例示されるステップＳＴ５０１に対応する動作である。そして、図１８に例示されるステップＳＴ５０２へ進む。
【０２３０】
次に、取得した機能部品情報表に記述された機能部品ＩＤに対応する機能部品間関係情報表を、機能部品間関係保存部３１２から検索する。これは、図１８に例示されるステップＳＴ５０２に対応する動作である。
【０２３１】
次に、対応する機能部品間関係情報表が見つかるか否かを判定する。これは、図１８に例示されるステップＳＴ５０３に対応する動作である。
【０２３２】
対応する機能部品間関係情報表が見つかった場合、すなわち、図１８に例示されるステップＳＴ５０３から分岐する「ＹＥＳ」に対応する場合には、図１８に例示されるステップＳＴ５０６へ進む。
【０２３３】
一方で、対応する機能部品間関係情報表が見つからない場合、すなわち、図１８に例示されるステップＳＴ５０３から分岐する「ＮＯ」に対応する場合には、図１８に例示されるステップＳＴ５０４に戻る。
【０２３４】
ステップＳＴ５０４においては、当該機能部品はエラー機能部品であるとして、機能部品コード作成部３１４に通知する。そして、図１８に例示されるステップＳＴ５０５へ進む。
【０２３５】
次に、機能部品保存部３１０に保存されているすべての機能部品情報表に対して処理を行ったか否かを判定する。これは、図１８に例示されるステップＳＴ５０５に対応する動作である。
【０２３６】
すべての機能部品情報表に対して処理を行った場合、すなわち、図１８に例示されるステップＳＴ５０５から分岐する「ＹＥＳ」に対応する場合には、動作を終了する。
【０２３７】
一方で、すべての機能部品情報表に対して処理を行っていない場合、すなわち、図１８に例示されるステップＳＴ５０５から分岐する「ＮＯ」に対応する場合には、図１８に例示されるステップＳＴ５０１に戻る。
【０２３８】
ステップＳＴ５０６においては、見つかった機能部品間関係情報表を参照して、接続関係にある機能部品を検索する。そして、図１８に例示されるステップＳＴ５０７へ進む。
【０２３９】
次に、すでにステップＳＴ５０１で取得した機能部品以外で、接続関係にある機能部品が見つかるか否かを判定する。これは、図１８に例示されるステップＳＴ５０７に対応する動作である。
【０２４０】
接続関係にある機能部品が見つかる場合、すなわち、図１８に例示されるステップＳＴ５０７から分岐する「ＹＥＳ」に対応する場合には、図１８に例示されるステップＳＴ５０８へ進む。
【０２４１】
一方で、接続関係にある機能部品が見つからない場合、すなわち、図１８に例示されるステップＳＴ５０７から分岐する「ＮＯ」に対応する場合には、図１８に例示されるステップＳＴ５０４へ進む。
【０２４２】
ステップＳＴ５０８においては、機能部品保存部３１０に保存されているすべての機能部品情報表に対して処理を行ったか否かを判定する。
【０２４３】
すべての機能部品情報表に対して処理を行った場合、すなわち、図１８に例示されるステップＳＴ５０８から分岐する「ＹＥＳ」に対応する場合には、動作を終了する。
【０２４４】
一方で、処理を行っていない機能部品情報表がある場合、すなわち、図１８に例示されるステップＳＴ５０８から分岐する「ＮＯ」に対応する場合には、その接続関係にある機能部品を次のチェック対象として、図１８に例示されるステップＳＴ５０２に戻る。
【０２４５】
機能部品コード作成部３１４は、機能部品コード作成部１４と同様に、機能部品保存部３１０に保存された機能部品情報表のうち、機能部品種別が「機能」であるものに対して、実際にプログラム実行部３０５において実行可能なプログラムのコードの一部を作成する。
【０２４６】
機能部品コード作成部３１４が機能部品コード作成部１４と異なるのは、機能部品コード作成部３１４は、エラー検出部３１７からのエラー機能部品である旨の通知を受信し、当該機能部品のコード作成を行わないようにしたことである。
【０２４７】
ここで、エラー機能部品が存在している場合、出力装置３０２にエラー機能部品が存在している旨を出力してもよい。また、エラー機能部品の表を、電子ファイルの形式で情報保存部３０３に保存する機能を有していてもよい。
【０２４８】
機能部品間通信コード作成部３１５は、機能部品間通信コード作成部１５と同様に、機能部品保存部３１０に保存された機能部品情報表のうち、機能部品種別が「通信」であるものに対して、実際にプログラム実行部３０５において実行可能なプログラムのコードの一部を作成する。
【０２４９】
機能部品間通信コード作成部３１５が機能部品間通信コード作成部１５と異なるのは、機能部品間通信コード作成部３１５は、エラー検出部３１７からのエラー機能部品である旨の通知を受信し、当該機能部品のコード作成を行わないようにしたことである。
【０２５０】
ここで、エラー機能部品が存在している場合、出力装置３０２にエラー機能部品が存在している旨を出力してもよい。また、エラー機能部品の表を、電子ファイルの形式で情報保存部３０３に保存する機能を有していてもよい。
【０２５１】
このような動作を行うことによって、機能部品、または、通信機能部品として抽出され、互いに論理的接続関係が推定された機能部品すべてに対して、他の機能部品に対する接続関係があるか否かをチェックすることができる。したがって、他のいずれの機能部品にも接続がない機能部品、または、不完全な接続しかなされていない機能部品を自動的に検出することができるため、当該機能部品に基づくプログラムを作成しない。
【０２５２】
＜第５の実施の形態＞
本実施の形態に関するプログラム作成装置、プログラム作成実行装置、および、プログラム作成方法について説明する。以下の説明においては、以上に記載された実施の形態で説明された構成と同様の構成については同じ符号を付して図示し、その詳細な説明については適宜省略するものとする。
【０２５３】
＜プログラム作成実行装置の構成について＞
第１の実施の形態では、アプリケーション実行部、プログラム実行部、および、プログラム作成部は、１つのプログラム作成実行装置内に備えられていた。
【０２５４】
このため、別の装置で作成された、汎用描画ツールによって作成される図表によって記述されるプログラムの仕様書を使ってプログラムの作成または実行を行いたい場合には、可搬型の磁気ディスク、または、半導体メモリなどを使用して仕様書および実行可能プログラムデータを持ち運び、さらにコピーする必要があった。
【０２５５】
本実施の形態では、装置間接続装置によって装置を互いに接続し、アプリケーション実行部、プログラム実行部、および、プログラム作成部を別の装置上で稼働させることを可能にする。そうすることによって、プログラム仕様書および実行可能プログラムデータを持ち運ばなくても、プログラムの作成と実行とが可能となる。
【０２５６】
図１９は、本実施の形態に関するプログラム作成実行装置を実現するための構成の概念的に例示する図である。
【０２５７】
図１９に例示されるように、本実施の形態に関するプログラム作成実行装置は、プログラム実行装置４０７と、プログラム作成装置４０９と、装置間接続装置４０８とを備える。
【０２５８】
プログラム実行装置４０７は、入力装置４０１と、出力装置４０２とにそれぞれ接続される。ここで、入力装置４０１は、入力装置１と同等の機能を有する。また、出力装置４０２は、出力装置２と同等の機能を有する。
【０２５９】
また、プログラム実行装置４０７は、アプリケーション実行部４０４と、プログラム実行部４０５と、情報保存部４０３とを備える。
【０２６０】
ここで、アプリケーション実行部４０４は、アプリケーション実行部４と同様の機能を有する。また、プログラム実行部４０５は、プログラム実行部５と同様の機能を有する。また、情報保存部４０３は、情報保存部３と同様の機能を有する。
【０２６１】
プログラム作成装置４０９は、情報保存部４１０と、プログラム作成部４０６とを備える。
【０２６２】
ここで、情報保存部４１０は、情報保存部３と同様の機能を有する。また、プログラム作成部４０６は、プログラム作成部６と同様の機能を有する。
【０２６３】
なお、プログラム作成部４０６は、その内部にプログラム作成部６に備えられた処理部をすべて含むが、動作は同じであるため図からは省略してある。
【０２６４】
装置間接続装置４０８は、プログラム実行装置４０７とプログラム作成装置４０９とが互いに通信可能なように接続される。装置間接続装置４０８とプログラム実行装置４０７との接続点は、情報保存部４０３である。また、装置間接続装置４０８とプログラム作成装置４０９との接続点は、情報保存部４１０である。
【０２６５】
装置間接続装置４０８は、たとえば、ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）、ＩＥＥＥ１３９４などのシリアル通信バス、ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＬＡＮ）、または、ｃｏｎｔｒｏｌｌｅｒ  ａｒｅａ  ｎｅｔｗｏｒｋ（ＣＡＮ）などの、複数の情報処理装置を接続する通信手段を利用するものである。ＬＡＮなどネットワーク接続機器を用いて、ネットワーク経由で接続してもよい。この場合、組み込み装置とコンピュータ端末とは、必ずしも近接して配置されるものではなく、相互に隔離して運用することが可能となる。
【０２６６】
以下では、本実施の形態に関するプログラム作成実行装置の動作について、特に、第１の実施の形態に関するプログラム作成実行装置の動作と異なる個所について詳細に説明する。
【０２６７】
第１の実施の形態に関するプログラム作成実行装置の動作と同様に、アプリケーション実行部４０４で作成された、汎用描画ツールによって作成される図表によるプログラム仕様書は、情報保存部４０３に保存される。当該プログラム仕様書が保存されると、情報保存部４０３は、装置間接続装置４０８を介して、当該プログラム仕様書のデータをプログラム作成装置４０９へ送信する。
【０２６８】
プログラム作成装置４０９に送信された当該プログラム仕様書のデータは、一旦情報保存部４１０に保存される。そして、プログラム作成部４０６による処理が開始されるまで待機する。
【０２６９】
装置間接続装置４０８がデータおよびプログラムを送受信するとき、たとえば、シリアル通信バスを装置間接続装置４０８の実現方法として用いる場合には、当該シリアル通信バス規格が定める基本的な送受信コマンドを使って、データ書き込みおよび読み出しを行ってもよい。また、ｆｉｌｅ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ（ＦＴＰ）などの通信プロトコルを通じて送受信を行ってもよい。
【０２７０】
一方、たとえば、ネットワーク接続機器を装置間接続装置４０８の実現方法として用いる場合には、ｎｅｔｗｏｒｋ  ｆｉｌｅ  ｓｙｓｔｅｍ（ＮＦＳ）を利用して、情報保存部４０３と情報保存部４１０とが同期されるようにしてもよい。
【０２７１】
次に、第１の実施の形態に関するプログラム作成実行装置の動作と同様に、プログラム作成部４０６によって作成されたプログラムは、情報保存部４１０に保存される。当該プログラムが保存されると、情報保存部４１０は、装置間接続装置４０８を介して当該プログラムをプログラム実行装置４０７へ送信する。
【０２７２】
プログラム実行装置４０７に送信された当該プログラムは、一旦情報保存部４０３に保存される。そして、プログラム実行部４０５による処理が開始されるまで待機する。
【０２７３】
図１９に例示されるプログラム作成実行装置の構成では、アプリケーション実行部とプログラム実行部とが同じ装置に備えられ、プログラム作成部のみが別の装置に備えられる。
【０２７４】
一方で、図２０に例示されるように、アプリケーション実行部、プログラム実行部、および、プログラム作成部のそれぞれが互いに別の装置に備えられ、それぞれの装置が装置間接続装置によって相互に接続されているような構成であってもよい。
【０２７５】
なお、図２０は、本実施の形態に関するプログラム作成実行装置を実現するための他の構成の概念的に例示する図である。
【０２７６】
図２０に例示されるように、本実施の形態に関するプログラム作成実行装置は、汎用描画アプリケーションを実行するアプリケーション実行装置５０７と、プログラム作成装置５０９と、プログラム実行装置５１３と、装置間接続装置５０８とを備える。
【０２７７】
アプリケーション実行装置５０７は、入力装置５０１と、出力装置５０２とにそれぞれ接続される。ここで、入力装置５０１は、入力装置１と同等の機能を有する。また、出力装置５０２は、出力装置２と同等の機能を有する。
【０２７８】
また、アプリケーション実行装置５０７は、アプリケーション実行部５０４と、情報保存部５０３とを備える。
【０２７９】
ここで、アプリケーション実行部５０４は、アプリケーション実行部４と同様の機能を有する。また、情報保存部５０３は、情報保存部３と同様の機能を有する。
【０２８０】
プログラム作成装置５０９は、情報保存部５１０と、プログラム作成部５０６とを備える。
【０２８１】
ここで、情報保存部５１０は、情報保存部３と同様の機能を有する。また、プログラム作成部５０６は、プログラム作成部６と同様の機能を有する。
【０２８２】
なお、プログラム作成部５０６は、その内部にプログラム作成部６に備えられた処理部をすべて含むが、動作は同じであるため図からは省略してある。
【０２８３】
プログラム実行装置５１３は、入力装置５１１と、出力装置５１２とにそれぞれ接続される。ここで、入力装置５１１は、入力装置１と同等の機能を有する。また、出力装置５１２は、出力装置２と同等の機能を有する。
【０２８４】
プログラム実行装置５１３は、情報保存部５１４と、プログラム実行部５０５とを備える。
【０２８５】
ここで、情報保存部５１４は、情報保存部３と同様の機能を有する。また、プログラム実行部５０５は、プログラム実行部５と同様の機能を有する。
【０２８６】
装置間接続装置５０８は、アプリケーション実行装置５０７と、プログラム実行装置５１３と、プログラム作成装置５０９とが互いに通信可能なように接続される。装置間接続装置５０８とアプリケーション実行装置５０７との接続点は、情報保存部５０３である。また、装置間接続装置５０８とプログラム作成装置５０９との接続点は、情報保存部５１０である。また、装置間接続装置５０８とプログラム実行装置５１３との接続点は、情報保存部５１４である。
【０２８７】
このような動作を行うことによって、アプリケーション実行部、プログラム実行部、および、プログラム作成部はそれぞれ同じ、または、別の装置内で動作することが可能となる。
【０２８８】
また、複数の装置が互いに通信可能であることによって、プログラム仕様書のデータ、または、作成されたプログラムを互いに共有することができる。したがって、プログラム仕様書のデータ、または、作成されたプログラムを持ち運んでコピーする手間を必要とせずに、プログラムの作成と実行とを行うことができる。
【０２８９】
＜以上に記載された実施の形態によって生じる効果について＞
次に、以上に記載された実施の形態によって生じる効果を例示する。なお、以下の説明においては、以上に記載された実施の形態に例示された具体的な構成に基づいて当該効果が記載されるが、同様の効果が生じる範囲で、本願明細書に例示される他の具体的な構成と置き換えられてもよい。
【０２９０】
また、当該置き換えは、複数の実施の形態に跨ってなされてもよい。すなわち、異なる実施の形態において例示されたそれぞれの構成が組み合わされて、同様の効果が生じる場合であってもよい。
【０２９１】
以上に記載された実施の形態によれば、プログラム作成装置は、図表読み取り部８と、機能部品抽出部９と、機能部品保存部１０と、実行スレッド推定部１１と、通信関係推定部と、機能部品間関係保存部１２と、機能部品コード作成部１４と、機能部品間通信コード作成部１５と、プログラム書き出し部１６とを備える。ここで、通信関係推定部は、たとえば、機能−通信間関係推定部１３に対応するものである。図表読み取り部８は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る。機能部品抽出部９は、読み取られた図表から機能部品を記述する図形を抽出する。機能部品保存部１０は、抽出された機能部品の情報を保存する。実行スレッド推定部１１は、機能部品の図表における位置に基づいて、機能部品が実行されるスレッドである実行スレッドを推定する。機能−通信間関係推定部１３は、機能部品の図表における位置に基づいて、機能部品同士の通信関係を推定する。機能部品間関係保存部１２は、実行スレッド推定部１１において推定された実行スレッドの情報、および、機能−通信間関係推定部１３において推定された通信関係の情報を保存する。機能部品コード作成部１４は、機能部品保存部１０に保存された機能部品の情報、および、機能部品間関係保存部１２に保存された実行スレッドの情報および通信関係の情報に基づいて、機能部品コードを作成する。機能部品間通信コード作成部１５は、機能部品保存部１０に保存された機能部品の情報、および、機能部品間関係保存部１２に保存された実行スレッドの情報および通信関係の情報に基づいて、機能部品間通信コードを作成する。プログラム書き出し部１６は、機能部品コードおよび機能部品間通信コードに基づいてプログラムを書き出す。
【０２９２】
また、上記の実施の形態によれば、プログラム作成装置は、プログラムを実行する処理回路１００２Ａと、実行されるプログラムを記憶する記憶装置１００３とを備える。そして、処理回路１００２Ａがプログラムを実行することによって、以下の動作が実現される。
【０２９３】
すなわち、汎用描画ツールによって作成されるプログラムの仕様を記述する図表が読み取られる。そして、読み取られた図表から機能部品が抽出される。そして、機能部品の図表における位置に基づいて、機能部品が実行されるスレッドである実行スレッドが推定される。そして、機能部品の図表における位置に基づいて、機能部品同士の通信関係が推定される。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品コードが作成される。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品間通信コードが作成される。そして、機能部品コードおよび機能部品間通信コードに基づいてプログラムが書き出される。
【０２９４】
また、上記の実施の形態によれば、プログラム作成装置は、専用のハードウェアである処理回路１００２Ｂを備える。そして、専用のハードウェアである処理回路１００２Ｂは、以下の動作を行う。
【０２９５】
すなわち、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る。そして、読み取られた図表から機能部品を抽出する。そして、機能部品の図表における位置に基づいて、機能部品が実行されるスレッドである実行スレッドを推定する。そして、機能部品の図表における位置に基づいて、機能部品同士の通信関係を推定する。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品コードを作成する。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品間通信コードを作成する。そして、機能部品コードおよび機能部品間通信コードに基づいてプログラムを書き出す。
【０２９６】
このような構成によれば、汎用描画ツールなどによって作成されたプログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。具体的には、汎用描画ツールによって作成されるプログラムの仕様を記述する図表において配置された機能部品が正しい位置に配置されていない場合であっても、プログラムの仕様を記述する正しい位置を推定することによって、矛盾のない実行結果を得るプログラムを作成することができる。また、汎用描画ツールによって作成されるプログラムの仕様を記述する図表において示された機能部品間が正しく結合されていない場合であっても、プログラムの仕様を記述する正しい接続関係を推定することによって、矛盾のない実行結果を得るプログラムを作成することができる。
【０２９７】
なお、これらの構成以外の本願明細書に例示される他の構成については適宜省略することができる。すなわち、これらの構成のみで、以上に記載された効果を生じさせることができる。
【０２９８】
しかしながら、本願明細書に例示される他の構成のうちの少なくとも１つを以上に記載された構成に適宜追加した場合、すなわち、以上に記載された構成としては記載されなかった本願明細書に例示される他の構成を以上に記載された構成に追加した場合でも、同様に以上に記載された効果を生じさせることができる。
【０２９９】
また、以上に記載された実施の形態によれば、実行スレッド推定部１１は、機能部品の図表における第１の軸上の位置に基づいて、実行スレッドを推定する。ここで、第１の軸は、たとえば、時間軸に対応するものである。そして、機能−通信間関係推定部１３は、機能部品の図表における第１の軸と直交する第２の軸上の位置に基づいて、通信関係を推定する。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表において実行スレッドに関する軸と、当該軸とは直交し、かつ、機能部品間の通信関係に関する軸とを設定し、これらの軸に基づいて実行スレッドおよび通信関係を推定することができる。
【０３００】
また、以上に記載された実施の形態によれば、機能部品抽出部２０９は、図表における機能部品の形状に基づいて、機能部品の種別を少なくとも機能および通信に分けて抽出する。そして、プログラム作成装置は、種別が通信である機能部品の指向する方向に対応する図表における座標軸を第１の軸と推定する軸推定部を備える。ここで、軸推定部は、たとえば、方向判定部２１７に対応するものである。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表において時間軸を推定することができる。したがって、事前に時間軸を指定せずに、機能と通信との間の時系列上の論理的接続関係も正しく推定することができる。それによって、矛盾のない実行結果を得るプログラムを作成することができる。
【０３０１】
また、以上に記載された実施の形態によれば、機能部品抽出部１０９は、図表における機能部品の形状に基づいて、機能部品の種別を少なくとも機能および通信に分けて抽出する。そして、プログラム作成装置は、種別が通信である機能部品同士の接続関係を推定する接続関係推定部を備える。ここで、接続関係推定部は、たとえば、統合推定部１１７に対応するものである。機能部品間通信コード作成部１１５は、統合推定部１１７において推定された接続関係の情報に基づいて、接続関係にある種別が通信である機能部品同士を１つの機能部品とみなして、機能部品間通信コードを作成する。このような構成によれば、矛盾のない実行結果を得る汎用描画ツールによって作成されるプログラムの仕様を記述する図表において、見た目の重畳を避けるために複数の通信機能部品の組み合わせによって構成される単一の通信経路を表す機能部品が含まれる場合であっても、当該通信機能部品を優先してグループ化することによって、通信機能部品同士を組み合わせて表現される論理的接続関係も正しく推定することができる。そのため、このような機能部品が含まれる図表を用いた場合であっても、矛盾のない実行結果を得るプログラムを作成することができる。
【０３０２】
また、以上に記載された実施の形態によれば、プログラム作成装置は、エラー検出部３１７を備える。エラー検出部３１７は、機能部品保存部３１０に保存された機能部品の情報、および、機能部品間関係保存部３１２に保存された通信関係の情報に基づいて、他の機能部品との接続関係を有さない機能部品であるエラー機能部品を検出する。ここで、機能部品コード作成部３１４は、エラー検出部３１７において検出されたエラー機能部品を除く機能部品について機能部品コードを作成する。また、機能部品間通信コード作成部３１５は、エラー検出部３１７において検出されたエラー機能部品を除く機能部品について機能部品間通信コードを作成する。このような構成によれば、図表において抽出された機能部品が、他の機能部品との接続関係を有さない機能部品である場合に、当該機能部品を除く機能部品に基づいてプログラムを作成することができる。したがって、汎用描画ツールによって作成されるプログラムの仕様を記述する図表に基づいてプログラムを作成する場合に、当該図表に他の機能部品との接続関係を有さない機能部品が含まれる場合であっても、矛盾のない実行結果を得るプログラムを作成することができる。
【０３０３】
また、以上に記載された実施の形態によれば、プログラム作成実行装置は、プログラム作成装置４０９と、プログラム書き出し部によって書き出されたプログラムを実行するプログラム実行装置４０７と、プログラム作成装置４０９と、プログラム実行装置４０７とを、互いに通信可能に接続する装置間接続装置４０８とを備える。このような構成によれば、アプリケーション実行部４０４と、プログラム作成部４０６と、プログラム実行部４０５とがそれぞれ同じ、または、異なる装置内で動作する場合であっても、それぞれの装置が装置間接続装置４０８を介して互いに通信することによって、作成されたプログラムを共有することができる。したがって、作成されたプログラムを持ち運んでコピーするなどの手間を省くことができる。
【０３０４】
また、以上に記載された実施の形態によれば、プログラム作成方法において、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る。そして、読み取られた図表から機能部品を抽出する。そして、機能部品の図表における位置に基づいて、機能部品が実行されるスレッドである実行スレッドを推定する。そして、機能部品の図表における位置に基づいて、機能部品同士の通信関係を推定する。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品コードを作成する。そして、機能部品の情報、実行スレッドの情報、および、通信関係の情報に基づいて、機能部品間通信コードを作成する。そして、機能部品コードおよび機能部品間通信コードに基づいてプログラムを書き出す。
【０３０５】
このような構成によれば、汎用描画ツールなどによって作成された、プログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。具体的には、前記図表において配置された機能部品が正しい位置に配置されていない場合であっても、プログラムの仕様を記述する正しい位置を推定することによって、矛盾のない実行結果を得るプログラムを作成することができる。また、前記図表において示された機能部品間が正しく結合されていない場合であっても、プログラムの仕様を記述する正しい接続関係を推定することによって、矛盾のない実行結果を得るプログラムを作成することができる。
【０３０６】
なお、これらの構成以外の本願明細書に例示される他の構成については適宜省略することができる。すなわち、これらの構成のみで、以上に記載された効果を生じさせることができる。
【０３０７】
しかしながら、本願明細書に例示される他の構成のうちの少なくとも１つを以上に記載された構成に適宜追加した場合、すなわち、以上に記載された構成としては記載されなかった本願明細書に例示される他の構成を以上に記載された構成に追加した場合でも、同様に以上に記載された効果を生じさせることができる。
【０３０８】
また、特に制限がない限り、それぞれの処理が行われる順序は変更することができる。
【０３０９】
＜以上に記載された実施の形態における変形例について＞
以上に記載された実施の形態では、それぞれの構成要素の寸法、形状、相対的配置関係または実施の条件などについても記載する場合があるが、これらはすべての局面において例示であって、本願明細書に記載されたものに限られることはないものとする。
【０３１０】
したがって、例示されていない無数の変形例、および、均等物が、本願明細書に開示される技術の範囲内において想定される。たとえば、少なくとも１つの構成要素を変形する場合、追加する場合または省略する場合、さらには、少なくとも１つの実施の形態における少なくとも１つの構成要素を抽出し、他の実施の形態の構成要素と組み合わせる場合が含まれるものとする。
【０３１１】
また、矛盾が生じない限り、以上に記載された実施の形態において「１つ」備えられるものとして記載された構成要素は、「１つ以上」備えられていてもよいものとする。
【０３１２】
さらに、以上に記載された実施の形態におけるそれぞれの構成要素は概念的な単位であって、本願明細書に開示される技術の範囲内には、１つの構成要素が複数の構造物から成る場合と、１つの構成要素がある構造物の一部に対応する場合と、さらには、複数の構成要素が１つの構造物に備えられる場合とを含むものとする。
【０３１３】
また、以上に記載された実施の形態におけるそれぞれの構成要素には、同一の機能を発揮する限り、他の構造または形状を有する構造物が含まれるものとする。
【０３１４】
また、本願明細書における説明は、本技術に関するすべての目的のために参照され、いずれも、従来技術であると認めるものではない。
【０３１５】
また、以上に記載された実施の形態で記載されたそれぞれの構成要素は、ソフトウェアまたはファームウェアとしても、それと対応するハードウェアとしても想定され、その双方の概念において、それぞれの構成要素は「部」または「処理回路」などと称される。
【０３１６】
また、本願明細書に開示される技術は、それぞれの構成要素が複数の装置に分散して備えられる場合、すなわち、システムのような態様であってもよいものとする。
【符号の説明】
【０３１７】
１，１０１，２０１，３０１，４０１，５０１，５１１  入力装置、２，１０２，２０２，３０２，４０２，５０２，５１２  出力装置、３，１０３，２０３，３０３，４０３，４１０，５０３，５１０，５１４  情報保存部、４，１０４，２０４，３０４，４０４，５０４  アプリケーション実行部、５，１０５，２０５，３０５，４０５，５０５  プログラム実行部、６，１０６，２０６，３０６，４０６，５０６  プログラム作成部、７，１０７，２０７，３０７  プログラム作成実行装置、８，１０８，２０８，３０８  図表読み取り部、９，１０９，２０９，３０９  機能部品抽出部、１０，１１０，２１０，３１０  機能部品保存部、１１，１１１，２１１，３１１  実行スレッド推定部、１２，１１２，２１２，３１２  機能部品間関係保存部、１３，１１３，２１３，３１３  機能−通信間関係推定部、１４，１１４，２１４，３１４  機能部品コード作成部、１５，１１５，２１５，３１５  機能部品間通信コード作成部、１６，１１６，２１６，３１６  プログラム書き出し部、１１７  統合推定部、２１７  方向判定部、３１７  エラー検出部、４０７，５１３  プログラム実行装置、４０８，５０８  装置間接続装置、４０９，５０９  プログラム作成装置、５０７  アプリケーション実行装置、１００２Ａ，１００２Ｂ  処理回路、１００３  記憶装置、１０１３  通信関係推定部、ａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ  機能部品、ｈ  ハードウェアドライバ、ｉ，ｍ  矢印、ｊ  タイマー、ｋ  イベント処理、ｌ  線。
【図１】
2018012348.tif 000003
【図２】
2018012348.tif 000004
【図３】
2018012348.tif 000005
【図４】
2018012348.tif 000006
【図５】
2018012348.tif 000007
【図６】
2018012348.tif 000008
【図７】
2018012348.tif 000009
【図８】
2018012348.tif 000010
【図９】
2018012348.tif 000011
【図１０】
2018012348.tif 000012
【図１１】
2018012348.tif 000013
【図１２】
2018012348.tif 000014
【図１３】
2018012348.tif 000015
【図１４】
2018012348.tif 000016
【図１５】
2018012348.tif 000017
【図１６】
2018012348.tif 000018
【図１７】
2018012348.tif 000019
【図１８】
2018012348.tif 000020
【図１９】
2018012348.tif 000021
【図２０】
2018012348.tif 000022
【図２１】
2018012348.tif 000023
【図２２】
2018012348.tif 000024
【図２３】
2018012348.tif 000025
【手続補正書】
【提出日】平成29年10月19日(2017.10.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部と、
読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部と、
抽出された前記機能部品の情報を保存する機能部品保存部と、
前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類する実行スレッド推定部と、
前記実行スレッド推定部において推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定する通信関係推定部と、
前記実行スレッド推定部において推定された前記実行スレッドの情報、および、前記通信関係推定部において推定された前記通信関係の情報を保存する機能部品間関係保存部と、
前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部と、
前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部と、
前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部とを備える、
プログラム作成装置。
【請求項２】
前記実行スレッド推定部は、前記機能部品の前記図表における第１の軸上の位置に基づいて、前記実行スレッドを推定し、
前記通信関係推定部は、前記機能部品の前記図表における前記第１の軸と直交する第２の軸上の位置に基づいて、前記通信関係を推定する、
請求項１に記載のプログラム作成装置。
【請求項３】
前記機能部品抽出部は、前記図表における前記機能部品の形状に基づいて、前記機能部品の種別を少なくとも機能および通信に分けて抽出し、
前記プログラム作成装置は、さらに、
前記種別が通信である前記機能部品の指向する方向に対応する前記図表における座標軸を前記第１の軸と推定する軸推定部を備える、
請求項２に記載のプログラム作成装置。
【請求項４】
前記機能部品抽出部は、前記図表における前記機能部品の形状に基づいて、前記機能部品の種別を少なくとも機能および通信に分けて抽出し、
前記プログラム作成装置は、さらに、
前記種別が通信である前記機能部品同士の接続関係を推定する接続関係推定部を備え、
前記機能部品間通信コード作成部は、前記接続関係推定部において推定された前記接続関係の情報に基づいて、接続関係にある前記種別が通信である前記機能部品同士を１つの機能部品とみなして、前記機能部品間通信コードを作成する、
請求項１から請求項３のうちのいずれか１項に記載のプログラム作成装置。
【請求項５】
前記プログラム作成装置は、さらに、
前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記通信関係の情報に基づいて、他の前記機能部品との接続関係を有さない機能部品であるエラー機能部品を検出するエラー検出部を備え、
前記機能部品コード作成部は、前記エラー検出部において検出された前記エラー機能部品を除く前記機能部品について前記機能部品コードを作成し、
前記機能部品間通信コード作成部は、前記エラー検出部において検出された前記エラー機能部品を除く前記機能部品について前記機能部品間通信コードを作成する、
請求項１から請求項４のうちのいずれか１項に記載のプログラム作成装置。
【請求項６】
請求項１から請求項５のうちのいずれか１項に記載された前記プログラム作成装置と、
前記プログラム書き出し部によって書き出された前記プログラムを実行するプログラム実行装置と、
前記プログラム作成装置と、前記プログラム実行装置とを、互いに通信可能に接続する装置間接続装置とを備える、
プログラム作成実行装置。
【請求項７】
汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、
読み取られた前記図表から機能部品を抽出し、
前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類し、
推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定し、
前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、
前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、
前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す、
プログラム作成方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
本願明細書に開示される技術の第１の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部と、読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部と、抽出された前記機能部品の情報を保存する機能部品保存部と、前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類する実行スレッド推定部と、前記実行スレッド推定部において推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定する通信関係推定部と、前記実行スレッド推定部において推定された前記実行スレッドの情報、および、前記通信関係推定部において推定された前記通信関係の情報を保存する機能部品間関係保存部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部と、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部とを備える。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
また、本願明細書に開示される技術の第３の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、読み取られた前記図表から機能部品を抽出し、前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類し、推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
本願明細書に開示される技術の第１の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取る図表読み取り部と、読み取られた前記図表から機能部品を記述する図形を抽出する機能部品抽出部と、抽出された前記機能部品の情報を保存する機能部品保存部と、前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類する実行スレッド推定部と、前記実行スレッド推定部において推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定する通信関係推定部と、前記実行スレッド推定部において推定された前記実行スレッドの情報、および、前記通信関係推定部において推定された前記通信関係の情報を保存する機能部品間関係保存部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品コードを作成する機能部品コード作成部と、前記機能部品保存部に保存された前記機能部品の情報、および、前記機能部品間関係保存部に保存された前記実行スレッドの情報および前記通信関係の情報に基づいて、機能部品間通信コードを作成する機能部品間通信コード作成部と、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出すプログラム書き出し部とを備えるものである。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
また、本願明細書に開示される技術の第３の態様は、汎用描画ツールによって作成されるプログラムの仕様を記述する図表を読み取り、読み取られた前記図表から機能部品を抽出し、前記機能部品から第１の特徴点を抽出し、前記第１の特徴点を前記図表の時間軸方向へ射影し、さらに、射影された前記第１の特徴点の位置をグループ化することによって、前記機能部品が実行されるスレッドである実行スレッドを推定し、推定された結果に基づいて前記機能部品を分類し、推定された前記実行スレッドに基づいて分類された前記機能部品から第２の特徴点を抽出し、前記第２の特徴点を前記図表の前記時間軸方向と直交する方向へ射影し、さらに、射影された前記第２の特徴点の位置をグループ化することによって、前記機能部品同士の通信関係を推定し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品コードを作成し、前記機能部品の情報、前記実行スレッドの情報、および、前記通信関係の情報に基づいて、機能部品間通信コードを作成し、前記機能部品コードおよび前記機能部品間通信コードに基づいてプログラムを書き出す。このような構成によれば、汎用描画ツールによって作成されるプログラムの仕様を記述する図表に基づいて、プログラムを作成することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
次に、同じスレッドで動作する、または、当該スレッドを含む同じプロセスで動作するとみなされた、機能部品種別が機能、または、アノテーションである機能部品それぞれに対して、機能部品間関係情報表を作成する。そして、同じスレッド、または、当該スレッドを含む同じプロセスで実行されることが判別することができるよう、「所属スレッド」項に対して共通のスレッドＩＤ番号を書き込む。これは、図６に例示されるステップＳＴ１０７に対応する動作である。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
機能部品コード作成部１４は、機能部品保存部１０に保存された機能部品情報表のうち、機能部品種別が「機能」であるものに対して、実際にプログラム実行部５において実行可能なプログラムのコードの一部を作成する機能を有する。このとき、機能部品間関係保存部１２に保存された機能部品間関係情報表を参照しながら作成を実行するようにしてもよい。ここで、プログラム実行部５において実行可能なプログラムのコードは、機能部品の機能を実行するコンピュータプログラムバイナリであってもよい。また、機能部品の機能を表現した図表または文字データのセットであってもよい。図表または文字データのセットは、たとえば、ｆｌａｓｈ（登録商標）アニメーションデータまたはＭｉｃｒｏｓｏｆｔ  ＰｏｗｅｒＰｏｉｎｔ（登録商標）書類データ形式で実装されてもよい。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】変更
【補正の内容】
【０１２２】
実行可能なプログラムコードを作成する機能は、以下のようにすれば実現可能である。
【国際調査報告】
2018012348.tif 000026
2018012348.tif 000027
2018012348.tif 000028
2018012348.tif 000029