(57)【要約】【課題】ブロック図からプログラムを自動生成する際、計算機言語で記述したプログラムと組み合わせて使用し、かつ、ブロック図で作成したプログラムの重複する定義部分の検索・修正を容易に行えるソフトウェア作成支援装置を提供する。【解決手段】ブロック図プログラム作成手段１３１は、ブロック図記憶手段１１２に記憶されたブロック図情報と、ブロック図プログラムライブラリ１３３と、外部プログラム利用手段１３２を用いて外部プログラム記憶手段１２２に記憶された外部プログラムとからプログラムを作成する。外部プログラム利用手段１３２は、外部プログラム記憶手段１２２に記憶された外部プログラムをブロック図要素の固有ＩＤに対応づける。プログラム定義抽出手段１３５は、プログラムの構文解析を行って定義部分を抽出し、抽出した定義に重複があれば外部プログラム定義置換手段１２３に指示して定義の置換を行わせる。【選択図】図１
2009282788.tif 000002
【特許請求の範囲】
【請求項１】
ブロック要素の接続によるブロック図で処理手順を表記し、その表記に基づき計算機言語によるプログラムを自動生成するソフトウェア作成支援装置において、
前記ブロック図の作成、変更を行うブロック図作成手段と、
前記ブロック図から計算機言語によるプログラムを生成するブロック図プログラム作成手段と、
前記ブロック図を用いずに計算機言語で記述された外部プログラムを取り込む外部プログラム取り込み手段と、
前記外部プログラム取り込み手段が取り込んだ外部プログラムを前記ブロック図と組み合わせて利用できるようにする外部プログラム利用手段と、
前記ブロック図プログラム作成手段が生成したプログラムの定義と前記外部プログラム利用手段から取り込んだ外部プログラムの定義とを抽出するプログラム定義抽出手段と、
前記外部プログラム取り込み手段が取り込んだ外部プログラムの定義した内容を変更する外部プログラム定義置換手段と、
を備えることを特徴とする、ソフトウェア作成支援装置。
【請求項２】
前記外部プログラム利用手段は、前記外部プログラム取り込み手段が取り込んだ外部プログラムをブロック図要素の固有ＩＤに対応づけることを特徴とする請求項１記載のソフトウェア作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック図からプログラムを自動生成する際、計算機言語で記述した外部プログラムと組み合わせて生成可能とするとともにブロック図で作成したプログラムの重複する定義部分の検索・修正を容易に行うソフトウェア作成支援装置に関する。
【背景技術】
【０００２】
従来から計算機の特定の処理を行わせるためのプログラム、例えば、プログラマブルコントローラ用プログラム、を作成する場合、プログラム仕様をブロック図で記述し、そのブロック図をもとにプログラマが計算機言語を用いたプログラムを作成することが行われている。
【０００３】
さらに、プログラム仕様として記述されたブロック図から、直接、計算機言語のプログラムを自動作成するソフトウェア作成支援装置も知られている（特許文献１参照）。そしてブロック図プログラム生成手段が、入力されたブロック図形式システム仕様、マクロブロック図仕様及び必要に応じて通常形式で表現されたシステム仕様を参照して、目的とする部分プログラムを生成することを教示している。
【特許文献１】特開2006-285480号公報
【特許文献２】特開2006-301989号公報
【特許文献３】特開平04-098533号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記した特許文献１においては、ブロック図からプログラムを自動生成することからソフトウェアの生産性が向上する。その上でさらにソフトウェアの生産性を向上させるために従来作成したプログラムを再利用することが考えられるが、従来作成したプログラムはブロック図記述だけではなく、計算機言語で記述したプログラムも再利用できた方がソフトウェアの生産性向上により寄与する。しかし上記特許文献１においては、計算機言語で記述したプログラムの利用についての記述はなされていない。
【０００５】
また上記した特許文献２においては、ブロック図によるデータフロー表記を持たないプログラム要素と組み合わせてプログラムを作成し得るが、異なる作成手順で生成されたプログラムを組み合わせて使用するため、関数名，変数名，定数名等の定義が重複して存在している場合には、所望のソフトウェア動作が得られなくなるため、ソフトウェアの品質面において十分でないという課題がある。
【０００６】
また上記した特許文献３においては、ブロック図プログラム生成手段が目的とする部分プログラムを生成する場合に、ブロック図形式システム仕様だけでなく必要に応じて通常形式で表現されたシステム仕様を参照して、目的とする部分プログラムを生成するが、通常形式で表現されたシステム仕様の参照の具体的手法が開示されておらず、また各部分プログラムを生成する場合に各部分プログラム内で使用する変数名称を統一的に管理しているものの、プログラム定義が重複して存在した場合における検索・修正については言及がなされていない。
【０００７】
そこで本発明は、ブロック図からプログラムを自動生成する際、計算機言語で記述したプログラムと組み合わせて使用し、かつ、ブロック図で作成したプログラムの重複する定義部分の検索・修正を容易に行えるソフトウェア作成支援装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本発明は、ブロック要素の接続によるブロック図で処理手順を表記し、その表記に基づき計算機言語によるプログラムを自動生成するソフトウェア作成支援装置において、前記ブロック図の作成、変更を行うブロック図作成手段と、前記ブロック図から計算機言語によるプログラムを生成するブロック図プログラム作成手段と、前記ブロック図を用いずに計算機言語で記述された外部プログラムを取り込む外部プログラム取り込み手段と、前記外部プログラム取り込み手段が取り込んだ外部プログラムを前記ブロック図と組み合わせて利用できるようにする外部プログラム利用手段と、前記ブロック図プログラム作成手段が生成したプログラムの定義と前記外部プログラム利用手段から取り込んだ外部プログラムの定義とを抽出するプログラム定義抽出手段と、前記外部プログラム取り込み手段が取り込んだ外部プログラムの定義した内容を変更する外部プログラム定義置換手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ブロック図から作成したプログラムの定義と計算機言語で記述したプログラムの定義との間における名前の重複を検索し、名前が重複したときに、外部プログラムの定義の変更を行うことで、ソフトウェアの品質を高めることができる。また、ブロック図からプログラムを自動生成することになるためソフトウェアの生産性を向上させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を、図面を参照しながら説明する。
図１は、本発明の実施形態に係るソフトウェア作成支援装置の構成を示すブロック図である。図１においてソフトウェア作成支援装置１００は、サーバ１を構成する各種コンピュータ資源を活用してサーバ１内で具現され、サーバ１は、ネットワーク２を介してユーザ端末３ａ〜３ｃに接続される。サーバ１とユーザ端末３ａ〜３ｃは当該技術分野には知られているサーバ／クライアントシステムを構成する。そしてソフトウェア作成支援装置１００は、以下に詳述するブロック図作成部１１０と、外部プログラム管理部１２０と、ブロック図プログラム作成部１３０とから構成される。すなわち、
ブロック図作成部１１０は、ブロック図作成手段１１１と、ブロック図記憶手段１１２とで構成されている。ブロック図作成手段１１１は、ブロック図を組み合わせてプログラムを作成するための基礎となるブロック図要素とその接続の記述を行うとともに必要に応じてブロック図要素とその接続の変更も行う。ブロック図記憶手段１１２は、ブロック図作成手段１１１で表記されたブロック図要素とその接続をブロック図情報として記憶する。ブロック図記憶手段１１２に記憶されたブロック図情報は後述するブロック図プログラム作成手段１３１に読み出され、ブロック図プログラムライブラリ１３３の元でプログラムが生成される。
【００１１】
外部プログラム管理部１２０は、外部プログラム登録手段１２１と、外部プログラム記憶手段１２２と、外部プログラム定義置換手段１２３とで構成されている。外部プログラム登録手段１２１は、ブロック図を用いずに計算機言語で記述された外部プログラム（計算機言語で記述されたプログラム）を取り込んで後述するブロック図プログラム作成部１３０で上述のブロック図情報と組み合わせてブロック図によるプログラムの生成に資するために登録する。外部プログラム記憶手段１２２は、外部プログラム登録手段１２１で取り込んだ外部プログラムを記憶する。外部プログラム定義置換手段１２３は、後述するブロック図プログラム作成部１３０のプログラム定義抽出手段１３５で抽出した、プログラムの定義内容が重複する場合には外部プログラムの定義内容の変更を行って、プログラム定義抽出手段１３５経由でブロック図プログラム作成手段１３１に戻すとともに定義内容を変更した外部プログラムの内容を外部プログラム記憶手段１１２上でも書き改める。
【００１２】
ブロック図プログラム作成部１３０は、ブロック図プログラム作成手段１３１と、外部プログラム利用手段１３２と、ブロック図プログラムライブラリ１３３と、プログラム記憶手段１３４と、プログラム定義抽出手段１３５とで構成されている。ブロック図プログラム作成手段１３１は、上記ブロック図記憶手段１１２に記憶されたブロック図情報と、後述するブロック図プログラムライブラリ１３３と、後述する外部プログラム利用手段１３２を用いて上記外部プログラム記憶手段１２２に記憶された外部プログラムとからプログラムを作成する。外部プログラム利用手段１３２は、上記外部プログラム記憶手段１２２に記憶された外部プログラムをブロック図記憶手段１１２に記憶されたブロック図情報と組み合わせてプログラムを生成するために、上記外部プログラム記憶手段１２２に記憶された外部プログラムをブロック図要素の固有ＩＤに対応づける。ブロック図プログラムライブラリ１３３は、ブロック図要素に対応したプログラムを記憶しており、ブロック図プログラム生成手段１３１によって読み出され、ブロック図情報に基づくプログラムの生成に協力する。プログラム記憶手段１３４は、上記ブロック図プログラム作成手段１３１で生成したプログラムを記憶する。プログラム定義抽出手段１３５は、上記ブロック図プログラム作成手段１３１によるプログラム生成過程においてプログラムの構文解析を行って定義部分を抽出し、抽出した定義に重複があれば上記した外部プログラム定義置換手段１２３に指示して定義の置換を行わせるとともに置換した内容を外部プログラム定義置換手段１２３からプログラム抽出手段１３５に返送させ、さらにその内容をブロック図プログラム生成手段１３１に伝達する。したがって、ブロック図プログラム生成手段１３１は置換された定義内容に基づいてブロック図プログラムを生成することとなる。
【００１３】
このように本発明の実施形態に係るソフトウェア作成支援装置は、ブロック要素の接続によるブロック図で処理手順を表記し、その表記に基づき計算機言語によるプログラムを自動生成するものであって、ブロック図からプログラムを自動生成する際、計算機言語で記述した外部プログラムと組み合わせて使用することでソフトウェアの生産性を向上させることを可能とし、かつ、ブロック図で作成したプログラムの重複する定義部分を検索（抽出）及び修正（変更）するのでソフトウェアの品質を高めることができるものである。
【００１４】
図２は、本発明の実施形態に係るソフトウェア作成支援装置の表示画面例を示す図である。図２の表示画面は、ユーザ端末３ａ〜３ｃからネットワーク２を介してサーバ１内のソフトウェア作成支援装置を起動した際にユーザ端末３ａ〜３ｃに表示されるもので、ブロック要素２１とブロック要素間の接続２２の作成や修正を行う画面２０と、ブロック図の作成やソフトウェア作成に必要な操作を行うメニュー２３〜２７から構成されている。
【００１５】
メニュー２３〜２７としては、ブロック図のファイル操作を行うファイル２３と、ブロック図に記入するブロック要素の選択を行うブロック要素の選択２４と、ブロック要素間の接続を行う接続２５と、ブロック図からプログラムの作成やプログラムで使用している定義の抽出を行うツール２６と、外部プログラムをブロック図と組合せて利用するための外部プログラムの登録や外部プログラムの利用を行う外部プログラム２７とが用意されている。また、図２を発展させた後述する図８においては、ブロック図の要素で使用しているマクロ定義の例も合わせて記述している。
【００１６】
図３は、本発明の実施形態に係るソフトウェア作成支援装置における定義抽出の画面例を示す図であり、図２に示したメニュー２６の「ツール」で“定義抽出”を選択したときのものである。図３の画面には、対象となるプログラム名の指定部３１と、抽出する定義の対象としてマクロ、変数、関数、型等を選択する抽出対象選択部３２と、抽出を行わせるための開始ボタン３３と、抽出した結果をブロック図と利用している外部プログラムに分けて表示し、外部プログラムの定義で変更すべき箇所の選択を可能とする抽出結果表示部３４と、外部プログラムの定義変更を行わせるための開始(変更実行)ボタン３５と、画
面を閉じるための終了ボタン３６とが用意される。なお、図３の画面で作業した内容の処理は、図１のブロック図プログラム作成部３０のプログラム定義抽出手段１３５で行う。これについては後述する。
【００１７】
図４は、本発明の実施形態に係るソフトウェア作成支援装置における定義変更の画面例を示す図であり、図３に示した外部プログラムの定義変更の開始(変更実行)ボタン３５を押下したときに表示されるものである。図４の画面には、変更を行う定義を表示した定義表示部４１と、対象となる外部プログラムのファイル名の表示部４２と、図３の抽出結果表示部３４にて変更すべき箇所として選択された内容を表示する現状の定義表示部４３と、置換する定義の記述を行う記述部４４と、変更を行わせるための変更開始(置換)ボタン４５と、画面を閉じるための終了ボタン４６とが用意される。なお、図４の画面で作業した内容の処理は、図１の外部プログラム管理部３０の外部プログラム定義置換手段１２３で行う。これについては後述する。
【００１８】
図５は、本発明の実施形態に係るソフトウェア作成支援装置における外部プログラム登録の画面例を示す図であり、図２に示したメニュー２７の「外部プログラム」で“外部プログラム登録”を選択したときのものである。図５の画面には、登録する外部プログラムのファイルを指定する登録元ファイル指定部５１と、外部プログラムを外部プログラム記憶手段１２２に保存するための保存先を指定する登録先ファイル指定部５２と、登録を行うための登録ボタン５３と、画面を閉じるための終了ボタン５４とが用意される。なお、図５の画面で作業した内容の処理は、図１の外部プログラム管理部３０の外部プログラム登録手段１２１で行う。
【００１９】
図６は、本発明の実施形態に係るソフトウェア作成支援装置における外部プログラム利用の画面例を示す図であり、図２に示したメニュー２７の「外部プログラム」で“外部プログラム利用”を選択したときのものである。図６の画面には、外部プログラム利用手段１３２においてブロック図要素の固有ＩＤに外部プログラムを対応づけるために、ブロック図要素指定部６１と、利用する外部プログラムの指定部６２と、利用する関数名の指定部６３と、関数の戻り値の型とコメントを指定する戻り値指定部６４と、引数の型と名前とコメントを指定する引数指定部６５と、上記ブロック図要素指定部６１に利用する外部プログラムの情報の登録を行うための登録ボタン６６と、画面を閉じるための終了ボタン６７とが用意される。なお、図６の画面で作業した内容の処理は、図１のブロック図プログラム作成部３０の外部プログラム利用手段１３２で行う。
【００２０】
図７は、本発明の実施形態に係るソフトウェア作成支援装置における外部プログラムの定義を置換するときの処理フローである。図７に示す処理フローの説明に入る前に、図示省略しているが、図１に示すユーザ端末３ａ〜３ｃから、ネットワーク２を介し、サーバ１上にある、ソフトウェア作成支援装置１００を起動し、そのうちブロック図プログラム作成部１３０におけるブロック図プログラム生成手段１３１を動作させているものとする。したがい、ユーザ端末３ａ〜３ｃにおいては図２又は図８に示す画面が表示される。いま、プログラム作成者が図２又は図８の画面上においてメニュー２６の「定義抽出」を選択すると、図３に示す定義抽出の画面がユーザ端末３ａ〜３ｃに表示される(ステップS101)。図３に示す画面において、対象プログラムを指定したあとで抽出する定義を抽出対象選択部３２で選択する(ステップS102)。そして「抽出開始」ボタン３３を選択する(ステップS103)。
【００２１】
これにより、ブロック図プログラム作成部１３０におけるプログラム定義抽出手段１３５が起動され、プログラム定義抽出手段１３５にて対象プログラムの構文解析を行いブロック図と利用している外部プログラムの定義を抽出する(ステップS104)。その結果は、図３の抽出結果表示部３４にブロック図の定義と外部プログラムの定義を、例えば、名前、
値、コメントのセットで表示する(ステップS105)。次いで変更する外部プログラムの定義を選択し、「変更実行」ボタン３５を押下する(ステップS106)。
【００２２】
「変更実行」ボタン３５が押下されると、定義変更画面（図４参照）が表示される(ステップS107)。図４の画面において、置換する定義の記述を行う記述部４４に変更内容を入力する(ステップS108)。次いで、図４の画面において「置換」ボタン４５を選択する(ステップS109)。それに基づいて、図４に示す定義変更画面で指定されたファイルの「現状の定義」に記述された記述部４３の内容を「置換する定義」に記述された記述部４４の内容に置換することが可能となる。そして処理を終了する。
【００２３】
図８は、本発明の実施形態に係るソフトウェア作成支援装置におけるプログラム定義が重複する場合の表示例を示す図であり、図２と同様に図８の表示画面は、ブロック要素２１とブロック要素間の接続２２の作成や修正を行う画面２０、ブロック図の作成やソフトウェア作成に必要な操作を行うメニュー２３〜２７、さらに、ブロック図で使用しているマクロ定義が分かるように、ブロック図で使用している定義が各ブロック図の下側に表示される。また二重線で囲まれたブロック図Ｃ，Ｄは、外部プログラム利用手段１３２により外部プログラムに対応付けられたブロック図情報を示している。そしてブロック図Ｂのマクロ定義の名前「SAIDAI」(８１)とブロック図Ｃのマクロ定義の名前「SAIDAI」(８２)とが重複していることを示している。
【００２４】
図８に示す表示画面のメニュー２６の「ツール」にある“定義抽出”（図示省略、図２参照）が選択されると、図３に示す定義抽出画面が表示される。そこで抽出する定義を抽出対象選択部３２に入力し、「抽出開始」ボタン３３を押下する。そうすると図１に示すプログラム定義抽出手段１３５で対象プログラムの構文解析を行い、ブロック図の定義と利用している外部プログラムの定義を抽出し、名前別に「No.」をつけて表示する。図３に示す例においては、「No.」として「１，２，３」が表示される。名前が一致する場合には、同じ「No.」に表示している。図示例においては「No.」＝「２」で名前が一致する。このような名前が一致する定義がある場合には、プログラムが意図しない動作をする可能性がある。
【００２５】
そこで、利用している外部プログラムの定義の変更を行う必要性が出てくるために、変更する外部プログラム定義を選択（図示例においては「No.」＝「２」における利用している外部プログラム）し、「変更実行」ボタン３５を押下すると、図４に示す定義変更の画面が表示される。ここで、「置換する定義」に記述された記述部４４の内容における必要な変更として名前の変更（「SAIDAI」→「SAIDAI1」）を行い、「置換」ボタン４５を押すと、置換が実行され、その内容が、プログラム定義抽出手段１３５に返送されるとともに置換された内容が外部プログラム記憶手段１１２にも渡される。具体的には、図９に示す外部プログラムのマクロ定義(置換前)が、図１０に示す外部プログラムのマクロ定義(置換後)のように置換される。図１０では下線部が置換したマクロ定義であることを示している。
【図面の簡単な説明】
【００２６】
【図１】本発明の実施形態に係るソフトウェア作成支援装置の構成を示すブロック図である。
【図２】本発明の実施形態に係るソフトウェア作成支援装置の表示画面例を示す図である。
【図３】本発明の実施形態に係るソフトウェア作成支援装置の定義抽出の画面例を示す図である。
【図４】本発明の実施形態に係るソフトウェア作成支援装置の定義変更の画面例を示す図である。
【図５】本発明の実施形態に係るソフトウェア作成支援装置の外部プログラム登録の画面例を示す図である。
【図６】本発明の実施形態に係るソフトウェア作成支援装置の外部プログラム利用の画面例を示す図である。
【図７】本発明の実施形態に係るソフトウェア作成支援装置における外部プログラムの定義を置換するときの処理フローを示す図である。
【図８】本発明の実施形態に係るソフトウェア作成支援装置におけるプログラム定義が重複する場合の表示例を示す図である。
【図９】本発明の実施形態に係るソフトウェア作成支援装置の外部プログラムの例（置換前）を示す図である。
【図１０】本発明の実施形態に係るソフトウェア作成支援装置の外部プログラムの例（置換後）を示す図である。
【符号の説明】
【００２７】
１  サーバ
２  ネットワーク
３ａ〜３ｃ  ユーザ端末
１００  ソフトウェア作成支援装置
１１０  ブロック図作成部
１１１  ブロック図作成手段
１１２  ブロック図記憶手段
１２０  外部プログラム管理部
１２１  外部プログラム登録手段
１２２  外部プログラム記憶手段
１２３  外部プログラム定義置換手段
１３０  ブロック図プログラム作成部
１３１  ブロック図プログラム作成手段
１３２  外部プログラム利用手段
１３３  ブロック図プログラムライブラリ
１３４  プログラム記憶手段
１３５  プログラム定義抽出部
２１  ブロック要素
２２  ブロック要素間の接続
２３  メニュー「ファイル」
２４  メニュー「ブロック要素の選択」
２５  メニュー「接続」
２６  メニュー「ツール」
２７  メニュー「外部プログラム」
３１  プログラム名の表示部
３２  抽出対象選択部
３３  開始ボタン
３４  抽出結果表示部
３５  開始ボタン
３６  終了ボタン
４１  定義表示部
４２  ファイル名の表示部
４３  現状の定義表示部
４４  記述部
４５  変更開始ボタン
４６  終了ボタン
５１  登録元ファイル指定部
５２  登録先ファイル指定部
５３  登録ボタン
５４  終了ボタン
６１  ブロック図要素指定部
６２  外部プログラムの指定部
６３  関数名の指定部
６４  戻り値指定部
６５  引数指定部
６６  登録ボタン
６７  終了ボタン
【図１】
2009282788.tif 000003
【図２】
2009282788.tif 000004
【図３】
2009282788.tif 000005
【図４】
2009282788.tif 000006
【図５】
2009282788.tif 000007
【図６】
2009282788.tif 000008
【図７】
2009282788.tif 000009
【図８】
2009282788.tif 000010
【図９】
2009282788.tif 000011
【図１０】
2009282788.tif 000012