(57)【要約】【課題】アクティビティ情報、及び処理に対応するソースコードからアクティビティ図が示す処理を行なうためのソースコードを作成するソースコード作成装置、ソースコード作成プログラムを提供する。【解決手段】単一処理か複合処理かを判定する第１判定処理、同期処理か順次処理かを判定する第２判定処理、終了したことを通知するための複合処理が存在するか否か判定する第３判定処理、最初に実行する順次処理を認識する第１認識処理、いずれの処理が実行中であるかを認識する第２認識処理、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理、順次処理を実行した際に実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理、同期処理において同時に実行する複数の処理を認識する第３認識処理、及び実行中の各処理の終了を同期させるための終了同期処理をソースコードに追記する。【選択図】図４
2010198457.tif 000002
【特許請求の範囲】
【請求項１】
順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードを取得する取得手段と、
前記取得手段により取得されたアクティビティ情報に示される前記処理が単一処理か複合処理かを前記処理毎に判定する第１判定処理を前記ソースコードに追記する第１追記手段と、
前記第１判定処理により複合処理と判定された処理が、同期処理か順次処理かを判定する第２判定処理を前記ソースコードに追記する第２追記手段と、
前記処理を実行した際に、前記処理が終了した場合に終了したことを通知するための前記第１判定処理により判定された複合処理が存在するか否か判定する第３判定処理を前記ソースコードに追記する第３追記手段と、
前記第２判定処理により判定された順次処理のうち、最初に実行する処理を示す開始処理を認識する第１認識処理を前記ソースコードに追記する第４追記手段と、
前記順次処理を実行した際に、いずれの処理が実行中であるかを認識する第２認識処理を前記ソースコードに追記する第５追記手段と、
前記順次処理を実行した際に、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理を前記ソースコードに追記する第６追記手段と、
前記順次処理を実行した際に、実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理を前記ソースコードに追記する第７追記手段と、
前記第２判定処理により判定された同期処理において実行する複数の処理を認識する第３認識処理を前記ソースコードに追記する第８追記手段と、
実行中の各処理の終了を同期させるための終了同期処理を前記ソースコードに追記する第９追記手段と、
を有するソースコード作成装置。
【請求項２】
コンピュータを、
順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードを取得する取得手段と、
前記取得手段により取得されたアクティビティ情報に示される前記処理が単一処理か複合処理かを前記処理毎に判定する第１判定処理を前記ソースコードに追記する第１追記手段と、
前記第１判定処理により複合処理と判定された処理が、同期処理か順次処理かを判定する第２判定処理を前記ソースコードに追記する第２追記手段と、
前記処理を実行した際に、前記処理が終了した場合に終了したことを通知するための前記第１判定処理により判定された複合処理が存在するか否か判定する第３判定処理を前記ソースコードに追記する第３追記手段と、
前記第２判定処理により判定された順次処理のうち、最初に実行する処理を示す開始処理を認識する第１認識処理を前記ソースコードに追記する第４追記手段と、
前記順次処理を実行した際に、いずれの処理が実行中であるかを認識する第２認識処理を前記ソースコードに追記する第５追記手段と、
前記順次処理を実行した際に、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理を前記ソースコードに追記する第６追記手段と、
前記順次処理を実行した際に、実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理を前記ソースコードに追記する第７追記手段と、
前記第２判定処理により判定された同期処理において実行する複数の処理を認識する第３認識処理を前記ソースコードに追記する第８追記手段と、
実行中の各処理の終了を同期させるための終了同期処理を前記ソースコードに追記する第９追記手段と、
として機能させるためのソースコード作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード作成装置、ソースコード作成プログラムに関する。
【背景技術】
【０００２】
特許文献１には、オブジェクト指向システム開発において、テスト性、及びメインテナンス性に優れたサブシステムを構成するためのソフトウェア・インタフェース・デザインパターンが開示されている。
【０００３】
特許文献２には、自然言語で記述されたシステムの振る舞いを記したシナリオを作成し、定型化された分析方法に従い図解編集装置を用いて分析作業を行うことで、オブジェクトモデルを構築することを目的とした分析方法と支援装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１０５４０４号公報
【特許文献２】特開２００４−１５７９５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードからアクティビティ図が示す処理を行なうためのソースコードを作成するソースコード作成装置、ソースコード作成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１の発明は、順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードを取得する取得手段と、前記取得手段により取得されたアクティビティ情報に示される前記処理が単一処理か複合処理かを前記処理毎に判定する第１判定処理を前記ソースコードに追記する第１追記手段と、前記第１判定処理により複合処理と判定された処理が、同期処理か順次処理かを判定する第２判定処理を前記ソースコードに追記する第２追記手段と、前記処理を実行した際に、前記処理が終了した場合に終了したことを通知するための前記第１判定処理により判定された複合処理が存在するか否か判定する第３判定処理を前記ソースコードに追記する第３追記手段と、前記第２判定処理により判定された順次処理のうち、最初に実行する処理を示す開始処理を認識する第１認識処理を前記ソースコードに追記する第４追記手段と、前記順次処理を実行した際に、いずれの処理が実行中であるかを認識する第２認識処理を前記ソースコードに追記する第５追記手段と、前記順次処理を実行した際に、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理を前記ソースコードに追記する第６追記手段と、前記順次処理を実行した際に、実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理を前記ソースコードに追記する第７追記手段と、前記第２判定処理により判定された同期処理において実行する複数の処理を認識する第３認識処理を前記ソースコードに追記する第８追記手段と、実行中の各処理の終了を同期させるための終了同期処理を前記ソースコードに追記する第９追記手段と、を有する。
【０００７】
上記目的を達成するために、請求項２の発明は、コンピュータを、順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードを取得する取得手段と、前記取得手段により取得されたアクティビティ情報に示される前記処理が単一処理か複合処理かを前記処理毎に判定する第１判定処理を前記ソースコードに追記する第１追記手段と、前記第１判定処理により複合処理と判定された処理が、同期処理か順次処理かを判定する第２判定処理を前記ソースコードに追記する第２追記手段と、前記処理を実行した際に、前記処理が終了した場合に終了したことを通知するための前記第１判定処理により判定された複合処理が存在するか否か判定する第３判定処理を前記ソースコードに追記する第３追記手段と、前記第２判定処理により判定された順次処理のうち、最初に実行する処理を示す開始処理を認識する第１認識処理を前記ソースコードに追記する第４追記手段と、前記順次処理を実行した際に、いずれの処理が実行中であるかを認識する第２認識処理を前記ソースコードに追記する第５追記手段と、前記順次処理を実行した際に、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理を前記ソースコードに追記する第６追記手段と、前記順次処理を実行した際に、実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理を前記ソースコードに追記する第７追記手段と、前記第２判定処理により判定された同期処理において実行する複数の処理を認識する第３認識処理を前記ソースコードに追記する第８追記手段と、実行中の各処理の終了を同期させるための終了同期処理を前記ソースコードに追記する第９追記手段と、として機能させるためのソースコード作成プログラムである。
【発明の効果】
【０００８】
請求項１記載の発明によれば、順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードからアクティビティ図が示す処理を行なうためのソースコードを作成するソースコード作成装置を提供することができる。
【０００９】
請求項２記載の発明によれば、順序処理、同期処理、及び分岐処理を含む処理で構成されるアクティビティ図を示すアクティビティ情報、及び前記処理に対応するソースコードからアクティビティ図が示す処理を行なうためのソースコードを作成するソースコード作成プログラムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態に係るソースコード作成装置の構成を示す図である。
【図２】順序処理、同期処理、及び分岐処理の一例を示す図である。
【図３】順序処理、同期処理、及び分岐処理を組み合わせた一例を示す図である。
【図４】実施の形態に係るデザインパターンを示すクラス図である。
【図５】ソースコード作成処理の流れを示すフローチャートである。
【図６】順序Activityオブジェクト、及び同期Activityオブジェクトの振る舞いを示す図である。
【図７】Activity図に示される処理を実行した際の各オブジェクトの動きを示す図である。
【図８】Ｃ言語用に作成したデザインパターンを示すクラス図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。
【００１２】
次に、図２を用いて、ソースコード作成装置１２の構成について説明する。ソースコード作成装置１２は、ＣＰＵ（Central Processing Unit）１８と、ＨＤＤ（Hard Disk Drive）２０と、ＲＡＭ（Random Access Memory）２２と、ネットワークＩ／Ｆ部２４と、ＲＯＭ（Read Only Memory）２６と、表示部２８と、操作入力部３０と、バス３２とを含む。
【００１３】
ＣＰＵ１８は、ソースコード作成装置１２の全体の動作を司るものであり、後述するソースコード作成装置１２の処理を示すフローチャートは、ＣＰＵ１８により実行される。ＨＤＤ２０は、各データベース、ソース作成プログラムなどのプログラム、ＯＳ（Operating System）などが記録される不揮発性の記憶装置である。ＲＡＭ２２は、ＯＳやプログラムやデータが展開される揮発性の記憶装置である。ネットワークＩ／Ｆ部２４は、ネットワークに接続するためのものであり、ＮＩＣ（Network Interface Card）やそのドライバで構成される。ＲＯＭ２６は、ソースコード作成装置１２の起動時に動作するブートプログラムなどが記憶されている不揮発性の記憶装置である。表示部２８は、ソースコード作成装置１２に関する情報をオペレータに表示するものである。操作入力部３０は、オペレータがソースコード作成装置１２の操作や情報を入力する際に用いられるものである。バス３２は、情報のやりとりが行われる際に使用される。
【００１４】
次にアクティビティ図について説明する。アクティビティ図は、順序処理、同期処理、及び分岐処理を含む処理で構成されるため、まずこれらの処理の一例を、図２を用いて説明する。
【００１５】
図２（Ａ）は、順序処理を示すアクティビティ図の一例である。同図の順序処理は、ステップ１０１の単一Activity１、及びステップ１０２の単一Activity２の処理を順番に実行することを示している。
【００１６】
図２（Ｂ）は、同期処理を示すアクティビティ図の一例である。同図の同期処理は、ステップ２０１の単一Activity３、及びステップ２０２の単一Activity４の処理をそれぞれ独立して実行し、ステップ２０１、２０２の処理が終了すると、ステップ２０３の単一Activity５を実行することを示している。
【００１７】
同図（Ｃ）は、分岐処理を示すアクティビティ図の一例である。同図の分岐処理は、ステップ３０１の単一Activity６を実行後に、条件Ａ、Ｂにより分岐する処理である。条件Ａの場合は、ステップ３０２の単一Activity７の処理が実行され、条件Ｂの場合は、ステップ３０３の単一Activity８の処理を実行後、ステップ３０２の処理を実行することを示している。
【００１８】
以上が順序処理、同期処理、及び分岐処理の一例であるが、これらを組み合わせた処理を、図３を用いて説明する。図３に示されるActivity図は、順序Activity１を実行する処理を示している。この順序Activity１は、同期Activity１、単一Activity１５を実行するようになっている。
【００１９】
更に、同期Activity１は、順序Activity２と同期Activity２を実行するようになっている。このうち、順序Activity２は、分岐処理が含まれ、その分岐処理は単一Activity９を実行後に、条件により単一Activity１０又は単一Activity１１の処理が実行され、単一Activity１１の処理を実行した場合は、その後単一Activity１０の処理を実行するようになっている。
【００２０】
一方、同期Activity２は、同期処理が含まれ、その同期処理は、単一Activity１２と順序Activity３を独立して実行する処理である。更に順序Activity３は、単一Activity１３、単一Activity１４を順番に実行する処理である。
【００２１】
以上がアクティビティ図の説明である。次に、図４を用いて本実施の形態に係るデザインパターンを、クラス図を用いて説明する。
【００２２】
まず、同図に示されるActivityオブジェクト５０は、取得したアクティビティ情報の各アクティビティを定義するものである。また、Activityオブジェクト５０と単一Activityオブジェクト５２及び複合Activityオブジェクト５４との継承関係を示すＲ９は、処理が単一処理か複合処理かを前記処理毎に判定する第１判定処理を示している。
【００２３】
複合Activityオブジェクト５４と同期Activityオブジェクト５６及び順序Activityオブジェクト５８との継承関係を示すＲ１０は、複合処理と判定された処理が、同期処理か順次処理かを判定する第２判定処理を示している。
【００２４】
Activityオブジェクト５０と複合Activityオブジェクト５４との関連を示すＲ７は、処理を実行した際に、処理が終了した場合に終了したことを通知するための第１判定処理により判定された複合処理が存在するか否か判定する第３判定処理を示している。
【００２５】
順序Activityオブジェクト５８と順序Activity仕様オブジェクト６０との関連を示すＲ１、順序Activity仕様オブジェクト６０と順序オブジェクト６８との関連を示すＲ２、順序Activity仕様オブジェクト６０とActivityオブジェクト５０との関連を示すＲ４、及び順序オブジェクト６８は、第２判定処理により判定された順次処理のうち、最初に実行する処理を示す開始処理を認識する第１認識処理を示している。
【００２６】
また、関連Ｒ３、Ｒ４及び順序オブジェクト６８は、順次処理を実行した際に、いずれの処理が実行中であるかを認識する第２認識処理を示している。
【００２７】
更に、順序オブジェクト６８の再帰関連を示すＲ８、上記Ｒ３、Ｒ４、及び順序オブジェクト６８は、順次処理を実行した際に、実行中の処理の次に実行する処理が存在するか否かを判定する第４判定処理を示している。
【００２８】
再帰関連Ｒ８、分岐オブジェクト６２、順序オブジェクト６８、及び関連Ｒ４は、順次処理を実行した際に、実行中の処理の次に実行する複数の処理が存在する場合に、いずれの処理を次に実行するかを判定する第５判定処理を示している。
【００２９】
また、Activityオブジェクト５０と同期Activity仕様オブジェクト６４との関連を示すＲ６、同期Activity仕様オブジェクト６４と同期Activityオブジェクト５６との関連を示すＲ５、及び同期Activityオブジェクト５６は、同期処理において実行する複数の処理を認識する第３認識処理を示している。
【００３０】
同期Activityオブジェクト５６の属性である実行中Activity数は、同期Activityが現在実行中のActivityの数を示しており、現在実行中の全てのActivityの終了を同期させるために使用する。同期オブジェクト６６は、Activityオブジェクト５０と同期Activity仕様６４との関連クラスである。
【００３１】
以上説明したクラス図に示される処理を実行するためのソースコードをアクティビティ図に示される各処理を行なうソースコードに追記する。具体的には、図５のフローチャートを用いて説明する。このフローチャートに示されるソースコード作成処理は、ＣＰＵ１８により実行される。
【００３２】
まずステップ４０１で、例えば予めＨＤＤ２０に記憶されているアクティビティ情報、処理を示すソースコードを取得する。処理を示すソースコードの一例として、各処理を示す関数を示すソースコードが挙げられる。そしてこれらのソースコードは、テキストファイルで記憶されている。従って、以下の追記する処理では、このテキストファイルに各処理を示すソースコードが追記されることとなる。
【００３３】
次のステップ４０２で、上述した第１判定処理をソースコードに追記し、ステップ４０３で、上述した第２判定処理をソースコードに追記し、ステップ４０４で上述した第３判定処理をソースコードに追記し、ステップ４０５で上述した第１認識処理をソースコードに追記し、ステップ４０６で上述した第２認識処理をソースコードに追記し、ステップ４０７で上述した第４判定処理をソースコードに追記し、ステップ４０８で上述した第５判定処理をソースコードに追記し、ステップ４０９で上述した第３認識処理をソースコードに追記し、ステップ４１０で上述した終了同期処理をソースコードに追記して処理を終了する。
【００３４】
これにより、上記図４に示したクラス図の処理がアクティビティ図に示される処理に追加されることで、アクティビティ図が示す処理を実行するためのソースコードが作成される。
【００３５】
次に、図６を用いて、順序Activityオブジェクト５８、及び同期Activityオブジェクト５６の振る舞いについて説明する。
【００３６】
同図（Ａ）は、順序Activityオブジェクト５８の振る舞いを示している。ステップ５０１は、最初に実行する処理を獲得するもので、関連Ｒ１、Ｒ２で関係する順序をＲ３に関係させる。次のステップ５０２で関連Ｒ３、Ｒ４で関連づけられたActivityを実行し、実行したActivityに、自順序Activity(複合Activity)をＲ７で関連させ、実行したActivityから実行完了の通知を受けると、ステップ５０３でＲ３、Ｒ８で関係する順序から分岐の判定メソッド（図４の分岐オブジェクト６２参照）の結果を元に選択した順序をＲ３に設定する。Ｒ３に設定されていればそれを実行し、設定されていなければステップ５０３を終えてステップ５０４の終了処理を行なう終了中に移行する。ステップ５０４では、Ｒ７に複合Activityが設定されていれば、その複合Activityに実行完了を通知し、振る舞いを終了する。
【００３７】
同図（Ｂ）は、同期Activityオブジェクト５６の振る舞いを示している。まず、ステップ６０１で、Ｒ５、Ｒ６で関係する全てのActivityの実行を開始し、実行したActivityの個数を実行中のActivity数（図４の同期Activityオブジェクト５６参照）に設定し、更に実行した全てのActivityのＲ７に自同期Activity(複合Activity)を設定する。
【００３８】
次のステップ６０２では、実行したActivityから実行完了通知を受けるとActivity数を１減算する。Activity数が０となる、すなわち実行した全てのActivityが終了すると、次のステップ６０３に移行する。ステップ６０３では、Ｒ７に複合Activityが設定されていれば、その複合Activityに実行完了を通知し、振る舞いを終了する。
【００３９】
次に図７を用いて、図３に示したActivity図に示される処理を実行した際の各オブジェクトの動きについて説明する。
【００４０】
まず、ステップ７０１で、Actor１が順序Activity１を実行すると、ステップ７０２で同期Activity１が実行される。そして、ステップ７０３で順序Activity２が、ステップ７０４で同期Activity２がそれぞれ同期Activity１により実行される。更にステップ７０５で単一Activity９が順序Activity２により実行される。
【００４１】
次のステップ７０６で、単一Activity１２が同期Activity２により実行され、ステップ７０７で順序Activity３が同期Activity２により実行される。そしてステップ７０８で単一Activity１３が順序Activity３により実行される。
【００４２】
単一Activity１２の実行が完了すると、ステップ７０９で実行が完了したことを示す実行完了が同期Activity２に通知される。また、単一Activity９の実行が完了すると、ステップ７１０で実行完了が順序Activity２に通知される。これを受けて、ステップ７１１で単一Activity１０が順序Activity２により実行される。
【００４３】
次のステップ７１２で、順序Activity３が単一Activity１３により実行され、ステップ７１３で単一Activity１４が順序Activity３により実行される。そしてステップ７０８で単一Activity１３が順序Activity３により実行される。
【００４４】
また、単一Activity１４の実行が完了すると、ステップ７１４で実行完了が順序Activity３に通知される。これを受けて、ステップ７１５で実行完了が順序Activity３に通知される。更にこれを受けて、ステップ７１６で実行完了が同期Activity１に通知される。
【００４５】
単一Activity１０の実行が完了すると、ステップ７１７で実行完了が順序Activity２に通知される。これを受けて、ステップ７１８で実行完了が同期Activity１に通知される。更にこれを受けて、ステップ７１９で実行完了が順序Activity１に通知される。
【００４６】
次のステップ７２０で、単一Activity１５が順序Activity１により実行され、ステップ７２１で実行完了が順序Activity１に通知される。これを受けて、ステップ７２２で実行完了がActor１に通知される。
【００４７】
上述した実施形態では、図４に示したデザインパターンを用いて説明したが、このデザインパターンはＣ＋＋言語用に作成されたものである。図４に示したデザインパターンをＣ言語用に作成したものを、図８に示す。図８に示すデザインパターンは、単にＣ言語用としたものであるので、図４に示したデザインパターンと同じ処理を示している。
【００４８】
なお、以上説明した図７のシーケンス図の処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
【符号の説明】
【００４９】
１２  ソースコード作成装置
１８  ＣＰＵ
２０  ＨＤＤ
２２  ＲＡＭ
５０  Activityオブジェクト
５２  単一Activityオブジェクト
５４  複合Activityオブジェクト
５６  同期Activityオブジェクト
５８  順序Activityオブジェクト
６０  順序Activity仕様オブジェクト
６２  分岐オブジェクト
６４  同期Activity仕様オブジェクト
６６  同期オブジェクト
６８  順序オブジェクト
【図１】
2010198457.tif 000003
【図２】
2010198457.tif 000004
【図３】
2010198457.tif 000005
【図４】
2010198457.tif 000006
【図５】
2010198457.tif 000007
【図６】
2010198457.tif 000008
【図７】
2010198457.tif 000009
【図８】
2010198457.tif 000010