JP2004287695A - Program development support device, program development support method, program, and computer-readable storage medium recording the program - Google Patents
Program development support device, program development support method, program, and computer-readable storage medium recording the program Download PDFInfo
- Publication number
- JP2004287695A JP2004287695A JP2003077328A JP2003077328A JP2004287695A JP 2004287695 A JP2004287695 A JP 2004287695A JP 2003077328 A JP2003077328 A JP 2003077328A JP 2003077328 A JP2003077328 A JP 2003077328A JP 2004287695 A JP2004287695 A JP 2004287695A
- Authority
- JP
- Japan
- Prior art keywords
- instance
- definition
- input
- class
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
この発明は、プログラム開発支援装置またはプログラム開発支援方法に関するものである。また、プログラム開発支援に関する装置を動作させるプログラムまたは上記プログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。特に、オブジェクト指向のソフトウェア開発において、設計モデルに基づいてソースコードを生成する装置に関するものである。
【0002】
【従来の技術】
オブジェクト指向開発においては、UML(Unified Modeling Language)を用いて設計モデルを記述し、その内容に基づいてプログラミングを行うことが一般的である。設計モデルの内容はプログラミング言語の記述レベルに近く、クラス、属性、操作といったクラス仕様に関するモデル要素は、プログラミング言語上のデータ構造、データメンバ、関数といった言語上の要素に明確に対応付けられるという特徴がある。
【0003】
オブジェクト指向プログラムをコンピュータを利用して自動生成するソフトウエア開発の作業効率を大幅に向上させることを目的として以下の手段が公知になっている。オブジェクト指向プログラムの自動生成装置は、モデルから最終製品であるプログラムを自動生成する。静的部分のプログラムの生成は、開発対象システムの構造を表現する図、即ちクラス図等から静的部分の定義を抽出するステップを含む。動的部分のプログラムの生成は、開発対象システムの振る舞いを表現する図、即ちステートチャート図等から動的部分の定義を抽出するステップと、ステートチャート図等からステートマシンツリーを構築するステップを含む。プログラム生成ステップでは、静的部分のプログラムコードの自動生成と共に動的部分のプログラムコードの自動生成が行われ、更にこれらのプログラムコードを結合して最終製品のプログラムコードの完全な自動生成が行われる(特許文献1参照)。
【0004】
オブジェクト指向設計支援システムなどにおける、インスタンスの図形入出力インタフェース構築を容易にすることを目的として以下の手段が公知になっている。図形エディタの画面操作で、クラスに対応するユーザ図形を作図して、結線ポイントや図形属性のスロットを指定しておく。これにより、図形入出力、結合、表示変形等のプログラムを自動生成し、インスタンスの図形入力、図形結線によるインスタンスの結合、インスタンスのスロット更新によるアニメーション記述を可能にする(特許文献2参照)。
【0005】
【特許文献1】
特開2002−116911号公報
【特許文献2】
特開2001−184213号公報
【0006】
【発明が解決しようとする課題】
設計モデルにはクラス仕様だけでなく、静的インスタンス仕様を含むこともある。C++のようなオブジェクト指向言語で記述されたソフトウェアではインスタンスの生成はしばしば動的に行なわれるが、静的に定義することも可能である。特に、機器組み込みソフトウェアのように動的なインスタンス生成が適さない分野では、静的なインスタンス定義ができることが重要である。
【0007】
設計モデルを元にしたプログラミング作業を効率化するため、設計モデルからのソースコードの自動生成が従来から行なわれてきた。例えばRationalSoftware Corp.のオブジェクト指向モデリングツールであるRational Rose(登録商標)は、UMLの図の1つであるクラス図で記述したクラス定義情報から、クラスのデータ構造やクラス間の関係といったクラス仕様の静的な側面を表現するソースコードを生成できるとしている。
【0008】
しかしながらRational Rose(登録商標)では、プログラムの実行アルゴリズムのようなクラス仕様の動的な側面を表現するソースコードを生成することはできない。
【0009】
また、特許文献1における先行技術では、クラス仕様の静的な側面と動的な側面の両方を表現するソースコードを生成する。この先行技術では、クラス図のような構造を表す図から、クラスの静的な仕様を表現するソースコードを生成する第1プログラム生成手段と、ステートチャート図のような振る舞いを表す図から、クラスの動的な仕様を表現するソースコードを生成する第2プログラム生成手段と、第1プログラム生成手段が生成したソースコードと第2プログラム生成手段が生成したソースコードを結合する第3プログラム生成手段から構成される。
【0010】
しかしながらこの先行技術では、クラス仕様を表現するソースコードは生成できるものの、インスタンス仕様を表現するソースコードを生成することはできない。
【0011】
次に、特許文献2における先行技術では、設計情報を元にクラス仕様とインスタンス仕様を表現するソースコードを生成する。この先行技術では、通常の図形エディタを拡張した適用型図形エディタを用いて、対話操作で入出力法の設定を行なう。適用型図形エディタでは、オペレータが基本図形を組み合わせて任意の図形を定義すると、クラスに対応させて記憶する。またオペレターがユーザ図形の結線ポイントを指定すると、描画した図形の結線で両端のインスタンス間を自動的にポインタで結合するメソッドを生成する。さらに、オペレータが表示図形の属性、たとえば、図形要素の長さ、色、柄、文字列などを表した表示スロットを指定すると、表示スロットの値を更新して表示図形を変形するメソッドを生成する。
【0012】
しかしながらこの先行技術は、電子装置などのシミュレーションを行なうソフトウェアを効率よく構成することを目的としたものであり、オブジェクト指向技術に基づいて開発されたソフトウェア全般に適用できるものではない。例えばこの先行技術では、インスタンス間を自動的に結合することが記載されているが、この先行技術でいう結合とは電子回路の結線をシミュレートするための表示・結線・発火といった一群のメソッドを組み合わせたものであり、結合対象となるすべてのクラスがこれらのメソッドを持つと仮定している。この仮定はこの先行技術が想定しているようなシミュレーションを行なうソフトウェアに特有のものであって、一般的なソフトウェア全般に適用できるものではない。
【0013】
本発明は、一般的なオブジェクト指向ソフトウェア開発においても、設計モデルを元にしたプログラミング作業を効率化するとともに、手作業による誤りを防止してソフトウェアの品質を向上させることを目的とする。
【0014】
【課題を解決するための手段】
この発明に係るプログラム開発支援装置は、プログラム開発のためのクラス定義情報とインスタンス定義情報とを入力する入力部と、
上記入力部により入力されたクラス定義情報を編集し、記憶装置に記憶するクラス定義編集部と、
上記クラス定義編集部により編集されたクラス定義情報を上記記憶装置と上記クラス定義編集部とのいずれかから入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成するクラス定義記述生成部と、
上記入力部により入力されたインスタンス定義情報を編集し、上記記憶装置に記憶するインスタンス定義編集部と、
上記インスタンス定義編集部により編集されたインスタンス定義情報を上記記憶装置と上記インスタンス定義編集部とのいずれかから入力し、上記クラス定義編集部により編集されたクラス定義情報を上記記憶装置と上記クラス定義編集部とのいずれかから入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成するインスタンス定義記述生成部と、
上記インスタンス定義編集部により編集されたインスタンス定義情報と上記インスタンス定義記述生成部により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力部により入力されたインスタンス定義情報におけるインスタンス定義が上記入力部により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査するインスタンス定義検査部と、
上記クラス定義記述生成部により生成されたクラス定義記述と上記インスタンス定義記述生成部により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査部により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す出力部とを備えたことを特徴とする。
【0015】
【発明の実施の形態】
実施の形態1.
以下、図面を参照してこの発明の実施形態を説明する。
図1は、実施の形態1に係わるオブジェクト指向開発支援装置の構成を示す図である。
図1において、オブジェクト指向開発支援装置101(プログラム開発支援装置の一例である)は、入力部110と、設計モデル121に含まれるクラス定義情報122を編集するクラス定義編集部111と、クラス定義情報122からプログラミング言語によるクラス定義記述131を生成するクラス定義記述生成部112と、設計モデル121に含まれるインスタンス定義情報123を編集するインスタンス定義編集部113と、不正なインスタンス定義を検出し報告するインスタンス定義検査部114と、クラス定義情報とインスタンス定義情報からプログラミング言語で記述されたインスタンス定義記述141を生成するインスタンス定義記述生成部115と、出力部116を備えている。
【0016】
記憶装置120は、設計モデル121を記憶する。設計モデル121は、クラス定義情報122とインスタンス定義情報123とを有している。記憶装置130は、クラス定義記述131を記憶する。記憶装置140は、インスタンス定義記述141を記憶する。記憶装置120は、図1では、オブジェクト指向開発支援装置101の外部に位置しているが、オブジェクト指向開発支援装置101の内部にあっても構わない。同様に、記憶装置130は、図1では、オブジェクト指向開発支援装置101の外部に位置しているが、オブジェクト指向開発支援装置101の内部にあっても構わない。同様に、記憶装置140は、図1では、オブジェクト指向開発支援装置101の外部に位置しているが、オブジェクト指向開発支援装置101の内部にあっても構わない。
【0017】
入力部110は、プログラム開発のためのクラス定義情報とインスタンス定義情報とを入力する。
【0018】
クラス定義編集部111は、上記入力部110により入力されたクラス定義情報を編集し、記憶装置120に記憶する。
【0019】
クラス定義記述生成部112は、上記クラス定義編集部111により編集されたクラス定義情報を上記記憶装置120と上記クラス定義編集部111とのいずれかから入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成する。
【0020】
インスタンス定義編集部113は、上記入力部110により入力されたインスタンス定義情報を編集し、上記記憶装置120に記憶する。
【0021】
インスタンス定義記述生成部115は、上記インスタンス定義編集部113により編集されたインスタンス定義情報を上記記憶装置120と上記インスタンス定義編集部113とのいずれかから入力し、上記クラス定義編集部111により編集されたクラス定義情報を上記記憶装置120と上記クラス定義編集部111とのいずれかから入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成する。
【0022】
インスタンス定義検査部114は、上記インスタンス定義編集部113により編集されたインスタンス定義情報と上記インスタンス定義記述生成部115により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力部110により入力されたインスタンス定義情報におけるインスタンス定義が上記入力部110により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査する。
【0023】
出力部116は、上記クラス定義記述生成部112により生成されたクラス定義記述と上記インスタンス定義記述生成部115により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査部114により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す。出力部116は、例えば、図示していない画面表示部に上記インスタンス定義が上記クラス定義に従っていないことと再度インスタンス定義情報の入力をすべきことを表示して視覚を通してユーザに再度インスタンス定義情報の入力を促す。或いは、画面表示ではなくプリンタ等の印刷装置を用いて紙等に印刷してユーザに再度インスタンス定義情報の入力を促しても構わない。
【0024】
出力部により出力されたクラス定義記述131とインスタンス定義記述141は、図1のように別途記憶装置130,140にそれぞれ記憶され保存される。或いは、出力部116は、例えば、図示していない画面表示部に上記クラス定義記述131とインスタンス定義記述141を表示して視覚を通してユーザに確認できるように出力してもよい。また、両方であってもよい。
【0025】
図2は、実施の形態1における設計モデルの作成からコード生成までの流れを示したフローチャート図である。
ステップ201において、クラス定義編集部111は、入力部110を介してオペレータにクラス定義を情報(クラス定義情報)として入力させ、編集し、結果として得られるクラス定義情報122を記憶装置120に設計モデル121の一部として格納する。ここでクラス定義編集部111は、UMLでグラフィカルに表現されたクラス定義を編集する図形エディタ形態のものであってもよいし、文字列で表現されたクラス定義を編集するテキストエディタ形態のものであってもよいし、両者を組み合わせた形態のものであってもよい。
【0026】
ステップ202において、クラス定義記述生成部112は、ステップ201で作成されたクラス定義情報122を記憶装置120に記憶された設計モデル121から抽出し、例えば、C言語(プログラム言語の一例である)またはC++言語(プログラム言語の一例である)で記述されたクラス定義記述131を含んだソースファイルを生成する。別の方法としては、クラス定義情報122を設計モデル121から抽出するのではなく、クラス定義編集部111から取り出してもよい。なお、ステップ202はステップ201よりも後に行なわれればよく、必ずしも図2のフローチャートに示すようなステップ201の直後に行なわれる必要はない。
【0027】
ステップ203において、インスタンス定義編集部113は、入力部110を介してオペレータにインスタンス定義を情報(インスタンス定義情報)として入力し、編集し結果として得られるインスタンス定義情報123を記憶装置120に設計モデル121の一部として格納する。ここでインスタンス定義編集部113は、コラボレーション図形式またはインスタンスの一覧表形式またはこの2つを組み合わせた形式のユーザインタフェースを提供する。一覧表形式のユーザインタフェースを用いる場合、インスタンス定義編集部113はクラス定義情報122を記憶装置120に記憶された設計モデル121から抽出して、クラス名・属性名・関連ロール名を示し、インスタンスの初期値として各属性および各関連ロールに対して与える設定値を入力する欄を設ける。
【0028】
ステップ204において、インスタンス定義編集部113で編集された結果のインスタンス定義に対し、インスタンス定義検査部114が検査を行なう。インスタンス定義検査部114がインスタンス定義の不整合を検出した場合はユーザインタフェースを通してオペレータに報告し、再びステップ203に戻り、インスタンス定義を修正する。インスタンス定義検査部114は、検査すべきインスタンス定義をインスタンス定義編集部113から取得し、また検査対象のインスタンスが属するクラスについてのクラス定義情報をインスタンス定義編集部113または設計モデル121から取得することによって、インスタンスの定義がクラス定義に従っているかどうかを検査する。なお、ステップ204はステップ205の後で行なうことも可能で、必ずしも図2のフローチャートに示すようなステップ203の直後に行なわれる必要はない。ステップ204をステップ205の後で行なう場合は、インスタンス定義検査部114は検査対象となるインスタンス定義をインスタンス定義記述生成部115から取得する。また必要なクラス定義はインスタンス定義記述生成部115または設計モデル121から取得する。
【0029】
ステップ205において、インスタンス定義記述生成部115がインスタンス定義情報123を設計モデル121から抽出し、C言語またはC++言語で記述されたインスタンス定義記述141を含んだソースファイルを生成する。別の方法としては、インスタンス定義情報123を設計モデル121から抽出するのではなく、インスタンス定義編集部113から取り出してもよい。
ここで、上記クラス定義記述生成部112は、クラス定義記述として、上述したようにC言語とC++言語とのいずれかのプログラミング言語で記述されたソースコードを生成するが、上記インスタンス定義記述生成部115は、インスタンス定義記述として、上記クラス定義記述生成部112により生成されたソースコードのプログラミング言語と同じプログラミング言語でソースコードを生成する。
【0030】
図3は、ステップ201において作成されたクラス図の例を示す図である。
図3におけるクラス図は、設計モデル121のうちクラス定義にかかわる部分を表現したものである。この例では、クラスとしてBook、Person、BoyおよびGirlの4つのクラスが定義されている。UML表記では、クラスはそれぞれボックスの図形で表現され、ボックスを分割した上段の欄がクラス名を表す。また、クラスBookは属性としてTitleを、操作としてReadを持っている。ここで属性とはオブジェクトの状態を表すものであり、操作とはオブジェクトを外部から利用するためのインタフェースを定義したものである。UMLでは、属性はボックスの中段、操作はボックスの下段に記述される。クラスBookはownerという関連ロール名でクラスPersonへ1対1の関連を持っている。UMLでは、関連は実線の矢印で表記される。また、クラスPersonのから特化したクラスとしてクラスBoyおよびクラスGirlが定義されている。UMLでは、汎化/特化の関係は端に三角形がついた実線で表記される。なお、図3ではクラスPerson、BoyおよびGirlの属性および操作の記載を省略している。
【0031】
図4は、図3に示した設計モデル121の例に含まれるクラスBookについての、クラス定義情報122の例を示す図である。
図4におけるクラス定義情報122では、設計モデルのクラスについて情報が定義されている。属性については、属性名Titleとその型であるstringが定義されている。操作については、操作名Read、引数リスト(int pageBegin, int pageEnd)、および戻り値の型boolが定義されている。関連については、関連ロール名ownerと関連先クラスの名前Personが定義されている。また、関連の多重度としてクラスBook側とクラスPerson側が1対1であることが定義されている。なお、この例では1つのクラスにのみ注目しているが、実際には設計モデル中に含まれるすべてのクラスについて同様の形式でクラス定義情報が定義されている。
【0032】
図5は、クラス定義記述131の例を示す図である。
図5は、図2におけるステップ202において、図4に示したクラスBookに対応するクラス定義情報122の例に基づいて、クラス定義記述生成部112が生成したC++言語によるクラス定義記述131の例である。図5の例ではクラスの名前としてBookが生成されている。またクラスのメンバ変数として、属性に対応するstring型のTitleと、関連に対応するPerson型へのポインタownerが生成されている。また、クラスの操作に対応した関数の記述として、メンバ関数Readが生成されている。なお、この例ではC++言語を用いたソースコードを示しているが、C言語においても、構造体と関数プロトタイプ宣言を用いることで同様の表現は可能である。
【0033】
図6は、ステップ203において作成されたオブジェクト図の例を示す図である。
図6では、設計モデル121のうちインスタンス定義にかかわる部分を表現したものである。この例では、インスタンスとしてaBook1、aBook2、hanakoおよびtaroの4つのインスタンスが定義されている。aBook1とaBook2はBookクラスのインスタンス、hanakoはGirlクラスのインスタンス、そしてtaroはBoyクラスのインスタンスである。aBook1からhanakoへ、またaBook2からtaroへ向かってリンクが定義されている。ここでリンクとはインスタンス間が結合していることを表すものである。
【0034】
図7は、インスタンス定義情報123の例を示す図である。
図7では、図6に示した設計モデル121の例に含まれるクラスBookについての、インスタンス定義情報123の例を示している。ここではインスタンスとしてaBook1とaBook2の2つのインスタンスが定義されている。インスタンスaBook1については属性Titleの初期値として”Girl’s Book”が、リンクownerの初期値としてリンク先のインスタンスhanakoが定義されている。またインスタンスaBook2については属性Titleの初期値として”Boy’s Book”が、リンクownerの初期値としてリンク先のインスタンスtaroが定義されている。
以上のように、上記出力部116は、上記ユーザに対し、例えば、画面表示を用いてUMLのコラボレーション図、オブジェクト図等を用いて、上記入力部110を介してインスタンス定義情報の入力を促し、上記インスタンス定義編集部113は、上記出力部116により促され上記入力部110を介して入力されたインスタンス定義情報を編集する。
【0035】
以上のように、前記インスタンス定義編集部113は、UMLのコラボレーション図またはオブジェクト図に相当する図を用いてインスタンスとインスタンス間のリンクを定義することを特徴とする。
【0036】
図7は、また、ステップ203でインスタンス定義情報123を作成する際に、インスタンス定義編集部113が一覧表形式のユーザインタフェースを用いる場合における一覧表の構成例でもある。
前記インスタンス定義編集部113は、インスタンスを一覧表形式で表示し編集ができる編集画面を用いてインスタンスとインスタンス間のリンクとインスタンスの初期値を定義することを特徴とする。
インスタンス定義編集部113が図7に示す一覧表を構成するには、まず図4に示すクラス定義情報から属性名の一覧を取り出し属性項目として一覧表に加える。図7の例では属性Titleの項目が一覧表に作成される。次に図4に示すクラス定義情報から関連ロール名の一覧を取り出しリンク項目として一覧表に加える。図7の例では、リンクownerの項目が一覧表に作成される。一覧表が構成されると、オペレータは必要なだけインスタンス項目を追加して、インスタンス名、属性の初期値、リンクの初期値を記入する。図7の例では、aBook1とaBook2の2つのインスタンス項目が追加され、それぞれのインスタンスについて属性とリンクの初期値が記入されている。
すなわち、上記出力部116は、上記ユーザに対し、例えば、表示画面を用いて、一覧表形式で表示された編集可能な編集画面に基づいて、上記入力部110を介してインスタンス定義情報の入力を促し、上記インスタンス定義編集部113は、上記出力部116により促され上記入力部110を介して入力されたインスタンス定義情報を編集する。
そして、図7の例では、上記インスタンス定義情報が、例えば、上記出力部116により促された一覧表形式で表示された編集可能な編集画面に基づいて、上記インスタンス定義情報におけるインスタンスとインスタンスとの間のリンクとインスタンスの初期値とが定義された情報として記載されている。
【0037】
インスタンス定義編集部113が図7に示す一覧表を構成する別の方法として、図4に示すクラス定義情報と図6に示すオブジェクト図を組み合わせる方法もある。この方法では図4に示すクラス定義情報から属性名と関連ロール名の一覧を取り出し、また図6に示すオブジェクト図からクラスBookのインスタンス名一覧と各インスタンスのリンク先を取り出し一覧表を構成する。その結果、属性の初期値を除いた部分がインスタンス定義編集部113によって構成されるため、オペレータは属性の初期値だけを記入すればよい。
【0038】
図8は、インスタンスの定義に不整合がある設計モデル121に含まれるオブジェクト図の例を示す図である。
図9は、図8のオブジェクト図に基づいて作成された不整合があるインスタンス定義情報123の例を示す図である。
図2におけるステップ204においてインスタンス定義検査部114は、図9に示したクラスBookのインスタンス定義情報と、図4に示したクラスBookのクラス定義情報を参照して、2つの不整合があることを検出する。不整合の1つはインスタンスhanakoに対して2つのインスタンスaBook1とaBook2がリンクを持っている点で、もう1つはインスタンスtarohへのリンクを持っているインスタンスが存在しない点である。図4に示したクラス定義情報にあるようにクラスBookとクラスPersonとの間は1対1の関連であるため、インスタンスhanakoへのリンクを持つことができるインスタンスはただ1つだけである。またインスタンスtaroへは、クラスBookのいずれかのインスタンスがリンクを持っていなければならない。このような不整合を検出した場合、図2のフローに示したようにステップ203に戻ってインスタンス定義情報を修正するようオペレータに促し、オペレータはインスタンス定義情報を修正することになる。
【0039】
以上のように、上記インスタンス定義検査部114は、上記クラス定義情報と上記インスタンス定義情報とに基づいて、他のいずれのインスタンスからもリンクが定義されていないインスタンスを検出し、検出されたインスタンスを上記出力部116を介してユーザに出力する。言いかえれば、前記インスタンス定義検査部114は、クラス定義情報とインスタンス定義情報に基づいて、他のどのインスタンスからもリンクによって参照されていないインスタンスを検出して報告する。
また、上記インスタンス定義検査部114は、上記クラス定義情報と上記インスタンス定義情報とに基づいて、リンクによる参照先の不正な重複を検出し、検出された不正な重複を上記出力部116を介してユーザに出力する。言いかえれば、前記インスタンス定義検査部114は、クラス定義情報とインスタンス定義情報に基づいて、リンクによる参照先の不正な重複を検出して報告する。
【0040】
図10は、インスタンス定義記述141の例を示す図である。
図10では、図2におけるステップ205において、図7に示したクラスBookに対応するインスタンス定義情報123の例に基づいて、インスタンス定義記述生成部115が生成したC++言語によるインスタンス定義記述141の例である。図10の例ではクラスBookのインスタンスaBook1とaBook2についての静的オブジェクト定義の記述が生成されている。それぞれのインスタンスに対して、図7に示したインスタンス定義情報123の例で定義された、属性およびリンクの初期値がデータメンバの初期値としてソースコード上に展開されている。
【0041】
以上のように、上記入力部110は、複数のクラス定義情報を入力する。本実施の形態1では、複数のクラス定義情報として、Book、Person、Boy、Girlを入力しているが、実際は、さらに多くのクラス定義情報を入力する。
そして、上記インスタンス定義編集部113は、上記入力部110により入力された複数のクラス定義情報における複数のクラスを複数のグループにグループ化して上記グループ毎に1つの一覧表形式の編集画面を構成する。本実施の形態1では、複数のクラス定義情報の内、Book、Person、Boy、Girlを1つのグループとして、そのインスタンス定義情報としてaBook1、aBook2、hanako、taroを1つの一覧表形式の編集画面を構成する。その他のクラス定義情報は、それぞれグループ化され、同様にグループ毎に1つの一覧表形式の編集画面を構成する。
そして、インスタンス定義記述生成部115は、上記インスタンス定義編集部113によりグループ化されたグループ毎に対応するソースコードを生成する。
【0042】
以上のように、前記インスタンス定義編集部113は、複数のクラスをグループ化してグループ毎に1つの一覧表形式の編集画面を構成できることを特徴とする。
【0043】
また、前記インスタンス定義記述生成部115は、複数のクラスをグループ化してグループ毎に分割されたソースコードを生成することを特徴とする。
【0044】
以上のように本実施の形態1は、一般的なオブジェクト指向ソフトウェア開発を対象として、設計モデルに含まれるクラス定義情報からクラス定義を表現するソースコードを生成し、また設計モデルに含まれるインスタンス定義情報から静的インスタンス定義を表現するソースコードを生成することによって、設計モデルを元にしたプログラミング作業を効率化するとともに、手作業による誤りを防止してソフトウェアの品質を向上させる。
【0045】
以上のように、オブジェクト指向開発において、設計モデルからソースコードを生成する際に、クラス定義の記述とインスタンス定義の記述をそれぞれ機械的に生成することによって、ソースコードの開発効率と品質を向上させることができる。
【0046】
ここで、以上の説明において、各実施の形態の説明において「〜部」として説明したものは、一部或いはすべてコンピュータで動作可能なプログラムにより構成することができる。これらのプログラムは、例えば、C言語により作成することができる。或いは、HTMLやSGMLやXMLを用いても構わない。或いは、JAVA(登録商標)を用いて画面表示を行っても構わない。
【0047】
以上の説明において、各実施の形態の説明において「〜部」として説明したものを、一部或いはすべてコンピュータで動作可能なプログラムにより構成する場合、オブジェクト指向開発支援装置101は、図示されていないが、システムユニット、CRT(Cathode Ray Tube)表示装置、キーボード(K/B)、マウス、コンパクトディスク装置(CDD)、プリンタ装置、スキャナ装置を備えている。CRT表示装置、K/B、マウス、CDD、プリンタ装置、スキャナ装置は、システムユニットにケーブルで接続されている。
また、オブジェクト指向開発支援装置101は、図示されていないが、プログラムを実行するCPU(Central Processing Unit)を備えている。CPUは、バスを介してROM(Read Only Memory)(記憶装置の一例である)、RAM(Random Access Memory)(記憶装置の一例である)、通信ボード、CRT表示装置、K/B、マウス、FDD(Flexible Disk Drive)、磁気ディスク装置(記憶装置の一例である)、CDD、プリンタ装置、スキャナ装置と接続されている。通信ボードは、インターネット或いは専用回線等に接続されている。
ここで、通信ボードは、インターネットに限らず、さらに、LAN(ローカルエリアネットワーク)、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されていても構わない。
磁気ディスク装置には、オペレーティングシステム(OS)、ウィンドウシステム、プログラム群、ファイル群が記憶されている。プログラム群は、CPU、OS、ウィンドウシステムにより実行される。
プログラムにより構成する場合、上記プログラム群には、各実施の形態の説明において「〜部」として説明したものにより実行されるプログラムが記憶されている。ファイル群には、上記実施の形態の説明において「コラボレーション図、オブジェクト図、一覧表」等として説明したものが記憶されている。
また、各実施の形態の説明において「〜部」として説明したものは、ROMに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
また、上記各実施の形態を実施させるプログラムは、また、磁気ディスク装置、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
また、出力部は、CRT表示装置、その他の表示装置、プリンタ装置等の出力装置を用いても構わない。
【0048】
【発明の効果】
この発明によれば、一般的なオブジェクト指向ソフトウェア開発を対象として、設計モデルに含まれるクラス定義情報からクラス定義を表現するソースコードを生成し、また設計モデルに含まれるインスタンス定義情報から静的インスタンス定義を表現するソースコードを生成することによって、設計モデルを元にしたプログラミング作業を効率化するとともに、手作業による誤りを防止してソフトウェアの品質を向上させるという効果がある。
【図面の簡単な説明】
【図1】実施の形態1に係わるオブジェクト指向開発支援装置の構成を示す図である。
【図2】実施の形態1における設計モデルの作成からコード生成までの流れを示したフローチャート図である。
【図3】ステップ201において作成されたクラス図の例を示す図である。
【図4】図3に示した設計モデル121の例に含まれるクラスBookについての、クラス定義情報122の例を示す図である。
【図5】クラス定義記述131の例を示す図である。
【図6】ステップ203において作成されたオブジェクト図の例を示す図である。
【図7】インスタンス定義情報123の例を示す図である。
【図8】インスタンスの定義に不整合がある設計モデル121に含まれるオブジェクト図の例を示す図である。
【図9】図8のオブジェクト図に基づいて作成された不整合があるインスタンス定義情報123の例を示す図である。
【図10】インスタンス定義記述141の例を示す図である。
【符号の説明】
101 オブジェクト指向開発支援装置、110 入力部、111 クラス定義編集部、112 クラス定義記述生成部、113 インスタンス定義編集部、114 インスタンス定義検査部、115 インスタンス定義記述生成部、116 出力部、121 設計モデル、122 クラス定義情報、123 インスタンス定義情報、131 クラス定義記述、132 インスタンス定義記述。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a program development support device or a program development support method. The present invention also relates to a program for operating an apparatus for supporting program development or a computer-readable recording medium on which the program is recorded. In particular, the present invention relates to an apparatus for generating source code based on a design model in object-oriented software development.
[0002]
[Prior art]
In object-oriented development, it is common to describe a design model using UML (Unified Modeling Language) and perform programming based on the contents. The design model is close to the description level of a programming language, and model elements related to class specifications such as classes, attributes, and operations are clearly associated with linguistic elements such as data structures, data members, and functions in the programming language. There is.
[0003]
The following means have been known for the purpose of greatly improving the work efficiency of software development for automatically generating an object-oriented program using a computer. The object-oriented program automatic generation device automatically generates a program as an end product from a model. Generation of the program of the static part includes a step of extracting the definition of the static part from a diagram expressing the structure of the development target system, that is, a class diagram or the like. The generation of the program of the dynamic part includes a step of extracting the definition of the dynamic part from a diagram expressing the behavior of the development target system, that is, a state chart diagram and the like, and a step of constructing a state machine tree from the state chart diagram and the like. . In the program generation step, the program code of the dynamic part is automatically generated together with the automatic generation of the program code of the static part, and these program codes are combined to perform the full automatic generation of the program code of the final product. (See Patent Document 1).
[0004]
The following means are known for the purpose of facilitating the construction of an instance graphic input / output interface in an object-oriented design support system or the like. A user figure corresponding to the class is drawn by a screen operation of the figure editor, and a connection point and a slot of a figure attribute are designated. As a result, a program for figure input / output, combination, display deformation, etc. is automatically generated, and it becomes possible to enter a figure of an instance, combine instances by connecting figures, and describe an animation by updating slots of instances (see Patent Document 2).
[0005]
[Patent Document 1]
JP-A-2002-116911
[Patent Document 2]
JP 2001-184213 A
[0006]
[Problems to be solved by the invention]
The design model may include not only class specifications but also static instance specifications. In software written in an object-oriented language such as C ++, instances are often generated dynamically, but can be statically defined. In particular, in a field where dynamic instance generation is not suitable, such as device embedded software, it is important to be able to define static instances.
[0007]
In order to improve the efficiency of programming work based on a design model, automatic generation of source code from the design model has been conventionally performed. See, for example, Rational Software Corp. Rational Rose (registered trademark), which is an object-oriented modeling tool, uses the class definition information described in a class diagram, which is one of UML diagrams, to convert the static aspects of class specifications such as class data structures and relationships between classes. It can generate source code that expresses
[0008]
However, with Rational Rose (registered trademark), it is not possible to generate source code that expresses a dynamic aspect of a class specification such as an algorithm for executing a program.
[0009]
Further, in the prior art in
[0010]
However, in this prior art, a source code expressing a class specification can be generated, but a source code expressing an instance specification cannot be generated.
[0011]
Next, in the prior art of Patent Document 2, a source code expressing a class specification and an instance specification is generated based on design information. In this prior art, an input / output method is set interactively using an applicable graphic editor which is an extension of a normal graphic editor. In the applicable figure editor, when an operator defines an arbitrary figure by combining basic figures, the figure is stored in association with a class. When the operator specifies a connection point of the user graphic, a method for automatically connecting the instances at both ends with a pointer by the connection of the drawn graphic is generated. Furthermore, when the operator specifies a display slot indicating the attribute of the display graphic, for example, the length, color, pattern, character string, etc. of the graphic element, a method for updating the display slot value and deforming the display graphic is generated. .
[0012]
However, this prior art aims at efficiently configuring software for performing simulation of an electronic device or the like, and cannot be applied to all software developed based on object-oriented technology. For example, in this prior art, it is described that an instance is automatically connected.However, the connection in the prior art is a group of methods such as display, connection, and ignition for simulating connection of an electronic circuit. It is a combination, assuming that all classes to be combined have these methods. This assumption is peculiar to the software that performs the simulation as assumed in the prior art, and is not applicable to general software in general.
[0013]
An object of the present invention is to improve the quality of software by improving the efficiency of programming work based on a design model even in the development of general object-oriented software, and preventing errors due to manual work.
[0014]
[Means for Solving the Problems]
An input unit for inputting class definition information and instance definition information for program development,
A class definition editing unit that edits the class definition information input by the input unit and stores the information in a storage device;
A class for inputting the class definition information edited by the class definition editing unit from either the storage device or the class definition editing unit, and generating a class definition description in a programming language based on the input class definition information. A definition description generator,
An instance definition editing unit that edits the instance definition information input by the input unit and stores the information in the storage device;
The instance definition information edited by the instance definition editing unit is input from one of the storage device and the instance definition editing unit, and the class definition information edited by the class definition editing unit is input to the storage device and the class definition. An instance definition description generating unit configured to generate an instance definition description described in the programming language based on the input instance definition information and the class definition information.
Based on at least one of the instance definition information edited by the instance definition editing unit and the instance definition description generated by the instance definition description generating unit, the instance definition in the instance definition information input by the input unit is changed. An instance definition checking unit for checking whether or not the class definition in the class definition information input by the input unit is followed;
Outputting at least one of the class definition description generated by the class definition description generation unit and the instance definition description generated by the instance definition description generation unit; An output unit for prompting the user to input instance definition information again when the instance definition does not conform to the class definition.
[0015]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 is a diagram illustrating a configuration of the object-oriented development support device according to the first embodiment.
In FIG. 1, an object-oriented development support device 101 (an example of a program development support device) includes an input unit 110, a class definition editing unit 111 that edits class definition information 122 included in a design model 121, and a class definition information. A class definition
[0016]
The storage device 120 stores the design model 121. The design model 121 has class definition information 122 and
[0017]
The input unit 110 inputs class definition information and instance definition information for program development.
[0018]
The class definition editing unit 111 edits the class definition information input by the input unit 110 and stores the information in the storage device 120.
[0019]
The class definition
[0020]
The instance definition editing unit 113 edits the instance definition information input by the input unit 110 and stores the information in the storage device 120.
[0021]
The instance definition
[0022]
The instance definition checking unit 114 is configured to execute the input unit 110 based on at least one of the instance definition information edited by the instance definition editing unit 113 and the instance definition description generated by the instance definition
[0023]
The
[0024]
The
[0025]
FIG. 2 is a flowchart showing a flow from creation of a design model to code generation in the first embodiment.
In
[0026]
In
[0027]
In
[0028]
In
[0029]
In
Here, the class definition
[0030]
FIG. 3 is a diagram illustrating an example of the class diagram created in
The class diagram in FIG. 3 expresses a part of the design model 121 related to the class definition. In this example, four classes of Book, Person, Boy, and Girl are defined as classes. In UML notation, each class is represented by a box graphic, and the upper column of the box is a class name. The class Book has a Title as an attribute and a Read as an operation. Here, the attribute represents the state of the object, and the operation defines an interface for externally using the object. In UML, attributes are described in the middle of the box, and operations are described in the bottom of the box. The class Book has a one-to-one association with the class Person with an associated role name of owner. In UML, associations are represented by solid arrows. Also, a class Boy and a class Girl are defined as classes specialized from the class Person. In UML, the generalization / specialization relationship is represented by a solid line with a triangle at the end. FIG. 3 omits the description of the attributes and operations of the classes Person, Boy, and Girl.
[0031]
FIG. 4 is a diagram illustrating an example of the class definition information 122 regarding the class Book included in the example of the design model 121 illustrated in FIG.
In the class definition information 122 in FIG. 4, information is defined for the class of the design model. For attributes, an attribute name Title and its type string are defined. For the operation, an operation name Read, an argument list (int pageBegin, int pageEnd), and a return value type boolean are defined. As for the association, an association role name owner and an association destination class name Person are defined. Further, it is defined that the class Book side and the class Person side are in a one-to-one relationship as the related multiplicity. In this example, only one class is focused, but in practice, class definition information is defined in the same format for all classes included in the design model.
[0032]
FIG. 5 is a diagram showing an example of the
FIG. 5 is an example of the
[0033]
FIG. 6 is a diagram illustrating an example of the object diagram created in
FIG. 6 illustrates a part of the design model 121 related to the instance definition. In this example, four instances of aBook1, aBook2, hanako and taro are defined as instances. aBook1 and aBook2 are instances of the Book class, hanako is an instance of the Girl class, and taro is an instance of the Boy class. A link is defined from aBook1 to hanako and from aBook2 to taro. Here, the link indicates that the instances are connected.
[0034]
FIG. 7 is a diagram illustrating an example of the
FIG. 7 shows an example of the
As described above, the
[0035]
As described above, the instance definition editing unit 113 defines an instance and a link between instances using a diagram corresponding to a UML collaboration diagram or an object diagram.
[0036]
FIG. 7 is also a configuration example of a list when the instance definition editing unit 113 uses a list-format user interface when the
The instance definition editing unit 113 defines an instance and a link between the instances and an initial value of the instance using an editing screen in which the instances are displayed in a list format and can be edited.
In order for the instance definition editing unit 113 to construct the list shown in FIG. 7, first, a list of attribute names is extracted from the class definition information shown in FIG. 4 and added to the list as attribute items. In the example of FIG. 7, the item of the attribute Title is created in the list. Next, a list of related role names is extracted from the class definition information shown in FIG. 4 and added to the list as a link item. In the example of FIG. 7, the item of the link owner is created in the list. When the list is formed, the operator adds as many instance items as necessary and fills in the instance name, the initial value of the attribute, and the initial value of the link. In the example of FIG. 7, two instance items, aBook1 and aBook2, are added, and the attribute and the initial value of the link are entered for each instance.
That is, the
Then, in the example of FIG. 7, the instance definition information is, for example, based on an editable edit screen displayed in the form of a list prompted by the
[0037]
As another method for the instance definition editing unit 113 to construct the list shown in FIG. 7, there is a method of combining the class definition information shown in FIG. 4 and the object diagram shown in FIG. In this method, a list of attribute names and related role names is extracted from the class definition information shown in FIG. 4, and an instance name list of the class Book and a link destination of each instance are extracted from the object diagram shown in FIG. 6 to form a list. As a result, the portion excluding the initial value of the attribute is configured by the instance definition editing unit 113, so that the operator need only enter the initial value of the attribute.
[0038]
FIG. 8 is a diagram illustrating an example of an object diagram included in the design model 121 having an inconsistent instance definition.
FIG. 9 is a diagram illustrating an example of inconsistent
In
[0039]
As described above, based on the class definition information and the instance definition information, the instance definition checking unit 114 detects an instance for which no link is defined from any of the other instances, and identifies the detected instance. Output to the user via the
Further, the instance definition checking unit 114 detects an illegal duplication of a reference destination by a link based on the class definition information and the instance definition information, and detects the detected illegal duplication via the
[0040]
FIG. 10 is a diagram illustrating an example of the
FIG. 10 illustrates an example of the
[0041]
As described above, the input unit 110 inputs a plurality of class definition information. In the first embodiment, Book, Person, Boy, and Girl are input as a plurality of class definition information. However, more class definition information is actually input.
Then, the instance definition editing unit 113 groups a plurality of classes in the plurality of class definition information input by the input unit 110 into a plurality of groups, and configures one list-format editing screen for each group. . In the first embodiment, among a plurality of class definition information, Book, Person, Boy, and Girl are grouped into one group, and aBook1, aBook2, hanako, and taro are edited as one list as instance definition information. Constitute. Other class definition information is grouped, and similarly, one list-format editing screen is configured for each group.
Then, the instance definition
[0042]
As described above, the instance definition editing unit 113 is characterized in that a plurality of classes can be grouped to configure one list-format editing screen for each group.
[0043]
Also, the instance definition
[0044]
As described above, the first embodiment generates a source code expressing a class definition from class definition information included in a design model for general object-oriented software development, and creates an instance definition included in the design model. By generating a source code expressing a static instance definition from information, a programming operation based on a design model is made more efficient, and a manual error is prevented to improve software quality.
[0045]
As described above, in the object-oriented development, when generating the source code from the design model, the description of the class definition and the description of the instance definition are each generated mechanically, thereby improving the development efficiency and quality of the source code. be able to.
[0046]
Here, in the above description, what has been described as "-unit" in the description of each embodiment can be partially or entirely configured by a computer-operable program. These programs can be created in C language, for example. Alternatively, HTML, SGML, or XML may be used. Alternatively, the screen may be displayed using JAVA (registered trademark).
[0047]
In the above description, the object-oriented development support device 101 is not shown if some or all of the components described as “-unit” in the description of each embodiment are configured by a computer-operable program. , A system unit, a CRT (Cathode Ray Tube) display device, a keyboard (K / B), a mouse, a compact disk device (CDD), a printer device, and a scanner device. The CRT display device, K / B, mouse, CDD, printer device, and scanner device are connected to the system unit by cables.
Although not shown, the object-oriented development support apparatus 101 includes a CPU (Central Processing Unit) that executes a program. The CPU is connected to a ROM (Read Only Memory) (an example of a storage device), a RAM (Random Access Memory) (an example of a storage device), a communication board, a CRT display device, a K / B, a mouse, via a bus. It is connected to an FDD (Flexible Disk Drive), a magnetic disk device (an example of a storage device), a CDD, a printer device, and a scanner device. The communication board is connected to the Internet or a dedicated line.
Here, the communication board is not limited to the Internet, and may be connected to a LAN (Local Area Network) or a WAN (Wide Area Network) such as ISDN.
The magnetic disk device stores an operating system (OS), a window system, a group of programs, and a group of files. The program group is executed by a CPU, an OS, and a window system.
When constituted by programs, the programs stored in the above-described program group are those executed by those described as “-unit” in the description of each embodiment. In the file group, those described as “collaboration diagram, object diagram, list” in the description of the above embodiment are stored.
In addition, what is described as “-unit” in the description of each embodiment may be realized by firmware stored in a ROM. Alternatively, the present invention may be implemented by software, hardware, or a combination of software, hardware, and firmware.
Further, a program for implementing the above-described embodiments includes a magnetic disk device, an FD (Flexible Disk), an optical disk, a CD (Compact Disk), an MD (Mini Disk), a DVD (Digital Versatile Disk), and the like. The information may be stored using a recording device using a medium.
The output unit may use an output device such as a CRT display device, another display device, or a printer device.
[0048]
【The invention's effect】
According to the present invention, for general object-oriented software development, a source code expressing a class definition is generated from class definition information included in a design model, and a static instance is generated from instance definition information included in the design model. By generating the source code expressing the definition, the programming work based on the design model can be made more efficient, and errors due to manual work can be prevented to improve software quality.
[Brief description of the drawings]
FIG. 1 is a diagram showing a configuration of an object-oriented development support device according to a first embodiment.
FIG. 2 is a flowchart showing a flow from creation of a design model to code generation in the first embodiment.
FIG. 3 is a diagram showing an example of a class diagram created in
FIG. 4 is a diagram showing an example of class definition information 122 regarding a class Book included in the example of the design model 121 shown in FIG.
FIG. 5 is a diagram showing an example of a
FIG. 6 is a diagram illustrating an example of an object diagram created in
FIG. 7 is a diagram showing an example of
FIG. 8 is a diagram illustrating an example of an object diagram included in the design model 121 having an inconsistent instance definition.
9 is a diagram illustrating an example of inconsistent
FIG. 10 is a diagram showing an example of an
[Explanation of symbols]
Reference Signs List 101 Object-oriented development support device, 110 input unit, 111 class definition editing unit, 112 class definition description generating unit, 113 instance definition editing unit, 114 instance definition checking unit, 115 instance definition description generating unit, 116 output unit, 121 design model , 122 class definition information, 123 instance definition information, 131 class definition description, 132 instance definition description.
Claims (13)
上記入力部により入力されたクラス定義情報を編集し、記憶装置に記憶するクラス定義編集部と、
上記クラス定義編集部により編集されたクラス定義情報を上記記憶装置と上記クラス定義編集部とのいずれかから入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成するクラス定義記述生成部と、
上記入力部により入力されたインスタンス定義情報を編集し、上記記憶装置に記憶するインスタンス定義編集部と、
上記インスタンス定義編集部により編集されたインスタンス定義情報を上記記憶装置と上記インスタンス定義編集部とのいずれかから入力し、上記クラス定義編集部により編集されたクラス定義情報を上記記憶装置と上記クラス定義編集部とのいずれかから入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成するインスタンス定義記述生成部と、
上記インスタンス定義編集部により編集されたインスタンス定義情報と上記インスタンス定義記述生成部により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力部により入力されたインスタンス定義情報におけるインスタンス定義が上記入力部により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査するインスタンス定義検査部と、
上記クラス定義記述生成部により生成されたクラス定義記述と上記インスタンス定義記述生成部により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査部により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す出力部と
を備えたことを特徴とするプログラム開発支援装置。An input unit for inputting class definition information and instance definition information for program development,
A class definition editing unit that edits the class definition information input by the input unit and stores the information in a storage device;
A class for inputting the class definition information edited by the class definition editing unit from either the storage device or the class definition editing unit, and generating a class definition description in a programming language based on the input class definition information. A definition description generator,
An instance definition editing unit that edits the instance definition information input by the input unit and stores the information in the storage device;
The instance definition information edited by the instance definition editing unit is input from one of the storage device and the instance definition editing unit, and the class definition information edited by the class definition editing unit is input to the storage device and the class definition. An instance definition description generating unit configured to generate an instance definition description described in the programming language based on the input instance definition information and the class definition information.
Based on at least one of the instance definition information edited by the instance definition editing unit and the instance definition description generated by the instance definition description generating unit, the instance definition in the instance definition information input by the input unit is changed. An instance definition checking unit for checking whether or not the class definition in the class definition information input by the input unit is followed;
Outputting at least one of the class definition description generated by the class definition description generation unit and the instance definition description generated by the instance definition description generation unit; An output unit for prompting a user to input instance definition information again when the instance definition does not conform to the class definition.
上記インスタンス定義記述生成部は、インスタンス定義記述として、上記クラス定義記述生成部により生成されたソースコードのプログラミング言語と同じプログラミング言語でソースコードを生成することを特徴とする請求項1記載のプログラム開発支援装置。The class definition description generation unit generates, as a class definition description, a source code described in one of the C language and the C ++ programming language,
2. The program development according to claim 1, wherein the instance definition description generation unit generates, as the instance definition description, a source code in the same programming language as the source code generated by the class definition description generation unit. Support equipment.
上記インスタンス定義編集部は、上記出力部により促され上記入力部を介して入力されたインスタンス定義情報を編集することを特徴とする請求項2記載のプログラム開発支援装置。The output unit prompts the user to input instance definition information via the input unit using at least one of a UML (Unified Modeling Language) collaboration diagram and an object diagram,
3. The apparatus according to claim 2, wherein the instance definition editing unit edits instance definition information prompted by the output unit and input via the input unit.
上記インスタンス定義編集部は、上記出力部により促され上記入力部を介して入力されたインスタンス定義情報を編集することを特徴とする請求項2記載のプログラム開発支援装置。The output unit prompts the user to input instance definition information via the input unit based on an editable edit screen displayed in a list format.
3. The apparatus according to claim 2, wherein the instance definition editing unit edits instance definition information prompted by the output unit and input via the input unit.
上記インスタンス定義編集部は、上記入力部により入力された複数のクラス定義情報における複数のクラスを複数のグループにグループ化して上記グループ毎に1つの一覧表形式の編集画面を構成することを特徴とする請求項6記載のプログラム開発支援装置。The input unit inputs a plurality of class definition information,
The instance definition editing unit groups a plurality of classes in a plurality of class definition information input by the input unit into a plurality of groups and configures one list-format editing screen for each group. The program development support device according to claim 6, wherein:
上記入力工程により入力されたクラス定義情報を編集し、記憶装置に記憶するクラス定義編集工程と、
上記クラス定義編集工程により編集されたクラス定義情報を上記記憶装置から入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成するクラス定義記述生成工程と、
上記入力工程により入力されたインスタンス定義情報を編集し、上記記憶装置に記憶するインスタンス定義編集工程と、
上記インスタンス定義編集工程により編集されたインスタンス定義情報を上記記憶装置から入力し、上記クラス定義編集工程により編集されたクラス定義情報を上記記憶装置から入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成するインスタンス定義記述生成工程と、
上記インスタンス定義編集工程により編集されたインスタンス定義情報と上記インスタンス定義記述生成工程により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力工程により入力されたインスタンス定義情報におけるインスタンス定義が上記入力工程により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査するインスタンス定義検査工程と、上記クラス定義記述生成工程により生成されたクラス定義記述と上記インスタンス定義記述生成工程により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査工程により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す出力工程と
を備えたことを特徴とするプログラム開発支援方法。An input step of inputting class definition information and instance definition information for program development,
A class definition editing step of editing the class definition information input in the input step and storing the edited information in a storage device;
A class definition description generating step of inputting the class definition information edited by the class definition editing step from the storage device and generating a class definition description in a programming language based on the input class definition information;
An instance definition editing step of editing the instance definition information input in the input step and storing the edited instance definition information in the storage device;
The instance definition information edited in the instance definition editing process is input from the storage device, the class definition information edited in the class definition editing process is input from the storage device, and the input instance definition information and class definition information are input. An instance definition description generating step of generating an instance definition description described in the programming language based on
Based on at least one of the instance definition information edited in the instance definition editing step and the instance definition description generated in the instance definition description generating step, the instance definition in the instance definition information input in the input step is changed. An instance definition checking step for checking whether the class definition in the class definition information input in the input step is followed; a class definition description generated in the class definition description generating step; and an instance generated in the instance definition description generating step At least one of the definition descriptions is output, and if the instance definition does not conform to the class definition as a result of the inspection in the instance definition inspection step, the user inputs the instance definition information again. Program development support method characterized by comprising an output step of prompting.
上記入力処理により入力されたクラス定義情報を編集し、記憶装置に記憶するクラス定義編集処理と、
上記クラス定義編集処理により編集されたクラス定義情報を上記記憶装置から入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成するクラス定義記述生成処理と、
上記入力処理により入力されたインスタンス定義情報を編集し、上記記憶装置に記憶するインスタンス定義編集処理と、
上記インスタンス定義編集処理により編集されたインスタンス定義情報を上記記憶装置から入力し、上記クラス定義編集処理により編集されたクラス定義情報を上記記憶装置から入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成するインスタンス定義記述生成処理と、
上記インスタンス定義編集処理により編集されたインスタンス定義情報と上記インスタンス定義記述生成処理により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力処理により入力されたインスタンス定義情報におけるインスタンス定義が上記入力処理により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査するインスタンス定義検査処理と、
上記クラス定義記述生成処理により生成されたクラス定義記述と上記インスタンス定義記述生成処理により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査処理により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す出力処理とをコンピュータに実行させるためのプログラム。Input processing for inputting class definition information and instance definition information for program development,
Class definition editing processing for editing the class definition information input by the input processing and storing the edited information in the storage device;
A class definition description generating process of inputting the class definition information edited by the class definition editing process from the storage device and generating a class definition description in a programming language based on the input class definition information;
An instance definition editing process of editing the instance definition information input by the input process and storing the edited instance definition information in the storage device;
The instance definition information edited by the instance definition editing process is input from the storage device, the class definition information edited by the class definition editing process is input from the storage device, and the input instance definition information and class definition information are input. An instance definition description generation process for generating an instance definition description described in the programming language based on
Based on at least one of the instance definition information edited by the instance definition editing process and the instance definition description generated by the instance definition description generation process, the instance definition in the instance definition information input by the input process is changed. An instance definition checking process for checking whether or not the class definition in the class definition information input by the input process is followed;
Outputting at least one of the class definition description generated by the class definition description generation process and the instance definition description generated by the instance definition description generation process; A program for causing a computer to execute output processing for prompting a user to input instance definition information again when the instance definition does not conform to the class definition.
上記入力処理により入力されたクラス定義情報を編集し、記憶装置に記憶するクラス定義編集処理と、
上記クラス定義編集処理により編集されたクラス定義情報を上記記憶装置から入力し、入力されたクラス定義情報に基づいて、プログラミング言語によるクラス定義記述を生成するクラス定義記述生成処理と、
上記入力処理により入力されたインスタンス定義情報を編集し、上記記憶装置に記憶するインスタンス定義編集処理と、
上記インスタンス定義編集処理により編集されたインスタンス定義情報を上記記憶装置から入力し、上記クラス定義編集処理により編集されたクラス定義情報を上記記憶装置から入力し、入力されたインスタンス定義情報とクラス定義情報とに基づいて、上記プログラミング言語で記述されたインスタンス定義記述を生成するインスタンス定義記述生成処理と、
上記インスタンス定義編集処理により編集されたインスタンス定義情報と上記インスタンス定義記述生成処理により生成されたインスタンス定義記述との内少なくとも1つに基づいて、上記入力処理により入力されたインスタンス定義情報におけるインスタンス定義が上記入力処理により入力されたクラス定義情報におけるクラス定義に従っているかどうかを検査するインスタンス定義検査処理と、上記クラス定義記述生成処理により生成されたクラス定義記述と上記インスタンス定義記述生成処理により生成されたインスタンス定義記述との内少なくとも1つを出力し、さらに、上記インスタンス定義検査処理により検査された結果、上記インスタンス定義が上記クラス定義に従っていない場合に、ユーザに再度インスタンス定義情報の入力を促す出力処理とをコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。Input processing for inputting class definition information and instance definition information for program development,
Class definition editing processing for editing the class definition information input by the input processing and storing the edited information in the storage device;
A class definition description generating process of inputting the class definition information edited by the class definition editing process from the storage device and generating a class definition description in a programming language based on the input class definition information;
An instance definition editing process of editing the instance definition information input by the input process and storing the edited instance definition information in the storage device;
The instance definition information edited by the instance definition editing process is input from the storage device, the class definition information edited by the class definition editing process is input from the storage device, and the input instance definition information and class definition information are input. An instance definition description generation process for generating an instance definition description described in the programming language based on
Based on at least one of the instance definition information edited by the instance definition editing process and the instance definition description generated by the instance definition description generation process, the instance definition in the instance definition information input by the input process is changed. An instance definition check process for checking whether or not the class definition in the class definition information input by the input process is followed; a class definition description generated by the class definition description generation process; and an instance generated by the instance definition description generation process At least one of the definition descriptions is output. If the instance definition does not conform to the class definition as a result of the instance definition checking process, the user is required to input the instance definition information again. A computer-readable recording medium storing a program for executing an output process on the computer to prompt a.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003077328A JP4354719B2 (en) | 2003-03-20 | 2003-03-20 | Program development support program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003077328A JP4354719B2 (en) | 2003-03-20 | 2003-03-20 | Program development support program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004287695A true JP2004287695A (en) | 2004-10-14 |
JP4354719B2 JP4354719B2 (en) | 2009-10-28 |
Family
ID=33292107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003077328A Expired - Fee Related JP4354719B2 (en) | 2003-03-20 | 2003-03-20 | Program development support program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4354719B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008269272A (en) * | 2007-04-20 | 2008-11-06 | Meidensha Corp | Software development support system, development support method, and program |
JP2010152667A (en) * | 2008-12-25 | 2010-07-08 | Exa Corp | Automatic source code generation program |
JP2016201009A (en) * | 2015-04-13 | 2016-12-01 | 三菱電機株式会社 | Source code generation system, source code generation apparatus, source code generation method, and program |
-
2003
- 2003-03-20 JP JP2003077328A patent/JP4354719B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008269272A (en) * | 2007-04-20 | 2008-11-06 | Meidensha Corp | Software development support system, development support method, and program |
JP2010152667A (en) * | 2008-12-25 | 2010-07-08 | Exa Corp | Automatic source code generation program |
JP2016201009A (en) * | 2015-04-13 | 2016-12-01 | 三菱電機株式会社 | Source code generation system, source code generation apparatus, source code generation method, and program |
Also Published As
Publication number | Publication date |
---|---|
JP4354719B2 (en) | 2009-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6769095B1 (en) | Hierarchically structured control information editor | |
Richters et al. | Validating UML models and OCL constraints | |
US6590589B1 (en) | Automatic generation of fastpath applications | |
US7779398B2 (en) | Methods and systems for extracting information from computer code | |
US9122664B2 (en) | Method for automatically creating transforms | |
US20030221184A1 (en) | Template-based application development system | |
EP1672547A1 (en) | Event-driven model generated from an ordered natural language interface | |
US20050149868A1 (en) | User interface application development program and development apparatus | |
CN112099792B (en) | Visual UI style design method and system | |
US8136043B2 (en) | GUI generation apparatus and method for generating GUI | |
Bragança et al. | Automating mappings between use case diagrams and feature models for software product lines | |
Rivero et al. | From mockups to user interface models: an extensible model driven approach | |
JP5147240B2 (en) | Method and system for reversible design tree transformation | |
Gerasimov et al. | Continuous transition from model-driven prototype to full-size real-world enterprise information systems | |
Dirgahayu et al. | Automatic translation from pseudocode to source code: A conceptual-metamodel approach | |
JP4354719B2 (en) | Program development support program | |
Kalnins et al. | Model transformation approach based on MOLA | |
Ehrig et al. | Towards graph transformation based generation of visual editors using eclipse | |
Navarro et al. | Conceptualization, prototyping and process of hypermedia applications | |
JP3759630B2 (en) | Development support system for spiral object-oriented software | |
JP3715777B2 (en) | Structured document editing method, structured document editing apparatus, and recording medium recording a structured document editing program | |
JP2001273125A (en) | Method and system for automatically generating source program, and program recording medium therefor | |
KR100609240B1 (en) | Method and apparatus for generating diagram modeling tools with user's customization requirements based on mof meta-models | |
JP2006285754A (en) | Program source code automatic generation system | |
WO2001008002A2 (en) | Hierarchically structured control information editor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041026 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060208 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090210 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090324 |
|
A131 | Notification of reasons for refusal |
Effective date: 20090519 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090703 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090728 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090730 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 3 Free format text: PAYMENT UNTIL: 20120807 |
|
LAPS | Cancellation because of no payment of annual fees |