JP2005285055A - オブジェクト指向言語におけるプログラム生成方法 - Google Patents

オブジェクト指向言語におけるプログラム生成方法 Download PDF

Info

Publication number
JP2005285055A
JP2005285055A JP2004102104A JP2004102104A JP2005285055A JP 2005285055 A JP2005285055 A JP 2005285055A JP 2004102104 A JP2004102104 A JP 2004102104A JP 2004102104 A JP2004102104 A JP 2004102104A JP 2005285055 A JP2005285055 A JP 2005285055A
Authority
JP
Japan
Prior art keywords
class
temporary
name
program
class name
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.)
Pending
Application number
JP2004102104A
Other languages
English (en)
Inventor
Makoto Kimura
誠 木村
Kiyoshi Yamaguchi
潔 山口
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004102104A priority Critical patent/JP2005285055A/ja
Publication of JP2005285055A publication Critical patent/JP2005285055A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】
オブジェクト指向のプログラム開発言語では、個々の機能を提供するメソッドと、関連性の高いメソッドを組み合わせたクラスにより構成されるため、実行単位がクラスとなる。係る従来の方法で生成したメソッド単位のプログラムを実行するには、予め各メソッドを何らかのクラスに所属させる必要がある。
【解決手段】
本発明のプログラム生成及び結合システム101では、オブジェクト指向のコンピュータプログラムのクラス及びメソッドの包含関係を定義したクラス構成定義表102を用いて、仮のクラス名称を生成し、該仮クラス名称を本来のクラス名及びメソッド名に対応付けて仮クラス名対応表104に登録して、仮クラスのプログラムソースコードを生成する。
【選択図】 図1

Description

