JPH022419A - プログラム情報管理方式 - Google Patents

プログラム情報管理方式

Info

Publication number
JPH022419A
JPH022419A JP63144526A JP14452688A JPH022419A JP H022419 A JPH022419 A JP H022419A JP 63144526 A JP63144526 A JP 63144526A JP 14452688 A JP14452688 A JP 14452688A JP H022419 A JPH022419 A JP H022419A
Authority
JP
Japan
Prior art keywords
program
information
link
technique
intention
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
JP63144526A
Other languages
English (en)
Inventor
Tsutomu Fujinami
藤波 努
Hirohide Haga
芳賀 博英
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 JP63144526A priority Critical patent/JPH022419A/ja
Priority to US07/363,509 priority patent/US5261100A/en
Publication of JPH022419A publication Critical patent/JPH022419A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S706/00Data processing: artificial intelligence
    • Y10S706/902Application using ai with detail of the ai system
    • Y10S706/919Designing, planning, programming, CAD, CASE

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、電子計算機用のプログラムを作成する際、プ
ログラム作成を支援するプログラム作成支援システムの
プログラム情報管理方式に関し、特に、プログラムの再
利用率、およびプログラムの生産性・信頼性を向上する
プログラム情報管理方式に関する。
〔従来技術〕
従来のプログラム作成支援システム、特に既存プログラ
ムの再利用システムでは、次のようなステップ(1)〜
(3)を経て、目的とするプログラムを作成する。
(1)利用者が与えた要求仕様(プログラムの目的)を
システムが理解して、より単純な要求仕様の集合に分割
するステップ。
(2)分割後における個々の要求仕様に近い仕様の部品
の有無を調べ、該当する部品がある場合には、部品を検
索して個々の要求仕様に合うようにカスタマイズするス
テップ。
(3)カスタマイズされた部品同志を組み合わせて所望
のプログラムを合成するステップ。
従って、プログラムの再利用システムでは、検索の対象
となる部品の持ち方、検索の方法、カスタマイズの方法
の3点が重要である。
これらの点に関しては、従来のシステムでは、次のよう
な方法を採用していた。
(a)部品の持ち方については、ソースコードを部品化
したもの、設計情報を部品化したもの、および設計仕様
を部品化したものの3種類の持ち方がある。このうち、
ソースコードを部品化したものを持つ方式が中心的な方
法である。
(b)検索の方法としては、知識ベースの利用による検
索、部品の体系を利用した検索、および類似部品の検索
の3種類が中心である。この知識ベースの利用による検
索とは1部品の属性と機能を関連づける知識ベースを持
ち、個々の部品に付けられた属性に従って検索を行う方
法である。また、部品の体系を利用した検索とは、予め
部品の登録時に体系的な整理を行い、それを検索に利用
する方法である。また、類似部品の検索とは、予め与え
られた類似性の定義を利用して、類似の部品を検索する
方法である。
なお、このような従来技術については、例えば″部品合
成による自動プログラミング、小宮誠−原田実、情報処
理、第28巻、第10号(1987年)″において論じ
られている。
〔発明が解決しようとする課題〕
上記従来技術では、既存のプログラムと少し異なるプロ
グラムを作成する場合、類似の機能を持つプログラムを
検索するという点について配慮がなされていなかった。
このため、目的とするプログラムと一致する機能を実現
することができる既存のプログラムがある場合、あるい
は、それらのプログラムを合成して、目的となすプログ
ラムを実現できる場合にのみ、既存プログラムの再利用
が可能であった。
また、既存のプログラムと類似のプログラムを検索する
機能があるシステムの場合でも、類似の定義を予め与え
る必要があり、この定義を与えていない場合には、既存
のプログラムが再利用できないという問題があった。
また、再利用するプログラムの意図やプログラムに利用
されているプログラミング技法が不明であるため、自分
の目的のために、どのようにプログラムを変更すればよ
いかを把握するのに時間がかかり、正確な把握ができな
い場合には、誤った修正を行ってプログラムの信頼性を
損なうという問題があった。
また、プログラムを作成した過程の情報を持たないため
、その過程で作成したプログラムや、発見した重要なア
イデアを利用することができず、作成履歴が失われてし
まい、どのように変更すると誤りとなるかがわからない
という問題があった。
本発明の目的は、このような問題点を改善し。
予め類似についての定義を与えなくても、システムが持
つデータにより、類似のプログラムを検索して、プログ
ラムの再利用の効率を向上し、また、検索されたプログ
ラムに利用されている技法、意図、およびプログラム作
成の過程を示すことにより、プログラムの理解を促し、
プログラム再利用の効率を向上するとともに、誤った修
正を防止してプログラムの信頼性を向上することができ
るプログラム情報管理方式を提供することにある。
C2F4Mを解決するための手段〕 上記目的を達成するため、本発明のプログラム情報管理
方式は、入力装置と、中央処理装置と、該中央処理装置
に対する命令であるプログラムを格納する記憶装置と、
表示装置とを備えたプログラム作成支援システムのプロ
グラム情報管理方式において、ソースファイルと、プロ
グラムのソースコードの一部と、ソースコードの作成技
法に関する技法情報と、ソースコードの作成意図に関す
る意図情報とをプログラム情報として格納する手段(第
1〜第3記憶装置)、その情報間の関連を示すリンクを
設定し、そのリンクによりプログラム情報を管理する手
段(CP U)、および上記表示装置を制御して、プロ
グラム情報の名称をノードとし、ノード間の関係をリン
クとして、プログラム情報全体をネットワーク構造で表
示する手段(CPU)を僅え、新たにプログラムを作成
する場合。
既存プログラムのプログラム情報の関連から、所望のプ
ログラムと類似の機能を有する既存プログラムを検索し
、既存プログラムを利用して所望のプログラムを作成し
、かつプログラム情報をノードとして、ノード間の関係
をネットワーク構造で表示することに特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成したプログラム間に、段階的に開発したこ
とを示すリンクを設定し、そのリンクには、リンク設定
元のプログラムの問題点と、その問題点を解決するため
にリンク設定力のプログラム作成で使用した方法とを記
述することに特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成したプログラム間に1段階的に開発したこ
とを示すリンクを設定し、かつそのリンクには、リンク
設定元のプログラムの問題点を記述し、かつリンク設定
力のプログラムには。
その問題点を解決するためにプログラム作成で使用した
方法を記述して、そのリンクを利用し、リンク設定元プ
ログラムの問題点と、その問題点の解決方法とを検索す
ることに特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成したプログラム間の段階的に開発したこと
を示すリンクを解析し、上記表示制御手段によって、プ
ログラム・ファイル名をノードとするネットワーク構造
により、プログラムが開発された過程を表示することに
特徴がある。
また、上記ネットワーク構造を表示する際、現在参照し
ているプログラム・ファイル名のノードは色を変えて表
示し、かつ指定したネットワーク構造のリンク部分につ
いては、そのリンク部分で解決した問題点を表示し、か
つ指定したネットワーク構造のノード部分については、
そのノード部分で採用した問題解決方法を表示すること
に特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成したプログラム間に、プログラムを段階的
に開発したことを示すリンクを設定し、そのプログラム
が1個のソースファイルを複数に分割したものである場
合、分割したことを示すリンクを設定し、また、そのプ
ログラムが複数のソースファイルを1個に統合したもの
である場合には、統合したことを示すリンクを設定する
ことに特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成したプログラムに関して。
作成時に参照した技法情報を示す技法リンク、および意
図情報を示す意図リンクの設定および削除を行い、リン
クを設定した場合、作成したプログラムを新たなプログ
ラムとしてシステムに登録して、旧プログラムとの間に
、段階的に開発したことを示すリンクを設定し、また、
リンクを削除した場合には、参照する技法情報および意
図情報の組が同一であるプログラムまで後戻りして、段
階的に開発したことを・示すリンクをそのプログラムか
ら設定することに特徴がある。
また、上記段階的に開発したことを示すリンクを解析し
て、作成したプログラムの名称をノードとし、開発の元
となったプログラムを親とする親子関係をリンクとする
ネットワーク構造により。
プログラム開発の過程を表示することに特徴がある。
また、上記プログラム情報管理手段は、プログラム開発
の過程で作成するプログラムに、作成時に参考としたプ
ログラムへのリンクを設定することに特徴がある。
また、上記表示制御手段は、設定したリンクの関連に従
い、プログラム情報の全体的な構造を、情報の名称をノ
ードするネットワーク構造で表示して、その名称が指定
されると、そのノードの表示色を変えることに特徴があ
る。
また、上記プログラム情報管理手段は、ソースプログラ
ムに利用されるプログラム開発技法に従い、その技法を
表現する技法情報へ技法リンクを設定し、同時にそのソ
ースプログラムの意図を表現する意図情報へ意図リンク
を設定することに特徴がある。
また、上記プログラム情報格納手段には、技法情報と意
図情報の集合を、各情報の関連に従い。
階層的に記憶することに特徴がある。
また、上記表示制御手段は、プログラム情報の中の特定
情報を指定された場合、上記記憶装置の中の情報間に設
定されたリンクにより、特定情報と関連する他の記憶装
置の情報を表示することに特徴がある。
また、上記プログラム情報管理手段は、技法情報あるい
は意図情報が指定されると、技法情報が指定された場合
、その技法を用いているソースコードがあるか否かをチ
ェックし、また、意図情報が指定された場合には、その
意図を実現しているソースコードがあるか否かをチェッ
クして、指定情報と完全に一致するソースコードがなけ
れば、指定情報の階層構造を上位に辿り、上位概念を検
索して、その上位概念の下位概念の中、指定情報以外の
情報を技法か意図の何れか一方として有するソースコー
ドを検出し、上記表示制御手段により、類似のプログラ
ムとして表示することに特徴がある。
〔作用〕
本発明においては、目的とするプログラムと同一の機能
を有するプログラムがシステム内部に格納されていない
場合でも、その目的とする概念。
あるいは、その目的を実現するためのプログラム技法の
リンクを基にして、プログラム情報の階層構造を辿り、
目的とするプログラムに類似したプログラム例を検索し
、そのプログラムの開発過程を理解することができる。
また、技法情報、意図情報等のプログラム情報全体を木
構造で表示し、指定された位置のオブジェクトやリンク
の情報を表示することができる。
これにより、プログラムの理解を促し、適切な再利用を
行うことが可能である。
〔実施例〕
以下、本発明の一実施例を図面に・より説明する。
第1図は、本発明の一実施例におけるプログラム情報の
基本的構成を示す説明図である。
本実施例では、プログラム情報として、プログラムのソ
ースコード11、プログラミング技法12、およびプロ
グラムの意図13を植成要素とし、それぞれの情報に従
って階層構造を持つことができる。
また、構成要素間にも、それらの関連を示すリンクを設
定することができ、ソースコードと技法の対応を示すリ
ンク14、ソースコードと意図の対応を示すリンク15
、および意図と技法の対応を示すリンク16が設定され
る。
このように、各プログラム情報の間に関連を示すリンク
を自由に設定することができる。
第2図は、本発明の一実施例におけるプログラム作成支
援システムの構成図である。
本実施例のプログラム作成支援システムは、中央処理装
置(以下CPUと記す)21.第1記憶装[22、第2
記憶装@23.第3記憶装@24゜第4記憶装置25、
入力装置26、表示装置27゜および位置指定装置28
を備える。
この第1記憶装置1i22〜第3記憶装置24は、それ
ぞれ対象とするプログラミング言語で記述された再利用
対象のソースコード、プログラミング技法を表わすキー
ワード、およびプログラムの目的を示すキーワードを格
納する。これらの情報は、それぞれの情報毎に、その依
存関係に従い、木構造に整理されている。
また、第4記憶装置25は、CPU21に対する命令を
記憶する。なお、第4記憶装置25に格納されるプログ
ラムとしては、例えば技法の階層構造を、その構造に沿
って辿るプログラムがある。
なお、本実施例では、対象とするプログラミング言語と
して論理型言語prologを用いる。
しかし、第1記憶装置22〜第3記憶装置24に格納さ
れたプログラミング看′語に関するデータを変更するこ
とにより、この対象言語に依存することなく、任意のプ
ログラミング言語に適用することができる。
また、CPU21は、入力装置26と表示装置27上の
位置指定装置28を介して与えられた命令に従い、情報
を処理して1表示装置27に処理結果を表示する。
また、本実施例におけるプログラムとしては、例えば、 append([コ、L、L)。
append ([A I XコtYt [AIZ])
ニーappend (x、v、z)−とか、 reverse ([コ、[コ)。
reverse ([A l Tコ、L)ニーreve
rse (T 、 RT) 、 append (RT
、 [11] + L)。
などがある。
このようなプログラム例に、技法情報や意図情報等、必
要な情報を付加して、次に示す形式で第1記憶装置22
に格納される。
肛J匡鰭:append; consist  of: append([]、LtL)− append ([A l X] 、Y、[A l Z
コ)ニーappend(X、Y、Z)。
tech囮ユ肛:単純再帰9合成/分割型引数。
1ntention:リスト、結合9分割。
comments:第1引数のリストと第、2引数のリ
ストを結合したものが第3引数のリスト この場合、programから始まる部分はプログラム
の名称、consisJofから始まる部分はプログラ
ムのソースコード、techniqueから始まる部分
はそのプログラムに使われているプログラミング技法を
示すキーワード、1ntentionから始まる部分は
そのプログラムに込められた意図を表わすキーワード、
 commentsから始まる部分はそのプログラムに
対する説明を表わすキーワードである。
第3図は、本発明の一実施例における第2記憶装置に記
憶されるプログラミング技法の階層構造側図、第4図は
本発明の一実施例における第3記憶装置に記憶される意
図を表わす言葉の階層構造側図である。
本実施例では、利用者は、あるプログラムを作成する場
合、何か目的に関連した概念を思い浮かべて、その概念
が技法、意図、およびソースコードの何れであるかを判
断し、その種類によって、それぞれの情報が格納された
記憶装置(第1記憶装置22〜第3記憶装置24)に検
索命令を出し、検索した情報と、それに張られたリンク
を利用して、自分が思い浮かべた情報以外の情報を検索
し、既存のプログラムを理解したり、そのまま再利用し
たりして、所望のプログラムを作成する。
また、自分が思い浮かべた情報を基にして検索した情報
について、その関連情報が必要な場合には、第2記憶装
置23あるいは第3記憶装置24の内部の階層構造を辿
って、より詳細な情報、あるいは、より抽象的な情報を
得ることができる。
例えば第3図のようなプログラミング技法の階層構造に
おいて、「判定処理」31というキーワードを基に階層
を上に遡ると、これが「制御技法」32の一種であり、
同様の技法として「繰返し」33や「逐次実行」34と
いうものがあることがわかる。また、階層を下に辿ると
、「判定処理」31の技法として、各プログラミング言
語に個有の場合分は技法が具体的に示される( rhe
ad unificationによる判定処理J35.
r判定型述語による判定処理J36)’。
同様に、第4図の目的を表わす言葉の階層構造を使って
、「ソート」41というキーワードからは、階層を上に
辿ると、これが「要素並べ替え」42という一般的な概
念の一例であり、同様の概念として、「逆転」43、「
順列」44等の概念がある。また、下に向けて辿ると、
ソートのための具体的な手法として、どのような手法が
あるか等の情報(「クイックソートJ45.r挿入ソー
ト」46、「泡ソート」47)が得られる。
次に、これらの情報を利用して、どのようにプログラム
を再利用し、所望のプログラムを作成するかについて詳
細に述べる。
まず、利用者が自分の所望のプログラムの目的のみを知
っていて、実現方法についてはあまり知識がない場合に
ついて述べる。
この場合、利用者は自分の所望するプログラムの機能を
表わすキーワードをシステムに与え、目的を表わすデー
タが格納された第3記憶装置24の中を検索する。
例えばリストの要素がリストであれば、その要素のリス
トの内部をも反転させるfull reverseとい
うプログラムを作成するという問題を考えると、与えら
れた問題が「リストの逆転」であるから、システムに対
して、「リスト」および「逆転」というキーワードを与
える。これにより、システムは第2記憶装置23および
第3記憶装置24を参照して、ソースコードが格納され
た第1記憶装!i!22の中のソースコードを検索し、
「リスト」およびr逆転」というキーワードを持つプロ
グラムを探しだす。
本実施例では、システムの内部に要素を単純に反転する
reverseが定義されていて、これに与えられたキ
ーワードが「リスト」および「逆転」であるため、この
ソースプログラムを検索して、表示装置27上に、 reverse([1,[])。
reverse([1llT]、L)ニーrevers
e(T、RT)。
append(nT、[11]、L)。
というreverseのソースコードを表示する。
なお、本実施例では、ソースコードに与えられたキーワ
ードが2個一致したが、1個のみの一致でも良い。
このreverseのプログラムに対して、利用者はい
くつかの入出力例を与える。その結果、入力のリストの
要素が項またはアトムであれば良いが、リストであれば
、うまくいかない場合があることを発見し、要素の種類
による判定処理が必要であることを認識する。
そこで、場合分けの技法を知るため、第2記憶装置23
に格納されている判定処理の技法について、「判定処理
」というキーワードを与えて検索を行う。これにより、
システムは「判定処理」31に関する技法を表示装置2
7に表示する。
そこで利用者は、この中から自分の目的に合った技法を
選ぶ。この場合、「判定型述語による判定処理」36を
選び、判定型述語として引数がアトムか否かを判定する
atomicを選ぶ。さらに、次に示すプログラムを作
成する。
full−reverse([]、[コ)+full−
reverse([tllT]+L)ニーatomic
(H) 、full、reverse(T、TT) 。
append(TT、[H]、L)。
これは先のreverseのプログラムから容易に類推
できる。
そして、常套な判定処理として「71〜ムでない場合」
の処理を行う。これに関して、利用者は具体的な情報を
持っていないため、今までに作成したプログラムを参考
にする。この場合、プログラムの構造として1条件によ
る場合分けを含む再帰構造であるため、「条件再帰」と
いうキーワードを用いて、第2記憶装[23に含まれる
技法の説明を検索する。
その結果、システムは条件再帰の技法の説明として、「
条件再帰」38を含む技法の階層構造を表示装置i!2
7に表示する。
次に、この技法の例を求めると、システムは第1記憶装
置22に格納されたソースプログラムを検索し、技法情
報として、このキーワードを持つプログラム例を探し、
例えば、 flatten([L[])。
flatten([)IITI、L) ニーatomi
c(II)、flatten(T、TT)、appen
d([11コ、TT、L)。
flatten([1lIT]、L)ニーflatte
n()l、)lII) 、flatten(T、TT)
 。
append(HH,TT、L)。
というプログラム例を表示装置27に表示する。
利用者は、これを基にして、 full−reverse([L[コ)。
fuljreverse([旧Tコ、L)ニーatom
ic (H) 、 full、reverse (T 
* TT) zappend(TT、[H]tL)。
full−reverse([IITItL)ニーfu
ll−reverse(H,HH) 、full−re
verse(T、TT)append(TT、HH,L
)。
というプログラムを作成することができる。これが所望
のプログラムである。
次に、このような機能を実現するためのソフトウェア構
成について詳細に述べる。
第5図は、本発明の一実施例におけるソフトウェアの構
成図である。
本実施例のソフトウェアは、ユーザとの対話を制御する
対話制御系51.ユーザからのコマンド入力を解釈実行
するコマンド解釈実行系52.および各種のデータを格
納する記憶領域53から構成される。
また、記憶領域53は、対応表(以下SNテーブルと呼
ぶ)54、対応表(以下TNテーブルと呼ぶ)55、対
応表(以下INテーブルと呼ぶ)56゜対応表(以下S
TIテーブルと呼ぶ)57、対応表(以下TISテーブ
ルと呼ぶ)58.対応表(以下ITSテーブルと呼ぶ)
59.対応表(以下THテーブルと呼ぶ)60、対応表
(以下IH子テーブル呼ぶ)61、およびプログラムラ
イブラリ62を備える。
このSNテーブル54は、第1カラムに論理型言語の述
語名を持ち、第2カラムにそれに付けられた一連の番号
を持つ、また、TNテーブル55は、第1カラムに技法
名称を持ち、第2カラムにそれに付けられた一連の番号
を持つ。また、TNテーブル56は、第1カラムに意図
の名称を持ち、第2カラムにそれに付けられた一連の番
号を持つ。
また、STIテーブル57は、第1カラムに述語名に対
応する番号、第2カラムに技法情報に対応する番号、第
3カラムに意図情報に対応する番号を持つ、また、TI
Sテーブル58は、第1カラムに技法情報に対応する番
号、第2カラムに意図情報に対応する番号、第3カラム
に述語名称に対応する番号を持つ。また、ITSテーブ
ル59は。
第1カラムに意図名称に対応する番号、第2カラムに技
法名称に対応する番号、第3カラムに述語名称に対応す
る番号を持つ、また、TH子テーブル0は、第1カラム
に木構造に展開された技法の親の名称に対応する番号を
持ち、第2カラムに子に対応する技法名称に対応する番
号を持って、技法の親子関係を表わす、また、IH子テ
ーブル1は、第1カラムに意図の親の名称に対応する番
号を持ち、第2カラムに子に対応する意図名称に対応す
る番号を持って、意図の親子関係を表わす。
また、プログラムライブラリ62は、実際のソースプロ
グラムを格納する。
このような構成により、対話制御系51は、ユーザがキ
ーボードやマウス等の表示装置27上の位置指定袋[2
8を利用して、入力したコマンドをコマンド解釈実行系
52に渡す。
また、対話制御系51は、〈情報の種類〉。
〈選択された情報〉、およびくたどるポインタの種類〉
の3個をコマンド解釈実行系52に渡す。
なお、〈選択された情報〉とは、ポインタを辿る出発点
といる情報である。また、〈情報の種類〉とは1選択さ
れた情報がソースコード、技法情報、意図情報の何れか
を表わすためのフラグである。
また、くたどるポインタの種類〉とは、選択された情報
に張られているポインタの中、どのポインタを辿るかを
示す情報である。
次に2本実施例におけるコマンド解釈実行系52(CP
U21)の処理の詳細について述べる。
第6図a −fは、本発明の一実施例におけるコマンド
解釈実行系の処理を示すフローチャートである。
本実施例では、第6図aのように、コマンド序釈実行系
52は、対話制御系51から渡されたく情報の種類〉お
よびく選択された情報〉を用い(601)、その種類に
従って、SNテーブル54(602)、TNテープ/L
155(603)、およびINテーブル56(604)
の何れかを検索し、渡された情報そのものに対応する番
号Niを得る。
なお、述語に対する処理(SNテーブル54)、技法に
対する処理(TNテーブル55)、意図に対する処理(
INテーブル56)の何れでもなければ、コマンドエラ
ーである旨を表示して(605)、ステップ601に戻
る。
次に、〈たどるポインタの種類〉の情報に従って、ST
Iテーブル57、TSISNテーブル54よびISTS
Nテーブル54れかを辿る。
第6図すは1選択された情報の種類がソースコードであ
り、選択された情報に対応する一連番号が意図6号(I
N、)、辿るべきポインタの種類が技法情報である場合
(602)の処理を示す。
この場合、最初にSNテーブル54をサーチしてINo
を得る(606)。
次に、このINoをキーとしてSTIテーブル57の中
、第1フイールドがIN、であるカラムを探す(607
)。
その結果、このカラムが見つかれば、そのカラムの第2
のフィールドに格納された技法を示す番号TNI、を得
る(609,610)。
また、一致する述語名がなければ、述語名エラーである
旨を表示する(608)。
次に、TNテーブル55の第1カラムを見てTNoに相
当する技法を表わす文字列T0を得る(611)。
最後に1文字列T0をコマンド実行の結果として対話制
御系51に返す(612)。
また、述語名称を指定して意図情報を辿る場合も、同様
の処理を行う(613〜616)。
また、第6図Cは、技法情報を指定して述語名称を辿る
場合(603)の処理を示す。
この場合、技法名称と述語名称を辿ることを示すコマン
ドが対話制御系51からコマンド解釈実行系52に送ら
れると、コマンド解釈実行系52はTNテーブル55を
検索して、与えられた技法名称に対応する番号TN、を
得る(618)。
次に、TISテーブル58の第1カラムを検索してTN
oに一致する番号を探す(619)。
その結果、番号が見つかれば、それと同じ列にある第3
カラムにある番号SN、を得る(621 。
624)。
また、TNoに一致する番号が無ければ、技法名エラー
である旨を表示する(620)。
さらに、SN0と同じ番号を持つ述語をSNテーブル5
4から探し、そのソースコードをソースコードライブラ
リ62から検索して、表示装置27に表示する(625
,626)。
また、TN、と同じ番号を持つ列の第3カラムに述語名
称を示す番号が格納されていない場合(625)には、
その技法に対応するソースプログラムがないことを示す
。この場合には、第6図eに示す処理を行う。
すなわち、まず、TH子テーブル0の第2カラムを見て
、TN、と同じ番号を探す(636)。
これが見つかれば、同じ列の第2カラムに格納されたT
N0以外の番号TNLを取り出す(637)。
なお、 TNlに対応する技法は、ユーザから入力され
た技法に似た機能を有する技法の分類に対応する。
次に、TISテーブル58の第1カラムを見てTN、を
探し、見つかった場合には、その第3カラムに格納され
た値SN、に対応するソースプログラムを、先と同様の
処理を行って表示装置27に表示する(638〜641
)。
但し、第3カラムが空であっても(640)、TH子テ
ーブル0を見ることは行わない(642)。
このようにして、技法情報からソースプログラムを検索
する。
また、第6図dおよび第6図fは、意図情報を与えられ
てソースコードを検索する場合(604)の処理を示す
この処理では、TNテーブル55の代わりにINテーブ
ル56を用い、また、TISテーブル58の代おりにI
TSテーブル59を用い、さらに、TH子テーブルoの
筏わりにI Hテーブル61を用いる。
すなわち、第6図dのように、INテーブル56により
与えられた意図角を検索しく627)、その意図角に対
応する番号IN0を得る(628)。
さらに、辿るポインタがソースコード・ポインタであれ
ば(630)、ITSテーブル59の第1カラムがIN
、である列の第3カラムのデータTN、を得て(631
)、INテーブル56の中、第1カラムがIN、である
列の第2カラム□のデータを表示する(632)。
また、意図角に対応する番号IN、が得られない場合に
は(628)、意図者エラーである旨を表示する(62
9)。
また、辿るポインタがソースコード・ポインタでなけれ
ば(630)、ITSテーブル59の第1カラムがIN
、である列の第2カラムを見て、データSN、を得(6
33,634)1次にSNテーブル54を検索し、対応
するソース名を表示する(635)。
また、SN、が得られない場合(634)には、第6図
fのように、I Hテーブル61の中、第2カラムにI
N、が含まれている列を探す(643)。
次に、その第2カラムにある値で、IN、以外の値IN
、を取り出しく644,645)、さらにTTSテーブ
ル59の中、第1カラムがIN、である列の第2カラム
の値SN、を取り出す(646゜647)。
次に、SNテーブル54を検索してSN、に対応するソ
ースコードを表示する(648)。
また、SN、が取り出せない場合には(647)、対応
するソースコードが無い旨を表示する(649)。
このように、利用者は、技法、目的、ソースコードの何
れからも、必要な情報に容易にアクセスでき、既存のプ
ログラムの検索と、そのプログラムの目的の把握を簡単
に行うことができるため。
プログラムの再利用が容易になる。
次に1本実施例において、プログラム’full−re
verse’を作成する際、プログラムの作成過程に関
する情報がどのように管理されるかについて述べる。
この場合、まず「リスト」および「逆転」というキーワ
ードにより検索したプログラムを1個のオブジェクトと
して記録する。なお、検索したプログラムは次に示すプ
ログラムである。
C’full、reverse’ (1) ]reve
rse  ([コ 、[])。
reverse ([+IIT] 、 L) ニーre
verse (T、 RT) 、append(RT、
 [11] 、L)。
なお、プログラム名称’full−reverse’に
付随している番号(1)は、プログラムの作成番号であ
り、何番目に作成したプログラムであるがを示す。
このプログラムには、技法としてデータタイプに「リス
ト」37が、意図として「逆転J43が使われているた
め、オブジェクトr ’full、、、reverse
’(1)」に技法リンクと意図リンクという2種類のリ
ンクを設定し、それぞれのリンク先オブジェクト(以下
デスティネーションと呼ぶ)として、「リスト」および
「逆転」を設定する。
また、このr ’full−reverse’ (1)
 Jプログラムは、入力のリストの要素が項またはアト
ムであればよいが、リストであればうまくぃがない場合
がある。
そこで、要素の種類による場合分けを試みて、判定型述
語として引数がアトムか否かを判定するatomicを
使ったプログラムを次のオブジェクトとして記録する。
このプログラムは次のように示される。
[’full reverse’ (2) ]]ful
l、−reverse ([コ 、[1)。
full−reverse  ([HITコ 、  L
)  ニーatomic(ll)、full−reve
rse (T、 TT)  。
append(TT、  [11コ 、L)。
これは、最初に作ったプログラム[’full−rev
erse’ (1) ]を甚に作ったものであるため、
オブジェクI−[’full reverse″(1)
]からオオブジェクト[’fu11. reverse
’ (2) ]に対し、新たに「開発」という種類のリ
ンクを設定する。この場合、デスティネーションは、[
’full−reverse’(2)]である。
また、リンクには説明を記述することができるため、r
問題点:入力のリストの要素が項またはアトムであれば
よいが、リストであればうまくいかない場合がある」と
記述する。さらに「備考:[’full revers
e’ (2) ]では、述語atomicにより入力要
素の判定を行う」と付は加えることもできる。
また、オブジェクト[’full、−reverse’
 (2) ]自体には、リンクとして技法リンクと意図
リンクを設定し、それぞれのリンクにデスティネーショ
ンとして「リスト、判定型述語による判定処理」および
「逆転」を設定する。なお、この場合には、デスティネ
ーションとして、新たに「判定型述語による判定処理」
36が加わる。しかし、このプログラム[’full−
reverse’ (2) ]は、まだ「入力のリス1
−の要素がリストである場合」の処理ができない。
そこで、リストの要素がリストであることを判定する述
語’1sjist’ を判定型述語36から検索し、リ
ストの要素がリストである場合には、そのリストの要素
を述語’reverse’により逆転してから1aPp
end’で加えればよいと推測できる。
このプログラム[’full reverse’ (3
) ]のプログラムは次のように示される。
full、、、reverse ([1t  [] )
 。
full−reverse  ([l1lTコ 、  
L)  ニーatomic(H)。
fulJreverse (T、 TT)  、app
end(TT、 [H] 、L)。
fulLreverse ([IIIT]  + L)
  ニー1sjist(H)、reverse (H,
fil+)  。
full−reverse (T、 TT)  、ap
pend(TT、HH,L)。
これを次のオブジェクトとして記録する。このプログラ
ムは、プログラム[’fulJreverse’ (2
) ]を基に作ったものであるため、オブジェクト[’
full−reverse’ (2)コからオブジェク
ト[’full−reverSe″(3)]に対し、新
たに「開発」という種類のリンクを設定し、デスティネ
ーションを[’full reverse’ (3) 
]とする。また、’ 1sjist ’というプログラ
ムを参考にしているため、「参考プログラム」というリ
ンクを設定し、デスティネーションを述語名称r ’1
sjist’ Jとする。また、リンクの説明として、
r問題点二人カリストの要素がリストの場合の処理がう
まくいかない」と記述する。さらに「備考:  [’f
ull−reverse’(3)コでは、述語’ato
mic’に加えて、 ’1sJist’により入力要素
の判定を行う」と付は加えてもよい。
また、オブジェクト[’fulJrcverse’ (
3) ]自体には、リンクとして技法リンクと意図リン
クを設定し、それぞれのリンクにデスティネーションと
して[リスト、判定型述語による場合分け」および「逆
転」を設定する。しかし、このプログラム[’full
、、、reverse’ (3)コは、まだ「入力のリ
ストの要素がリストのリストである場合」には、うまく
いかないことがわかる。
この時点で、利用者は作成技法に関して何か別の技法を
使わなくてはならないことを理解し、プログラムの構造
が条件による場合分けを含む再帰構造であることから、
「条件再帰」38というキーワードを基にして、例とな
るプログラムを検索により発見する。
こうして発見されたプログラムは次のように示される。
flatten([]、[])。
flatten([HITコ、L)ニーatomic(
H)、flatten(T、TT)。
append(HH,TT、L)。
flatten([HIT]yL)ニーflatten
(H,IIH) 、flatten(T、TT) 。
append(HH,TT、L)。
これを参考とすることにより、「条件再帰」38を用い
たプログラムでは、判定の対象となった引数を再帰的に
処理する必要があること、および、第3節は’1sji
st’による判定を行わなくても、’aton+ic’
でない場合にのみ意味を持つため1判定する必要がない
ことがわかる。
その結果、次のプログラム[’full−revers
e’(4)]を作成するa full−reverse
([コ1[])−full−reverse([:HI
T]*L)ニーatomic(H)。
full−reversa(T、TT) 、appen
d(TT、 [:旧、L)。
full−reverse([HIゴ]、L)ニーfu
ll−revarse(H,HH)。
full、−reverse(T、TT) 。
append(TT、HH,L)。
このプログラムには、意図リンクとして「逆転」、技法
リンクとして「リスト、判定型述語による場合分け、条
件再帰」、参考プログラムリンクとしてrflatte
nJが設定される。二辺場合、技法リンクのデスティネ
ーションとして「条件再帰」が。
参考プログラム名称としてrflattenJが加わる
また、開発リンクをどのプログラムから設定するかにつ
いては、次のように考える。
すなわち、プログラム[’full−reverse’
 (3) ]から[’full−reverse’ (
4) ]にいたる過程では、プログラムrisjist
Jを参考にすることを破棄しているため、その時点で作
成しているプログラムがリンクしているデスティネーシ
ョンには、意味的にはプログラム[’full−rev
erse’ (2)コと同等のものになったとする。
また、プログラム[’full−reverse’ (
4) ]は、[’full−reverse’ (2)
コと比べて、技法として「条件再帰」を、参考プログラ
ムとしてrflattenJを、デスティネーションと
して持つため、プログラム[’full−revers
e’ (4)]は、それらが新しく付は加わったプログ
ラム情報を使って、[’full−reverse’ 
(2) ]を基に開発されたと見なすことができる。
そこで、[’full−reverse’ (4) ]
 ヘの開発リンクは、  [’fuljreversa
’ (2) ]から設定する。
なお、この開発リンクは[’full、、、rever
se’ (3) ]への開発リンクとの共有リンクとな
るため、リンクへの問題点の記述は行わないが、備考と
してr [’full、reverse’ (3) ]
は、要素がリストのリストである場合に誤った出力を行
う。そこで[’full−reverse’ (4) 
]では、述語’atomic’に加えて、プログラム’
flatten’を参考に条件再帰の技法を使う」と付
は加えてもよい。
次に、このような機能を実現するためのソフトウェア構
成について詳細に述べる。
第7図は、本発明の一実施例における各種データを格納
する記憶領域の構造側図である。
本実施例の記憶領域は、オブジェクト・テープ/Ll(
OBJ  TBL)71、リンク・テープ/L/(LI
NK  TBL)72.デスティネーション・テーブル
(DEST  TBL)73.およびデスティネーショ
ン・ポインタ・テーブル(DEST−PTBL)74の
4種に分かれる。
このオブジェクト・テーブル71は、個々のプログラム
のソースファイル、技法情報ファイル、および意図情報
ファイルをオブジェクトという1個のデータ構造で扱う
ための記憶領域である。
また、オブジェクト・テーブル71の個々のデータエリ
ア75は、6個のカラムに分かれている。
この中、type76は、オブジェクトのタイプであり
、タイプ1は「ソースファイル」、タイプ2は「技法情
報ファイル」、タイプ3は「意図情報ファイル」として
、オブジェクト種類を区分する。
また、 nama77はオブジェクトの名称、 1in
k−count78はオブジェクトから設定しているリ
ンクの本数、1ink79はリンク情報を利用するため
のポインタであり、1inkadJest−count
 80はそのオブジェクトをデスティネーションしてい
る数、1inkedjest 81はそのオブジェクト
をデスティネーションとしてポイントしているデスティ
ネーション情報へのポインタ、  content 8
2はそのオブジェクトの内容であり、ソースファイルの
場合には、ソースコードやコメントが、意図情報や技法
情報の場合は、テキスト情報が記述される。
また、リンク・テーブル72は、各オブジェクトから設
定するリンクに関する情報を記憶する領域であり、オブ
ジェクトからは領域先頭を指すポインタ(link) 
79を辿って利用する。このリンク・テーブル72を構
成する個々のデータエリアは4個のカラムに分かれる。
これらの中、1ink name83はリンクの名称、
desk、count 84はリンクしているデスティ
ネーションの数、dest85はデスティネーション情
報の領域先頭を指すポインタ、content 86は
リンクの内容であり、問題点や備考等を記述する部分で
ある。
また、デスティネーション・テーブル73は、個々のリ
ンクのデスティネーションに関する情報を記憶する領域
であり、リンク情報からはデスティネーション情報の領
域先頭を指すポインタ(dest)85を使って利用す
る。このデスティネーション・テーブルを構成する個々
のデータエリアは3個のカラムに分かれる。
この中、type87はデスティネーションのタイプで
あり、オブジェクトのタイプと同様にして利用する。ま
た、existjest 88はデスティネーションと
してポイントしているオブジェクトが存在するか否かを
示すフラグ、object 89はデスティネーション
としてポイントしているオブジェクトのデータエリア9
1を指すポインタである。
また、デスティネーション・ポインタ・テーブル74は
、各オブジェクトをデスティネーションとしてポイント
しているデスティネーションへ、オブジェクトからの逆
リンクを持つ記憶領域であり、desJp90はデステ
ィネーションのデータエリア92を指すポインタである
。このデスティネーション・ポインタ・テーブル74は
、オブジェクトのデータエリアにある1inked d
est93から、領域先頭94を指すポインタを辿って
利用する。
なお、各テーブルの終端にあるポインタ95〜97は、
各テーブルの空きが無くなった場合1次のテーブルを割
り当て、そこへポイントするためのものである↓ 第8図a = dは、本発明の一実施例におけるプログ
ラム作成過程の記録処理を示すフローチャートである。
本実施例では、第7図のような構造の記録領域を用いて
プログラム作成過程を記録する場合、第8図aのように
、まずプログラムの名称を入力しく801)、編集用の
エディタを開く。なお、利用者には公開されないが、プ
ログラムの名称には名称以外に作成番号が付いており、
そのプログラムが作成過程のどの時点のものかを識別で
きる。
入力されたプログラムの名称が既に存在するファイルで
あれば(802)、作成番号が最大のものが直前にg集
されていたプログラムである(803)。
また、該当するプログラムが存在しない新規作成プログ
ラムの場合は、作成番号を0とする(804)。
こうして直前の作成番号を得ると、次に、これからの編
集作業に使用するオブジェクト・テーブルの空きデータ
エリア(以下OTと記す)を1個確保する(805)。
次に、これから編集するファイルの作成番号を、直前に
編集していたファイルの作成番号を1個インクリメン1
−シたものとしく806)、確保していたOTの第1カ
ラムtypeには、そのオブジェクトがソースファイル
であることを示す番号′1′を、第2カラムnameに
は、現在の作成番号を付加したプログラムの名称を代入
する(807)。
次に、第7カラムcontentを使ってプログラムの
編集を行う(808)。
さらに、[集が一段落した時点で、前回から現時点まで
のプログラム開発過程を記憶する。なお、この前回とは
、最近のプログラム開発過程を記録した時点である。
次に、開発過程を分析する。この開発過程の分析は、プ
ログラム作成の過程でどのプログラムを参考にしたか、
どのような作成技法を使ったか。
および、どのような意図により作成したかを元にして行
うため、まず、それらを調べる(809.)。
その結果、何らかの情報を参照していれば、それをリン
クとして設定する(第8図b〜第8図Cのステップ81
8)。
すなおち、現在の作業に使用しているOTを調べ、リン
ク・テーブル72が割り付けられているか否かを調べて
(810)、割り付けられていなければ、割り付けを行
って、リンク・テーブル72の先頭アドレスをOTの第
4カラム1inkに代入しく811)、OTから利用で
きるようにする。
次に、割り付けられたリンク・テーブル72を検索し、
設定しようとしているリンク名称が既に登録されている
か否かを調べる(812)。
その結果、そのリンク名称がまだ登録されていない場合
、リンク・テーブル72の空きデータエリアを割り当て
て第1カラム1inJnameに登録し、デスティネー
ション・テーブル73を割り当て、先頭アドレスを第3
カラムdestに代入して(813)、利用できるよう
にする。
なお、こうしてリンクの実体を確保した時点で、第4カ
ラムcontentを使い、問題点やコメント等を記述
することができる。
さらに、デスティネーション・テーブル73を確保した
後、その空きエリア(以下DTと記す)を得る(814
)。このDTの第1カラムtypeには、デスティネー
ション・オブジェクトのタイプを、第3カラムobje
ctには、デスティネーションとなるオブジェクトのデ
ータエリアのアドレスを代入し、DTから利用できるよ
うにする。また、第2カラムexist−destはデ
スティネーションの実体が存在することを示すフラグで
あり、設定時にはONであるが、デスティネーションが
削除された場合には、 1inked−destポイン
タを使ってOFFにセットされる(815)、なお、1
jnked−destポインタは、デスティネーション
を削除した際、そのオブジェクトをデスティネーション
としているデスティネーション情報のフラグexist
jestをOFFにするためのものであり、DTを指す
ポインタとなっている。
また、1inkedJestポインタの設定処理の手順
は、第8図Cに示される。
すなわち、現在デスティネーションとしてリンクしよう
としているオブジェクトの情報を調べ、デスティネーシ
ョン・ポインタ・テーブル74が割り付けられているか
否かを調べて(816)、割り付けられていなければ、
割り付けを行い、デスティネーション・ポインタ・テー
ブル74の先頭アドレスをリンク先オブジェクトの第6
カラム1inkedJestに代入する(817)。
こうしてデスティネーション・ポインタ・テーブル74
を確保した後、空きデータエリアのdest−pにDT
のアドレスを代入し、オブジェクトからDTの第2カラ
ムexistjestにアクセスできるようにする(8
18)。
このように、プログラム作成過程で参照した情報へのリ
ンクを設定した後、開発過程を示すリンク(以下開発リ
ンクと呼ぶ)の設定を行う(819〜822)。
なお、開発過程で使用するプログラム情報は。
開発が進むにつれて増大するため、以前に作成したプロ
グラムと順番に比較して、参照しているプログラム情報
へのリンクが包含関係にあるプログラムを探しく819
〜820)、該当するプログラムから現編集プログラム
へ開発リンクを設定する(822)、なお、リンクの設
定方法は、ステップ810〜818と同様である。
また、開発リンクのリンク・テーブル72の第4カラム
contentには、元プログラムの問題点を記述する
以外に、@編集プログラムの問題解決方法を記述するこ
とができるが、この問題決方法は。
リンク設定元のオブジェクト・テーブル71の第7カラ
ムcontentに記述することもできる。また、@編
集プログラムが、元プログラムを分割あるいは統合した
ものである場合には、前プログラムから、そのことを示
すリンクr分割リンク」および「統合リンク」をステッ
プ810〜818と同様の方法で設定することができる
以上の過程がプログラム作成の1区切りであり。
さらに第8図dのように、プログラムが正しく動作する
か否かをテストした後(823)、正しいと判断すれば
終了し、正しくなければ、再びステップ806に戻って
同じ過程を繰り返す。
このように、プログラム開発の過程で作成したプログラ
ムに対し、リンクの設定と比較を行うことにより、開発
過程を記録することができる。
次に5本実施例において、プログラム情報を表示する方
法について述べる。
本実施例では、各種のプログラム情報において、その全
体的な構造を、情報の名称をノード、その間の関係をリ
ンクとする木構造で表示することができ、マウス等のボ
インティング・デバイスを用いてノードあるいはリンク
を指定することにより。
その表示色を変更して指定されたことを示し、指定対象
の情報を利用することができる。
また、木構造として解析されるものは、各プログラム情
報によって異なり、技法情報と意図情報の場合は、関連
に従って階層的に記憶された階層構造が解析され、ソー
スファイルの場合は、開発リンクや統合・分割リンク等
、開発過程を示すリンクに従って、初期ファイルをトッ
プノードとし、最新編集ファイルをボトムとするプログ
ラムの進化樹が解析される。
これらの木構造を表示する方法は、親子関係にするノー
ドとその間のリンクを表示する方式で同等に扱うことが
できる。但し、1個のノードは複数の親ノードを持つこ
とができるため、全体の構造は単純な木構造ではなく、
グラフ構造になる。
第9図は、本発明の一実施例におけるプログラム情報の
全体構造を表示するための記憶領域の構造側口である。
本実施例の記憶領域は、各プログラム情報の全体構造を
表示し、指定による色表示の変更を行うための各種のデ
ータを格納する。
この記憶領域は、3個の部分に分かれ、ノードを表示す
るためのデータを入力するオブジェクト表示情報領域(
DISP)101と、表示画面上で指定された場合にノ
ード名称を同定するために参照するオブジェクト参照情
報領域(REF  0BJ)102と、リンクを同定す
るために参照するリンク参照情報領域(REF  I、
INK)103とである。
さらに、DISPIOIを構成する個々のデータエリア
は9個のカラムに分かれる。
つまり、第1カラムobj−name 104はノード
となるオブジェクトの名称、第2、第3カラムx、y1
05.106は表示するノードの画面上の座標、第4カ
ラムhow−many 107はリンクしているデステ
ィネーションの個数、第5カラム1evel 108、
第6カラム1inel O9は表示位置を表示オブジェ
クト全体での行と列により表わしたもの、第7カラムd
est−nan+e 110はデスティネーションとし
ているオブジェクトの名称を配列で表わしたもの、第8
カラムn1lljox 111、第9カラムtemp−
1ine112は各デスティネーションへのリンクを表
示する際、表示線の重なりを防ぐために設定するダミー
のノード数と行数である。
また、REF  0BJ102を構成する個々のデータ
エリアには5個のカラムがある。
つまり、第1カラムobj−name 113はノード
名称、第2、第3カラムx、yl 14,115は表示
するノードの画面上の座標、第4カラムwidth 1
16はノードの画面上の表示幅、第5カラムsegno
l 17は表示時に使う図群の番号である。なお1図群
とは表示出力の制御単位であり、本実施例では1個のノ
ードを表示するために1個の図群を使う。
また、REF  LINK103を構成する個々のデー
タエリアには3個のカラムがある。
つまり、第1カラムobj−name 118はそのリ
ンクを設定しているオブジェクトの名称、第2カラム1
ine−count 119はリンク表示に使用してい
る線分の本数、第3カラムx、y120は表示する線分
の座標である。なお、1本のリンク表示の線分は最大3
本しか必要としない。
第10図a−eは、本発明の一実施例における各プログ
ラム情報の構造の表示処理を示すフローチャートである
本実施例では、第9図に示した記憶領域の構造を使って
、各プログラム情報の構造を表示する場合、まず1表示
するプログラム情報をテーブル71〜74から表示用デ
ータのテーブルDISPI01に読み込む(1001)
。この時点では、第1カラムobj−nameにオブジ
ェクト名称、第4カラムに解析対象リンクのデスティネ
ーション個数、および第7カラムdest−nameに
そのデスティネーションの名称列がそれぞれ代入する。
また、第5カラム1evelには1を、第6カラム1i
neには0を代入する(1002)。
こうしてテーブルの初期化を行った後、各オブジェクト
の1evelの値を計算する(1003〜1006)。
すなわち、最上位のオブジェクトを現オブジェクトとし
く1003)、現オブジェクトのデスティネーションの
1evelが現オブジェクトの1evelよりも小さけ
れば(1004)、デスティネーションの1evel値
を現オブジェクトの1evel値+1に設定する(10
05)。
次に、現デスティネーションにデスティネーションが存
在するか否かを調べ(1006)、存在すれば、現デス
ティネーションを現オブジェクトとしく1007)、同
様の処理を繰り返す(1004〜1006)。
次に、各オブジェクトの値を計算する(1008〜10
26)。
すなわち、現在の最大1ineの値を1としく1008
)、各オブジェクトのデスティネーションに1ineが
割り当てられていることを示すフラグをOFFに設定す
る(1009)。
こうして初期化を行った後、最上位のオブジェクトを現
オブジェクトとしく1010)、現オブジェクトについ
て、デスティネーションの1ine値を割り当てたこと
を示すフラグassjestと、自分自身の1ine値
を割り当てたことを示すフラグass、−5eifをO
FFにする(1011)。
次に、現オブジェクトの1ine値が割り当てられてい
るか否かを調べる(1012)。
その結果、まだ割り当てられていなければ、1ine値
の計算をする(1013〜1026)。
すなわち、ass−self ’jt ONに設定して
、自分自身の1ine値を計算したことを示しく101
3)、既にデスティネーションの1ine値を割り当て
ていれば(1014)、現在の最大1ine値+1を現
オブジェクトの1ine値としく1015)、また、割
り当てていなければ、現在の最大1ine値を現オブジ
ェクトの1ine値とする(101 G’)。
次に、表示時、リンクが重なることを防ぐために使用す
るダミーノードの設定数を計算する(1017)。
さらに、迂回する1ine値であるtempjineの
値を計算する(1018〜1025)。
すなわち、現デスティネーションにデスティネーション
があれば(1018)、ステップ1013〜1026の
方法で現デスティネーションのl 、i n e値を計
算しく1019)、その値を現オブジェクトのデスティ
ネーションに対するtemp−1ineの値として(1
020)、デスティネーションの1ine値を計算した
ことを示すフラグassJest tt ONにする(
1021)。
また、現デスティネーションにデスティネーションが無
く、n111Joxがあり(1022)、デスティネー
ションの値が割り当ててあれば(・1023)。
現在の最大1ine値+1を現オブジェクトのデスティ
ネーションに対するtamp−1ineの値としく1o
24)、また1割り当てていなければ、現在の最大1i
ne値を現オブジェクトのデスティネーションに対する
tampjineの値として(1025)、デスティネ
ーションの値を計算したことを示すフラグassJes
tをONにする(1026)。
こうして各オブジェクトの1evelと1ineの値を
計算した後、表示を行う(1027〜1031)。
すなわち、最上位のオブジェクトを親オブジェクトとし
て(1027)、計算したDISPのデータにより各オ
ブジェクトには1個の同郡を割り当てて表示する(10
28)。この表示時には、各オブジェクトおよびそのオ
ブジェクトからデスティネーションに対して設定したリ
ンクの表示情報をREF  0BJ102およびREF
  LINKI03に代入する。さらに、現オブジェク
トをデスティネーションに置き換えて、全てのオブジェ
クトを表示する(1030.1031)。
次に、表示したデータを画面上で指定して、そのオブジ
ェクトあるいはリンクの表示色を変えて、内容を表示す
る方法について述べる。
第11図は、本発明の一実施例において表示したプログ
ラム情報の全体構造から所望のプログラム情報を検索す
る処理を示すフローチャートである。
本実施例では1表示したデータを画面上で指定し、その
オブジェクトあるいはリンクの表示色を変えることによ
り内容を表示する。
まず、画面上の何れかが指定されると、その位置の座標
を得る(1101)。
次に、指定された位置にオブジェクトがあるか否かを調
べる(1102)。つまり、REF−〇BJ102の座
標データ114,115と、表示幅(Width) 1
16により、該当するオブジェクトの名称113とその
同郡番号117を得ることができる。
その結果、該当するオブジェクトが存在すれば、その同
郡番号を指定して表示色を変え(1105)、○BJ 
 TBL71とLINK  TBL72をオブジェクト
名称により検索し、その結果を表示する(1106)。
また、該当するオブジェクトが存在しなければ、指定さ
れた位置にリンクが存在するか否かを調ベル(1103
)。つまり、REF  LINK103の座標データ1
20により、指定された位置とリンクの線分との距随を
計算し、線上であれば、その線分の表示色を変えて(1
107)、LINK−TBL72とDEST  TBL
73をリンクの名称により検索し、その結果を表示する
(1108)。
また、指定位置にオブジェクトもリンクも存在しなけれ
ば、該当するものがないことを報告する(1104)。
このように、表示用のデータを計算し、表示データを参
照することによって、各プログラム情報の全体構造を木
構造により表示し、指定位置にあるオブジェクトあるい
はリンクの情報を表示することができる。
〔発明の効果〕
本発明によれば、既存のプログラムの検索とその目的お
よび作成過程の理解が容易であり、プログラム情報の全
体的な構造が把握し易くなるため、プログラムの再利用
率、およびプログラムの生産性・信頼性が向上する。
【図面の簡単な説明】 第1図は本発明の一実施例におけるプログラム情報の基
本的構成を示す説明図、第2図は本発明の一実施例にお
けるプログラム作成支援システムの構成図、第3図は本
発明の一実施例における第2記憶装置に記憶されるプロ
グラミング技法の階層構造側口、第4図は本発明の一実
施例における第3記憶装置に記憶される意図を表わす言
葉の諧層構造側口、第5図は本発明の一実施例における
ソフトウェアの構成図、第6図a −fは本発明の一実
施例におけるコマンド解釈実行系の処理を示すフローチ
ャート、第7図は本発明の一実施例における各種データ
を格納する記憶領域の構造例図、第8図a −dは本発
明の一実施例におけるプログラム作成過程の記録処理を
示すフローチャート、第9図は本発明の一実施例におけ
るプログラム情報の全体構造を表示するための記憶領域
の構造例図、第10図a−eは本発明の一実施例におけ
る各プログラム情報の構造の表示処理を示すフローチャ
ート、第11図は本発明の一実施例において表示したプ
ログラム情報の全体構造から所望のプログラム情報を検
索する処理を示すフローチャートである。 11ニブログラムのソースコード、12ニブログラミン
グ技法、13ニブログラムの意図、14:ソースコード
と技法の対応を示すリンク、15:ソースコードと意図
の対応を示すリンク、16:意図と技法の対応を示すリ
ンク、21:中央処理装置(CPU)、 22 :第1
記憶装置、23:第2記憶装置、24:第3記憶装置、
25:第4記憶装置、26:入力装置、27:表示装置
、28:位置指定装置、31〜38:技法情報の階層構
造におけるキーワード、41〜47:意図を表わす言葉
の階層構造におけるキーワード、51:対話制御系、5
2:コマンド解釈実行系、53:記憶領域、54:対応
表(SNテーブル)、55:対応表(TNテーブル)、
56:対応表(INテーブル)。 57:対応表(STIテーブル)、58:対応表(T 
I Sテーブル)、59:対応表(ITSテーブル)、
60:対応表(TH子テーブル、61:対応表(IH子
テーブル、62ニブログラムライブラリ。 71:オブジェクト・テーブル(○BJ  TBL)。 72:リンク・テーブル(LINK  TBL)。 73:デスティネーション・テーブル(DESTTBL
)、74:デスティネーション・ポインタ・テーブル(
DEST  P  TBL)、75:データエリア、 
76 :type、 77 : name、 78 :
 1ink−count。 79 : 1ink、 80 : 1inkedjes
t−count、 81 : 1inkedjest、
8 2  :  content、8 3  :  l
ink−name、8 4  :dast+−coun
t、 85 : dest、 86 : conten
t、 87 : type、 88 : existJ
est、 89 : object、 90 : de
st。 91:データエリア、92:データエリア、93:1i
nkedjest、 94 :領域先頭、95〜97:
各テーブルの終端にあるポインタ、101:オブジェク
ト表示情報領域(DISP)、102:オブジェクト参
照情報領域(REF  0BJ)、103:リンク参照
情報領域(REF  LINK)、104 :obj−
name、 105 : x座標、106:y座標、1
07:how、、、many、 108 : 1eve
l、 109 : 1ine、 110 :dest−
name、111 : null−box、112 :
 temp−1ine、 113 : obj−nam
e、 114 : x座標、115:y座標、 116
 : wide、 117 : segno、 118
 :obj−name、 l 19 : 1ine−c
ount、 120 :表示する線分の座標。 特許出願人 株式会社 日立製作所 −〇′

Claims (1)

  1. 【特許請求の範囲】 1、入力装置と、中央処理装置と、該中央処理装置に対
    する命令であるプログラムを格納する記憶装置と、表示
    装置とを備えたプログラム作成支援システムのプログラ
    ム情報管理方式において、ソースファイルと、プログラ
    ムのソースコードの一部と、ソースコードの作成技法に
    関する技法情報と、ソースコードの作成意図に関する意
    図情報とをプログラム情報として格納する手段、該情報
    間の関連を示すリンクを設定し、該リンクにより該プロ
    グラム情報を管理する手段、および上記表示装置を制御
    し、該プログラム情報の名称をノードとし、該ノード間
    の関係をリンクとして、該プログラム情報全体をネット
    ワーク構造で表示する手段を備え、新たにプログラムを
    作成する場合、既存プログラムの該プログラム情報の関
    連から、所望のプログラムと類似の機能を有する既存プ
    ログラムを検索して、該既存プログラムを利用して所望
    のプログラムを作成し、かつ該プログラム情報をノード
    として、該ノード間の関係をネットワーク構造で表示す
    ることを特徴とするプログラム情報管理方式。 2、上記プログラム情報管理手段は、プログラム開発の
    過程で作成したプログラム間に、段階的に開発したこと
    を示すリンクを設定して、該リンクには、リンク設定元
    のプログラムの問題点と、該問題点を解決するためにリ
    ンク設定先のプログラム作成で使用した方法とを記述す
    ることを特徴とする特許請求範囲第1項記載のプログラ
    ム情報管理方式。 3、上記プログラム情報管理手段は、プログラム開発の
    過程で作成したプログラム間に、段階的に開発したこと
    を示すリンクを設定し、かつ該リンクには、リンク設定
    元のプログラムの問題点を記述し、かつ該リンク設定先
    のプログラムには、該問題点を解決するためにプログラ
    ム作成で使用した方法を記述して、該リンクを利用し、
    該リンク設定元プログラムの問題点と、該問題点の解決
    方法とを検索することを特徴とする特許請求範囲第1項
    記載のプログラム情報管理方式。 4、上記プログラム情報管理手段は、プログラム開発の
    過程で作成したプログラム間の段階的に開発したことを
    示すリンクを解析し、上記表示制御手段によって、プロ
    グラム・ファイル名をノードとするネットワーク構造に
    より、プログラムが開発された過程を表示することを特
    徴とする特許請求範囲第1項記載のプログラム情報管理
    方式。 5、上記ネットワーク構造を表示する際、現在参照して
    いるプログラム・ファイル名のノードは色を変えて表示
    し、かつ指定したネットワーク構造のリンク部分につい
    ては、該リンク部分で解決した問題点を表示し、かつ指
    定したネットワーク構造のノード部分については、該ノ
    ード部分で採用した問題解決方法を表示することを特徴
    とする特許請求範囲第4項記載のプログラム情報管理方
    式。 6、上記プログラム情報管理手段は、プログラム開発の
    過程で作成したプログラム間に、該プログラムを段階的
    に開発したことを示すリンクを設定し、該プログラムが
    1個のソースファイルを複数に分割したものである場合
    、分割したことを示すリンクを設定し、また、該プログ
    ラムが複数のソースファイルを1個に統合したものであ
    る場合には、統合したことを示すリンクを設定すること
    を特徴とする特許請求範囲第1項記載のプログラム情報
    管理方式。 7、上記プログラム情報管理手段は、プログラム開発の
    過程で作成したプログラムに関して、作成時に参照した
    技法情報を示す技法リンク、および意図情報を示す意図
    リンクの設定および削除を行い、該リンクを設定した場
    合、作成したプログラムを新たなプログラムとしてシス
    テムに登録して、旧プログラムとの間に、段階的に開発
    したことを示すリンクを設定し、また、該リンクを削除
    した場合には、参照する技法情報および意図情報の組が
    同一であるプログラムまで後戻りして、段階的に開発し
    たことを示すリンクを該プログラムから設定することを
    特徴とする特許請求範囲第1項記載のプログラム情報管
    理方式。 8、上記段階的に開発したことを示すリンクを解析して
    、作成したプログラムの名称をノードとし、開発の元と
    なったプログラムを親とする親子関係をリンクとするネ
    ットワーク構造により、プログラム開発の過程を表示す
    ることを特徴とする特許請求範囲第7項記載のプログラ
    ム情報管理方式。 9、上記プログラム情報管理手段は、プログラム開発の
    過程で作成するプログラムに、作成時に参考としたプロ
    グラムへのリンクを設定することを特徴とする特許請求
    範囲第1項記載のプログラム情報管理方式。 10、上記表示制御手段は、設定したリンクの関連に従
    い、プログラム情報の全体的な構造を、情報の名称をノ
    ードするネットワーク構造で表示して、該名称が指定さ
    れると、該ノードの表示色を変えることを特徴とする特
    許請求範囲第1項記載のプログラム情報管理方式。 11、上記プログラム情報管理手段は、ソースプログラ
    ムに利用されるプログラム開発技法に従い、該技法を表
    現する技法情報へ技法リンクを設定し、同時に該ソース
    プログラムの意図を表現する意図情報へ意図リンクを設
    定することを特徴とする特許請求範囲第1項記載のプロ
    グラム情報管理方式。 12、上記プログラム情報格納手段には、技法情報と意
    図情報の集合を、各該情報の関連に従い、階層的に記憶
    することを特徴とする特許請求範囲第1項記載のプログ
    ラム情報管理方式。 13、上記表示制御手段は、プログラム情報の中の特定
    情報を指定された場合、上記記憶装置の中の情報間に設
    定されたリンクにより、該特定情報と関連する該記憶装
    装置以外の記憶装置の情報を表示することを特徴とする
    特許請求範囲第1項記載のプログラム情報管理方式。 14、上記プログラム情報管理手段は、上記技法情報か
    上記意図情報の何れか一方を指定されると、該技法情報
    を指定された場合、該技法を用いているソースコードが
    あるか否かをチェックし、また、該意図情報を指定され
    た場合には、該意図を実現しているソースコードがある
    か否かをチェックして、該指定情報と完全に一致するソ
    ースコードがなければ、該指定情報の階層構造を上位に
    辿り、該指定情報の上位概念を検索して、該上位概念の
    下位概念の中、該指定情報以外の情報を技法か意図の何
    れか一方として有するソースコードを検出し、上記表示
    制御手段により、類似のプログラムとして表示すること
    を特徴とする特許請求範囲第1項記載のプログラム情報
    管理方式。
JP63144526A 1988-06-10 1988-06-10 プログラム情報管理方式 Pending JPH022419A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63144526A JPH022419A (ja) 1988-06-10 1988-06-10 プログラム情報管理方式
US07/363,509 US5261100A (en) 1988-06-10 1989-06-08 Method of software development

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63144526A JPH022419A (ja) 1988-06-10 1988-06-10 プログラム情報管理方式

Publications (1)

Publication Number Publication Date
JPH022419A true JPH022419A (ja) 1990-01-08

Family

ID=15364377

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63144526A Pending JPH022419A (ja) 1988-06-10 1988-06-10 プログラム情報管理方式

Country Status (2)

Country Link
US (1) US5261100A (ja)
JP (1) JPH022419A (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2025160A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5761508A (en) * 1992-01-31 1998-06-02 Asahi Kasei Kogyo Kabushiki Kaisha Information processing system and method applied to the development of computer programs
US5819270A (en) * 1993-02-25 1998-10-06 Massachusetts Institute Of Technology Computer system for displaying representations of processes
US5778169A (en) * 1995-08-07 1998-07-07 Synopsys, Inc. Computer system having improved regression testing
JPH09212352A (ja) * 1996-01-31 1997-08-15 Hitachi Software Eng Co Ltd プログラム開発支援システム
WO1997035254A1 (en) 1996-03-19 1997-09-25 Massachusetts Institute Of Technology Computer system and computer implemented process for representing software system descriptions and for generating executable computer programs and computer system configurations from software system descriptions
US5930798A (en) * 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US6256618B1 (en) * 1998-04-23 2001-07-03 Christopher Spooner Computer architecture using self-manipulating trees
US6584464B1 (en) 1999-03-19 2003-06-24 Ask Jeeves, Inc. Grammar template query system
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6757893B1 (en) 1999-12-17 2004-06-29 Canon Kabushiki Kaisha Version control system for software code
EP1456769A4 (en) 2001-07-26 2004-11-17 Irise Inc SYSTEM AND METHOD FOR GATHERING, RECORDING AND VALIDATING REQUIREMENTS FOR COMPUTING APPLICATIONS
US7774744B2 (en) * 2006-04-26 2010-08-10 Sap Ag Using relatedness information for programming
US8396827B2 (en) * 2006-12-29 2013-03-12 Sap Ag Relation-based hierarchy evaluation of recursive nodes
CN101231614B (zh) * 2008-02-02 2010-06-02 南京大学 一种基于执行轨迹块相似度的软件缺陷定位方法
US8244739B2 (en) * 2009-01-23 2012-08-14 Nec Corporation Data retrieval device using a skip table
US8959481B2 (en) * 2009-04-30 2015-02-17 International Business Machines Corporation Determining system level dependencies
WO2012048162A2 (en) 2010-10-08 2012-04-12 Irise System and method for extending a visualization platform
CN117313111B (zh) * 2023-11-30 2024-04-09 中汽智联技术有限公司 一种基于汽车信息安全测试用例的标注与索引方法和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330822A (en) * 1971-09-02 1982-05-18 Burroughs Corporation Recursive system and method for binding compiled routines
SE467229B (sv) * 1983-08-19 1992-06-15 Kurt Katzeff Anordning foer bildande av en information och/eller instruktion avsedd att inmatas i en datamaskins programminne
JPH0640302B2 (ja) * 1984-01-30 1994-05-25 株式会社日立製作所 図式・ソ−スプログラム自動生成方法
US4734854A (en) * 1985-10-08 1988-03-29 American Telephone And Telegraph Company System for generating software source code components
US4827404A (en) * 1986-04-14 1989-05-02 Schlumberger Technology Corporation Method and system for computer programming
US5123103A (en) * 1986-10-17 1992-06-16 Hitachi, Ltd. Method and system of retrieving program specification and linking the specification by concept to retrieval request for reusing program parts
JPS63181033A (ja) * 1987-01-23 1988-07-26 Hitachi Ltd プログラム自動生成方式
US4860204A (en) * 1987-02-05 1989-08-22 Softron, Inc. Computer based workstation for development of graphic representation of computer programs
US5005119A (en) * 1987-03-02 1991-04-02 General Electric Company User interactive control of computer programs and corresponding versions of input/output data flow
US4809170A (en) * 1987-04-22 1989-02-28 Apollo Computer, Inc. Computer device for aiding in the development of software system
US4833641A (en) * 1987-04-28 1989-05-23 Moisey Lerner System for numerical description of computer program logic
NZ224848A (en) * 1987-07-15 1995-07-26 Computer Associates Internatio Application software created from defined modules of code
US5084813A (en) * 1988-04-20 1992-01-28 Kabushiki Kaisha Toshiba Rule based system for synthesizing a program suited for a target system in response to an input target system specification

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IEEE COMPUTER=1987 *
IEEE SOFTWARE=1988 *

Also Published As

Publication number Publication date
US5261100A (en) 1993-11-09

Similar Documents

Publication Publication Date Title
JPH022419A (ja) プログラム情報管理方式
US7099887B2 (en) Hierarchical environments supporting relational schemas
Overmyer et al. Conceptual modeling through linguistic analysis using LIDA
US6381611B1 (en) Method and system for navigation and data entry in hierarchically-organized database views
Marcus et al. Static techniques for concept location in object-oriented code
US6571247B1 (en) Object oriented technology analysis and design supporting method
US8296654B2 (en) Automatic guide for data analysis
US20020178184A1 (en) Software system for biological storytelling
US20050203869A1 (en) Hierarchical database apparatus, components selection method in hierarchical database, and components selection program
JP3400193B2 (ja) ウィンドウ関係の識別アイコン付木構造一覧表示方法及び装置
US20090259933A1 (en) System for Displaying an Annotated Programming File
JPH0589173A (ja) 構造化文書分類装置
JPH08137678A (ja) プログラム作成方法
KR20060051821A (ko) 사용자 인터페이스 구성요소를 가시화하기 위한 시스템 및방법
US20080288462A1 (en) Database system and display method on information terminal
JPH07200358A (ja) ソフトウェア・アプリケーションの自動テスト方法
CN115956241A (zh) 利用搜索树和加标签的数据项目进行数据集合管理任务的系统和方法
Pimpler Programming ArcGIS with Python Cookbook
Chin et al. DECODE: A Co‐operative Program Understanding Environment
JP3590974B2 (ja) 二次的に定義される木構造を用いるネットワーク型文書処理装置および方法
JP2002108649A (ja) トレース解析を支援するためのプログラムを記録した記録媒体及びプログラム製品
JPH0736684A (ja) ドメイン指向部品管理方法
JPH06161759A (ja) システム状態遷移ルールの検証支援方法および装置
Alspaugh Scenario networks and formalization for scenario management
JP2002288186A (ja) 電子資料の分類管理方法およびシステム