JP2013164670A - オブジェクト指向プログラム生成装置、その方法、プログラム - Google Patents

オブジェクト指向プログラム生成装置、その方法、プログラム Download PDF

Info

Publication number
JP2013164670A
JP2013164670A JP2012026338A JP2012026338A JP2013164670A JP 2013164670 A JP2013164670 A JP 2013164670A JP 2012026338 A JP2012026338 A JP 2012026338A JP 2012026338 A JP2012026338 A JP 2012026338A JP 2013164670 A JP2013164670 A JP 2013164670A
Authority
JP
Japan
Prior art keywords
diagram
class
oriented program
consistency
state machine
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
Application number
JP2012026338A
Other languages
English (en)
Other versions
JP5948926B2 (ja
Inventor
Takeshi Miyazaki
剛 宮崎
Kazuhiko Sugino
一彦 杉野
Kazuhiro Soyama
和弘 曽山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2012026338A priority Critical patent/JP5948926B2/ja
Publication of JP2013164670A publication Critical patent/JP2013164670A/ja
Application granted granted Critical
Publication of JP5948926B2 publication Critical patent/JP5948926B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】設計ドキュメントからオブジェクト指向のプログラムコードを自動で生成するオブジェクト指向プログラム生成装置、その方法、プログラムを提供する。
【解決手段】開発対象システムのUMLモデル図を作成する各UMLモデル図作成部と、各UMLモデル図の情報を記憶するUMLモデル図記憶部91と、前記UMLモデル図記憶部91から前記UMLモデル図の情報を読み出し、UMLモデル図間の整合性をチェックするUMLモデル図判別部60と、整合性に問題が無い場合、オブジェクト指向プログラムを自動で生成するプログラムコード生成部70とを備え、マルチタスク環境下で動作するプログラムを生成する。
【選択図】図1

Description

本発明は、設計ドキュメントからオブジェクト指向のプログラムコードを自動で生成するオブジェクト指向プログラム生成装置、その方法、プログラムに関する。
オブジェクト指向をベースとするシステム開発において、分析・設計段階ではシステムの構造をソースコードよりも抽象化した形でモデリングする必要がある。モデリングとは、対象をある目的または観点から眺め、整理し表現することであり、このモデリングした結果、作成されたものをモデルと呼ぶ。
モデリングの表記方法を統一化することにより、分析の明確化や適切な設計、情報の共有化・再利用を行うことがきる。
統一モデリング言語としてUML(Unified Modeling Language)が知られている。UMLは、業務及びソフトウェアを記述するための図式記法として、オブジェクト指向の標準化団体である米国のOMG(オブジェクト・マネジメント・グループ)で制定された規格である。既に、デファクトスタンダードとして世界で受け入れられており、国際規格(ISO/IEC 19501)としても制定されている。
また、UMLはグラフィカルな記述で抽象化したシステムのモデルを生成する汎用モデリング言語であり、その実施において、複数種類の図が用いられている。UMLで用いられる図(以降、UMLモデル図と表記する)は、開発対象システムの分析や設計を行う際に作成される。また、UMLモデル図は、システムの静的な構造をモデルで表現する構造図とシステムの振る舞いをモデルで表現する振る舞い図に大別される。
構造図としては、クラス図、オブジェクト図などがある。振る舞い図としては、ステートマシン図(ステートチャート図や状態遷移図とも表現される)、シーケンス図、などがある。
ところで、従来のオブジェクト指向プログラム開発においては、市販のUMLモデリングツールを用いて、UMLモデル図を作成し、作成したUMLモデル図からプログラムコードを自動で生成することで、ソフトウェアの生産性向上が図られてきた。
しかしながら、市販のUMLモデリングツールを用いて、自動生成できるUMLモデル図は構造図のみであり、振る舞い図からプログラムコードを自動生成することまではできていない。そのため、プログラム開発者は市販のUMLモデリングツールを用いて作成した振る舞い図を元に、手入力で振る舞い図に対応したプログラムコードを生成する必要があった。
また、特許文献1では、構造図と振る舞い図からプログラムコードを自動で生成するオブジェクト指向プログラムの自動生成装置を提供している。
特開2008−293186号公報
しかしながら、特許文献1のオブジェクト指向プログラムの自動生成装置では、構造図と振る舞い図からプログラムコードを自動生成するものの、UMLモデル図間の整合性チェックの方法については何ら具体的内容を開示していない。また、イベント毎に動作する機能をタスクとしてプログラムコードを生成することが記載されているが、イベント毎に動作する機能をタスクとして割り当てる方法について何ら具体的内容を開示していない。さらに、イベント毎に動作する機能をタスクとして割り当てた場合、プログラムとしての単位が細かすぎるため、複数の異なるタスク間での通信が頻発し処理におけるオーバーヘッドや、プログラム管理が複雑化する恐れがある。
上記の課題を解決するために、本発明では、UMLモデル図(クラス図、ステートマシン図、シーケンス図)間の整合性をチェックし、整合性に問題が無い場合にのみプログラムコードを自動で生成する装置、方法、プログラムを提供することを目的とする。
さらに、機能のタスク(スレッド)割り当てをクラス図で表現し、マルチタスク(マルチスレッド)環境下で動作するプログラムコードを自動で生成する装置、方法、プログラムを提供することを目的とする。
上記課題を解決するために、本発明に係るオブジェクト指向プログラム生成装置は、開発対象システムの複数種類の設計ドキュメントを作成する設計ドキュメント作成部と、前記設計ドキュメント作成部により作成された設計ドキュメントの情報を記憶する設計ドキュメント記憶部と、前記設計ドキュメント記憶部から複数種類の前記設計ドキュメントの情報を各々読み出し、これら設計ドキュメント間の整合性をチェックする設計ドキュメント判別部と、前記設計ドキュメント判別部で整合性に問題が無いと判別された場合、オブジェクト指向プログラムを生成するプログラムコード生成部とを備えることを特徴とする。
また、本発明に係るオブジェクト指向プログラム生成装置は、前記設計ドキュメントが、少なくともステートマシン図またはシーケンス図を含むUMLモデル図であることを特徴とする。
また、本発明に係るオブジェクト指向プログラム生成装置は、前記UMLモデル図は、クラス図を含み、前記設計ドキュメント判別部が、ステートマシン図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、ステートマシン図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、シーケンス図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、シーケンス図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、または、シーケンス図に記載されている全ての状態がステートマシン図に記載されている状態であるか否かの整合性の少なくともいずれかの整合性のチェックをすることを特徴とする。
尚、ここでは、クラス図作成部、ステートマシン図作成部、及び、シーケンス図作成部は別々の手段(部)としているが、クラス図、ステートマシン図、及び、シーケンス図の全てを同一の環境で作成できる手段であってもよい。
また、ここでは、装置として表現されているが、方法、プログラムにより実現されるとしてもよい。
本発明によれば、オブジェクト指向プログラム開発において、開発者は設計ドキュメントであるUMLモデル図からプログラムが自動で生成されるので、プログラム作成作業が大幅に軽減され、また、本発明により、プログラムコードを自動で生成する前に、UMLモデル図間の整合性をチェックすることにより、ソフトウェアテスト時の不具合を未然に防ぐことができ、結果としてプログラムの作成作業が大幅に軽減され、オブジェクト指向プログラム開発のトータル作業工数を大幅に削減することができる。
また、本発明によれば、プログラムコードを自動で生成する際に、クラス図を用いて機能のタスク割り当てを表現することにより、マルチタスク環境下で動作するプログラムコードも自動で生成されるため、プログラム作成作業が大幅に軽減され、オブジェクト指向プログラム開発のトータル作業工数を大幅に削減することができる。
本発明におけるオブジェクト指向プログラム生成装置の一例を示す図である。 クラス図(Task1)の一例を示す図である。 クラス図(Task2)の一例を示す図である。 ステートマシン図(クラス名が”ClassA”であるクラス)の一例を示す図である。 ステートマシン図(クラス名が”ClassB”であるクラス)の一例を示す図である。 ステートマシン図(クラス名が”ClassC”であるクラス)の一例を示す図である。 シーケンス図の一例を示す図である。 UMLモデル図判別部にて、UMLモデル図の整合性に問題がないかどうかを判別する際の処理を示すフローチャート図である。 異常なステートマシン図(クラス名が”ClassA”であるクラス) の一例(異常パターン1)を示す図である。 異常なステートマシン図(クラス名が”ClassA”であるクラス)の一例(異常パターン2)を示す図である。 異常なシーケンス図の一例(異常パターン1)を示す図である。 異常なシーケンス図の一例(異常パターン2)を示す図である。 異常なシーケンス図の一例(異常パターン3)を示す図である。 異常なシーケンス図の一例(異常パターン4)を示す図である。 異常なシーケンス図の一例(異常パターン5)を示す図である。 本発明におけるオブジェクト指向プログラム生成装置によってクラス図とステートマシン図、及びシーケンス図から作成されるプログラムコードの一例を示す図である。 本発明におけるオブジェクト指向プログラム生成装置によってクラス図から作成されるプログラムコードの一例を示す図である。
以下、本発明の実施の形態について、詳細に説明する。
<オブジェクト指向プログラム生成装置の構成概要>
図1は、本発明におけるオブジェクト指向プログラム生成装置の一例を示す図である。
図1に示すように、オブジェクト指向プログラム生成装置は、エディタなどの入力装置によって開発対象システムのクラス構造を表現するクラス図を作成するクラス図作成部41、エディタなどの入力装置によって開発対象システムの各クラスにおける状態の変化を表現するステートマシン図を作成するステートマシン図作成部43、エディタなどの入力装置によって開発対象システムのクラス間のメッセージの流れを表現するシーケンス図を作成するシーケンス図作成部44、上記で作成したUMLモデル図の情報(クラス図51、ステートマシン図53、シーケンス図54)を記憶するUMLモデル図記憶部91、UMLモデル図記憶部91から、UMLモデル図の情報を読み出しUMLモデル図間の整合性をチェックし問題がないかどうかを判別するUMLモデル図判別部60、及び、UMLモデル図間の整合性に問題がない場合に上記により作成されたUMLモデル図からプログラムコードを自動で生成するプログラムコード生成部70、生成されたプログラムコード80を記憶するプログラムコード記憶部92とで構成されている。
また、図示はしていないが、オブジェクト指向プログラム生成装置の機能を実現するためにオブジェクト指向プログラム生成装置本体10は、一般的なコンピュータのハードウェア資源として、例えば、CPU、記憶装置、入出力装置、各種インターフェースなど、を周知の構成として備えており、また当然ながら、上記のごとき機能を実現させるためのプログラムを上記記憶装置内に格納している。UMLモデル図記憶部91、プログラム記憶部92は上述の記憶装置により実現され、また、上述の各種作成部(41〜44)、UMLモデル図判別部60、プログラムコード生成部70内の各構成は、上述のCPU、記憶装置、各種インターフェース等のハードウェア資源と後述する処理フローを実行する各種プログラムにより実現される。各種プログラムは、例えば汎用のパーソナルコンピュータ、サーバ等の記憶装置内にその実行プログラムをインストールすることにより、本発明における各部の処理等を実現することができる。
さらに、オブジェクト指向プログラム生成装置は、キーボード、マウス、タッチパネル等のインターフェースを用いて実現される入力部20と、液晶または有機EL等からなる表示パネルや音声出力用のスピーカー等を有し、各種情報を出力する出力部30を備える。
また、入力部20及び出力部30は、オブジェクト指向プログラム生成装置本体10のクライアント端末(図示せず)にその機能があってもよい。このときは、ネットワークを介してオブジェクト指向プログラム生成装置本体10とクライアント端末が通信可能に接続されている。なお、ネットワークは、有線、無線を問わず既存の公衆網、LAN、WANなどを用いることができる。
<クラス図>
図2、及び、図3は、本発明におけるクラス図の一例を示す図である。また、図2は、クラス図名が”Task1”であるクラス図であり、図3は、クラス図名が”Task2”であるクラス図である。クラス図は、クラス図作成部41を用いて作成される。
図2、及び、図3に示すように、各クラスは、クラス名、属性、及び、操作の区画から構成される。また、操作は、ステレオタイプなどを使用し、処理関数とイベントに分類される。
図2に示す例では、クラス名が”ClassA”であるクラスは、属性として、int型である変数”a”、及び、char型である変数”b”を持つ。また、処理関数として、返り値の型が”void”である処理関数”Ma1”、及び、”Ma2”を持つ。また、イベントとして、返り値の型が”void”であるイベント”Ea1”、”Ea2”、及び、”Ea3”を持つ。
さらに、クラス名が”ClassB”であるクラスは、属性を持っていない。また、処理関数として、返り値の型が”void”である処理関数”Mb1”を持つ。また、イベントとして、返り値の型が”void”であるイベント”Eb1”、及び、”Eb2”を持つ。
図3に示す例では、クラス名が”ClassC”であるクラスは、属性を持っていない。また、処理関数として、返り値の型が”void”である処理関数”Mc1”、”Mc3”、及び、”Mc4”を持つ。また、イベントとして、返り値の型が”void”であるイベント”Ec1”、”Ec2”、”Ec3”、及び、”Ec4”を持つ。
また、クラス図名は、タスク名を表現している。図2より、タスク名が”Task1”であるタスクには、クラス名が”ClassA”であるクラス、及び、クラス名が”ClassB”であるクラスが割り当てられている。図3より、タスク名が”Task2”であるタスクには、クラス名が”ClassC”であるクラスが割り当てられている。
タスク名は、クラス図名として表現する代わりに、クラス図に付帯するノート欄などにタスク名を記載しておいても良い。
<ステートマシン図>
図4、図5、及び、図6は、本発明におけるステートマシン図の一例を示す図である。また、図4はクラス名が”ClassA”であるクラスのステートマシン図であり、図5はクラス名が”ClassB”であるクラスのステートマシン図であり、図6はクラス名が”ClassC”であるクラスのステートマシン図である。ステートマシン図は、ステートマシン図作成部43を用いて作成される。
図4、図5、及び、図6に示すように、各ステートマシン図は、開始(図中に●で表示)、状態、及び、遷移を持つ。
図4に示す例では、状態として、”StateA1”、”StateA2”、及び、”StateA3”を持ち、初期状態(開始からの遷移で表現される)は”StateA1”である。また、遷移として、3つの遷移を持つ。
1つ目の遷移では、”StateA1”の状態でイベント”Ea1”を受け取ると、処理関数”Ma1”を実行し、”StateA2”へ状態を遷移する。
2つ目の遷移では、”StateA2”の状態でイベント”Ea2”を受け取ると、処理関数”Ma2”を実行し、”StateA3”へ状態を遷移する。
3つ目の遷移では、”StateA3”の状態でイベント”Ea3”を受け取ると、何も処理を実行することなく、”StateA1”へ状態を遷移する。
図5に示す例では、状態として、”StateB1”、及び、”StateB2”を持ち、初期状態は”StateB1”である。また、遷移として、2つの遷移を持つ。
1つ目の遷移では、”StateB1”の状態でイベント”Eb1”を受け取ると、処理関数”Mb1”を実行し、”StateB2”へ状態を遷移する。
2つ目の遷移では、”StateB2”の状態でイベント”Eb2”を受け取ると、処理関数”Mb1”を実行し、”StateB1”へ状態を遷移する。
図6に示す例では、状態として、”StateC1”、”StateC2”、”StateC3”、及び、”StateC4”を持ち、初期状態は”StateC1”である。また、遷移として、6つの遷移を持つ。
1つ目の遷移では、”StateC1”の状態でイベント”Ec1”を受け取ると、処理関数”Mc1”を実行し、”StateC2”へ状態を遷移する。
2つ目の遷移では、”StateC1”の状態でイベント”Ec3”を受け取ると、処理関数”Mc3”を実行し、”StateC4”へ状態を遷移する。
3つ目の遷移では、”StateC2”の状態でイベント”Ec2”を受け取ると、何も処理を実行することなく、”StateC3”へ状態を遷移する。
4つ目の遷移では、”StateC3”の状態でイベント”Ec3”を受け取ると、何も処理を実行することなく、”StateC4”へ状態を遷移する。
5つ目の遷移では、”StateC4”の状態でイベント”Ec1”を受け取ると、処理関数”Mc1”を実行し、”StateC2”へ状態を遷移する。
6つ目の遷移では、”StateC4”の状態でイベント”Ec4”を受け取ると、処理関数”Mc4”を実行し、状態は遷移しない。
<シーケンス図>
図7は、本発明におけるシーケンス図の一例を示す図である。シーケンス図は、シーケンス図作成部44を用いて作成される。
図7に示すように、シーケンス図は、メッセージ終了点(図中に●で表示)、ライフライン、及び、メッセージを持つ。また、各シーケンスは、メッセージ終了点からあるライフライン(以降、ライフライン1と表記する)に対してメッセージを送信し、そのメッセージを送信されたライフライン1からあるライフライン(以降、ライフライン2と表記する)に対してメッセージを送信するように表記される。
図7に示す例では、1つ目のシーケンスでは、クラス名が”ClassA”であるクラスが”StateA1”の状態でイベント”Ea1”を受け取ると、クラス名が”ClassB”であるクラスに対してイベント”Eb1”を送信し、クラス名が”ClassC”であるクラスに対してイベント”Ec1”を送信する。
2つ目のシーケンスでは、クラス名が”ClassA”であるクラスが”StateA2”の状態でイベント”Ea2”を受け取ると、クラス名が”ClassB”であるクラスに対してイベント”Eb2”を送信する。
3つ目のシーケンスでは、クラス名が”ClassB”であるクラスが”StateB1”の状態でイベント”Eb2”を受け取ると、クラス名が”ClassA”であるクラスに対してイベント”Ea3”を送信する。
4つ目のシーケンスでは、クラス名が”ClassC”であるクラスが処理関数”Mc1”を実行すると、クラス名が”ClassA”であるクラスに対してイベント”Ea2”を送信し、クラス名が”ClassB”であるクラスに対してイベント”Eb1”を送信する。
<UMLモデル図判別>
図8は、UMLモデル図判別部60にて、UMLモデル図間の整合性に問題がないかどうかを判別する際の処理を示すフローチャート図である。
UMLモデル図判別処理では、ステートマシン図とクラス図の関係に問題がないかどうかをチェックする(S701)。ステートマシン図とクラス図の関係に問題がある場合、異常で終了する。S701では、ステートマシン図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるかどうかをチェックする。また、S701では、ステートマシン図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるかどうかをチェックする。
ここでS701の詳細について図2、図3、図4、図5、図6、図9、図10を例に説明する。
例えば、図4、図5、及び、図6に記載されている全てのイベントは図2、及び、図3に記載されているクラスのイベントであり、図4、図5、及び、図6に記載されている全ての処理関数は図2、及び、図3に記載されているクラスの処理関数であるため、図4、図5、及び、図6に示すステートマシン図と図2、及び、図3に示すクラス図の関係には問題がないと判別し、処理を続行する。
また、図9に記載されているステートマシン図は、クラス名が”ClassA”であるクラスのステートマシン図であるが、図9において、状態”StateA1”から状態”StateA2”への遷移で使用されているイベント”Ex1”は図2に記載されているクラス名が”ClassA”であるクラスのイベントではないため、図9に示すステートマシン図と図2に示すクラス図の関係には問題があると判別し、異常で終了する。
また、図10に記載されているステートマシン図は、クラス名が”ClassAであるクラスのステートマシン図であるが、図10において、状態”StateA2”から状態”StateA3”への遷移で使用されている処理関数”Mx1”は図2に記載されているクラス名が”ClassA”であるクラスの処理関数ではないため、図10に示すステートマシン図と図2に示すクラス図の関係には問題があると判別し、異常で終了する。
図8に戻って、続いて、シーケンス図とクラス図の関係に問題がないかどうかをチェックする(S702)。シーケンス図とクラス図の関係に問題がある場合、異常で終了する。S702では、シーケンス図に記載されている全てのクラスがクラス図に記載されているクラスであるかどうかをチェックする。また、S702では、シーケンス図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるかどうかをチェックする。また、S702では、シーケンス図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるかどうかをチェックする。
ここでS702の詳細について図2、図3、図7、図11、図12、図13、図14を例に説明する。
例えば、図7に記載されている全てのクラスは図2、及び、図3に記載されているクラスであり、図7に記載されている全てのイベントは図2、及び、図3に記載されているクラスのイベントであり、図7に記載されている全ての処理関数は図2、及び、図3に記載されているクラスの処理関数であるため、図7に示すシーケンス図と図2、及び、図3に示すクラス図の関係には問題がないと判別し、処理を続行する。
また、図11に記載されているシーケンス図において、クラス名が”ClassX”であるクラスは図2、及び、図3に記載されていないため、図11に示すシーケンス図と図2、及び、図3に示すクラス図の関係には問題があると判別し、異常で終了する。
また、図12に記載されているシーケンス図において、クラス名が”ClassA”であるクラスが”StateA1”の状態で受け取るイベント”Ex2”は図2に記載されているクラス名が”ClassA”であるクラスのイベントではないため、図12に示すシーケンス図と図2に示すクラス図の関係には問題があると判別し、異常で終了する。
また、図13に記載されているシーケンス図において、クラス名が”ClassA”であるクラスがクラス名が”ClassB”であるクラスに対して送信するイベント”Ex3”は図2に記載されているクラス名が”ClassB”であるクラスのイベントではないため、図13に示すシーケンス図と図2に示すクラス図の関係には問題があると判別し、異常で終了する。
また、図14に記載されているシーケンス図において、クラス名が”ClassC”であるクラスが処理を実行する処理関数”Mx2”は図3に記載されているクラス名が”ClassC”であるクラスの処理関数ではないため、図14に示すシーケンス図と図3に示すクラス図の関係には問題があると判別し、異常で終了する。
図8に戻って、続いて、シーケンス図とステートマシン図の関係に問題がないかどうかをチェックする(S703)。シーケンス図とステートマシン図の関係に問題がある場合、異常で終了する。S703では、シーケンス図に記載されている全ての状態がステートマシン図に記載されている状態であるかどうかをチェックする。
ここでS703の詳細について図4、図5、図6、図7、図15を例に説明する。
例えば、図7に記載されている全ての状態は図4、図5、及び、図6に記載されている状態であるため、図7に示すシーケンス図と図4、図5、及び、図6に示すステートマシン図の関係には問題がないと判別し、正常で終了する。
また、図15に記載されているシーケンス図において、クラス名が”ClassA”であるクラスがイベント”Ea1”を受け取る状態”StateX1”は図4に記載されているクラス名が”ClassA”であるクラスの状態ではないため、図15に示すシーケンス図と図4に示すステートマシン図の関係には問題があると判別し、異常で終了する。
以上により、UMLモデル図間の関係性をチェックし問題がないかどうかを判別する。
なお、ここでは、UMLモデル図間の関係性のチェックの順番をステートマシン図とクラス図、シーケンス図とクラス図、シーケンス図とステートマシン図のようにしているが、順番は任意であってもよい。
<プログラムコード生成>。
図16は、本発明におけるクラス図、ステートマシン図、及び、シーケンス図から作成されるプログラムコードの一実施例を示す図である。図16に示すプログラムコードは、プログラムコード生成部70を用いて自動で作成される。
図16に示すプログラムコードは、クラス名が”ClassA”であるクラスのプログラムコードである。図16において、2行目、8行目〜10行目、16行目〜17行目、及び、27行目〜32行目は図2に示すクラス図から作成され、4行目〜6行目、14行目、37行目〜40行目、47行目〜50行目、及び、56行目は図4に示すステートマシン図から作成され、41行目〜44行目、及び、51行目〜53行目は図7に示すシーケンス図から作成される。
同様に、クラス名が”ClassB”であるクラス、及び、クラス名が”ClassC”であるクラスのプログラムコードもプログラムコード生成部70を用いて自動で作成される。図16の例では、クラス”ClassA”にタスク”Task1”が割り当てられている。
図17は、本発明におけるクラス図から作成されるプログラムコードの一実施例を示す図である。プログラムコードは、プログラムコード生成部70を用いて自動で作成される。
図17に示すプログラムコードは、タスク、及び、オブジェクトの生成のプログラムコードである。図17において、4行目、7行目〜8行目、13行目、16行目〜17行目、20行目、及び、23行目〜30行目は図2に示すクラス図から作成され、5行目、9行目、14行目、18行目、21行目、及び、31行目〜34行目は図3に示すクラス図から作成される。
図17の例では、メインプログラムにタスク”Task1”と”Task2”が定義され、タスクに起動がかけられると該当するオブジェクトが呼び出され処理を実行する。これにより、クラスの機能を最小の単位として、一つのタスクと対応させることで、他のタスクとの排他制御やレベル付け(優先付け)を容易にしている。
ここでは、”ClassA”と”ClassB”は、同じタスク”Task1”であるため、”ClassA”と”ClassB”のプログラムをマルチ処理(並行処理)することはできない。一方、”ClassA”と”ClassC”のプログラムはそれぞれ別なタスクに割り付けられているため、マルチ処理が可能となる。
なお、ここでは、プログラムコードとしてJava(登録商標)言語を用いて表記しているが、その他の言語(C言語、C++言語など)を用いて表記してもよい。
<実施例の効果>
以上のように、本発明を適用することにより、オブジェクト指向プログラム開発において、クラス図、ステートマシン図、及び、シーケンス図を作成し、オブジェクト指向プログラム生成装置を使用することで、プログラムコードが自動で生成されるため、プログラム作成作業が大幅に軽減され、トータル作業工数を大幅に削減することが可能となった。
また、本発明を適用することにより、UMLモデル図間の整合性をチェックすることで、ソフトウェアテスト時の不具合を未然に防ぐことができ、テスト作業を軽減することが可能となった。
さらに、本発明を適用することにより、クラス図を用いて機能のタスク割り当てを表現することで、マルチタスク環境下で動作するプログラムコードも自動で生成されるため、プログラム作成作業が大幅に軽減され、オブジェクト指向プログラム開発のトータル作業工数を大幅に削減することが可能となった。
10 オブジェクト指向プログラム生成装置本体
20 入力部
30 出力部
41 クラス図作成部
43 ステートマシン図作成部
44 シーケンス図作成部
51 クラス図データ
53 ステートマシン図データ
54 シーケンス図データ
60 UMLモデル図判別部
70 プログラムコード生成部
80 プログラムコード
91 UMLモデル図記憶部
92 プログラム記憶部

Claims (8)

  1. オブジェクト指向プログラムを生成するオブジェクト指向プログラム生成装置であって、
    開発対象システムの複数種類の設計ドキュメントを作成する設計ドキュメント作成部と、
    前記設計ドキュメント作成部により作成された設計ドキュメントの情報を記憶する設計ドキュメント記憶部と、
    前記設計ドキュメント記憶部から複数種類の前記設計ドキュメントの情報を各々読み出し、これら設計ドキュメント間の整合性をチェックする設計ドキュメント判別部と、
    前記設計ドキュメント判別部で整合性に問題が無いと判別された場合、オブジェクト指向プログラムを生成するプログラムコード生成部と
    を備えることを特徴とするオブジェクト指向プログラム生成装置。
  2. 請求項1記載のオブジェクト指向プログラム生成装置において、
    前記設計ドキュメントは、少なくともステートマシン図またはシーケンス図を含むUMLモデル図であることを特徴とするオブジェクト指向プログラム生成装置。
  3. 請求項2記載のオブジェクト指向プログラム生成装置において、
    前記UMLモデル図は、クラス図を含み、
    前記設計ドキュメント判別部は、
    ステートマシン図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、ステートマシン図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、
    シーケンス図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、シーケンス図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、
    または、シーケンス図に記載されている全ての状態がステートマシン図に記載されている状態であるか否かの整合性の少なくともいずれかの整合性のチェックをすることを特徴とするオブジェクト指向プログラム生成装置。
  4. 請求項2または3記載のオブジェクト指向プログラム生成装置において、
    前記設計ドキュメント作成部でクラス図を作成する際、クラス単位の機能に対応させてタスク名を記載し、プログラムコード生成部でプログラムコードを自動生成する際、マルチタスク(マルチスレッド)環境下で動作するプログラムコードを生成することを特徴とするオブジェクト指向プログラム生成装置。
  5. オブジェクト指向プログラムを生成するオブジェクト指向プログラム生成方法であって、
    開発対象システムの複数種類の設計ドキュメントを作成する過程と、
    作成された設計ドキュメントの情報を記憶する設計ドキュメント記憶部と、
    前記設計ドキュメント記憶部から複数種類の前記設計ドキュメントの情報を各々読み出し、これら設計ドキュメント間の整合性をチェックする過程と、
    前記整合性をチェックする過程で整合性に問題が無いと判別された場合、オブジェクト指向プログラムを生成する過程と
    を具備することを特徴とするオブジェクト指向プログラム生成方法。
  6. 請求項5記載のオブジェクト指向プログラム生成方法において、
    前記UMLモデル図は、クラス図を含み、
    前記設計ドキュメント間の整合性をチェックする過程は、
    ステートマシン図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、ステートマシン図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、
    シーケンス図に記載されている全てのイベントがクラス図に記載されているクラスのイベントであるか否かと、シーケンス図に記載されている全ての処理関数がクラス図に記載されているクラスの処理関数であるか否かの整合性、
    または、シーケンス図に記載されている全ての状態がステートマシン図に記載されている状態であるか否かの整合性の少なくともいずれかの整合性のチェックをすることを特徴とするオブジェクト指向プログラム生成方法。
  7. 請求項5または6記載のオブジェクト指向プログラム生成方法において、
    前記設計ドキュメント作成部でクラス図を作成する際、クラス単位の機能に対応させてタスク名を記載し、プログラムコード生成部でプログラムコードを自動生成する際、マルチタスク(マルチスレッド)環境下で動作するプログラムコードを生成することを特徴とするオブジェクト指向プログラム生成方法。
  8. コンピュータを、
    請求項1ないし4の何れか1項に記載のオブジェクト指向プログラム生成装置が有する各手段(各部)として機能させるためのオブジェクト指向プログラム生成プログラム。


JP2012026338A 2012-02-09 2012-02-09 オブジェクト指向プログラム生成装置、プログラム Active JP5948926B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012026338A JP5948926B2 (ja) 2012-02-09 2012-02-09 オブジェクト指向プログラム生成装置、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012026338A JP5948926B2 (ja) 2012-02-09 2012-02-09 オブジェクト指向プログラム生成装置、プログラム

Publications (2)

Publication Number Publication Date
JP2013164670A true JP2013164670A (ja) 2013-08-22
JP5948926B2 JP5948926B2 (ja) 2016-07-06

Family

ID=49175996

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012026338A Active JP5948926B2 (ja) 2012-02-09 2012-02-09 オブジェクト指向プログラム生成装置、プログラム

Country Status (1)

Country Link
JP (1) JP5948926B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515653A (zh) * 2019-08-30 2019-11-29 北京东软望海科技有限公司 文档生成方法、装置、电子设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091990A1 (en) * 2000-10-04 2002-07-11 Todd Little System for software application development and modeling
JP2004070810A (ja) * 2002-08-08 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> ビジュアルプログラミングシステム、ビジュアルプログラミング方法、ビジュアルプログラミング用プログラム及びそのプログラムを記録した記録媒体
JP2004157805A (ja) * 2002-11-07 2004-06-03 Internatl Business Mach Corp <Ibm> スケジュール作成方法、プログラム及びタスクスケジュール作成装置
JP2008090857A (ja) * 2007-11-15 2008-04-17 Fujitsu Ltd シーケンス解析プログラムを記録した記録媒体、シーケンス解析装置およびシーケンス解析方法
JP2008293186A (ja) * 2007-05-23 2008-12-04 Toshiba Mitsubishi-Electric Industrial System Corp 鉄鋼プラント制御プログラムの自動生成方法およびその装置
JP2009289162A (ja) * 2008-05-30 2009-12-10 Toshiba Mitsubishi-Electric Industrial System Corp 制御プログラム及び試験方案自動作成装置
JP2011164876A (ja) * 2010-02-09 2011-08-25 Canon Inc タスク処理装置、タスク処理方法、及び、プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091990A1 (en) * 2000-10-04 2002-07-11 Todd Little System for software application development and modeling
JP2004070810A (ja) * 2002-08-08 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> ビジュアルプログラミングシステム、ビジュアルプログラミング方法、ビジュアルプログラミング用プログラム及びそのプログラムを記録した記録媒体
JP2004157805A (ja) * 2002-11-07 2004-06-03 Internatl Business Mach Corp <Ibm> スケジュール作成方法、プログラム及びタスクスケジュール作成装置
JP2008293186A (ja) * 2007-05-23 2008-12-04 Toshiba Mitsubishi-Electric Industrial System Corp 鉄鋼プラント制御プログラムの自動生成方法およびその装置
JP2008090857A (ja) * 2007-11-15 2008-04-17 Fujitsu Ltd シーケンス解析プログラムを記録した記録媒体、シーケンス解析装置およびシーケンス解析方法
JP2009289162A (ja) * 2008-05-30 2009-12-10 Toshiba Mitsubishi-Electric Industrial System Corp 制御プログラム及び試験方案自動作成装置
JP2011164876A (ja) * 2010-02-09 2011-08-25 Canon Inc タスク処理装置、タスク処理方法、及び、プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JPN6015039799; SEWB+ オブジェクト指向分析・設計支援 使用の手引 第3版 第3版, 19981130, 第73-74頁, 株式会社日立製作所 *
JPN6015039800; 井上 樹: 'UMLの効果的な使い方と使い所を考える UMLモデリング向上委員会' DB Magazine 第14巻、第14号, 20050301, 第153-159頁, 株式会社翔泳社 *
JPN6015039801; 藤倉 俊幸: 組み込みシステム開発者&LSI設計者のための UMLガイド 第7-11頁, 20070501, CQ出版株式会社 *
JPN6015039802; 大西 淳: 'UMLにおけるモデル整合性検証支援システム' 電子情報通信学会論文誌 (J84-D-I) 第J84-D-I巻、第6号, 20010601, 第671-681頁, 社団法人電子情報通信学会 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515653A (zh) * 2019-08-30 2019-11-29 北京东软望海科技有限公司 文档生成方法、装置、电子设备及计算机可读存储介质
CN110515653B (zh) * 2019-08-30 2023-04-11 望海康信(北京)科技股份公司 文档生成方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
JP5948926B2 (ja) 2016-07-06

Similar Documents

Publication Publication Date Title
US8910166B2 (en) Automatic transcoding and semantic adaptation between scripting and workflow systems
US8490050B2 (en) Automatic generation of user interfaces
US9021440B1 (en) System and method for automated test script generation
JP5679989B2 (ja) デバッグパイプライン
TWI533217B (zh) 用於運行時間系統的電腦實施方法及電腦可讀取儲存記憶體
US8789024B2 (en) Integration of visualization with source code in the Eclipse development environment
US8533666B2 (en) Interactive design environments to visually model, debug and execute resource oriented programs
CN110968305A (zh) 小程序可视化生成方法、装置、设备及存储介质
US8086997B2 (en) Detecting aspectual behavior in unified modeling language artifacts
US9026478B2 (en) Framework for finding one or more solutions to a problem
KR20160003485A (ko) 원격 함수 호출을 위한 자동 코드 생성
US20110276983A1 (en) Automatic return to synchronization context for asynchronous computations
CN113378007B (zh) 数据回溯方法及装置、计算机可读存储介质、电子设备
US9715372B2 (en) Executable guidance experiences based on implicitly generated guidance models
CN111090821B (zh) 一种实现动态网页的方法、装置、电子设备及存储介质
JP2015026139A (ja) プログラム生成装置、プログラム生成方法、およびプログラム生成用プログラム
US8412744B2 (en) Visualization of runtime analysis across dynamic boundaries
US20120011490A1 (en) Development system
JP2013235508A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
JP2012048329A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
JP5948926B2 (ja) オブジェクト指向プログラム生成装置、プログラム
CN111596905A (zh) 生成java对象的方法、装置、存储介质及终端
JP5644599B2 (ja) オブジェクト指向モデル設計支援装置
CN106547528B (zh) 一种界面布局方法以及装置
US20130111329A1 (en) Hinting system at user interface design time

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150831

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20151005

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20151005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151126

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: 20160510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160523

R150 Certificate of patent or registration of utility model

Ref document number: 5948926

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250