本発明は、オブジェクト指向言語を使用した開発におけるプログラム生成及び結合方法に関し、特に、メソッドを単体で実行可能とするための仮クラス群生成方法と、仮クラス群を本来のクラスに自動的に結合するクラス結合方法に関する。
非オブジェクト指向言語では、実行単位はメソッドであり、これを対象としたプログラム開発方法では、メソッド単位で開発を分担することにより、並行開発及び単体テストが可能である。また、特開平8−202539号公報に示されるような、非オブジェクト指向言語を対象としたプログラム生成方法を用いることにより、メソッド単位でプログラムを生成することが可能である。
特開平8−202539号公報
しかし、近年利用が盛んなオブジェクト指向のプログラム開発言語では、個々の機能を提供するメソッドと、関連性の高いメソッドを組み合わせたクラスにより構成されるため、実行単位がクラスとなる。係る従来の方法で生成したメソッド単位のプログラムを実行するには、予め各メソッドを何らかのクラスに所属させる必要がある。スケルトンソースコードに予めクラス宣言文及び宣言終了文を記述しておくなどの方法で、既にクラスに所属した状態のメソッドを個別に生成することは可能であるが、係る従来の方法ではクラスとメソッドの包含関係を考慮しておらず、開発完了後に、予め定めた設計通りになるよう、各メソッドを手作業でクラス単位に再結合する必要がある。
また、メソッドの結合操作は、設計どおりの包含関係を形成するように正確に行う必要があり、また、定義文の重複除去などの付帯手順が多く、手作業で行った場合、誤りの混入を避けることが難しい。また、業務システムなどの大規模システムにおいてはクラス及びメソッドの数は膨大であり、手作業による結合は大幅な工数の増加に繋がる。本発明の目的は、オブジェクト指向言語において、各メソッドがどのクラスに属するものであるかを機械的に認識し、自動的に適切なクラスに結合する手段を提供し、誤りの混入無く、かつ即時に、前記操作を実行可能とすることである。
上記課題を解決するために、本発明のプログラム生成及び結合する発明(方法およびシステム)は、 (1)事前準備するクラスとメソッドの包含関係情報を格納するクラス構成定義表と、(2)前記クラス構成定義表を参照し仮クラス名及び仮クラス群のソースコードの生成を行い仮クラス名対応表へ仮クラス名を登録するプログラム生成装置と、(3)前記生成された仮クラス名を格納する仮クラス名対応表及び前記生成された仮クラス群のソースコードを格納する開発作業用情報格納領域と、(4)前記開発作業用情報格納領域を参照し結合済みクラスソースコードを生成するプログラム結合装置を含むことを特徴とする。プログラム生成の基本的手段としては、従来の非オブジェクト指向言語用のプログラム生成手段を利用し、1クラスが1メソッドのみを含む構造でプログラム生成を行う。すなわち、メソッド本体の前後に挿入されるスケルトンコードに、予めクラス宣言及び宣言終了に相当する文を記述しておく。この、1クラスが1メソッドのみを含む構造のクラスを仮クラスと呼ぶ。仮クラスは、生成後各開発者に分配する。開発者は仮クラスを使用することで、開発対象メソッドを個別に、単体で実行しながら並列開発を行うことができる。並列開発を行った後、仮クラスを再度一箇所に収集し、機械的に結合する。以下、その処理手順について説明する。
プログラム生成装置は、従来の方法を使用し、クラス構成定義表及びプログラム定義情報やスケルトンソースコードなど必要となるその他の情報から、(1)各メソッドに対し個別に仮クラス名を生成し、(2)各仮クラスに各メソッドを所属させ、仮クラス群のプログラムを生成し、(3)生成した仮クラス名を仮クラス名対応表に記録する。
クラス構成定義表は、どのクラスがどのメソッドを含むかという情報を予め定義するものである。表現形式としては2次元表や木形式などが考えられるが、機械的に参照可能なものであればどのような形式でも良い。例として2次元表とした場合、あるクラスAに、二つのメソッドB,Cが含まれることを表現するには、A,B及びA,Cの2行を書き込む。これにより、どのクラスがどのメソッドを含むかという包含関係を記述することができる。
仮クラス群を生成するために、プログラム生成装置はクラス構成定義表を参照し、各メソッドに対応するクラス名を、一意の仮クラス名に書き換える。後に仮クラス群を、仮クラス名をもとに本来のクラスに結合するために、仮クラス名は、他と重複してはならない。仮クラス名の一意性を確保する方法の一例として、クラス名とメソッド名を結合して仮クラス名とし、さらに該クラス名が既に仮クラス名対応表に登録済みかどうか検査し、登録済みの場合は連番を加える方法や、乱数文字列を使用する方法が挙げられるが、開発者が仮クラス名から元のクラス名およびメソッド名を認識し易い点から前者ような方法が望ましいと考えられる。
次に、各メソッドに対応するクラス名を、本来のクラス名から、前記生成した仮クラス名に書き換えてプログラム生成を実行する。その結果、メソッドをただ1つ含む仮クラスが複数生成される。また、仮クラス名を、本来のクラス名及びメソッド名と対にし、仮クラス名対応表に記憶保存することで、これを参照するプログラム結合装置により、仮クラス群を自動的に本来の名称のクラスに結合することを可能とする。
生成された各仮クラスは任意の手段で各開発者に分配し、開発を完了した後収集し、前記仮クラス群として再登録する。
プログラム結合装置は、仮クラス群を自動的に本来の名称のクラスに結合する。まず、結合処理を行うクラス名を入力装置より入力する。仮クラス名対応表より、該クラス名に対応する全ての仮クラス名を検索し、該仮クラス名を持つ仮クラスからメソッド本文や宣言文など、必要な文を全て読み込み、結合済みクラスへ出力する。必要な文は使用する言語により異なるが、例として、メソッド本文、import宣言文が必要となる言語のものを用いて説明する。各部分の範囲を認識する方法の一例として、前記プログラム生成装置で各部分を生成する際に前後に挿入した開始コメント及び終了コメントを参照し、これらで囲まれた部分を抽出する方法が考えられる。抽出した内容は一旦一時記憶領域に蓄え、import宣言文など、同一の文が繰り返されてはならないものについてはプログラム結合装置内で重複を除去し、結合済みクラスに出力する。以上の手段により上記の課題を解決している。
以上述べたように、本発明により、オブジェクト指向言語を用いた開発において、プログラム生成装置に、各メソッドに対して一意の仮クラス名を与え、該仮クラス名を記憶保存する手段を追加し、プログラム結合装置よりこれを参照することで、開発完了後に各メソッドを自動的に適切なクラスに結合することが可能となる。また、従来技術の流用により、各メソッドを個別の仮クラスに包含した状態で生成し、これらを単体で実行することが可能である。よって、オブジェクト指向言語を用いた開発においても、メソッド単位での並列開発を行うことが可能となり、開発速度及び品質が向上する。
以下、本発明の実施の形態を、メソッド本文、import宣言文が必要となる言語を対象とした実施例に基づき詳細に説明する。
図1は、本発明の一実施形態に係るプログラム生成及び結合システムの構成を示すブロック図である。
プログラム生成及び結合システム101は、クラス構成定義表102及びプログラム生成装置103及び仮クラス名対応表104及び仮クラス群105及びプログラム結合装置110及び結合済みクラス群112及びプログラム定義情報108及びスケルトンソースコード109及びimport文バッファ113及びメソッド定義部バッファ114を含む。また、プログラム結合装置110に対し処理対象クラス名及び処理実行指示を与えるための入力装置111を備える。
クラス構成定義表102は前記クラスとメソッドの包含関係を予め定義する表であり、プログラム生成装置103より参照される。図2はクラス構成定義表102の構造の一例である。表は2つの列、クラス名201とメソッド名202を持ち、例えばクラス名が「クラス1」203、メソッド名が「メソッドA」204であった場合、メソッドAがクラス1に含まれることを表す。
プログラム生成装置103は仮クラス群105を生成して記録し、同時に仮クラス名対応表104に、生成した仮クラス名と本来のクラス名及びメソッド名を対にして書き込む。
仮クラス名対応表104の構造の一例を図3に示す。表は、3つの列、クラス名301とメソッド名302と仮クラス名303を持ち、例えばクラス名が「クラス1」304、メソッド名が「メソッドA」305、仮クラス名が「クラス1_メソッドA」306ならば、仮クラス「クラス1_メソッドA」に含まれる「メソッドA」は、最終的に「クラス1」に属するメソッドであることを表す。
スケルトンソースコード109は、半完成状態のプログラムソースコードが複数格納されている領域であり、プログラム生成装置103が呼び出す従来のプログラム生成方法より参照される。
プログラム定義情報108は、クラス構成定義表102に記述された各メソッドに対するスケルトンソースコードの組み合わせや個別情報などが格納されている領域であり、プログラム生成装置103が呼び出す従来のプログラム生成方法より参照される。
import文バッファ113の構造の一例を図4に示す。該バッファは、複数の仮クラスを本来の名称を持つ1クラスに結合するにあたり、import文の重複を取り除くための作業領域として用いる。行番号401及びimport文402の2つの列を持ち、行番号は先頭行から順に連番となる。import文列にはimport文本体が格納される。
メソッド定義部バッファ114の構造の一例を図5に示す。該バッファは、複数のメソッド本文を一時保存しておき、import部出力完了後に、メソッド本文定義部として一括出力するための一時保存領域として用いる。行番号501及びメソッド本文502の2つの列を持ち、行番号は先頭行から順に連番となる。メソッド本文列にはメソッド本文が格納される。
開発作業領域106は、プログラム生成及び結合システム101とは別の、開発者個別の作業領域である。開発者は、仮クラス群105から、自己の開発作業領域106に、開発対象とする仮クラス107を取り出して開発を行う。
開発者はまず、クラス構成定義表102にクラス及びメソッドの包含関係を記述し、該メソッドの定義情報をプログラム定義情報108に定義する。
次に、プログラム生成装置103を動作させ、仮クラス名対応表104と仮クラス群105を生成する。図6にプログラム生成装置103の処理手順概要を示す。また、生成される仮クラスのソースコードの一例を図9に示す。
以降の手順を、クラス構成定義表の各行毎に繰り返す(601)。
まず、仮クラス名の生成及び登録を実行する(602〜607)。前記クラス構成定義表102より、クラス名及びメソッド名を一時変数Class及びMethodに取り出す(602)。また、仮クラス名の重複が検出された場合に仮クラス名に付加する連番を空に初期化する(603)。Class及びMethodをアンダーバーにより結合しさらに連番を結合する(604)、仮クラス名とする。該仮クラス名が、既に仮クラス名対応表に登録済みであるかどうか検査を行う(605)。既に登録済みである場合は、連番を増加し(606)、仮クラス名の生成をやり直す(604)。この時、連番は空から始まり、以降1,2,3…と増加していく。Class及びMethod及び該仮クラス名を対として、仮クラス名対応表104に行を追加する(607)。
次に仮クラスの生成を実行する(608〜615)。
該仮クラス名をファイル名として、新規ファイルをオープンする(608)。
プログラム結合装置110がプログラムソースコードの各部分を認識するための手がかり情報として、プログラムソースコードの各区切り部分にコメントを追加する。
まず、import部開始を表す規定のimport部開始コメント行901をファイルに出力(609)してから、Methodに必要なimport部902を従来のプログラム生成方法を呼び出すことで生成しファイルに出力する(610)。このプログラム生成方法を呼び出す手続きは、プログラム定義情報108及びスケルトンソースコード109を参照し、与えられたクラス名及びメソッド名のプログラムソースコードを生成する。ここで、「仮クラス名::Method」は、クラス名が仮クラス名であるクラスに、メソッド名がMethodであるメソッドが属する状態を表す。その後、import部終了を表す規定のimport部終了コメント行903をファイルに出力する(611)。
メソッド本文905についても同様に、メソッド本文定義部開始を表す規定のメソッド本文定義部開始コメント904をファイルに出力(612)してから、メソッド本文905を生成しファイルに出力する(613)。その後、メソッド本文定義部終了コメント行906をファイルに出力する(614)。最後にファイルをクローズ(615)して、仮クラスの生成を終了する。
以上の手順を、クラス構成定義表102の各行毎に繰り返す(616)ことで、該表に定義された全てのメソッドに対して仮クラス名の生成と登録、及び仮クラスの生成を行う。
生成される仮クラスのソースコードは、import部開始コメント901及びimport部902及びimport部終了コメント903及びメソッド定義部開始コメント904及びメソッド定義部905及びメソッド終了コメント906及びそれ以外の部分からなる。
開発者は、仮クラス群105から任意の仮クラス107を、開発者個別の任意の開発作業領域106へ取り出し、開発を行う。開発完了後、開発者は開発の完了した仮クラス107をプログラム生成及び結合システム101の仮クラス群105に書き戻す。ここで、この処理を、開発者からの入力に従って、コンピュータ装置が実行する。
ある1クラスに属するメソッドが全て開発完了した段階で、入力装置111より該クラス名を入力しプログラム結合装置110を起動する。プログラム結合装置110は、仮クラス名対応表104より、入力されたクラス名に対応する全ての仮クラス名及び本来のメソッド名を検索し、仮クラス群105より該仮クラス名を持つ仮クラスを取得し本来のクラス名を持つ結合済みクラス112として結合する。図7にプログラム結合装置110の処理手順概要を示す。また、生成される結合済みクラスソースコード112の一例を図10に示す。
まず、入力装置111より処理対象とするクラス名を入力する(701)。次に、import文バッファ113及びメソッド定義部バッファ114を空にする(702)。
結合済みクラス112を保存するために、クラス名をファイル名として新規ファイルをオープンする(703)。
以降、仮クラス名対応表104の全行について、1行ごとに繰り返す(704)。
仮クラス名対応表104のある行について、仮クラス名及びクラス名及びメソッド名を一時変数FileName、Class、Methodに取り出す(705)。もしClassが入力されたクラス名と等しければ、同行に示されている仮クラス名は結合すべきメソッドを含んでいるので(706)、仮クラスソースコード読み込み処理ルーチン(図8)に対し、該仮クラス名を渡し、仮クラス中からimport宣言部及びメソッド本文定義部をimport文バッファ113及びメソッド定義部バッファ114へ読み込む(707)。以上の処理を、仮クラス名対応表104の全行について、1行ごとに繰り返す(708)。仮クラス名対応表104の全行について処理を完了したら、まずimport文バッファの内容を結合済みクラス112へ出力する(709)。次に、結合済みクラス名Classを用いてクラス宣言文1002を作成し結合済みクラス112へ出力する(710)。次に、メソッド定義部結合済みクラス112へ出力する(709及び710)。最後に、結合済みクラス112をファイルクローズし、結合処理を完了する(711)。
図8に、前記仮クラスソースコード読み込み処理ルーチンの処理手順概要を、図9に読み込み対象とする仮クラスのソースコードの一例を示す。
該ルーチンは、引数として処理対象とする仮クラス名すなわちプログラムソースコードのファイル名を受け取る(801)。該ファイル名のファイルを読み込みオープンする(802)。次にまず、import部902の読み込みを行う。import部開始コメント行901を検索する(803)。該行を発見後、次の行から1行ごとに、import部終了コメント行903を読込むまで繰り返す(804)。読み込んだ行が既にimport文バッファ113に登録されているかどうか検査及び判断を行い(805)、登録されていなければ、該行をimport文バッファ113に追加する(806)。以上の手順を、import部終了コメント行903を読込むまで繰り返す(807)。
次に、メソッド部905の読み込みを行う。
メソッド部開始コメント行904を検索する(808)。該行を発見後、次の行から1行ごとに、メソッド部終了コメント行906を読込むまで、読み込んだ行をメソッド定義部バッファ114に追加する(809から811)。
最後に、仮クラスのファイルをクローズし(812)、呼出元へリターンする(813)。
結合済みクラスソースコード112は、import宣言部1001及びクラス宣言文1002及びあるメソッドの定義部1003が及びクラス宣言終了文1004からなる。import宣言部1001に含まれるimport文は、プログラム結合装置の手順804から807により、重複が除去された状態となる。クラス宣言文1002はクラス構成定義表102に定義された本来のクラス名304、すなわち入力装置111より入力された処理対象クラス名で作成される。メソッド定義部1003は、該クラスに所属する全てのメソッドについて存在する。
上述の実施の形態においては、プログラム結合装置が仮クラス内の各部分を認識するための手がかり情報として、プログラム生成装置により開始及び終了コメントを出力し、プログラム結合装置よりこれを参照したが、プログラム結合装置により詳細に仮クラスのソースコードを構文解析し、各部分を認識する方法を採っても良い。
また、上述の実施の形態では、メソッド本文、import宣言文が必要となる言語としてあげたが、C++言語など、他のオブジェクト指向言語にも同様に本発明を利用できる。
本発明によれば、コンピュータ装置を用いて容易にプログラムを作成することが可能になり、ソフトウエア開発業において、利用が可能である。
本発明の一実施例であるプログラム生成装置及びプログラム結合装置のブロック図を示したものである。 クラス構成定義表の構造の一例を示したものである。 仮クラス名対応表の構造の一例を示したものである。 import文バッファの構造の一例を示したものである。 メソッド定義部バッファの構造の一例を示したものである。 プログラム生成装置の処理手順について概略をフローチャートで示したものである。 プログラム結合装置の処理手順について概略をフローチャートで示したものである。 プログラム結合装置の処理手順のうち、仮クラスのソースコード読み込み手順概略についてフローチャートで示したものである。 仮クラスのソースコードの一例を示したものである。 結合済みクラスのソースコードの一例を示したものである。
符号の説明
101 プログラム生成及び結合システムの範囲
102 クラス構成定義表
103 プログラム生成装置
104 仮クラス名対応表
105 仮クラス群
106 開発作業領域
107 開発中の仮クラス
108 プログラム定義情報
109 スケルトンソースコード
110 プログラム結合装置
111 入力装置
112 結合済みクラス
113 import文バッファ
114 メソッド定義部バッファ

