JPH05197534A - プログラムデータベースシステム - Google Patents

プログラムデータベースシステム

Info

Publication number
JPH05197534A
JPH05197534A JP4029897A JP2989792A JPH05197534A JP H05197534 A JPH05197534 A JP H05197534A JP 4029897 A JP4029897 A JP 4029897A JP 2989792 A JP2989792 A JP 2989792A JP H05197534 A JPH05197534 A JP H05197534A
Authority
JP
Japan
Prior art keywords
program code
program
relationship
database
definition
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
JP4029897A
Other languages
English (en)
Other versions
JP3144022B2 (ja
Inventor
Hiroshi Hayata
宏 早田
Norihisa Doi
範久 土居
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox 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 Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP04029897A priority Critical patent/JP3144022B2/ja
Publication of JPH05197534A publication Critical patent/JPH05197534A/ja
Application granted granted Critical
Publication of JP3144022B2 publication Critical patent/JP3144022B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【目的】オブジェクト指向プログラム言語で記述された
プログラムのファイルの中の全ての定義ごとの木目の細
かいレベルでの再利用を可能とするプログラムデータベ
ースシステムを提供する。 【構成】 オブジェクト指向プログラム言語により記述
されたプログラムコードを管理し格納するプログラムデ
ータベースシステムにおいて、入力されたプログラムコ
ードから、プログラムコード構成要素と該プログラムコ
ード構成要素の間の関係を示す関係情報とを抽出するデ
ータ保存処理手段と、抽出されたプログラムコード構成
要素およびその関係情報をデータベースの管理単位デー
タとして格納するデータベース格納手段と、関係情報に
従って関係するプログラムコード構成要素を取り出し、
複数のプログラムコード構成要素から成るプログラムコ
ードを出力するプログラムコード出力処理手段とを具備
する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムデータベー
スシステムに関し、特に、オブジェクト指向プログラム
ミング言語により記述されたプログラムコードのプログ
ラム構成要素を容易に再利用可能なように管理して保存
するプログラムデータベースシステムに関するものであ
る。
【0002】
【従来の技術】従来からソフトウェアの開発には、その
生産性と品質を同時に向することが求められている。こ
のため、近年、コンピュータを用いてソフトウェアの生
産性と品質との向上を支援するCASE(Computer Aid
ed Software Engineering)の研究開発および実用化が、
進められて来ている。このようなCASEの研究開発に
かかわらず、従来から既存のプログラムに再利用によ
り、ソフトウェアの生産性と品質との向上を計ること
は、広く知られた手法である。このため、ソフトウェア
部品化,様々な部品の個別ツールの開発などが従来から
行なわれており、開発されたソフトウェア部品,ツール
などは、共通利用を図かるため、データベースシステム
としてプログラムコードのデータを管理するシステムも
開発されるに至っている。このようなプログラム,プロ
グラムコードなどのソフトウェア部品のデータベース構
築例として、例えば、特開平2−278335号報公報
に記載の「データベース生成支援方法」,特開平3−1
00728号公報に記載の「ソフトウェア管理システ
ム」などのシステム例が挙げられる。
【0003】この特開平2−278335号報公報に記
載の「データベース生成支援方法」では、プログラムの
データベース化に関して、データべース化されていない
既存のソフトウェアのファイル,その中のデータ項目な
どを整理し、統合し、データベースシステムに変換する
作業全体を一貫して支援する方法、または、既存ソフト
ウェアの解析によりデータディクショナリを作成し、該
ディクショナリを利用して、保守が容易な形式に既存ソ
フトウェアを変換する方法などにより、データベースの
方法を効率的に支援する方法を提案している。
【0004】また、特開平3−100728号公報に記
載されている「ソフトウェア管理システム」では、ファ
イル単位でソフトウェアを管理し、ファイルの日付や容
量などのファイル属性として、プログラムのデータベー
スを管理するシステム例が提案されている。
【0005】このように、ソフトウェア開発の効率を向
上させるため、CASEの分野においては、プログラム
に関するデータベースシステムの構築が重要な課題とな
っている。これまでのCASEの分野におけるデータベ
ースの利用方法の総括的な考え方に関しては、例えば、
文献1;「川越恭二他“オブジェクト指向データベース
とCASE”,情報処理 Vol.32 No.5,pp.577〜585,M
ay, 1991」で詳しく紹介されている。
【0006】上述のように、ソフトウェアの生産性と品
質との向上を計るため、プログラムの再利用を行うこと
は、広く知られた方法であるが、このためには、プログ
ラム再利用のための支援ツールなどの環境が十分に用意
されていなければならない。ところで、オブジェクト指
向プログラム言語に関しては、オブジェクト指向プログ
ラム言語の特性から、本来的にそのプログラムの再利用
を支援する機能が言語内に含まれていることは、例え
ば、文献2;「福永洋一他“オブジェクト指向言語での
プログラミング環境”,情報処理 Vol.29 No.4,pp.335
〜343,April, 1988」で指摘されているところである。
【0007】また、オブジェクト指向の考え方に基づく
ソフトウェアエンジニアリング支援環境に関する提案の
一例として、文献4;「沢田篤史,他“ソフトウェアエ
ンジニアリングデータベースKyotoDB核のプロトタイ
ピング”,情報処理学会第41回(平成2年後期)全国大
会予稿集,pp5-343〜5-344,1990」に記載されているシ
ステムの提案がある。ここでは、CASEの分野におい
てオブジェクト指向の考え方でのデータベースの利用シ
ステムについて紹介されており、このデータベースの利
用システムにおいては、ソフトウェア構成要素をオブジ
ェクトベースとして管理し、それらに対するアクセスの
メソッドが提供される。このソフトウェア構成要素の基
本単位はプロジェクト構成員(ソフトウェア作成者)1
人が担当する作業において作成されるドキュメントとな
っている。KyotoDB核には、ソフトウェア構成要素の
間の意味的な「関係」として、上流のソフトウェア構成
要素から下流への導出理由などをプロジェクト構成員が
記述しておき、この「関係」をソフトウェア構成要素の
1つとして管理することにより、例えば、要求仕様の変
更が下流に及ぼす影響の追跡を容易にし、効率の良いソ
フトウェアの保守,再利用が可能になる。このように、
ドキュメントの基本単位を構造化されたデータとして扱
うことにより、それらの間の関係もデータベースのデー
タとして保持する考え方が提案されている。
【0008】
【発明が解決しようとする課題】ところで、上述の従来
の技術で説明した特開平2−278335号公報に記載
の「データベース生成支援方法」では、ソフトウェアの
データベース化の支援の対象は、ファイルの属性やファ
イルや中のファイルレコードの名称や属性,構造などで
あり、これらをデータベースで扱い易いように正規化し
て、データベースシステムで管理している。このため、
ここでのデータベース生成支援方法では、プログラムを
解析し、その解析情報がデータベースの手法で管理され
るが、データ管理される解析情報は、ファイル単位の情
報ならびにファイル中のファイルレコード(データの構
造定義)の名称や属性,構造などである。そのため、フ
ァイルの中の全ての情報に関して、データ管理されてお
らず、任意のプログラム部品を検索したり、取り出す機
能が提供されるに至っていない。また、データべースで
管理されるファイルレコードは単純な属性の集合という
構造のみの定義が可能であるため、その構造に基づく検
索は非常に制限されたものとなっている。
【0009】また、前述の特開平3−100728号公
報の記載のソフトウェア管理システムは、前述のシステ
ムと同様に、ソフトウェフの管理をファイル単位でのデ
ータ管理で行うため、ファイルの中の個々のデータ(関
数やタイプなどの定義)レベルでのデータ管理は行なわ
れていない。そのため、プログラムのコードデータを再
利用するためには、ファイル単位でのデータ検索を用
い、ファイル単位で再利用することになる。オブジェク
ト指向プログラム言語においては、クラスや関数定義は
1つのファイルの中に複数存在し、また、各々の定義の
間の関係はファイルをまたがって存在するため、オブジ
ェクト指向プログラムでプログラムを記述するユーザ
が、クラスや関数定義などのプログラムコードを再利用
する場合には、ファイル単位でのプログラムデータの管
理は不適切である。
【0010】オブジェクト指向の考え方により構築され
ている前述の文献4のデータベースシステムにおいて
は、ソフトウェア構成要素が関係を持つ構造化されたデ
ータであるとして、データ管理を行っているが、ここで
のデータ単位(ソフトウェア構成要素の基本単位)はド
キュメントであり、ドキュメント単位でのデータ管理と
なっている。ドキュメント単位のデータ管理では、ドキ
ュメントの中の個々のデータ(ドキュメントがプログラ
ムコードの場合、関数やタイプなどの定義)レベルでの
データ管理は行なわれず、そのため、ドキュメント単位
での構造の構築,関係付け,検索しか行なうことができ
ない。
【0011】このように、上述の従来の技術において
は、いずれのシステム例も、ソフトウェアの生産性と品
質との向上を計るために、既存のプログラムの再利用を
推進するようにしており、再利用の推進のためにデータ
ベースシステムを利用する。しかし、データベースシス
テムを構築する場合、データベースで管理するデータの
単位や構造として、どのようなものを与えるかで、再利
用の単位や検索条件の指定方法が決まってくる。システ
ムの提供する再利用の単位が大きかったり、検索条件の
指定方法が大きな単位のものでしかない場合、その単位
より、更に細か目のレベルで必要なものを得るために
は、ユーザはシステムの提供する再利用の単位での絞り
込みの後に、必要とするレベルでの内容を検討する必要
がある。
【0012】特に、オブジェクト指向プログラム言語に
関しては、本来的にクラス定義を中心としてプログラム
コードの再利用を支援しており、オブジェクト指向プロ
グラム言語でプログラムを記述するユーザは、クラス定
義を中心としたプログラムコードの再利用可能なプログ
ラミング環境を必要としている。すなわち、ユーザにと
っては、ファイルの中の定義ごとの要素についての再利
用が必要であり、システムは、ファイルの中の定義ごと
の決めの細かいレベルでの再利用を可能とすることが、
オブジェクト指向プログラム言語のプログラムデータベ
ースの構築には重要な課題となっている。本発明は、こ
のような課題を解決するためになされたものである。
【0013】本発明の第1の目的は、オブジェクト指向
プログラム言語で記述されたプログラムのファイルの中
の全ての定義ごとの木目の細かいレベルでの再利用を可
能とするプログラムデータベースシステムを提供するこ
とにある。
【0014】また、本発明の第2の目的は、オブジェク
ト指向プログラム言語で記述されたプログラムのファイ
ルの中の全ての定義ごとの細かいレベルでの再利用を可
能とするプログラムデータベースの構築について、プロ
グラムデータの保存においてユーザに負荷をかけないこ
と、また、プログラムデータの取出しにおいてユーザは
円滑な再利用ができることを可能とするプログラムデー
タベースシステムを提供することにある。
【0015】
【課題を解決するための手段】上記目的を達成するた
め、本発明によるプログラムデータべースシステムにお
いては、第1の特徴として、オブジェクト指向プログラ
ム言語により記述されたプログラムコードを管理し格納
するプログラムデータベースシステムにおいて、入力さ
れたプログラムコードから、プログラムコード構成要素
と該プログラムコード構成要素の間の関係を示す関係情
報とを抽出するデータ保存処理手段(2;図1)と、抽
出されたプログラムコード構成要素およびその関係情報
をデータベースの管理単位データとして格納するデータ
ベース格納手段(6;図1)と、関係情報に従って関係
するプログラムコード構成要素を取り出し、複数のプロ
グラムコード構成要素から成るプログラムコードを出力
するプログラムコード出力処理手段(4;図1)とを具
備することを特徴とする。
【0016】ここでのプログラムコード構成要素(7;
図1)は、オブジェクト指向プログラム言語により記述
されたプログラムコードのクラス定義,変数定義,およ
び関数定義を含む各定義毎の構成要素であり、関係情報
(8;図1)は、各定義の構成要素の間の関係を示す情
報である。関係情報は、オブジェクト指向プログラム言
語の構成要素間の構造から決まる関係、各々の構成要素
の間の振る舞いから決まる関係を指示する情報であり、
利用関係,呼出し関係,継承関係,集約関係,または構
成関係の関係特性を示す情報を含む。
【0017】また、本発明によるプログラムデータべー
スシステムは、第2の特徴として、オブジェクト指向プ
ログラム言語により記述されたプログラムコードを管理
し格納するプログラムデータベースシステムにおいて、
入力されたプログラムコードから、クラス定義を含む各
定義毎のプログラムコード構成要素と、これらの各プロ
グラムコード構成要素の間の関係を示す関係情報とを抽
出するデータ保存処理手段(2;図2)と、プログラム
コード構成要素および関係情報をデータベースの管理単
位データとして格納するデータベース格納手段(4;図
2)と、指定された検索条件から検索対象のプログラム
コード構成要素を検索するプログラムコード検索手段
(31;図3)と、前記プログラムコード検索手段によ
り検索されたプログラムコード構成要素からその関係情
報に従って対応する複数のプログラム構成要素を取り出
し、複数のプログラムコード構成要素から構成されるプ
ログラムコードを出力するプログラムコード出力手段
(32;図3)とを具備することを特徴とする。
【0018】また、更に本発明によるプログラムデータ
べースシステムは、第3の特徴として、オブジェクト指
向プログラム言語により記述されたプログラムコードを
管理するプログラムデータベースシステムにおいて、入
力されたプログラムコードから、クラス定義を含む各定
義毎のプログラムコード構成要素と、これらの各プログ
ラムコード構成要素の間の関係を示す関係情報とを抽出
するデータ保存処理手段(2;図1)と、前記プログラ
ムコード構成要素および関係情報をデータベースの管理
単位データとして格納するデータベース格納手段(6;
図1)と、取り出すプログラムコード構成要素を含んで
いる関係情報に従ってプログラムコードを検索するプロ
グラムコード検索手段(3;図1)と、プログラムコー
ド構成要素のデータベースへの格納時および取り出すプ
ログラムコード構成要素の検索時の少なくとも一方で、
当該プログラムコード構成要素が他のプログラムコード
構成要素との間でルールに違反しないか否かを判断する
非矛盾性判断手段(5;図1)と、前記プログラムコー
ド検索手段により検索された複数のプログラムコード構
成要素を組合せ、前記非矛盾性判断手段の結果によりプ
ログラムコード構成要素の非矛盾性を保証したプログラ
ムコード単位を出力するプログラムコード出力処理手段
(4;図1)とを具備することを特徴とする。
【0019】
【作用】上述のような各々の特徴を有する本発明のプロ
グラムデータべースシステムにおいて、オブジェクト指
向プログラム言語により記述されたプログラムをデータ
ベース化して管理し格納する場合、データ保存処理手段
(2;図1)が、入力されたプログラムのプログラムコ
ードから、プログラムコード構成要素と該プログラムコ
ード構成要素の間の関係付けている関係情報とを抽出す
る。抽出されたプログラムコード構成要素および関係情
報は、データベース格納手段(4;図1)が、例えば、
オブジェクト指向データベース管理システムによるデー
タベース操作機能により、オブジェクト指向プログラム
言語のプログラム構造に合せて、データベースを構築し
てデータ管理を行う。ここでは、データベースに保存す
るプログラムコード構成要素,関係情報などを特有の各
々のデータベースキーマに従って、データベースの管理
単位データとして、データベースに格納する。
【0020】また、プログラムコードを当該データベー
スから取り出す場合、検索条件の指示により所望のプロ
グラムコード構成要素の定義の特性,属性などを指示す
ることにより、プログラムコード検索手段(3;図1)
が、条件に合うプログラム構成要素を取り出し、また、
関係情報に従って関係するプログラムコード構成要素を
取り出す検索処理を行い、複数のプログラムコード構成
要素から成るプログラムコードを出力する。このプログ
ラムコード構成要素(7;図1)は、オブジェクト指向
プログラム言語の構成要素の各々の定義に対応してお
り、例えば、プログラムコードの構成要素のクラス定義
を含む各定義の要素となっている。関係情報(8;図
1)は、各構成要素の間の関係を示す情報であり、関係
情報は、オブジェクト指向プログラム言語の構成要素間
の構造から決まる関係、各々の構成要素の間の振る舞い
から決まる関係などを指示する情報が用いられる。例え
ば、利用関係,呼出し関係,継承関係,集約関係,また
は構成関係などの関係を示す情報となっている。
【0021】このように、ユーザがプログラムコードを
保存する場合は、プログラムデータベースシステムで
は、そのプログラムコードを解析し、オブジェクト指向
プログラム言語としての定義ごとのプログラムコード構
成要素(クラス定義や関数定義などの定義)を切り出し
て、プログラムコード構成要素として記述してある各々
の定義ごと関係(継承関係や呼出し関係など)に基づい
て、このプログラムコード構成要素の間の関係を構築す
る。そして、この解析で得られた全てのプログラムコー
ド構成要素,プログラムコード構成要素間の関係情報を
データベースの管理単位データとして保存する。このよ
うに、プログラムコードのデータベースへの保存処理で
は、プログラムコード構成要素の分解,分解したプログ
ラムコード構成要素のデータベース化などの処理は、シ
ステム側が一連の処理を行うので、ユーザは特別な情報
を与える必要はなく、負荷はかからない。
【0022】また、本発明で第2の特徴としているプロ
グラムデータべースシステムにおいては、データ保存処
理手段(2;図2)が、入力されたオブジェクト指向プ
ログラム言語のプログラムコードから、クラス定義を含
む各定義毎のプログラムコード構成要素とこれらの各プ
ログラムコード構成要素の間の関係を示す関係情報とを
抽出する。データベース格納手段(4;図2)では、デ
ータ保存処理手段により抽出されたプログラムコード構
成要素および関係情報をデータベースの管理単位データ
として格納する。プログラムコードを当該データベース
から取り出す場合、プログラムコード検索手段(31;
図3)が、指定された検索条件から検索対象のプログラ
ムコード構成要素の関係を含んでいる関係情報に従って
プログラムコード構成要素を検索すると、プログラムコ
ード出力手段(32;図3)がプログラムコード検索手
段により検索された複数のプログラムコード構成要素か
らその関係情報に従って、対応のプログラムコード構成
要素を取り出し、必要とされる複数のプログラムコード
構成要素を構成する要素データ(クラス定義など)を組
合せてプログラムコードとして出力する。
【0023】これにより、ユーザがソフトウェア開発に
おいてプログラムを作成する際、必要な部品を取り出す
ために既存のプログラムコードを検索する場合におい
て、既に作成してある既存のプログラムコード構成要素
の名前,関係などを指示することにより、これらを検索
条件として検索を行う。この検索では、検索されたプロ
グラムコード構成要素と共に、当該プログラムコード構
成要素に関係する他のプログラムコードも、ここでの関
係情報により同時に検索され、取り出される。このよう
なプログラムコード構成要素の名前や関係に基づく検索
の演算ならびに条件判定関数は、当該プログラムデータ
ベースシステムが提供するので、ユーザは必要な部品を
容易に特定することが可能となる。この際、再利用する
既存のプログラムコード構成要素が、他のプログラムコ
ード構成要素と特定の関係を有しており、その関係から
必要な部品をまとめて取り出す必要のある場合、当該プ
ログラムコード構成要素と関係する関係情報を辿ること
により、システムがその部品と関連するその他の必要な
部品を辿ってまとめて取り出す。これにより、ユーザ
は、プログラムコードを再利用する場合においても特別
な配慮を行うことなく、プログラムコードを円滑に再利
用することが可能となる。
【0024】更に、本発明で第3の特徴としているプロ
グラムデータべースシステムにおいては、オブジェクト
指向プログラム言語により記述されたプログラムコード
を管理し格納する場合、データ保存処理手段(2;図
1)が、入力されたプログラムコードから、クラス定義
を含む各定義毎のプログラムコード構成要素とこれら各
プログラムコード構成要素の間の関係を示す関係情報と
を抽出すると、データベース格納手段(6;図1)が、
プログラムコード構成要素および関係情報をデータベー
スの管理単位データとして格納する。また、所望のプロ
グラムコードを取り出す場合、プログラムコード検索手
段(3;図1)が、取り出すプログラムコード構成要素
を含んでいる関係情報に従ってプログラムコードを検索
する。この場合、更に、非矛盾性判断手段(5;図1)
が、プログラムコード構成要素のデータベースへ格納時
および取り出すプログラムコード構成要素の検索時の少
なくとも一方で、当該プログラムコード構成要素が他の
プログラムコード構成要素との間でルールに違反しない
か否かを判断する。その後、プログラムコード出力処理
手段(4;図1)が、プログラムコード検索手段により
検索された複数のプログラムコード構成要素を組合せ、
非矛盾性判断手段の結果によりプログラムコード構成要
素の非矛盾性を保証したプログラムコード単位を出力す
る。
【0025】このように、ここでのプログラムデータベ
ースシステムにおいては、ユーザはプログララムの保存
時、またはプログラムの取り出し時に、プログラムのデ
ータがプログラムコードとして正しいことを保証するこ
とができる。これは、非矛盾性判断手段(5;図1)
が、例えば、コンパイラ機能と同様なプログラム整合性
検査機能により、オブジェクト指向プログラム言語とし
て守らなければならないルール(名称の衝突など)に基
づいて、データベースの管理単位のデータの間におい
て、これから保存するプログラムコードと既に保存され
ているプログラムコードでの矛盾を検出する。また、デ
ータベースから取り出すプログラムコード間での矛盾を
検出することにより、プログラムコード構成要素の間で
の非矛盾性を判別する。このような非矛盾性の判別によ
り、このプログラムコードとしてデータの正しさを保証
することができ、ユーザはプログラムコードを特別な配
慮を行うことなく、円滑に再利用できる。このため、プ
ログラムコードの再利用性が向上し、ソフトウェアの生
産性の品質との向上を計ることができる。
【0026】
【実施例】以下、本発明の一実施例を図面により具体的
に説明する。図1は、本発明の一実施例にかかるプログ
ラムデータベースシステムの要部の構成を示すブロック
図である。図1において、1はプログラムデータベース
システム、2はデータ保存処理部、3はデータ検索処理
部、4はデータ管理部、5はプログラムコード非矛盾性
判断部、6はオブジェクト指向データベース管理システ
ム、7はプログラムコード構成要素のデータベース格納
部、8は関係情報のデータベース格納部である。また、
9は保存対象のプログラムコード、10は必要なプログ
ラムコードを検索する条件となる検索条件、11は再利
用のための取り出したプログラムコードをそれぞれ示し
ている。
【0027】プログラムデータべースシステム1は、プ
ログラムコードを保存し管理するデータベースシステム
であり、ここでは、特に、データベース化して保存し管
理する対象のデータをオブジェクト指向プログラム言語
により記述されたプログラムコードデータと限定してい
る。データ保存処理部2は、データベースとして保存す
るために、入力されたプログラムコード9から、プログ
ラムコード構成要素と該プログラムコード構成要素の間
の関係を示す関係情報とを抽出し、プログラムコードを
データベース化し、データ保存するための前処理を行
う。また、データ検索処理部3は、保存されたプログラ
ムコードデータを取り出す場合に、関係情報に従って関
係するプログラムコード構成要素群を検索し、指定した
条件を満足するプログラムコード構成要素を出力する。
この時、関係情報に従って、取り出されるプログラムコ
ード構成要素と共に必要とされる複数のプログラムコー
ド構成要素を出力する。
【0028】データ管理部4は、オブジェクト指向デー
タベース管理システム6の上に構築されたプログラムコ
ードデータの格納部であり、ここでは、データ保存処理
部2で抽出されたプログラムコード構成要素およびその
間の関係情報を、オブジェクト指向データベース管理シ
ステム6のデータベース操作機能を用い、データベース
スキーマに従ったデータベースの管理単位データとして
格納し保存する。データベース化されたプログラムコー
ド構成要素およびその関係情報の各情報は、データベー
ス格納部7およびデータベース格納部8にそれぞれ格納
される。
【0029】また、プログラムコード非矛盾性判断部5
は、プログラムコード構成要素のデータベースへの格納
時、取り出すプログラムコード構成要素を検索する時の
少なくとも一方で、当該プログラムコード構成要素が他
のプログラムコード構成要素との間でルールに違反しな
いか否かを判断する。なお、このシステム構成のブロッ
ク図においては、プログラムコード非矛盾性判断部5を
データ管理部4に含まれるシステム要素としているが、
プログラムコード非矛盾性判断部5によるルール違反の
判断処理は、プログラムコード構成要素のデータベース
への格納時、または、取り出すプログラムコード構成要
素を検索する時の少なくとも一方で行うこととしている
ので、データ保存処理部2またはデータ検索処理部3の
システム要素に含ませるようにしてもよい。ここでの例
では、以下の実施例の説明で、このプログラムコード非
矛盾性判断部5の処理を、データ保存処理部2またはデ
ータ検索処理部3のシステム要素に含ませた構成として
説明する(後述する図2および図3による説明)。
【0030】プログラムデータベースシステム1におい
ては、ユーザはプログララムの保存時、またはプログラ
ムの取り出し時に、プログラムコードの非矛盾性の判断
処理を行い、プログラムのデータがプログラムコードと
して正しいことを保証する。この非矛盾性の判断処理の
技術は、ここでは詳細には説明しないが、例えば、コン
パイラ機能と同様なプログラム整合性検査機能により、
オブジェクト指向プログラム言語として守らなければな
らないルール(名称の衝突など)に基づいて、データベ
ースに対して、これから保存するプログラムコード構成
要素と既に保存されているプログラムコード構成要素と
の間での矛盾を検出する。
【0031】ここでのオブジェクト指向プログラム言語
として満足しなければならないルールとしては、例え
ば、少なくとも次のような〜のルールにより、プロ
グラムコード構成要素の間の最低限の非矛盾性を判断す
る。すなわち、 複数のクラス定義や大域変数定義,マクロ定義は、同
じ名前とならない。 関数の多重定義は、overload宣言がある場合のみ可能
である。 クラス名,関数名,大域変数名は互いに衝突しない。 クラスの継承関係はサイクリックとならない。 継承関係をもつクラスでのメンバ変数は再定義はでき
ない。 の各ルールにより、プログラムコードを構成している各
々のプログラムコード構成要素の各々の定義の間の最低
限の非矛盾性を判断する。
【0032】また、データベースからプログラムコード
を取り出す際に、その構成要素の間での矛盾を検出する
ことにより、このプログラムコードとしてデータの正し
さを保証することができ、ユーザはプログラムコードを
特別な配慮を行うことなく、円滑に再利用できる。この
ため、プログラムコードの再利用性が向上し、ソフトウ
ェアの生産性の品質との向上を計ることができる。
【0033】ところで、データ管理部4に保存され管理
される各々のプログラムコード構成要素(以下単に構成
要素という)は、後に詳しく説明するが、オブジェクト
指向プログラム言語により記述されたプログラムコード
のクラス定義,変数定義,および関数定義を含む各定義
毎の構成要素であり、関係情報は、各定義の間の関係属
性を示す情報である。この関係情報は、例えば、利用関
係,呼出し関係,継承関係,集約関係,または構成関係
などの各構成要素の間の関係特性を示す情報であり、関
係情報は、オブジェクト指向プログラム言語の構成要素
間の構造から決まる関係、各々の構成要素の間の振る舞
いから決まる関係などの関係属性から設定される。
【0034】このようなプログラムデータベースシステ
ム1に対して、ユーザがプログラムの保存を行う場合、
保存対象のプログラムコード9は、ユーザによって、デ
ータ保存処理部2を通してプログラムデータベースシス
テム1に保存される。また、プログラムを取り出す場合
は、ユーザが必要なプログラムコードの条件を検索条件
10としてデータ検索処理部3に与えることにより、プ
ログラムデータベースシステム1から再利用するプログ
ラムコード11を取り出すことができる。保存されたプ
ログラムコードのデータは、オブジェクト指向データベ
ース管理システム6の上に構築されたデータ管理部4で
管理される。
【0035】図2は、プログラムデータベースシステム
を構成するデータ保存処理部の詳細構成を処理ブロック
の流れで説明するブロック図である。図2を参照してデ
ータ保存処理部2における処理の動作を説明すると、デ
ータ保存処理部2は、プログラムコードの保存が依頼さ
れた場合に起動され、処理を開始する。まず、処理ブロ
ック21において、ファイルに記述されたプログラムコ
ードを定義ごとの構成要素に分解し、次の処理ブロック
22において、そのプログラムコード内での各々の構成
要素の間の関係を構築する。次に、処理ブロック24に
おいて、この分解された構成要素ならびに当該構成要素
の間の関係が、データ管理部4の管理下で既にデータベ
ースにおいて保存され管理されている構成要素群27,
関係情報28の各データと矛盾しないことをデータ管理
部4に対し問い合わせを行う。この問い合わせの結果、
もし、矛盾が生じていると、処理ブロック25におい
て、ユーザに対して既存データとの間で矛盾が生じてい
ることを連絡する。これに対して、ユーザはデータの矛
盾に関する情報26を得ることにより、プログラムコー
ドの各々の構成要素の間のデータの矛盾を解消する処理
などを行い、次に行うベき処理をシステム側に指示す
る。
【0036】また、処理ブロック24におけるデータ管
理部4に対する問い合わせの処理において、構成要素群
27ならびに構成要素間の関係情報28が、既に保存さ
れているデータ管理部4における各データと矛盾しない
ならば、処理ブロック23において、解析した構成要素
群ならびに当該構成要素の間の関係情報を、データベー
スのデータとして、保存し管理することをデータ管理部
4に依頼する。なお、このような一連のプログラムコー
ドの保存処理において、上述のような矛盾の発生を検出
しても、ユーザが許可することにより、強制的に当該プ
ログラムコード構成要素ならびにプログラムコード構成
要素の間の関係情報の保存および管理をデータ管理部4
に対して依頼することもできる。
【0037】図3は、プログラムデータベースシステム
を構成するデータ検索処理部の詳細構成を処理の流れで
説明するブロック図である。図3を参照してデータ保存
処理部3における処理の動作を説明する。
【0038】データ検索処理部3は、プログラムコード
の取り出しが依頼された場合に起動され、処理を開始す
る。処理ブロック31においては、ユーザからの必要な
プログラムコードの条件の検索条件10の指定のもと
に、データ管理部4に問い合わせを行い、その結果とし
て、指定条件を満足する構成要素の集合の情報34をユ
ーザに返す。この処理を検索条件10を変えて繰り返し
行い、必要とするプログラムコード構成要素の集合が得
られ、ユーザが或るプログラムコード構成要素の利用を
決めた場合、次の処理ブロック32に対して当該プログ
ラムコードの構成要素群の取り出しを依頼する。処理ブ
ロック32においては、取り出し依頼を受けると、関係
情報により条件を満足するプログラムコードが必要とす
る構成要素群の取り出す処理を行う。すなわち、取り出
しを依頼された当該構成要素の利用の上で、他に必要な
構成要素群を、当該プログラムコードの構成要素の間の
関係情報を基にデータ管理部4に取り出しを依頼する。
取り出されたプログラムコードの構成要素群は出力ファ
イル35に記録される。そして次の処理ブロック33に
おいて、取り出したプログラムコードの構成要素群の間
で、オブジェクト指向プログラム言語で記述されたプロ
グラム言語として矛盾が発生しているかを検出し、矛盾
が発生している場合に、そのデータの矛盾に関する情報
36をユーザに通知する。
【0039】次にプログラムデータベースにおけるデー
タ構造およびデータ管理について説明する。図4は、プ
ログラムデータベースシステムを構成するデータ管理部
の要部の詳細構成を説明するブロック図であり、図4を
参照してデータ管理部4における処理の動作と共に、そ
のデータベースのデータ構造について説明する。
【0040】データ管理部4においては、処理ブロック
41が、データベース操作を行うための基本データとし
て、プログラムコードの各定義の構成要素における属性
を、各構成要素ごとに、その名前やコード、他の構成要
素と間の関係など、データベースのデータ構造の要素デ
ータとして、データベーススキーマで定義し、オブジェ
クト指向データベース管理システム6に与える。これに
より、処理ブロック42が、データ保存処理部2または
データ検索処理部3からのそれぞれのデータベース操作
要求をデータベーススキーマに基づくデータベース操作
要求フォーマットに変換し、変換したデータベース操作
要求をオブジェクト指向データベース管理システム6に
与えて、ここでのデータベースとして保存し管理するデ
ータであるプログラムコードの構成要素,関係情報など
の管理単位データ(データベース格納部7およびデータ
ベース格納部8の各データ)の操作を行う。
【0041】このようなオブジェクト指向プログラム言
語で記述されたプログラムコードの構成要素を、管理単
位データとして管理するプログラムデータベースにおい
ては、データベースの管理対象のデータが、オブジェク
ト指向プログラム言語のクラス定義および関数定義など
の定義ごとに分割した各々の定義要素となる。したがっ
て、ここでのオブジェクト指向データベース管理システ
ム6においては、このようなプログラムコードの構成要
素に対して、データベースの管理対象データとするた
め、構成要素の名前,構成要素の定義コード,構成要素
の作成者,構成要素の作成日,構成要素の構造から決ま
る関係,構成要素の振る舞いから決まる関係などを管理
データとして、デーテベーススキーマでそのデータ構造
を定めてデータ管理を行う。
【0042】本実施例のプログラムデータベースシステ
ムにおいては、上述のようにプログラムコードの構成要
素のデータを、そのままデータベースでの管理データと
して保存管理するため、オブジェクト指向データベース
管理システム6が、そのデータベースデータ保存処理の
ためツールとして機能する。データ保存処理部2が、管
理対象データであるファイル形式のプログラムコードを
解析し、プログラムコードをクラス定義,関数定義など
の定義ごとに分割すると、次にオブジェクト指向データ
ベース管理システム6が、前述のように、予じめ定めら
れたデータベースキーマに従い、プログラムコードの構
成要素の名前,構成要素の定義コード,構成要素の作成
者,構成要素の作成日,構成要素の構造から決まる関
係,構成要素の振る舞いから決まる関係などの管理デー
タを生成し、当該プログラムコードの構成要素のクラス
定義などデータを、データベース化して管理する。
【0043】この実施例では、データベース機能を提供
するオブジェクト指向データベース管理システム6が、
通常のプログラムのコードデータ,一般のデータなどを
対象とせず、管理するプログラムコードを、オブジェク
ト指向プログラム言語で記述されたプログラムに限定し
て、システムが構築されている。このように、限定され
たプログラムコードに対応して、所定のデータベースス
キーマを定めて、オブジェクト指向データベース管理シ
ステム6を構成することにより、プログラムコードの保
存を容易に行うことができ、また、プログラムコードの
検索が容易に行える。
【0044】次に、オブジェクト指向データベース管理
システム6におけるデータベースのデータ構造について
具体的に説明すると、前述のように、データ保存処理部
2がプログラムコードをプログラムコード構成要素に分
解する場合、分解した単位がデータベースにおけるデー
タ管理単位となる。ここでは、データ保存処理部2にお
いて、ファイル単位のプログラムコードは、クラス定
義,メンバ関数定義,メンバ変数定義,タイプ定義,関
数定義,大域変数定義,マクロ変数定義,マクロ関数定
義などの各々の定義を最低限含むように分解される。
【0045】そして、このような各々の構成要素の各定
義に分解された後、各々の構成要素の間の関係として、
当該オブジェクト指向プログラム言語として構成要素の
間の構造から決まる関係と、構成要素の間の振る舞いか
ら決まる関係とを構築し、当該関係を保存するため関係
情報を生成する。ここでのオブジェクト指向プログラム
言語として構成要素の間の構造から決まる関係とは、例
えば、 クラス定義間の継承関係, クラス定義とメンバ関数定義との間の集約関係,クラ
ス定義とメンバ変数定義の間の集約関係,および、 クラス定義またはタイプ定義からそれら各定義の間の
構成関係などである。
【0046】また、オブジェクト指向プログラム言語と
して構成要素の間の振る舞いから決まる関係とは、 メンバ関数定義または関数定義,マクロ関数定義から
それらの間の呼び出し関係, 関数定義またはマクロ関数定義から大域変数定義また
はマクロ変数定義への参照関係, メンバ関数定義または関数定義,マクロ関数定義から
クラス定義またはタイプ定義への利用関係などである。
【0047】なお、前述したように、このようなプログ
ラムコート構成要素の各定義を保存管理するためのデー
タベーススキーマとしては、例えば、構成要素の名
前,構成要素の定義コード,構成要素の作成者,
構成要素の作成日,構成要素の構造から決まる構成要
素間の関係,構成要素の振る舞いから決まる構成要素
間の関係などを最低限含むように構成されている。
【0048】次に、オブジェクト指向プログラム言語で
あるC++言語で記述されたプログラムコードの一例
を、具体的にプログラムコードの構成要素毎の各々の定
義に分解し、これらの構成要素の各定義の間の関係付け
を行った例を説明する。図5および図6は、オブジェク
ト指向プログラム言語であるC++言語で記述されたプ
ログラムコードの一例を示す図であり、図7は、プログ
ラムコードの構成要素である各々の定義の間の関係付け
を示すした図である。
【0049】図5および図6に示すような一連のC++
言語のプログラムコードを、各々の定義毎に分解し、こ
れらの各定義の間の関係付けを行うと、図7に示すよう
な各定義の間での関係を有するデータ構造となる。ここ
では、プログラムコード(図5および図6)の構成要素
の各定義と、各定義の間を関係付けている関係を示すデ
ータ構造(図7)とは、それぞれに同じ参照符号a〜u
を付けて、その対応関係を示している。図5および図7
において、例えば、参照符号aで示される一連のプログ
ラムコードから分解されたクラス定義symbolの定義は、
プログラムコードとして、その中にプログラムコード構
成要素の「char *name;」,「inline symbol(char* symb
ol_name){name = symbol_name;};」,および「inline w
rite_obj(){printf(“symbol:%s\n",name);};」を含
むクラス定義を構成している。したがって、この場合、
クラス定義symbolに関する他の構成要素の定義との間の
関係は、図7に示すように、変数の集約関係でメンバ変
数定義name(参照符号b)を含み、また、関数の集約関
係でメンバ関数定義symbol(参照符号c)とメンバ関数
定義write_obj(参照符号d)を含む関係となる。クラ
ス定義symbolのプログラムコードは、図5において一点
鎖線で囲んだブロック枠に示すように、 class symbol{ char *name;public: inline symbol(char* symbol_name){name = symbol_nam
e;};inline write_obj(){printf(“symbol:%s\n",nam
e);};}; となっている。なお、図7に示すようなプログラムコー
ド構成要素の間の関係付けを示すデータ構造において、
各ブロックは1つ1つのプログラムコードの構成要素を
示し、各ブロックの間の線は構成要素の間の関係を示
し、この関係にはその関係特性を示す情報(関係情報)
が付加されている。図5〜図7においては、他のプログ
ラムコートの構成要素の定義においても、同様な対応付
けによりその関係を示している。
【0050】このように、オブジェクト指向プログラム
言語で記述されたプログラムコードは、各々の定義毎の
構成要素に分解され、構成要素の間の関係を構築して、
データベース化され、上述のようなデータ構造を有する
データとして、オブジェクト指向データベース管理シス
テム6に保存され管理される。
【0051】ところで、プログラムデータベースシステ
ムにおいて管理され保存されてるプログラムデータを取
り出す場合、そのデータ検索においては、一般的にはユ
ーザは汎用のデータ検索機能を組み合せて利用する必要
がある。この場合、ユーザはデータ管理におけるデータ
ベーススキーマを細部まで理解することが要求され、必
要なプログラムコードのデータ検索のための作業負荷が
高くなる。また、プログラムデータベースからプログラ
ムの一部を取り出し利用する場合、その一部のプログラ
ムに他のプログラムの呼び出しなどが含まれていると、
その一部のプログラムを動作させるためには、他の部分
が必要となることが多々発生する。その場合、ユーザは
必要なものが判明した時点で順次に取り出す作業を行う
こととなる。しかし、後からのプログラムコードの取り
出しでは、変数名の変更など、データが他のユーザに既
に変更されている場合など、最初に取り出したもの矛盾
が生じることとなる。
【0052】これに対し、本実施例によるプログラムデ
ータベースシステムにおいては、上述のようなデータ構
造を有する状態で、データ管理部4におけるオブジェク
ト指向データベース管理システム6で、保存されて管理
されており、プログラムコードを取り出す場合、また
は、プログラムの一部を取り出す場合においても、デー
タ検索処理部3が行う検索処理で、ここで管理されてい
る特有のデータ構造,データ管理単位を利用して、容易
に所望のプログラムコードの一部でデータでも取り出し
可能となる。また、取り出しで指定されたプログラムコ
ードの構成要素のデータについては、当該プログラムコ
ードの構成要素に対し他の関係のある構成要素のデータ
を関係情報による特有のデータ構造から辿って、ファイ
ルが書き出すことが可能となる。
【0053】次に、このような関係情報による特有のデ
ータ構造を有するデータベースを用いて行うデータ検索
処理部3によるデータ検索処理について説明する。図8
は、ユーザからの条件指定でのプログラムコード構成要
素の検索処理および検索されたデータの取り出し処理を
説明するフローチャートである。
【0054】図8を参照して説明する。この検索処理
は、データ検索処理部が行うデータベースに対するアク
セス処理であり、データベース操作にかかる1つのトラ
ンザクションの処理となる。まず、処理が開始される
と、ステップ50において、トランザクションの開始処
理を行い、次にステップ51において、ユーザからの問
合せを入力する。そして、次のステップ52において、
入力された問合せの解析処理を行う。次に、ステップ5
3において、当該問合せをデータ管理部(オブジェクト
指向データベース管理システム)への問合せ形式に変換
し、問合せ処理を実行する。そして、次のステップ54
において、問合せ結果を表示出力する。問合せ結果の表
示の後、次のステップ55において、更に問合せを継続
するか否かをユーザからの指示を受けて判別する。問合
せを継続する場合にはステップ51に戻り、ステップ5
1からの処理を繰り返し行う。また、この判定で問合せ
を継続しない場合、次のステップ56に進み、問合せ処
理結果の取り出しを行うか否かをユーザからの指示を受
けて判別する。ユーザからの指示が結果の取り出しを行
なわない指示である場合には、次のステップ57におい
て、このまま当該トランザクション処理の正常終了処理
を行い、一連の処理を終了する。
【0055】また、ステップ56の判定処理において、
ユーザの指示が問合せ処理結果の取り出しを行なう指示
である場合には、ステップ58に進み、ステップ58か
らの部品(プログラムコード構成要素;クラス定義,関
数定義などの定義部品)取り出し処理を行う。この部品
取り出し処理においては、まず、ステップ58におい
て、結果のうち、当該部品と他の部品との関連を構造
(関連情報)から辿って他の部品をまとめる処理を行
い、次のステップ59の処理で、問合せ処理の結果と共
に、必要とされる他の部品を出力ファイルに書く出す処
理を行う。そして、次のステップ60において、当該ト
ランザクション処理の正常終了処理を行い、一連の処理
を終了する。
【0056】ここでのプログラムデータベースへの問合
せ処理において、ユーザによるプログラムコードの条件
の指定においては、構成要素間の関係や構成要素の名前
での条件判定関数を記述して問合せを行うことができ
る。次に、ここでのデータ検索処理における条件判定関
数による集合演算について説明すると、問合せ処理は、
次に説明するようなSELECTとUNION,INTERSECTOION,DI
FFERENCE,PUTの関数による集合演算で行う。 (1)SELECTは、構成要素の集合から条件判定関数群を
満足する副集合を得るための問い合わせの関数である。
条件判定関数群では、条件判定関数の和または積を指定
できる。 SELECT(構成要素の集合,構成要素を束縛する変数名,
条件判定関数群) →引数の構成要素の集合の中の条件判別関数を満足する
要素の集合 (2)UNIONは、複数の構成要素の集合の和集合を得る
問合せである。 UNION(構成要素の集合,構成要素の集合,…) →引数の全ての構成要素の集合の和集合である要素の集
合 (3)INTERSECTIONは、複数の構成要素の集合の積集合
を得る問合せである。 INTERSECTION(構成要素の集合,構成要素の集合,…) →引数の全ての構成要素の集合の積集合である要素の集
合 (4)DIFFERENCEは、2つの構成要素の集合の差集合を
得る問合せである。 DIFFERENCE(構成要素の集合1,構成要素の集合2) →引数の構成要素の集合1から構成要素の集合2の差分
をとった残りの要素の集合 (5)PUTは、ある構成要素の集合から構成要素の利用
で必要なその他の構成 要素を合せて取り出し、1つまたは複数のファイルに書
き出す問合せである。 PUT(構成要素の集合,ファイル名)→書き出しが成功し
たかどうかの情報
【0057】また、SELECTで指定できる条件判定関数に
は、次のような関数を最低限含むようような関数定義が
なされている。 inheritancep(a,b);クラスbはクラスaのサブクラス
か、 aggregationp(a,b);定義bはクラスaのメンバ関数定
義またはメンバ変数定義か、 callp(a,b);メンバ関数定義または関数定義,マクロ関
数変数bは定義aから呼び出されるか、 referp(a,b);大域変数定義またはマクロ変数定義b
は、関数定義またはマクロ関数定義aから参照される
か、 consistent(a,b);クラス定義またはタイプ定義bは、
定義aを構成しているか、 usep(a,b);クラス定義またはタイプ定義bは、メンバ
関数定義,関数定義,マクロ関数定義aで利用される
か、 namep(a,b);構成要素bの名前は文字列aと一致するか
【0058】次に、このような条件判定関数による集合
演算の操作により特定の条件の集合を得る問い合せ処理
の一例を説明すると、例えば、全てのクラスの中からク
ラスpersistentのサブグラスでメンバ関数sortをもつク
ラスの集合を得る場合の問い合せ操作は、次のようにな
る。 Candidate1 = SELECT(ALL_CLASS, c, inheritancep(“persistent", c) && aggregationp(“sort", c)); ここでは、全てのクラスを表わす集合としてALL_CLASS
がシステムによって与えられているものとする。この問
い合わせの実行により、Candidate1は、全てのクラス
の中からクラスpersistentのサブクラスでメンバ関数so
rtを持つクラスの集合を表わすことになる。また、別の
集合演算の例では、例えば全てのクラスの中からクラス
名がarrayという文字を含む名前で、かつクラスversion
を利用しているクラスの集合は、次の問合せ処理で得る
ことができる。 Candidate2 = SELECT(ALL_CLASS, c, namep(“*array*", c) && usep(“version", c)); なお、arrayという文字を含む文字列は、“*array*"で
表わすことができる。この問合せの実行により、Candid
ate2は、全てのクラスの中からクラス名がarrayという
文字を含む名前で、かつクラスversion を利用している
クラスの集合を表わすことになる。更に、上記の2つの
問合せ条件を満たす集合は、次の問合せで得ることがで
きる。 Candidate3 = INTERSECTION(Candidate1,Candidate2); この問合せの実行により、Candidate3は、全てのクラ
スの中からクラスpersistentのサブクラスでメンバ関数
sortを持ち、クラス名がarrayという文字を含む名前で
かつクラスversion を利用しているクラスの集合をつク
ラスの集合を表わすことになる。
【0059】このCandidate3の問合せ結果が、ユーザ
が必要なある1つのクラスを表わしているとすれば、次
のような問合せにより、その結果をファイルへ取り出す
ことができる。 PUT(Candidate3,“/home/array"); この問合せの実行により、Candidate3の要素、および
それを利用するための必要な他の部品のコードは、ファ
イル“array.C"およびファイル“array.h"に書き出さ
れる。
【0060】ここでの検索対象となるプログラムは、構
成要素に分解され、オブジェクト指向データベース管理
システム6によりデータベースに保存されている。上述
の条件判定関数による集合演算により、データベースか
ら目的とする構成要素を検索するためには、各々の構成
要素が検索されるためのキーを備えていることが必要と
なる。そのため、ここでは、そのようなキーとしてプロ
グラムの構成要素(クラス定義,関数定義など)の属性
を用いる。前述のように、属性には、構成要素の名前,
構成要素の定義コード,構成要素の作成者,構成要素の
作成日,構成要素の構造から決まる関係,構成要素の振
る舞いから決まる関係などがある。上述のような条件判
定関数に加えて、これらの属性に対する条件判定関数を
定義することで、構成要素の作成者,作成日,関係など
をキーとして検索することが可能となる。
【0061】図9は、データ保存処理部における処理の
一例を示すフローチャートである。また、ここでのデー
タ保存のためのデータベース化の処理では、データベー
ス上の各々のデータの間においても、オブジェクト指向
プログラム言語のルールに従って矛盾がないようなチェ
ック処理も行なわれる。図9を参照して説明する。
【0062】この処理では、まず、ステップ61におい
て、保存する対象のプログラムファイル群を解析し、1
つのプログラムコードの構成要素を取り出す。次にステ
ップ62において、プログラムファイル群から全てのプ
ログラムコード構成要素が切り出されたか否かを判定す
る。この判定で全てのプログラムコード構成要素が切り
出されていることが判定されると、次のステップ65か
らのデータベースへの保存処理に進む。また、ステップ
62の判定で、全てのプログラムコード構成要素が切り
出されていないと、構成要素の切り出しの途中なので、
切り出した各々の構成要素の間の関係を順次に構築し、
その属性情報を得る処理を行う。このため、次にステッ
プ63において、切り出された全てのプログラムコード
構成要素の間と他の構成要素の間に関係があるか否かを
判定し、関係がない場合には、次の構成要素の切り出し
処理に進むため、そのままステップ61に戻る。また、
関係がある場合には、次のステップ64において、ここ
での構成要素の間の関係を構築し、その属性情報を付加
する。そして、次の構成要素に対する処理を行うため
に、ステップ61に戻り、ステップ61からの処理を行
う。
【0063】一方、ステップ62の判定で、全てのプロ
グラムコード構成要素が切り出されていることが判定さ
れ、次のステップ65からのデータベースへの保存処理
に進と、まず、新たにデータベースの管理単位データと
して保存するプログラム構成要素のデータが、既存のデ
ータベースのデータとの間で矛盾が生じていないことを
検索するため、ステップ65において、切り出された全
てのプログラムコード構成要素とその間の関係がデータ
ベースの既存のデータと矛盾していないか否かを判定す
る。矛盾していると判定された場合には、ステップ66
に進み、ユーザに対してデータの矛盾を報告して一連の
処理を終了する。また、この判定で、矛盾していないと
判定できると、ステップ67に進み、全ての構成要素
と、その間の関係,属性の情報をデータベースに保存し
て、一連の処理を終了する。
【0064】ところで、本実施例にかかるプログラムデ
ータベースシステムにおいては、プログラムコードの再
利用性を支援し向上させるため、オブジェクト指向プロ
グラム言語で記述されたプログラムファイルの中の全て
の定義ごとの木目の細かいレベルでのプログラムコード
の再利用を可能するようなデータベース環境を提供す
る。このため、再利用可能な細かいレベルにまでプログ
ラムコードを分解した各々の構成要素を保存し管理して
いるデータベース管理システム上において、各々の構成
要素の間でオブジェクト指向プログラム言語のルールに
従った非矛盾性を保証している。これにより、どのよう
な取り出し単位でプログラムコードの各々の構成要素が
取り出し利用する場合においても、取り出したままでの
プログラムコード構成要素が再利用可能となる。
【0065】したがって、ここでのプログラムコード構
成要素の間のルール非矛盾性の検査は、少なくとも、プ
ログラムコードをデータベース化する時に、または、デ
ータベースからプログラムコードを取り出す時に、その
ルール非矛盾性の検査処理を行うようにしている。
【0066】図10は、プログラムコード構成要素の間
のルール非矛盾性の検査を、データ保存処理部における
処理として行う場合の処理例を示すフローチャートであ
る。図10を参照して説明する。この処理では、まず、
ステップ71において、トランザクションの開始処理を
行い、次にステップ72において、保存する対象のプロ
グラムコードの複数のプログラムコード構成要素から1
つを選択する。次に、ステップ73において、プログラ
ムコードの複数のプログラムコード構成要素が全て選択
されたか否かを判定する。この判定で全てのプログラム
コード構成要素が選択されていることが判定されると、
各々の構成要素に対する処理が終了しているので、次の
ステップ74に進み、コミット処理などトランザクショ
ンの正常終了処理を行い、処理を終了する。また、ステ
ップ73の判定で全てのプログラムコード構成要素が選
択されていないことが判定されると、各々の構成要素に
対する処理の途中であり、次のステップ75からの個別
の構成要素に対する処理を行う。この場合、ステップ7
5において、選択したプログラムコード構成要素とデー
タ管理部で管理されているデータとがルールに反するか
否かを判別する。このルールに従った非矛盾性の検査と
は、例えば、複数のクラス定義,大域変数定義,マクロ
定義が同じ名前とならないか、また、クラス名,関数
名,大域変数名が互いに衝突しないかなどのルールで判
定する検査である。
【0067】選択したプログラムコードの構成要素がル
ールに反していない場合、ステップ76に進み、ステッ
プ76において、選択したプログラムコード構成要素の
保存をデータ管理部に依頼する。次に、次の構成要素に
対する処理を行うために、ステップ72に戻り、ステッ
プ72からの処理を続行する。また、選択したプログラ
ムコードの構成要素がルールに反している場合、ステッ
プ77において、選択したプログラムコード構成要素の
データ変更をユーザに要求する。そして、次のステップ
78において、変更後に処理を継続するか否かをユーザ
の指示により得て判別する。変更後に処理を継続する場
合には、ステップ75に戻り、変更したデータにより、
その後の処理を継続して行う。また、次のステップ78
の判定で変更後に処理を継続しない場合には、処理を打
ち切るので、次にステップ79に進み、ロールバック処
理などのトランザクションの異常終了処理を行い、一連
の処理を終了する。
【0068】図11は、プログラムコード構成要素の間
のルール非矛盾性の検査を、データ検索処理部における
処理として行う場合の処理例を示すフローチャートであ
る。図11を参照して説明する。この処理では、まず、
ステップ81において、トランザクションの開始処理を
行い、次にステップ82において、取り出す対象のプロ
グラムコードの複数のプログラムコード構成要素から1
つを選択する。次に、ステップ73において、必要とす
るプログラムコードの複数のプログラムコード構成要素
が全て選択されたか否かを判定する。この判定で全ての
プログラムコード構成要素が選択されていることが判定
されると、次のステップ84に進み、トランザクション
の正常終了処理を行い、選択した各々の構成要素を取り
出して処理を終了する。また、ステップ83の判定で全
てのプログラムコード構成要素が選択されていないこと
が判定されると、取り出し途中の各々の構成要素に対す
る処理途中であり、次のステップ85からの個別の構成
要素に対する選択の処理を行う。ステップ85の処理に
おいては、選択したプログラムコード構成要素と他に取
り出すデータとがルールに反しているか否かを判別す
る。
【0069】選択したプログラムコードの構成要素がル
ールに反していない場合、ステップ86に進み、ステッ
プ76において、選択したプログラムコード構成要素を
出力ファイルに書き出す。そして、次の構成要素の選択
処理を行うために、ステップ82に戻り、ステップ82
からの処理を続行する。また、選択したプログラムコー
ドの構成要素がルールに反している場合、ステップ87
において、選択したプログラムコード構成要素のデータ
変更をユーザに要求する。そして、次のステップ88に
おいて、変更後に処理を継続するか否かをユーザの指示
により得て判別する。変更後に処理を継続する場合に
は、ステップ85に戻り、変更したデータにより、その
後の処理を継続して行う。また、次のステップ88の判
定で変更後に処理を継続しない場合には、処理を打ち切
るので、次にステップ89に進み、ロールバック処理な
どのトランザクションの異常終了処理を行い、一連の処
理を終了する。
【0070】このような一連のデータ保存処理部2にお
ける処理(図10)、データ検索処理部3における処理
(図11)により、ここでのプログラムコード構成要素
の間のルール非矛盾性の検査は、少なくとも、プログラ
ムコードをデータベース化する時に、または、データベ
ースからプログラムコードを取り出す時に、そのルール
非矛盾性の検査処理を行うようにしている。また、別の
実施態様としては、プログラムコード構成要素の間のル
ール非矛盾性の検査は、プログラムデータベースに係る
処理なので、データ管理部4における処理として、この
検査処理を行うようにしても良い。この場合の実施態様
としては、データ管理部4が、前述のようなプログラム
コード非矛盾性判断部5を用いて、そのデータベース操
作にかかるトランザクションの処理の中で、プログラム
コード構成要素の間のルール非矛盾性の検査を行うこと
になる。
【0071】
【発明の効果】以上説明したように、本発明のプログラ
ムデータベースシステムによれば、オブジェクト指向プ
ログラム言語で記述されたプログラムのファイルの中の
全ての定義ごとの木目の細かいレベルでの再利用が容易
に行えるプログラムデータベースが構築できる。また、
オブジェクト指向プログラム言語で記述されたプログラ
ムのファイルの中の全ての定義ごとの細かいレベルでの
再利用が可能となる。更に、このようなプログラムデー
タベースを構築する場合においても、プログラムデータ
の保存においてユーザに負荷をかけず、プログラムデー
タの取出しにおいてユーザは円滑な再利用が可能とな
る。これにより、プログラムコードの再利用性が向上
し、ソフトウェアの生産性と品質の向上を計ることがで
きる。
【図面の簡単な説明】
【図1】 図1は、本発明の一実施例にかかるプログラ
ムデータベースシステムの要部の構成を示すブロック
図、
【図2】 図2は、プログラムデータベースシステムを
構成するデータ保存処理部の詳細構成を処理ブロックの
流れで説明するブロック図、
【図3】 図3は、プログラムデータベースシステムを
構成するデータ検索処理部の詳細構成を処理の流れで説
明するブロック図、
【図4】 図4は、プログラムデータベースシステムを
構成するデータ管理部の要部の詳細構成を説明するブロ
ック図、
【図5】 図5は、オブジェクト指向プログラム言語で
あるC++言語で記述されたプログラムコードの一例を
示す第1の図、
【図6】 図6は、オブジェクト指向プログラム言語で
あるC++言語で記述されたプログラムコードの一例を
示す図5の第1の図に続く第2の図、
【図7】 図7は、プログラムコードの構成要素である
各々の定義の間の関係付けを示すした図、
【図8】 図8は、ユーザからの条件指定でのプログラ
ムコード構成要素の検索処理および検索されたデータの
取り出し処理を説明するフローチャート、
【図9】 図9は、データ保存処理部における処理の一
例を示すフローチャート、
【図10】 図10は、プログラムコード構成要素の間
のルール非矛盾性の検査を、データ保存処理部における
処理として行う場合の処理例を示すフローチャート、
【図11】 図11は、プログラムコード構成要素の間
のルール非矛盾性の検査を、データ検索処理部における
処理として行う場合の処理例を示すフローチャートであ
る。
【符号の説明】
1…プログラムデータベースシステム、2…データ保存
処理部、3…データ検索処理部、4…データ管理部、5
…プログラムコード非矛盾性判断部、6…オブジェクト
指向データベース管理システム、7…データベース格納
部(プログラムコード構成要素)、8…データベース格
納部(関係情報)、9…保存対象のプログラムコード、
10…検索条件、11…取り出したプログラムコード、
26…データ矛盾の情報、27…構成要素群、28…関
係情報。

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクト指向プログラム言語により
    記述されたプログラムコードを管理し格納するプログラ
    ムデータベースシステムにおいて、 入力されたプログラムコードから、プログラムコード構
    成要素と該プログラムコード構成要素の間の関係を示す
    関係情報とを抽出するデータ保存処理手段と、 抽出されたプログラムコード構成要素およびその関係情
    報をデータベースの管理単位データとして格納するデー
    タベース格納手段と、 関係情報に従って関係するプログラムコード構成要素を
    取り出し、複数のプログラムコード構成要素から成るプ
    ログラムコードを出力するプログラムコード出力処理手
    段とを具備することを特徴とするプログラムデータベー
    スシステム。
  2. 【請求項2】 プログラムコード構成要素は、オブジェ
    クト指向プログラム言語により記述されたプログラムコ
    ードのクラス定義,変数定義,および関数定義を含む各
    定義毎の構成要素であり、関係情報は、各定義の間の関
    係を示す情報であることを特徴とする請求項1に記載の
    プログラムデータベースシステム。
  3. 【請求項3】 関係情報は、オブジェクト指向プログラ
    ム言語の構成要素間の構造から決まる関係、各々の構成
    要素の間の振る舞いから決まる関係を指示する情報であ
    ることを特徴とする請求項2に記載のプログラムデータ
    ベースシステム。
  4. 【請求項4】 オブジェクト指向プログラム言語により
    記述されたプログラムコードを管理し格納するプログラ
    ムデータベースシステムにおいて、 入力されたプログラムコードから、クラス定義を含む各
    定義毎のプログラムコード構成要素と、これらの各プロ
    グラムコード構成要素の間の関係を示す関係情報とを抽
    出するデータ保存処理手段と、 プログラムコード構成要素および関係情報をデータベー
    スの管理単位データとして格納するデータベース格納手
    段と、 指定された検索条件から検索対象のプログラムコード構
    成要素を検索するプログラムコード検索手段と、 前記プログラムコード検索手段により検索されたプログ
    ラムコード構成要素からその関係情報に従って、対応す
    るプログラムコード構成要素を取り出し、複数のプログ
    ラムコード構成要素から構成されるプログラムコードを
    出力するプログラムコード出力手段とを具備することを
    特徴とするプログラムデータベースシステム。
  5. 【請求項5】 プログラムコード構成要素は、オブジェ
    クト指向プログラム言語により記述されたプログラムコ
    ードのクラス定義,変数定義,および関数定義を含む各
    定義毎の構成要素であり、関係情報は、各定義の間の関
    係を示す情報であることを特徴とする請求項4に記載の
    プログラムデータベースシステム。
  6. 【請求項6】 関係情報は、オブジェクト指向プログラ
    ム言語の構成要素間の構造から決まる関係、各々の構成
    要素の間の振る舞いから決まる関係を指示する情報であ
    り、利用関係,呼出し関係,継承関係,集約関係,また
    は構成関係の関係特性を示す情報を含むことを特徴とす
    る請求項5に記載のプログラムデータベースシステム。
  7. 【請求項7】 オブジェクト指向プログラム言語により
    記述されたプログラムコードを管理するプログラムデー
    タベースシステムにおいて、 入力されたプログラムコードから、クラス定義を含む各
    定義毎のプログラムコード構成要素と、これらの各プロ
    グラムコード構成要素の間の関係を示す関係情報とを抽
    出するデータ保存処理手段と、 前記プログラムコード構成要素および関係情報をデータ
    ベースの管理単位データとして格納するデータベース格
    納手段と、 取り出すプログラムコード構成要素を含んでいる関係情
    報に従ってプログラムコードを検索するプログラムコー
    ド検索手段と、 プログラムコード構成要素のデータベースへの格納時お
    よび取り出すプログラムコード構成要素の検索時の少な
    くとも一方で、当該プログラムコード構成要素が他のプ
    ログラムコード構成要素との間でルールに違反しないか
    否かを判断する非矛盾性判断手段と、 前記プログラムコード検索手段により検索された複数の
    プログラムコード構成要素を組合せ、前記非矛盾性判断
    手段の結果によりプログラムコード構成要素の非矛盾性
    を保証したプログラムコード単位を出力するプログラム
    コード出力処理手段とを具備することを特徴とするプロ
    グラムデータベースシステム。
  8. 【請求項8】 プログラムコード構成要素は、オブジェ
    クト指向プログラム言語により記述されたプログラムコ
    ードのクラス定義,変数定義,および関数定義を含む各
    定義毎の構成要素であり、関係情報は、各定義の構成要
    素の間の関係を示す情報であることを特徴とする請求項
    7に記載のプログラムデータベースシステム。
  9. 【請求項9】 関係情報は、オブジェクト指向プログラ
    ム言語の構成要素間の構造から決まる関係、各々の構成
    要素の間の振る舞いから決まる関係を指示する情報であ
    り、利用関係,呼出し関係,継承関係,集約関係,また
    は構成関係の関係特性を示す情報を含むことを特徴とす
    る請求項8に記載のプログラムデータベースシステム。
JP04029897A 1992-01-22 1992-01-22 プログラムデータベースシステム Expired - Fee Related JP3144022B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP04029897A JP3144022B2 (ja) 1992-01-22 1992-01-22 プログラムデータベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP04029897A JP3144022B2 (ja) 1992-01-22 1992-01-22 プログラムデータベースシステム

Publications (2)

Publication Number Publication Date
JPH05197534A true JPH05197534A (ja) 1993-08-06
JP3144022B2 JP3144022B2 (ja) 2001-03-07

Family

ID=12288771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04029897A Expired - Fee Related JP3144022B2 (ja) 1992-01-22 1992-01-22 プログラムデータベースシステム

Country Status (1)

Country Link
JP (1) JP3144022B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002278754A (ja) * 2001-03-15 2002-09-27 Toshiba Corp ソフトウェア部品ライブラリ管理システム、その方法およびソフトウェア部品ライブラリ管理プログラム
JP2004518215A (ja) * 1999-12-07 2004-06-17 エクスペリエント・テクノロジーズ・リミテッド・ライアビリティ・カンパニー 動的アプリケーションブラウザおよびそれとともに使用するデータベース
JP2009282788A (ja) * 2008-05-22 2009-12-03 Fuji Electric Systems Co Ltd ソフトウェア作成支援装置
US8554582B2 (en) 2004-10-13 2013-10-08 Nissay Information Technology Co., Ltd. Data management apparatus and method thereof

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004518215A (ja) * 1999-12-07 2004-06-17 エクスペリエント・テクノロジーズ・リミテッド・ライアビリティ・カンパニー 動的アプリケーションブラウザおよびそれとともに使用するデータベース
JP2002278754A (ja) * 2001-03-15 2002-09-27 Toshiba Corp ソフトウェア部品ライブラリ管理システム、その方法およびソフトウェア部品ライブラリ管理プログラム
US8554582B2 (en) 2004-10-13 2013-10-08 Nissay Information Technology Co., Ltd. Data management apparatus and method thereof
US8694344B2 (en) 2004-10-13 2014-04-08 Nissay Information Technology Co., Ltd. Data management apparatus and method thereof
JP2009282788A (ja) * 2008-05-22 2009-12-03 Fuji Electric Systems Co Ltd ソフトウェア作成支援装置

Also Published As

Publication number Publication date
JP3144022B2 (ja) 2001-03-07

Similar Documents

Publication Publication Date Title
US10970474B2 (en) Method and system for editing text with a find and replace function leveraging derivations of the find and replace input
Robbes et al. How program history can improve code completion
US7015911B2 (en) Computer-implemented system and method for report generation
US4931928A (en) Apparatus for analyzing source code
JP2768433B2 (ja) 物理データベース設計システム
US6651240B1 (en) Object-oriented software development support apparatus and development support method
US6594669B2 (en) Method for querying a database in which a query statement is issued to a database management system for which data types can be defined
US7467375B2 (en) Method and system for transforming legacy software applications into modern object-oriented systems
JP3123025B2 (ja) データ処理システムにおける切貼りフィルタ
US20080033977A1 (en) Script generating system and method
US7668888B2 (en) Converting object structures for search engines
WO1997049049A1 (en) Rules bases and methods of access thereof
JP2002538546A (ja) Abapコードコンバータの仕様
CN109344230A (zh) 代码库文件生成、代码搜索、联结、优化以及移植方法
JP3205406B2 (ja) 参照対象変数決定処理方法および翻訳処理システム
JP3828379B2 (ja) テスト仕様生成支援装置、方法、プログラム及び記録媒体
US5649180A (en) Method for generating hierarchical specification information from software
JP2002534741A (ja) 半構造化テキストデータを処理する方法及び装置
US6996516B1 (en) Apparatus for analyzing software and method of the same
JPH05197534A (ja) プログラムデータベースシステム
JP2000090093A (ja) 全文検索方法及び全文検索システム並びに全文検索プログラムを記録した記録媒体
US6925630B1 (en) Method for generating code for processing a database
JPH09160765A (ja) ソフトウェア部品作成方法
Niu et al. An execution-based retrieval of object-oriented components
Swanson et al. A reusable software catalog interface

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080105

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090105

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100105

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110105

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120105

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees