(57)【特許請求の範囲】
【請求項１】
オブジェクト指向に基づいたソースコードの作成を支援するソースコード作成支援プログラムであって、
新規に作成するソースコードの仕様を示すシーケンス図に含まれるインスタンスおよびメソッドの接続関係を抽出する接続関係抽出手順と、
前記接続関係をもとにして、メソッドの順序情報を含んだ木構造データを生成する木構造生成処理手順と、
既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、前記木構造生成処理手順で生成された木構造データに含まれるメソッドの順序情報と等しいメソッドの順序情報を含んだ木構造データを検索する検索手順と、
前記合致した木構造データに対応するソースコードを前記記憶装置から取得する取得手順と、
前記取得手順において取得したソースコードに含まれるインスタンスを、前記シーケンス図に対応するインスタンスに変換する変換処理手順と、
をコンピュータに実行させることを特徴とするソースコード作成支援プログラム。
【請求項２】
オブジェクト指向に基づいたソースコードの作成を支援するソースコード作成支援装置によるソースコード作成支援方法であって、
前記ソースコード作成支援装置が、
新規に作成するソースコードの仕様を示すシーケンス図に含まれるインスタンスおよびメソッドの接続関係を抽出する接続関係抽出工程と、
前記接続関係をもとにして、メソッドの順序情報を含んだ木構造データを生成する木構造生成処理工程と、
既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、前記木構造生成処理工程で生成された木構造データに含まれるメソッドの順序情報と等しいメソッドの順序情報を含んだ木構造データを検索する検索工程と、
前記合致した木構造データに対応するソースコードを前記記憶装置から取得する取得工程と、
前記取得工程において取得したソースコードに含まれるインスタンスを、前記シーケンス図に対応するインスタンスに変換する変換処理工程と、
を含んだことを特徴とするソースコード作成支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オブジェクト指向に基づいたソースコードの作成を支援するソースコード作成支援プログラムおよびソースコード作成支援方法に関するものであり、特に、既存のソースコードを再利用してプログラム開発の効率を向上させることができるにソースコード作成支援プログラムおよびソースコード作成支援方法に関するものである。
【背景技術】
【０００２】
近年、プログラム開発を効率化すべく、オブジェクト指向に基づいて、プログラムコードが作成されている。このオブジェクト指向では、データと処理とを１つのオブジェクトとして収め、このオブジェクトに処理を呼び起こすメッセージを送る形で、プログラムコードを記述する。
【０００３】
一方で、ユーザが所望するプログラムコードの仕様書などをもとに、仕様書に対応するプログラムコードを自動的に生成する試みもなされているが、プログラムコードを生成する処理ロジックが不完全であるために、ユーザが所望するプログラムコードの雛形程度しか生成することができなかった（例えば、特許文献１参照）。すなわち、完全なプログラムコードを生成するには、ユーザが簡易スクリプト言語などを用いて、プログラムコードを新たに書き足す必要があった。
【０００４】
この課題を解消するため、プログラムコードと、該プログラムコードの構成図とを関連付けて作成しておき、ユーザが構成図の編集を行うと、該構成図に対して行った編集が、対応するプログラムコードに反映され、新たなプログラムコードを生成可能とする技術が考案されている（例えば特許文献２参照）。なお、特許文献３では、プログラムコードに関する仕様書の整合性を自動的に管理する技術が公開されている。
【０００５】
【特許文献１】特開平１１−２１９２８７号公報
【特許文献２】特許第３２９９２５９号公報
【特許文献３】特開平１１−３２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、かかる従来の技術では、新規に生成しようとするプログラムコードと同等なプログラムコードを予め記述しておく必要があり、ユーザに対する負担が大きかった。
【０００７】
また、予め作成したプログラムコードの構造図に対応しない新たなプログラムコードを生成する場合には、構造図を編集して新規のプログラムコードを生成することができず、ユーザ自身が新たプログラムコードを作成する必要があり、プログラムコード作成の効率が悪かった。
【０００８】
本発明は、上述した従来技術の問題点を解消するためになされたものであり、ユーザの負担をなくし、効率よくプログラムコードを作成することができるソースコード作成支援プログラムおよびソースコード作成支援方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本発明は、オブジェクト指向に基づいたソースコードの作成を支援するソースコード作成支援プログラムであって、新規に作成するソースコードの仕様を示すシーケンス図をもとに、木構造データを生成する木構造生成手順と、既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、前記木構造生成手順において生成した木構造データと合致する木構造データを検索する検索手順と、前記合致した木構造データに対応するソースコードを前記記憶装置から取得する取得手順と、をコンピュータに実行させることを特徴とする。
【００１０】
また、本発明は、オブジェクト指向に基づいたソースコードの作成を支援するソースコード作成支援方法であって、新規に作成するソースコードの仕様を示すシーケンス図をもとに、木構造データを生成する木構造生成工程と、既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、前記木構造生成工程において生成した木構造データと合致する木構造データを検索する検索工程と、前記合致した木構造データに対応するソースコードを前記記憶装置から取得する取得工程と、を含んだことを特徴とする。
【００１１】
かかる発明によれば、新規に作成するソースコードの仕様を示すシーケンス図をもとに、木構造データを生成し、既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、生成した木構造データと合致する木構造データを検索し、合致した木構造データに対応するソースコードを記憶装置から取得するので、まったくゼロからソースコードを生成する必要性をなくし、シーケンス図を作成するだけで、所望するソースコードを自動的に生成することができるので、ユーザの負担をなくし、プログラム開発の効率を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明にかかるソースコード作成支援プログラムおよびソースコード作成支援方法の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、本実施の形態では、それぞれの機能を物理的に独立して構成したソースコード作成支援装置について説明を行うが、それぞれの機能をソフトウェアによって実現することでソースコード作成支援プログラムとして実施してもよい。
【００１３】
（実施の形態）
まず、本実施の形態に係るソースコード作成支援装置が行うプログラム再利用の概念について説明する。第１図は、本実施の形態に係るソースコード作成装置が行うプログラム再利用の概念を示す図である。なお、本実施の形態では、オブジェクト指向を利用して、プログラムコードを生成することになる。
【００１４】
本実施の形態に示すソースコード作成支援装置は、予め、既存のプログラムコードと、該プログラムコードの仕様を示すシーケンス図とを取得し、取得したシーケンス図をもとにして木構造データを生成し、木構造データとプログラムコードとを関連付けて記憶しておく。
【００１５】
ここで、木構造データとは、シーケンス図に含まれるインスタンスとメソッドとの接続関係を抽出し、メソッドの順序情報と、インスタンスの接続情報とをもとにして、生成されるデータである。また、インスタンスは、プログラム実行時に、クラスを型として生成されるものであり、メソッドは、各インスタンス間で行う手続きを示す。
【００１６】
そして、既存のプログラムコードを再利用して、新たなプログラムコードを生成する場合には、新たに生成するプログラムコードのシーケンス図を取得し、取得したシーケンス図をもとに木構造データに生成し、生成した木構造データと合致する木構造データを、予め生成しておいた木構造データから検索する。
【００１７】
そして、合致する木構造データに対応するプログラムコードを抽出し、抽出したプログラムコードに含まれるインスタンス名を新たなインスタンス名に置き換ることで、新たなプログラムコードを生成することができる。
【００１８】
次に、ソースコード作成支援装置の構成について説明する。第２図は、ソースコード作成支援装置１００の構成を示す機能ブロック図である。
【００１９】
同図に示すように、このソースコード作成支援装置１００は、入力受付部１１０と、出力部１２０と、制御部１３０と、記憶部１４０とを有する。
【００２０】
入力受付部１１０は、図示しないキーボードなどの入力装置からシーケンス図のデータや、プログラムコードなどを取得し、取得したシーケンス図のデータとプログラムコードとを制御部１３０に渡す。なお、入力受付部１１０は、シーケンス図のデータを所定のデータ構造に変換し（以下、シーケンス図データと表記する）、制御部１３０に渡す。
【００２１】
第３図は、シーケンス図データのリスト構造の一例を示す図である。同図に示すように、シーケンス図データは、インスタンスリスト２１０と、メソッド矢線リスト２２０とを含む。なお、２００は、シーケンス図データによって表示されるシーケンス図を示す。
【００２２】
インスタンスリスト２１０は、「左上座標」と、「幅」と、「高さ」と、「インスタンス情報」と、「ライフライン長」と、「ライフライン座標」とを含む。
【００２３】
ここで、「左上座標」は、インスタンスを表す箱２００ａの左上角の座標を示し、「幅」は、インスタンスを表す箱２００ａの幅を示し、「高さ」は、インスタンスを表す箱２００ａの高さを示す。
【００２４】
また、「インスタンス情報」は、インスタンスを表す箱２００ａに記録されたインスタンス名と該インスタンス名を含むクラス名とを示し、「ライフライン長」は、ライフライン２００ｂの長さを示し、「ライフライン座標」は、ライフライン２００ｂの頂点の座標を示す。
【００２５】
例えば、左端に存在するインスタンスの箱およびライフラインを示すインスタンスリストは、「左上座標」が「（ｘ１，ｙ１）」であり、「幅」が「ｗ１」であり、「高さ」が「ｈ１」であり、「インスタンス情報」が「ａ：Ｏｒｄｅｒ」であり、「ライフライン長」が「Ｌ１」であり、「ライフライン座標」が「Ｌｘ１，Ｌｙ１」であることを示す。なお、その他のインスタンスリストの説明は省略する。
【００２６】
次に、メソッド矢線リスト２２０の説明を行う。同図に示すように、メソッド矢線リスト２２０は、「開始点座標」と、「メソッド名」と、「長さ」と、「線種」と、「接続元クラス」と、「接続先クラス」とを含む。
【００２７】
ここで、「開始点座標」は、矢線２００ｃの左端の座標を示し、「メソッド名」は、矢線によって表されるメソッドの名前を示し、「長さ」は、矢線２００ｃの長さを示し、「線種」は、矢線２００ｃの線の種類を表し、「接続元クラス」は、矢線２００ｃの接続元のクラス名を示し、「接続先クラス」は、矢線２００ｃの接続先のクラス名を示す。
【００２８】
例えば、左端に存在する矢線のメソッド矢線リストは、「開始点座標」が「（ａ１，ｂ１）」であり、「メソッド名」が「ｒｅｃｉｅｖｅＯｒｄｅｒ」であり、「長さ」が「Ｉ１」であり、「線種」が「Ｓｏｌｉｄ」であり、「接続元クラス」が「なし」であり、「接続先クラス」が「ａ：Ｏｒｄｅｒ」であることを示す。なお、その他のメソッド矢線リストの説明は省略する。
【００２９】
出力部１２０は、制御部１３０からプログラムコードを受け取り、受け取ったプログラムコードを出力する。
【００３０】
制御部１３０は、木構造データの生成や、既存のプログラムコードを再利用して、新たなプログラムコードを生成する処理部であり、木構造変換処理部１３０ａと、マッチング処理部１３０ｂと、プログラム抽出処理部１３０ｃとを有する。
【００３１】
木構造変換処理部１３０ａは、入力受付部１１０からシーケンス図データとプログラムコードとを受け取り、受け取ったシーケンス図データを木構造データに変換する。そして、木構造変換処理部１３０ａは、プログラムコードと木構造データとをそれぞれプログラムコードデータ１４０ａおよび対象木構造データ１４０ｂとして記憶部１４０に記憶させる。
【００３２】
なお、木構造変換処理部１３０ａは、プログラムコードと木構造データとを記憶部１４０に記憶させる場合に、木構造データに、対応するプログラムコードが何処に記憶されたか特定するための特定情報（以下、プログラムコード特定情報と表記する）を添付する。
【００３３】
第４図は、木構造データのデータ構造の一例を示す図である。同図に示す木構造データは、プログラムコード特定情報領域と、メソッド名領域と、接続先クラス名領域と、ポインタ領域とを有する。以下、メソッド名領域、接続先クラス名領域およびポインタ領域をあわせてセルと表記する（なお、木構造データの先頭のセルには、プログラムコード特定情報領域が含まれる）。
【００３４】
ここで、プログラムコード特定情報領域は、プログラムコード特定情報を格納する領域であり、メソッド名領域は、メソッド名を格納する領域であり、接続先クラス名領域は、接続先のクラス名を格納する領域であり、ポインタ領域は、次の接続先となるセルのアドレスを格納している。なお、次の接続先が複数存在する場合には、ポインタ領域には複数のアドレスが格納される。
【００３５】
なお、第３図に示したシーケンス図データをもとに木構造データを生成すると、第５図の３００のようになり、木構造データ３００を図に示すと、３１０のように表すことができる。
【００３６】
また、木構造データ３００は、セル３００ａ〜３００ｄを含んでいる。セル３００ａのプログラムコード特定情報領域には「プログラムコード特定情報」が格納され、メソッド名領域には「ＲｅｃｉｅｖｅＯｒｄｅｒ」が格納され、接続先クラス名領域には「Ｏｒｄｅｒ」が格納され、ポインタ領域には「セル３００ｂの位置するアドレス」が格納される。
【００３７】
セル３００ｂのメソッド名領域には「ｃｒｅａｔｅＯｒｄｅｒ」が格納され、接続先クラス名領域には「Ｒｅｃｅｉｐｔ」が格納され、ポインタ領域には「セル３００ｃと３００ｄとが位置するアドレス」が格納される。
【００３８】
セル３００ｃのメソッド名領域には「ｇｅｔＣｕｓｔｏｍｅｒ」が格納され、接続先クラス名領域には「Ｃｕｓｔｏｍｅｒ」が格納される。なお、セル３００ｃのポインタ領域には、後に続くセルが存在しないため、データは格納されない。
【００３９】
セル３００ｄのメソッド名領域には「ｇｅｔＰｒｏｄｕｃｔ」が格納され、接続先クラス名領域には「Ｐｒｏｄｕｃｔ」が格納される。なお、セル３００ｄのポインタ領域もセル３００ｃと同様に、後に続くセルが存在しないため、データは格納されない。
【００４０】
また、木構造変換処理部１３０ａは、シーケンス図データのインスタンスに含まれるインスタンス名とクラス名とをもとに、各クラス名とインスタンス名との対応関係を表す対応テーブルを作成し、作成した対応テーブル１４０ｃを記憶部１４０に記憶させる。
【００４１】
第６図は対応テーブルの一例を示す図である。同図に示すように、対応テーブル１４０ｃは、クラス名とインスタンス名とからなる。
【００４２】
具体的には、クラス名「Ｏｒｄｅｒ」に対応するインスタンス名は「ａ」であり、クラス名「Ｒｅｃｅｉｐｔ」に対応するインスタンス名は「ｂ」であり、クラス名「Ｐｒｏｄｕｃｔ」に対応するインスタンス名は「ｃ」であり、クラス名「Ｃｕｓｔｏｍｅｒ」に対応するインスタンス名は「ｄ」であることを示す。この対応テーブルは、後述するプログラム抽出処理部１３０ｃによって利用される。
【００４３】
ところで、木構造変換処理部１３０ａは、既存のプログラムコードを再利用して、新たに生成するプログラムコードの仕様を示すシーケンス図データ（以下、生成シーケンス図データと表記する）を受け取った場合には、受け取った生成シーケンス図データを木構造データに変換し、変換した木構造データをマッチング処理部１３０ｂに渡し、生成シーケンス図データをプログラム抽出処理部１３０ｃに渡す。
【００４４】
マッチング処理部１３０ｂは、木構造変換処理部１３０ａから木構造データを受け取った場合に、受け取った木構造データと合致する木構造データを記憶部１４０の対象木構造データ１４０ｂから検索する。
【００４５】
具体的には、第７図に示すように、木構造変換処理部１３０ａから受け取った木構造データおよび対象木構造データ１４０ｂから取得した木構造データに含まれるセルの接続関係を解析し、各木構造データの各セルに対して識別番号を割り振る。
【００４６】
識別番号の割り振り手順は、木構造データの先頭のセルに識別番号「１」を割り振り、識別情報「１」が割り振られた次のセルに、識別番号「２」を割り振る。なお、同一層に複数のセルが繋がっている場合には、接続元のセルのポインタに含まれるアドレスが記録された順番に識別番号を割り振る。
【００４７】
例えば、第５図に示す木構造データ３００に対しては、セル３００ａ、セル３００ｂ、セル３００ｃ、セル３００ｄの順番に、識別番号１、２、３、４が割り振られる。
【００４８】
そして、識別番号が同一のセルに対してメソッド名および接続先クラス名が等しいかを順番に判断し、全てのセルのメソッド名および接続先クラス名が等しい場合に、木構造データが合致すると判断する。そして、合致した木構造データをプログラム抽出処理部１３０ｃに渡すことになる。
【００４９】
例えば、第８図に表される生成シーケンス図３５０に対応する木構造データ３６０は、第５図の木構造データ３００と合致することになるので、マッチング処理部１３０ｂは、木構造データ３００をプログラム抽出処理部１３０ｃに渡す。
【００５０】
プログラム抽出処理部１３０ｃは、マッチング処理部１３０ｂから、木構造データを取得し、該取得した木構造データに含まれるプログラムコード特定情報をもとに、木構造データに対応するプログラムコードをプログラムコードデータ１４０から検索する。
【００５１】
そして、プログラム抽出処理部１３０ｃは、検出したプログラムコードと、対応テーブル１４０ｃとをもとにして、プログラムコードに含まれるインスタンス名を新たなインスタンス名に置き換え、該置き換えたプログラムコードを出力部１２０に渡す。
【００５２】
例えば、プログラム抽出処理部１３０ｃが、木構造データ３００を受け取った場合には、木構造データ３００に含まれるプログラム特定情報から、木構造データ３００に対応するプログラムコード４００ｂ（第９図に示す）を抽出することができる。
【００５３】
そして、プログラム抽出処理部１３０ｃがプログラムコード４００ｂのインスタンス「ｂ」に対応するクラスを、対応テーブル１４０ｃをもとに検索すると、インスタンス「ｂ」に対応するクラスは、「Ｒｅｃｅｉｐｔ」であることが判明する。
【００５４】
したがって、第８図に示す生成シーケンス図データのクラス「Ｒｅｃｅｉｐｔ」のインスタンスは「ｙ」であるため、プログラム抽出処理部１３０ｃは、プログラムコード４００ａのインスタンスを「ｂ」から「ｙ」に変換し、新たなプログラムコード４００ｂを生成する。
【００５５】
すなわち、初めからプログラムコードを生成しなくても、新たに生成しようとするプログラムコードの仕様のシーケンス図を作成するだけで、シーケンス図に対応するプログラムコードを生成することができる。
【００５６】
なお、本実施の形態では詳しい説明は省略するが、木構造変換処理部１３０ａから受け取った木構造データに割り振った識別番号の数と、対象木構造データ１４０ｂから取得した木構造データに割り振った識別番号の数とが一致しない場合には、木構造データが合致しないと判断することになる。
【００５７】
次に、木構造変換処理部１３０ａが、予め、木構造データと木構造データに対応するプログラムコードとを記憶部１４０に記憶させる準備処理について説明する。第１０図は、準備処理の処理手順を示すフローチャートである。
【００５８】
第１０図に示すように、入力受付部１１０が、プログラムコードおよびシーケンス図を読み込み（ステップＳ１０１）、プログラムコードおよびシーケンス図データを、木構造変換処理部１３０ａに渡す（ステップＳ１０２）。
【００５９】
そして、木構造変換処理部１３０ａは、木構造変換処理を行い（ステップＳ１０３）、対応テーブルを作成し（ステップＳ１０４）、対応テーブルを記憶部１４０に記憶させる（ステップＳ１０５）。
【００６０】
そして、木構造変換処理部１３０ａは、プログラムコードを記憶部１４０に記憶させ（ステップＳ１０６）、プログラムコード特定情報を木構造データに追加し（ステップＳ１０７）、木構造データを記憶部１４０に記憶させる（ステップＳ１０８）。
【００６１】
次に、第１０図のステップＳ１０３で示した木構造変換処理について説明する。第１１図は、木構造変換処理の処理手順を示すフローチャートである。同図に示すように、木構造変換処理部１３０ａは、シーケンス図の最左かつ最上のメソッド矢線を検索し（ステップＳ２０１）、セルを生成し（ステップＳ２０２）、セルにメソッド名および接続先のクラス名を格納し（ステップＳ２０３）、矢線の接続元クラス名を記録する（ステップＳ２０４）。（上記説明では省略したが、木構造変換処理部１３０ａは、検索した矢線の接続元クラス名を記憶する）
【００６２】
そして、下方向最近傍の次の矢線を検索し（ステップＳ２０５）、矢線は存在するか否かを判断し（ステップＳ２０６）、矢線が存在しない場合には（ステップＳ２０６，Ｎｏ）、木構造変換処理を終了する。
【００６３】
一方、矢線が存在する場合には（ステップＳ２０６，Ｙｅｓ）、セルを生成し（ステップＳ２０７）、セルにメソッド名および接続先のクラス名を格納し（ステップＳ２０８）、直前の矢線に関する接続元クラス名と、現在の矢線に関する接続元クラス名とが同一か否かを判断する（ステップＳ２０９）。
【００６４】
直前の矢線に関する接続元クラス名と、現在の矢線に関する接続元クラス名とが同一でない場合には（ステップＳ２０９，Ｎｏ）、直前に作成したセルのポインタに、現在のセルのアドレスを格納し（ステップＳ２１０）、記録した矢線の接続元クラス名を現在の矢線の接続元クラス名に更新し（ステップＳ２１１）、ステップＳ２０５に移行する。
【００６５】
一方、直前の矢線に関する接続元クラス名と、現在の矢線に関する接続元クラス名とが同一の場合には（ステップＳ２０９，Ｙｅｓ）、呼び出し元のセルのポインタに、現在のセルのアドレスを追加し（ステップＳ２１２）、ステップＳ２１１に移行する。
【００６６】
次に、新たに生成するプログラムコードのシーケンス図をもとに、プログラムコードを生成するプログラム生成処理について説明する。第１２図は、プログラム生成処理の処理手順を示すフローチャートである。同図に示すように、入力受付部１１０が、シーケンス図を読み込み（ステップＳ３０１）、シーケンス図データを木構造変換処理部１３０ａに渡し（ステップＳ３０２）、木構造変換処理部１３０ａが、木構造変換処理を行い（ステップＳ３０３）、木構造データをマッチング処理部１３０ｃに渡す（ステップＳ３０４）。
【００６７】
そして、マッチング処理部１３０ｃは、マッチング処理を行い（ステップＳ３０５）、合致する木構造データが存在するか否かを判定し（ステップＳ３０６）、合致する木構造データが存在しない場合には（ステップＳ３０６，Ｎｏ）、処理を終了する。
【００６８】
一方、合致する木構造データが存在する場合には（ステップＳ３０６，Ｙｅｓ）、マッチング処理部１３０ｃは、合致した木構造データをプログラム抽出処理部１３０ｃに渡し（ステップＳ３０７）、プログラム抽出処理部１３０ｃは、合致した木構造データに対応するプログラムコードを検索し（ステップＳ３０８）、対応テーブルをもとに、プログラムコードのインスタンス名を置き換え（ステップＳ３０９）、出力部１２０にプログラムコードを渡し（ステップＳ３１０）、出力部１２０は、プログラムコードを出力する（ステップＳ３１１）。
【００６９】
ここで、第１２図のステップＳ３０３で示した木構造変換処理は、第１１図で示した木構造変換処理と同様であるので、説明を省略する。
【００７０】
次に、第１２図のステップＳ３０５で示したマッチング処理について説明する。第１３図は、マッチング処理の処理手順を示すフローチャートである。同図に示すように、マッチング処理部１３０ｂは、対象木構造データ１４０ｂから木構造データを取得し（ステップＳ４０１）、木構造データに識別番号を割り振り（ステップＳ４０２）、セル選択処理を行い（ステップＳ４０３）、各メソッド名および接続先クラス名は等しいか否かを判定する（ステップＳ４０４）。
【００７１】
各メソッド名および接続先クラス名が等しい場合には（ステップＳ４０４，Ｙｅｓ）、木構造データに含まれる全てのセルを選択したか否かを判定し（ステップＳ４０５）、木構造データに含まれる全てのセルを選択していない場合には（ステップＳ４０５，Ｎｏ）、ステップＳ４０３に移行し、木構造データに含まれる全てのセルを選択した場合には（ステップＳ４０５，Ｙｅｓ）、一致する木構造データが存在すると判断する（ステップＳ４０６）。
【００７２】
一方、各メソッド名および接続先クラス名が等しくない場合には（ステップＳ４０４，Ｎｏ）、全ての木構造データに対してマッチングを行ったか否かを判定し（ステップＳ４０７）、全ての木構造データに対してマッチングを行っていない場合には（ステップＳ４０７，Ｎｏ）、対象木構造データ１４０ｂから次の木構造データを取得し（ステップＳ４０８）、ステップＳ４０２に移行する。
【００７３】
一方、全ての木構造データに対してマッチングを行った場合には（ステップＳ４０７，Ｙｅｓ）、一致する木構造データが存在しないと判断する（ステップＳ４０９）。
【００７４】
次に、第１３図のステップＳ４０３に示したセル選択処理について説明する。第１４図は、セル選択処理の処理手順を示すフローチャートである。同図に示すように、マッチング処理部１３０ｂは、木構造変換処理部１３０ａから受け取った木構造データおよび対象木構造データ１４０ｂから取得した木構造データに含まれるセルを始めて選択するか否かを判定し（ステップＳ５０１）、セルを始めて選択する場合には（ステップＳ５０１，Ｙｅｓ）、識別番号「１」に対応するセルをそれぞれ選択する（ステップＳ５０２）。
【００７５】
一方、セルを選択するのが始めてでない場合には（ステップＳ５０１，Ｎｏ）、対象木構造データ１４０ｂから新たに木構造データを取得したか否かを判定し（ステップＳ５０３）、対象木構造データから、新たに木構造データを取得した場合には（ステップＳ５０３，Ｙｅｓ）、対象木構造データ１４０ｂから以前取得した古い木構造データを、新たに取得した木構造データに変換し（ステップＳ５０４）、ステップＳ５０２に移行する。
【００７６】
一方、対象木構造データから、新たに木構造データを取得していない場合には（ステップＳ５０３，Ｎｏ）、前回選択した識別番号の次の識別番号に対応するセルをそれぞれ選択する（ステップＳ５０５）。
【００７７】
上述してきたように、本実施の形態に係るソースコード作成支援プログラムは、木構造変換処理部１３０ａが、生成シーケンス図データをもとに木構造データを生成し、マッチング処理部１３０ｂが、生成した木構造データに合致する木構造データを対象木構造データ１４０ｂから検索し、プログラム抽出処理部１３０ｃが、合致した木構造データのプログラムコード特定情報から、対応する既存のプログラムコードを取得し、取得したプログラムコードのインスタンス名を、生成シーケンス図データに対応するインスタンス名に置き換えるので、まったくゼロからプログラムコードを生成する必要性をなくし、シーケンス図を作成するだけで、プログラムコードを生成することができるので、プログラムコードの生産性を向上させることができる。
【００７８】
また、シーケンス図を作成するだけで、シーケンス図に対応するプログラムコードが自動的に生成されるので、スクリプト言語の文法の知識がないユーザでも、容易にプログラムコードを生成することができる。
【００７９】
なお、本実施の形態では、ソースコード作成支援装置１００について説明したが、このソースコード作成支援装置１００を有する構成をソフトウェアによって実現することで、同様の機能を有するソースコード作成支援プログラムを得ることができる。そこで、このソースコード作成支援プログラムを実行するコンピュータシステムについて説明する。
【００８０】
第１５図は、本実施の形態に係るソースコード作成支援プログラムを実行するコンピュータシステムを示す図である。同図に示すように、このコンピュータシステム５００は、本体部５０１と、本体部５０１からの指示により表示画面５０２ａに情報を表示するディスプレイ５０２と、このコンピュータシステム５００に種々の情報を入力するためのキーボード５０３と、ディスプレイ５０２の表示画面５０２ａ上の任意の位置を指定するマウス５０４と、ＬＡＮ５０６または広域エリアネットワーク（ＷＡＮ）に接続するＬＡＮインタフェースと、公衆回線５０７に接続するモデム５０５とを有する。ここで、ＬＡＮ５０６は、他のコンピュータシステム（ＰＣ）５１１、サーバ５１２、プリンタ５１３などとコンピュータシステム５００とを接続している。
【００８１】
また、第１６図は、第１５図に示した本体部５０１の構成を示す機能ブロック図である。同図に示すように、この本体部５０１は、ＣＰＵ５２１と、ＲＡＭ５２２と、ＲＯＭ５２３と、ハードディスクドライブ（ＨＤＤ）５２４と、ＣＤ−ＲＯＭドライブ５２５と、ＦＤドライブ５２６と、Ｉ／Ｏインタフェース５２７と、ＬＡＮインタフェース５２８とを有する。
【００８２】
そして、このコンピュータシステム５００において実行されるソースコード作成支援プログラムは、フロッピィディスク（ＦＤ）５０８、ＣＤ−ＲＯＭ５０９、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬型記憶媒体に記憶され、これらの記憶媒体から読み出されてコンピュータシステム５００にインストールされる。そして、インストールされた動画配信プログラムは、ＨＤＤ５２４に記憶され、ＲＡＭ５２２、ＲＯＭ５２３などを利用してＣＰＵ５２１により実行される。
【００８３】
以上説明したように、本発明によれば、新規に作成するソースコードの仕様を示すシーケンス図をもとに、木構造データを生成し、既存のソースコードと、該既存のソースコードに対応する木構造データとを少なくとも記憶した記憶装置から、生成した木構造データと合致する木構造データを検索し、合致した木構造データに対応するソースコードを記憶装置から取得するので、まったくゼロからソースコードを生成する必要性をなくし、シーケンス図を作成するだけで、所望するソースコードを自動的に生成することができるので、ユーザの負担をなくし、プログラム開発の効率を向上させることができる。
【産業上の利用可能性】
【００８４】
以上のように、本発明にかかるソースコード作成支援プログラムおよびソースコード作成支援方法は、既存のソースコードを利用して、効率よくソースコードを作成する必要のあるオブジェクト指向に基づいたプログラム開発システムなどに適している。
【図面の簡単な説明】
【００８５】
【図１】第１図は、本実施の形態に係るソースコード作成装置が行うプログラム再利用の概念を示す図である。
【図２】第２図は、ソースコード作成支援装置の構成を示す機構ブロック図である。
【図３】第３図は、シーケンス図のリスト構造の一例を示す図である。
【図４】第４図は、木構造データのデータ構造の一例を示す図である。
【図５】第５図は、第３図に示したシーケンス図データをもとに生成された木構造データを示す図である。
【図６】第６図は、対応テーブルの一例を示す図である。
【図７】第７図は、各木構造データのセルに対する識別番号の割り振りを説明するための図である。
【図８】第８図は、生成シーケンス図と生成シーケンス図の木構造データを示す図である。
【図９】第９図は、プログラムコードのインスタンス名の変換を説明するための図である。
【図１０】第１０図は、準備処理の処理手順を示すフローチャートである。
【図１１】第１１図は、木構造変換処理の処理手順を示すフローチャートである。
【図１２】第１２図は、プログラム生成処理の処理手順を示すフローチャートである。
【図１３】第１３図は、マッチング処理の処理手順を示すフローチャートである。
【図１４】第１４図は、セル選択処理の処理手順を示すフローチャートである。
【図１５】第１５図は、本実施の形態に係るソースコード作成支援プログラムを実行するコンピュータシステムを示す図である。
【図１６】第１６図は、第１５図に示した本体部５０１の構成を示す機能ブロック図である。
【図１】
0004616829.tif 000002
【図２】
0004616829.tif 000003
【図３】
0004616829.tif 000004
【図４】
0004616829.tif 000005
【図５】
0004616829.tif 000006
【図６】
0004616829.tif 000007
【図７】
0004616829.tif 000008
【図８】
0004616829.tif 000009
【図９】
0004616829.tif 000010
【図１０】
0004616829.tif 000011
【図１１】
0004616829.tif 000012
【図１２】
0004616829.tif 000013
【図１３】
0004616829.tif 000014
【図１４】
0004616829.tif 000015
【図１５】
0004616829.tif 000016
【図１６】
0004616829.tif 000017