Claims (1)

  1. オブジェクト指向言語のコンピュータプログラムのプログラムソースコードを生成するオブジェクト指向言語におけるプログラム生成方法において、
    前記オブジェクト指向のコンピュータプログラムのクラス及びメソッドの包含関係を定義した定義表を記憶装置に予め記憶しておき、
    前記定義表からクラス中の各メソッドが一時的に属する仮のクラス名称を生成し、
    該仮クラス名称を本来のクラス名及びメソッド名に対応付けて仮クラス名対応表に登録し、
    前記仮クラス名称をもつ仮クラスに対応するメソッドを一時的に該仮クラス内に移動し、
    仮クラスのプログラムソースコードを生成するオブジェクト指向言語におけるプログラム生成方法。
JP2004102104A 2004-03-31 2004-03-31 オブジェクト指向言語におけるプログラム生成方法 Pending JP2005285055A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004102104A JP2005285055A (ja) 2004-03-31 2004-03-31 オブジェクト指向言語におけるプログラム生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004102104A JP2005285055A (ja) 2004-03-31 2004-03-31 オブジェクト指向言語におけるプログラム生成方法

Publications (1)

Publication Number Publication Date
JP2005285055A true JP2005285055A (ja) 2005-10-13

Family

ID=35183322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004102104A Pending JP2005285055A (ja) 2004-03-31 2004-03-31 オブジェクト指向言語におけるプログラム生成方法

Country Status (1)

Country Link
JP (1) JP2005285055A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304998A (ja) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304998A (ja) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム

Similar Documents

Publication Publication Date Title
JPH02109127A (ja) 仕様処理方法
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
CN116860949B (zh) 问答处理方法、装置、系统、计算设备及计算机存储介质
Ferdowsifard et al. LooPy: interactive program synthesis with control structures
JP4874277B2 (ja) 自動テスト実行システム
JP2005285055A (ja) オブジェクト指向言語におけるプログラム生成方法
US11556317B2 (en) Instruction translation support method and information processing apparatus
JP6502044B2 (ja) データ解析装置、データ解析方法、および、プログラム。
JP6116983B2 (ja) エントリーポイント抽出装置
JP2009193488A (ja) ソフトウェアテスト項目編集支援装置およびソフトウェアテスト項目編集支援方法
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
KR102661819B1 (ko) 시간적 관계정보의 컨텍스트 이해를 위한 오픈 도메인 정보 활용 방법
JP2008071065A (ja) インライン展開を行うコンパイル装置、方法、プログラム、記憶媒体
JP2007164708A (ja) 変換データ生成装置、データ変換システム、及びこれらの方法並びにそのプログラム
CN117348887A (zh) 一种代码压缩方法、装置、设备及存储介质
JPS63257038A (ja) 原始プログラム変換における対応識別情報付加方式
JP2000207226A (ja) コ―ド最適化装置、言語処理装置及びコ―ド最適化方法
JPS59231649A (ja) コンパイルリスト出力処理方式
CN116521443A (zh) 数据修改方法、系统、终端设备及计算机可读存储介质
JP2002073347A (ja) 例外処理方法及びコンパイラ
JP2006126886A (ja) 文短縮用知識の学習装置、文短縮装置、機械翻訳装置および文短縮のためのコンピュータプログラム
CN112650680A (zh) 基于抽象语法树的冗余变量和冗余方法的检测方法及系统
JP2008077329A (ja) データベースアクセス設計情報解析システム
JP3063297B2 (ja) 言語処理プログラム作成装置
JPH04209029A (ja) 並列処理プログラム翻訳処理装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424