JPS61282934A - ソフトウェア仕様管理方法 - Google Patents
ソフトウェア仕様管理方法Info
- Publication number
- JPS61282934A JPS61282934A JP60123931A JP12393185A JPS61282934A JP S61282934 A JPS61282934 A JP S61282934A JP 60123931 A JP60123931 A JP 60123931A JP 12393185 A JP12393185 A JP 12393185A JP S61282934 A JPS61282934 A JP S61282934A
- Authority
- JP
- Japan
- Prior art keywords
- logic design
- syntax
- source program
- term
- syntax tree
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の利用分野〕
本発明はソフトウェア仕様管理方式に係り、特に、プロ
グラムロジック設計仕様およびソースプログラムを一元
管理する場合に好適なソフトウェア仕様管理方式に関す
る・ 〔発明の背景〕 従来、ソースプログラムを管理する方式としては、構造
エディタによるソースプログラム1f理方式がある(原
田賢−:「構造エディタ」、情報処理学会誌、Vol、
25,1984.m8.PP767−776参照)0 構造エディタに3いては、ソースプログラムは、コンパ
イラが内部中間語として扱っているような。
グラムロジック設計仕様およびソースプログラムを一元
管理する場合に好適なソフトウェア仕様管理方式に関す
る・ 〔発明の背景〕 従来、ソースプログラムを管理する方式としては、構造
エディタによるソースプログラム1f理方式がある(原
田賢−:「構造エディタ」、情報処理学会誌、Vol、
25,1984.m8.PP767−776参照)0 構造エディタに3いては、ソースプログラムは、コンパ
イラが内部中間語として扱っているような。
プログラミング言語文法規則に基づいて構文解析した結
果の構文木として管理される0 ここで構文木とは、ソースプログラムをプログラミング
言語文法規則に基づいて木構造で表現したものである。
果の構文木として管理される0 ここで構文木とは、ソースプログラムをプログラミング
言語文法規則に基づいて木構造で表現したものである。
以下、構造エディタにおいて、ソースプログラムがどの
ように構文木で管理されるかにつき具体的に説明する。
ように構文木で管理されるかにつき具体的に説明する。
プログラミング言語文法規則として1例えば以下に示す
ような規則1ないし規則4を例にとる0規則1 く 文
>::−<選択文〉 1 く反復文〉 1 く代人文〉 規則2 く選択文〉:ニー IF<条件式〉THEN<
文〉 BL8Ft<文〉 END : 規則3 く条件式)::−(項> 、 G’I’ 、
<項〉1 く項> 、 GE 、 <項〉 1 く項>、EQ、<項〉 1 く項> 、 N13 、 <項〉 1 く項)、LB、<項〉 1 く項>、LT、<項〉 規則4 く代人文>::−<変数〉−<算術式〉:規則
5 く算術式>::−<項〉 1 く項〉十<項〉 i く項〉−<項〉 1 く項〉/<項〉 1 く項〉*<項〉 規則6 く 項 >::−<変数〉1く定数〉規則7
く変数ン::−<英文字列〉 規則8 (定数ン;ニー<数字列〉 規則9 く反復文ン::−WHILE I UNTIし
く条件式> R1!fPFtAT く文〉 BND : 前述の各規則1〜9において、符号「<」と「〉」で囲
まれたものを構文要素と呼ぶ。また、r::−Jは、r
::−Jの左辺の構文要素がr::−Jの右辺の要素か
ら成ることを示し、「1」は「または」の意味を示すも
のである。これらの符号は、文法規則を定義するための
一般的記法である0規則1は、r文は、選択文または反
復文または代入文から成る」ことを意味する。
ような規則1ないし規則4を例にとる0規則1 く 文
>::−<選択文〉 1 く反復文〉 1 く代人文〉 規則2 く選択文〉:ニー IF<条件式〉THEN<
文〉 BL8Ft<文〉 END : 規則3 く条件式)::−(項> 、 G’I’ 、
<項〉1 く項> 、 GE 、 <項〉 1 く項>、EQ、<項〉 1 く項> 、 N13 、 <項〉 1 く項)、LB、<項〉 1 く項>、LT、<項〉 規則4 く代人文>::−<変数〉−<算術式〉:規則
5 く算術式>::−<項〉 1 く項〉十<項〉 i く項〉−<項〉 1 く項〉/<項〉 1 く項〉*<項〉 規則6 く 項 >::−<変数〉1く定数〉規則7
く変数ン::−<英文字列〉 規則8 (定数ン;ニー<数字列〉 規則9 く反復文ン::−WHILE I UNTIし
く条件式> R1!fPFtAT く文〉 BND : 前述の各規則1〜9において、符号「<」と「〉」で囲
まれたものを構文要素と呼ぶ。また、r::−Jは、r
::−Jの左辺の構文要素がr::−Jの右辺の要素か
ら成ることを示し、「1」は「または」の意味を示すも
のである。これらの符号は、文法規則を定義するための
一般的記法である0規則1は、r文は、選択文または反
復文または代入文から成る」ことを意味する。
規則2は、「選択文は、IPと条件式と、 THENと
文と、gL8Bと文と、END と:とからなる」こ
とを意味する〇 規則3は、「条件式は1項と、GT、 と項、または
項と、 GE 、と項、または項と、 EQ 、と項。
文と、gL8Bと文と、END と:とからなる」こ
とを意味する〇 規則3は、「条件式は1項と、GT、 と項、または
項と、 GE 、と項、または項と、 EQ 、と項。
または項と、NB、と項、または項と、 IJ 、と項
、または項と、LT、 と項とから成る」ことを意味
する。
、または項と、LT、 と項とから成る」ことを意味
する。
規則4は、「代入文は、変数式と、−と、算術式と、;
とから成る」ことを意味する。
とから成る」ことを意味する。
規則5は、「算術式は1項、または項と十と項、または
項と−と項、または項と/と項、または項と*と項から
成る」ことを意味する。
項と−と項、または項と/と項、または項と*と項から
成る」ことを意味する。
規則6は、「項は、変数または定数から成る」ことを意
味する。
味する。
規則7は、「変数は、英文字列から成る」ことを意味す
る〇 規則8は、「定数は、数字列から成る」ことを意味して
いる。
る〇 規則8は、「定数は、数字列から成る」ことを意味して
いる。
規則9は、「反復文はWHILBまたはUNTILと、
条件式と、R1!1PBATと、ENDと;とからなる
」ことを意味する。
条件式と、R1!1PBATと、ENDと;とからなる
」ことを意味する。
このプログラミング言語文法規則によって定義されるソ
ースプログラムは、規則1のく文〉から始まって、構文
要素をつぎつぎに、構文要素を1つも含まなくなるまで
、r::−Jの右辺にあるものと置き換えていくことに
よって、得られるものである。
ースプログラムは、規則1のく文〉から始まって、構文
要素をつぎつぎに、構文要素を1つも含まなくなるまで
、r::−Jの右辺にあるものと置き換えていくことに
よって、得られるものである。
構造エディタにおいては、例えば、第3図に示したソー
スプログラムは、前述のプログラミング言語文法規則に
基づき、第4図に示すような構文木として電子計算機の
メモリ上に管理(記憶)される。
スプログラムは、前述のプログラミング言語文法規則に
基づき、第4図に示すような構文木として電子計算機の
メモリ上に管理(記憶)される。
第4図の構文木は、第3図のソースプログラムを、前述
の規則lのく文〉から始まって、順次構文要素をr::
−Jの右辺にあるものに置きかえて行く過程を木構造に
反映したものである。
の規則lのく文〉から始まって、順次構文要素をr::
−Jの右辺にあるものに置きかえて行く過程を木構造に
反映したものである。
すなわち、前述の各規則に示されたr::−Jの左辺の
構文要素を、r::−Jの右辺の構文要素で置き換える
場合は、左辺構文要素を親とし、右辺構文要素を子供と
して、その間を有向グラフ「→」で結びつけて木を構成
する〇 例えば、第3図のソースプログラムにおいて、く文〉は
く選択文〉であるので、まず、規則1を適用して第4図
の1■” 部分の木が構成される〇く選択文〉は規則2
に準拠して、第4図の@I”部分で示した構文木に構成
される。
構文要素を、r::−Jの右辺の構文要素で置き換える
場合は、左辺構文要素を親とし、右辺構文要素を子供と
して、その間を有向グラフ「→」で結びつけて木を構成
する〇 例えば、第3図のソースプログラムにおいて、く文〉は
く選択文〉であるので、まず、規則1を適用して第4図
の1■” 部分の木が構成される〇く選択文〉は規則2
に準拠して、第4図の@I”部分で示した構文木に構成
される。
以下、規則3〜8を順次適用すると、全体として第4図
に示す木が構成されることは、容易に理解されるであろ
う。
に示す木が構成されることは、容易に理解されるであろ
う。
以上構造エディタにおけるソースプログラムの管理方式
について述べたが、このような管理方式は、プログラム
のロジック設計仕様の管理にも適用することができる、
ここでロジック設計仕様とは、プログラムのロジックを
、より人間に近い自然語レベルで記述したものである。
について述べたが、このような管理方式は、プログラム
のロジック設計仕様の管理にも適用することができる、
ここでロジック設計仕様とは、プログラムのロジックを
、より人間に近い自然語レベルで記述したものである。
もつとも、自然語とは言っても、設計レベルでの厳密さ
を保持するため、処理の渡れ(処理の選択、処理の繰返
し)を示す制御構造を持った言語文法規則に基づいて記
述されることは当然である。
を保持するため、処理の渡れ(処理の選択、処理の繰返
し)を示す制御構造を持った言語文法規則に基づいて記
述されることは当然である。
ロジック設計に使用される言語(以下ロジック設計言語
と呼ぶ]の規則の例をつぎに示す。
と呼ぶ]の規則の例をつぎに示す。
規則1 〈文〉二:=〈選択文〉
1く反復文〉
1〈擬似文〉
規則2 〈選択文>::=IF<条件式〉THEN <
文〉 ELSE<文〉 END; 規則3 く条件式>::=<S本語文字列〉規則4 く
擬似文>::=<日本語文字列〉また、前記規則1ない
し4に基づいて記述されたロジック設計仕様の一例を第
5図に示す。なお明らかなように、このロジック設計仕
様は、第3図に示したソースプログラムに対応するもの
である。
文〉 ELSE<文〉 END; 規則3 く条件式>::=<S本語文字列〉規則4 く
擬似文>::=<日本語文字列〉また、前記規則1ない
し4に基づいて記述されたロジック設計仕様の一例を第
5図に示す。なお明らかなように、このロジック設計仕
様は、第3図に示したソースプログラムに対応するもの
である。
構造エディタにおいては、前述のソースプログラムと同
じように、第5図に示したロジック設計仕様は、前述の
ロジック設計言語規則に基づき、第6図に示すような構
文木として電子計算機のメモリ上に管理される。
じように、第5図に示したロジック設計仕様は、前述の
ロジック設計言語規則に基づき、第6図に示すような構
文木として電子計算機のメモリ上に管理される。
なお、実際上は、電子計算機のメモリ上では、第6図の
構文木は、第1表に示したようなテーブルとして記憶、
管理される。また、第4図のソースプログラムについて
も同様である。
構文木は、第1表に示したようなテーブルとして記憶、
管理される。また、第4図のソースプログラムについて
も同様である。
E、Pl、P2・・・・・・・・・Pj:構文要素番号
第1表において、E欄は親の構文要素番号、またpi
、 P2・・・・・・・・・Pj の各欄はそれぞれ
第6図に示した各子供構文要素の番号をあられしている
〇すなわち、親の構文要素く文〉の番号は「1」であり
、これに関連づけられた子供構文要素は。
第1表において、E欄は親の構文要素番号、またpi
、 P2・・・・・・・・・Pj の各欄はそれぞれ
第6図に示した各子供構文要素の番号をあられしている
〇すなわち、親の構文要素く文〉の番号は「1」であり
、これに関連づけられた子供構文要素は。
番号「2」のく選択文〉のみである。また、親としての
構文要素「2」に関連づけられた子供構文要素は番号r
3Jr4Jおよび「5」であられされている。以下1番
号「6」〜「10」の構文要素についても同様である〇 前記従来技術によれば、構造エディターこより、プログ
ラムのロジック設計仕様およびソースプログラムを、各
々構文木として、電子計算機のメモリ上に管理すること
ができる。
構文要素「2」に関連づけられた子供構文要素は番号r
3Jr4Jおよび「5」であられされている。以下1番
号「6」〜「10」の構文要素についても同様である〇 前記従来技術によれば、構造エディターこより、プログ
ラムのロジック設計仕様およびソースプログラムを、各
々構文木として、電子計算機のメモリ上に管理すること
ができる。
しかしながら、従来技術においては、ロジック設計仕様
とソースプログラムを互いに関連づけて管理する配慮が
なされていないので、ロジック設計仕様とソースプログ
ラム間の不整合を生じ易いという問題点が発生する。
とソースプログラムを互いに関連づけて管理する配慮が
なされていないので、ロジック設計仕様とソースプログ
ラム間の不整合を生じ易いという問題点が発生する。
すなわち、プログラムを作成する場合、通常は、まずプ
ログラムのロジック設計を行なってロジック設計仕様を
作成し、次に、このロジック設計仕様に基づき、プログ
ラミング言語を用いてソースプログラムを作成する〇 そして最後に、このソースプログラムをコンパイラによ
り機械語に翻訳し、計算機で実行させて正常に動作する
かどうかを確認する〇 その結果、もし正常に動作しない場合は、その原因を究
明し、ロジック設計仕様およびソースプログラムを修正
し、再度電子計算機で実行させる。
ログラムのロジック設計を行なってロジック設計仕様を
作成し、次に、このロジック設計仕様に基づき、プログ
ラミング言語を用いてソースプログラムを作成する〇 そして最後に、このソースプログラムをコンパイラによ
り機械語に翻訳し、計算機で実行させて正常に動作する
かどうかを確認する〇 その結果、もし正常に動作しない場合は、その原因を究
明し、ロジック設計仕様およびソースプログラムを修正
し、再度電子計算機で実行させる。
そして、必要に応じてはさらに、前記の修正と実行をく
り返すことになる。
り返すことになる。
この場合、従来技術では、ロジック設計仕様とソースプ
ログラムとが、相互に関連のない別々な構文木として電
子計算機メモリ上に管理されているため、 (1) ロジック設計仕様は修正したが、ソースプロ
グラムの修正を忘れるとか、また逆に(2)ソースプロ
グラムは修正したが、ロジック設計仕様の修正を忘れる
。
ログラムとが、相互に関連のない別々な構文木として電
子計算機メモリ上に管理されているため、 (1) ロジック設計仕様は修正したが、ソースプロ
グラムの修正を忘れるとか、また逆に(2)ソースプロ
グラムは修正したが、ロジック設計仕様の修正を忘れる
。
というケースがしばしば発生する。
この結果、ロジック設計仕様とソースプログラム間の仕
様不一致(不整合)が発生し、プログラムの品質が大幅
Iこ低下するという問題点があった〇不整合発生の具体
例を、第7図および第8図を参照して以下に説明する。
様不一致(不整合)が発生し、プログラムの品質が大幅
Iこ低下するという問題点があった〇不整合発生の具体
例を、第7図および第8図を参照して以下に説明する。
第7図(a)に示したように、ロジック設計仕様のうち
、「温度が100℃以下」が「温度が90℃以下」に変
更されると、これに伴って、同図(b)のロジック設計
仕様の構文木の「温度が100”Cμ下」も、図示のよ
うに「温度が90℃以下」に変更される。
、「温度が100℃以下」が「温度が90℃以下」に変
更されると、これに伴って、同図(b)のロジック設計
仕様の構文木の「温度が100”Cμ下」も、図示のよ
うに「温度が90℃以下」に変更される。
前述の変更に対応して、本来ならば、第8図(a)に示
したソースプログラムのr TBMP 、LE 。
したソースプログラムのr TBMP 、LE 。
100」も、rTBMP、LB、90」と変更しなけれ
ばならない。
ばならない。
にもかかわらず、この変更を忘れると、同図(b)のよ
うに、ソースプログラムのrlooJが「90」に変更
されないままとなる。
うに、ソースプログラムのrlooJが「90」に変更
されないままとなる。
これにより、第7図(b)のロジック設計仕様の構文木
と、第8図(b)のソースプログラムの構文木との間で
不整合が発生するので、プログラムの品質低下の原因と
なる。
と、第8図(b)のソースプログラムの構文木との間で
不整合が発生するので、プログラムの品質低下の原因と
なる。
本発明の目的は、ロジック設計仕様とソースプログラム
間の不整合発生を防止するために、ロジック設計仕様と
ソースプログラムを一つの構文木で一元管理するソフト
ウェア仕様管理方法を提供することにある。
間の不整合発生を防止するために、ロジック設計仕様と
ソースプログラムを一つの構文木で一元管理するソフト
ウェア仕様管理方法を提供することにある。
本発明は、「第6図に示したロジック設計仕様の構文木
と、第4図に示したソースプログラムの構文木とを比較
して見れば分るように、同者は、(1)第9図(荀に示
した部分では一致しており、(2)異なるのは、ロジッ
ク設計仕様構文木においてはレベルが浅い(第9図のb
参照)のに対し。
と、第4図に示したソースプログラムの構文木とを比較
して見れば分るように、同者は、(1)第9図(荀に示
した部分では一致しており、(2)異なるのは、ロジッ
ク設計仕様構文木においてはレベルが浅い(第9図のb
参照)のに対し。
ソースプログラム構文木においては、レベルが深い−す
なわち、ざらに#aに構文木が構成される(第9図のC
゛参照点のみである◇」という2点に着目してなされた
ものである。
なわち、ざらに#aに構文木が構成される(第9図のC
゛参照点のみである◇」という2点に着目してなされた
ものである。
そして、本発明は、従来の木構造に加えて、ロジック設
計仕様構文木とソースプログラム構文木の相異なる部分
を記憶する拡張構文木構造によりロジック設計仕様とソ
ースプログラムを1本の構文木で一元的に管理するよう
にした点に特徴がある0 〔発明の実施岡〕 以下に、図面を参照して本発明の詳細な説明する◇ まずロジック設計仕様とソースプログラムを一元管理す
るための拡張構文木の構造を第1図に示す。第1図にお
いて。
計仕様構文木とソースプログラム構文木の相異なる部分
を記憶する拡張構文木構造によりロジック設計仕様とソ
ースプログラムを1本の構文木で一元的に管理するよう
にした点に特徴がある0 〔発明の実施岡〕 以下に、図面を参照して本発明の詳細な説明する◇ まずロジック設計仕様とソースプログラムを一元管理す
るための拡張構文木の構造を第1図に示す。第1図にお
いて。
(1)実線矢印で示した有向グラフ→は、親の構文要素
から子供の構文要素への詳細化が、ロジック設計仕様と
ソースプログラムとで一致する場合を示し、 (2)2重線矢印で示した有向グラフ→は、親の構文要
素から子供の構文要素への詳細化が、ロジック設計仕様
の場合であるくとを示し、また、(3)点線矢印で示し
た有向グラツー−−−りは構文要素の詳細化がソースプ
ログラムの場合であることをそれぞれ示している〇 本発明による拡張構文木によれば、ロジック設計仕様と
ソースプログラムは、1本の拡張構文木として管理する
ことが出来る。
から子供の構文要素への詳細化が、ロジック設計仕様と
ソースプログラムとで一致する場合を示し、 (2)2重線矢印で示した有向グラフ→は、親の構文要
素から子供の構文要素への詳細化が、ロジック設計仕様
の場合であるくとを示し、また、(3)点線矢印で示し
た有向グラツー−−−りは構文要素の詳細化がソースプ
ログラムの場合であることをそれぞれ示している〇 本発明による拡張構文木によれば、ロジック設計仕様と
ソースプログラムは、1本の拡張構文木として管理する
ことが出来る。
従来技術の構文木である第6図のロジック設計仕様の構
文木、およびsg4図のソースプログラムの構文木を1
本発明の拡張構文木で一元管理した場合の例を第2図に
示す。
文木、およびsg4図のソースプログラムの構文木を1
本発明の拡張構文木で一元管理した場合の例を第2図に
示す。
なお、この図において、実線矢印、2重線矢印および点
線矢印は、第1図の場合と同じ意味合いをもっている。
線矢印は、第1図の場合と同じ意味合いをもっている。
第2図においては、■の部分木はロジック設計仕様とソ
ースプログラムによらず同じである。
ースプログラムによらず同じである。
また、く条件式〉の構文IIJ素は、ロジック設計仕様
では■の部分木のように詳細化され、一方。
では■の部分木のように詳細化され、一方。
ソースプログラムでは■の部分木のように詳細化される
。
。
本発明番こよる拡張構文木は、具体的には、電子計算機
のメモリ上では、第2表に示すようなテーブルとして管
理される。
のメモリ上では、第2表に示すようなテーブルとして管
理される。
第2表において、E欄は拡張構文木に現われる全ての構
文要素の番号であり、この図では、前記番号は第1図の
それに対応させられている。
文要素の番号であり、この図では、前記番号は第1図の
それに対応させられている。
第2表
B:構文要素番号
第2衣のGj欄は、鈑当構文要素と、Pj欄に示された
5番目の子供構文要素との関係を示す有向グラフの種別
を示したものである0すなわち、第1図において実線矢
印、2重線矢印および点線矢印で示された有向グラフを
、それぞれ「0」「1」「2」で表わしたものである〇 これを第2表に即してさらに具体的に説明すれば1例え
ば、第1図の構文要素3と構文要素6および構文要素8
の関係は、第2表の構文要素3の行(横方向)の形で記
憶される〇 すなわち、B欄の構文1!累3は、PI欄の番号6で示
される構文要素(すなわち、構文要素6)で構成され、
しかも、構文要素3から構文要素6への詳細化は、Gl
橢で示される種別1(すなわち、・2重線矢印)により
、ロジック設計仕様の詳細化であることを示している。
5番目の子供構文要素との関係を示す有向グラフの種別
を示したものである0すなわち、第1図において実線矢
印、2重線矢印および点線矢印で示された有向グラフを
、それぞれ「0」「1」「2」で表わしたものである〇 これを第2表に即してさらに具体的に説明すれば1例え
ば、第1図の構文要素3と構文要素6および構文要素8
の関係は、第2表の構文要素3の行(横方向)の形で記
憶される〇 すなわち、B欄の構文1!累3は、PI欄の番号6で示
される構文要素(すなわち、構文要素6)で構成され、
しかも、構文要素3から構文要素6への詳細化は、Gl
橢で示される種別1(すなわち、・2重線矢印)により
、ロジック設計仕様の詳細化であることを示している。
また同時に前記構文要lX3は、P2欄の番号8で示さ
れる構文要素(すなわち、構文要素8)で構成され、し
かも、構文要素3から構文要素8への詳細化は、G2欄
で示される種別2(すなわち、点線矢印)により、ソー
スプログラムとしての詳細化であることを示している。
れる構文要素(すなわち、構文要素8)で構成され、し
かも、構文要素3から構文要素8への詳細化は、G2欄
で示される種別2(すなわち、点線矢印)により、ソー
スプログラムとしての詳細化であることを示している。
さらに、2つのく文〉は、それぞれ第2図に示したよう
に、ロジック設計仕様とソースプログラムとで、別々に
異って詳細化される。
に、ロジック設計仕様とソースプログラムとで、別々に
異って詳細化される。
次に1以上に述べた本発明の拡張構文木5こより管理さ
れた。ロジック設計仕様およびソースプログラムを変更
する場合の、構造エディタの処理アルゴリズムを第10
図に示す。
れた。ロジック設計仕様およびソースプログラムを変更
する場合の、構造エディタの処理アルゴリズムを第10
図に示す。
第10図の処理アルゴリズムを、第11図のロジック仕
様変更例の場合(修正対象がロジック設計仕様の場合)
について説明する〇 まず、BIGでは、修正対象がロジック設計仕様である
か、またはソースプログラムであるかの判定をする0 82Gにより、第1.2図1こおいて、実線矢印および
2重線矢印で表わされた部分木が、第2表のテーブルを
参照して抽出され、B2OによりCRTに表示される〇 前記のB10によって抽出された部分木は、ロジック設
計仕様であり、CRT画面やプリンタ上では、第11図
に示したように。
様変更例の場合(修正対象がロジック設計仕様の場合)
について説明する〇 まず、BIGでは、修正対象がロジック設計仕様である
か、またはソースプログラムであるかの判定をする0 82Gにより、第1.2図1こおいて、実線矢印および
2重線矢印で表わされた部分木が、第2表のテーブルを
参照して抽出され、B2OによりCRTに表示される〇 前記のB10によって抽出された部分木は、ロジック設
計仕様であり、CRT画面やプリンタ上では、第11図
に示したように。
IP湿温度100′C以下
THEN スイッチをONにする
BLUN スイッチをOFFにする
END :
と表示される〇
プログラマがCRT画面上で、「温度が100CIJ下
」を[温度が90 ′cK下」に変更した場合、第1θ
図のB2O,50により、「温度が100℃以下」とい
う部分木(第11図の0部分)に対応するソースプログ
ラムの部分木(第11図の0部分)を取り出し、CRT
画面に表示する。すなわち、 TEMP 、LB 、 1 o 。
」を[温度が90 ′cK下」に変更した場合、第1θ
図のB2O,50により、「温度が100℃以下」とい
う部分木(第11図の0部分)に対応するソースプログ
ラムの部分木(第11図の0部分)を取り出し、CRT
画面に表示する。すなわち、 TEMP 、LB 、 1 o 。
を表示する。
次に、B2Oにより、プログラマにr TEMP 。
Llif 、 100Jの変更要否を間合せる。プログ
ラマは、この間合せに応じ、必要に応じて、例えばソー
スプログラムの1部rloOJを「90」に変更する。
ラマは、この間合せに応じ、必要に応じて、例えばソー
スプログラムの1部rloOJを「90」に変更する。
この結果に応じて、B2Oで、変更されたソースプログ
ラムの部分を取り込む。
ラムの部分を取り込む。
B10で取り込まれたロジック設計仕様「温度が90t
l:1g下」%およびBooで取り込まれたソースプロ
グラムの変更内容「90」に基づき、B2Oで、拡張構
文木の部分木を変更する。すなわち、第11図中に示し
た■の変更および■の変更が実施される。
l:1g下」%およびBooで取り込まれたソースプロ
グラムの変更内容「90」に基づき、B2Oで、拡張構
文木の部分木を変更する。すなわち、第11図中に示し
た■の変更および■の変更が実施される。
以上に述べたように1本発明の方法によれば、プログラ
マがロジック設計仕様を変更する場合、対応するソース
プログラムの変更の要否が電子計算機側から間合せられ
るので、必要なソースプログラムの変更が忘れずに実施
される0このため、ロジック設計仕様とソースプログラ
ムとが、拡張構文木上で不一致となることがなく。
マがロジック設計仕様を変更する場合、対応するソース
プログラムの変更の要否が電子計算機側から間合せられ
るので、必要なソースプログラムの変更が忘れずに実施
される0このため、ロジック設計仕様とソースプログラ
ムとが、拡張構文木上で不一致となることがなく。
整合性を保ちながら管理される。
また、プログラマがソースプログラムを変更する場合は
、第10図のB90〜B15旧こより、前述と同様のC
RT への表示および処理が行なわれ、さらにロジック
設計仕様の変更要否の問合せが行なわれる。
、第10図のB90〜B15旧こより、前述と同様のC
RT への表示および処理が行なわれ、さらにロジック
設計仕様の変更要否の問合せが行なわれる。
それ故に、ソースプログラム変更に伴なって必要となる
ロジック設計仕様の変更を、プログラマが忘れることは
無くなり1両者の整合性の保持が保証される。
ロジック設計仕様の変更を、プログラマが忘れることは
無くなり1両者の整合性の保持が保証される。
μ上、本発明の詳細な説明して来たが、本発明のシステ
ムの全体構成は第12図に示す通りである。同図におい
て、100は電子計算機、200は前記電子計算機10
0内のメモリである。
ムの全体構成は第12図に示す通りである。同図におい
て、100は電子計算機、200は前記電子計算機10
0内のメモリである。
また300は、前記メモIJ 200上で管理されるロ
ジック設計仕様およびソースプログラムの拡張構文木で
あり、具体的には、例えば第2表に示した拡張構文木の
テーブルである。
ジック設計仕様およびソースプログラムの拡張構文木で
あり、具体的には、例えば第2表に示した拡張構文木の
テーブルである。
400は、前記メモリ200に記憶されたロジック設計
仕様およびソースプログラムを町視表示し、かつプログ
ラマによるロジック設計仕様およびソースプログラムの
変更指示を受付ける会話型端末である。
仕様およびソースプログラムを町視表示し、かつプログ
ラマによるロジック設計仕様およびソースプログラムの
変更指示を受付ける会話型端末である。
500は、メモ!J200上で管理されるロジック設計
仕様およびソースプログラムの拡張構文木300を会話
型端末40Gに表示するとともに、会話型端末400か
らプログラマによって入力されたロジック設計仕様およ
びソースプログラムの変更指示を解析し、メモIJ 2
00上の拡張構文木300を変更するための、構造エデ
ィタであり、具体的には、例えば第1θ図に示した処理
アルゴリズムを持つ構造エディタである。
仕様およびソースプログラムの拡張構文木300を会話
型端末40Gに表示するとともに、会話型端末400か
らプログラマによって入力されたロジック設計仕様およ
びソースプログラムの変更指示を解析し、メモIJ 2
00上の拡張構文木300を変更するための、構造エデ
ィタであり、具体的には、例えば第1θ図に示した処理
アルゴリズムを持つ構造エディタである。
本発明によれば、
(1) ロジック設計仕様が変更されれば、それに対
応したソースプログラムも併せて変更され、また (2)ソースプログラムが変更されれば、それに対応し
たロジック設計仕様も併せて変更される。
応したソースプログラムも併せて変更され、また (2)ソースプログラムが変更されれば、それに対応し
たロジック設計仕様も併せて変更される。
これIこより、ロジック設計仕様とソースプログラムを
両者の整合性を保ちながら管理できるので。
両者の整合性を保ちながら管理できるので。
プログラム品質の低下を未然に防止することができる0
第1図は本発明による拡張構文木の概略構成を説明する
ための図である。 第2図は本発明の拡張構文木によって、ロジック設計仕
様とソースプログラムの一元管理を実現するテーブルの
構成列を示す図である。 第3図はプログラミング言語規則に基づいて作成された
ソースプログラムの例を示す図である。 第4図は第3図のソースプログラムを構造エディタの構
文木で示した図である〇 第5図はロジック設計言語規則に基づいて作成されたロ
ジック設計仕様の例を示す図である。 第6図は第5図のロジック設計仕様を構造エディタの構
文木で示した図である。 第7図および第8図はロジック設計仕様とソースプログ
ラムとの不整合を説明するための、ソースプログラム、
ロジック設計仕様および構文木を示した図である。 第9図はロジック設計仕様構文木とソースプログラム構
文木の一致点および相違点を説明した図である。 第10図は拡張構文木に基づいてロジック設計仕様およ
びソースプログラムを変更する場合の構造エディタの処
理アルゴリズムを示すフローチャートである。 第11図はロジック設計仕様変更の的を示した図である
。 第12図は本発明の1実施的の全体構成を示すブロック
図である。 代理人 弁理士 平 木 道 入坑 1
図 く構文要素1〉會 第3図 第4図 TEMP 100 <定数〉
く定数〉第 5 図 第 6 図 第7図 (a) (b) 〈文〉 ↓ シーと唄xj工 第8図 (a) (b) 〈文〉 ■ 90((変更もれ 10 第9図 (a) く文〉 (b) (c)番 く定数〉 番 第10図 ! 12図
ための図である。 第2図は本発明の拡張構文木によって、ロジック設計仕
様とソースプログラムの一元管理を実現するテーブルの
構成列を示す図である。 第3図はプログラミング言語規則に基づいて作成された
ソースプログラムの例を示す図である。 第4図は第3図のソースプログラムを構造エディタの構
文木で示した図である〇 第5図はロジック設計言語規則に基づいて作成されたロ
ジック設計仕様の例を示す図である。 第6図は第5図のロジック設計仕様を構造エディタの構
文木で示した図である。 第7図および第8図はロジック設計仕様とソースプログ
ラムとの不整合を説明するための、ソースプログラム、
ロジック設計仕様および構文木を示した図である。 第9図はロジック設計仕様構文木とソースプログラム構
文木の一致点および相違点を説明した図である。 第10図は拡張構文木に基づいてロジック設計仕様およ
びソースプログラムを変更する場合の構造エディタの処
理アルゴリズムを示すフローチャートである。 第11図はロジック設計仕様変更の的を示した図である
。 第12図は本発明の1実施的の全体構成を示すブロック
図である。 代理人 弁理士 平 木 道 入坑 1
図 く構文要素1〉會 第3図 第4図 TEMP 100 <定数〉
く定数〉第 5 図 第 6 図 第7図 (a) (b) 〈文〉 ↓ シーと唄xj工 第8図 (a) (b) 〈文〉 ■ 90((変更もれ 10 第9図 (a) く文〉 (b) (c)番 く定数〉 番 第10図 ! 12図
Claims (3)
- (1)プログラムのロジック設計仕様およびソースプロ
グラムを、構造エディタが扱う構文木の形式で電子計算
機メモリ上に記憶・管理するソフトウェア仕様管理方式
において、 (a)ロジック設計仕様およびソースプログラムに共通
の構文に対応する第1の部分木と、ロジック設計仕様に
特有の構文に対応する第2の部分木と、ソースプログラ
ムに特有の構文に対応する第3の部分木とを、1つの拡
張構文木として記憶・管理し、 (b)前記拡張構文木上に記憶されたロジック設計仕様
およびソースプログラムの一方の構文要素を、構造エデ
ィタによつて変更する場合には、変更対象の構文要素に
対応する、前記ロジック設計仕様およびソースプログラ
ムの他方の構文要素を、可視的に端末に表示し、(c)
これによつて、プログラマに、前記ロジック設計仕様お
よびソースプログラムの他方の変更を促すことを特徴と
するソフトウェアー仕様管理方式。 - (2)構文要素を可視的に表示する前記端末は、CRT
およびプリンタの少なくとも1つであることを特徴とす
る前記特許請求の範囲第1項記載のソフトウェア仕様管
理方式。 - (3)構文要素を可視的に表示する前記端末は、会話型
端末であることを特徴とする前記特許請求の範囲第1項
または第2項記載のソフトウェア仕様管理方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP60123931A JPH0656577B2 (ja) | 1985-06-07 | 1985-06-07 | ソフトウェア仕様管理方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP60123931A JPH0656577B2 (ja) | 1985-06-07 | 1985-06-07 | ソフトウェア仕様管理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS61282934A true JPS61282934A (ja) | 1986-12-13 |
| JPH0656577B2 JPH0656577B2 (ja) | 1994-07-27 |
Family
ID=14872890
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP60123931A Expired - Lifetime JPH0656577B2 (ja) | 1985-06-07 | 1985-06-07 | ソフトウェア仕様管理方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0656577B2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63148339A (ja) * | 1986-12-12 | 1988-06-21 | Fujitsu Ltd | プログラムテスト処理方式 |
| JP2007525733A (ja) * | 2003-06-06 | 2007-09-06 | インテンショナル ソフトウェア コーポレーション | プログラムツリー内でカテゴリ別にノードを編成し操作する方法およびシステム |
-
1985
- 1985-06-07 JP JP60123931A patent/JPH0656577B2/ja not_active Expired - Lifetime
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63148339A (ja) * | 1986-12-12 | 1988-06-21 | Fujitsu Ltd | プログラムテスト処理方式 |
| JP2007525733A (ja) * | 2003-06-06 | 2007-09-06 | インテンショナル ソフトウェア コーポレーション | プログラムツリー内でカテゴリ別にノードを編成し操作する方法およびシステム |
| US7730102B2 (en) | 2003-06-06 | 2010-06-01 | Intentional Software Corporation | Method and system for organizing and manipulating nodes by category in a program tree |
| JP2010146583A (ja) * | 2003-06-06 | 2010-07-01 | Intentional Software Corp | プログラムツリー内でカテゴリ別にノードをまとめる方法及びシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0656577B2 (ja) | 1994-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Fowler | Refactoring: improving the design of existing code | |
| US12411905B2 (en) | Browser extension with automation testing support | |
| US20020007483A1 (en) | Interactive flow visualization, graphical editing and analysis of textual languages | |
| Zakas | Maintainable JavaScript: Writing Readable Code | |
| Price | C# 8.0 and. NET Core 3.0–Modern Cross-Platform Development: Build applications with C#,. NET Core, Entity Framework Core, ASP. NET Core, and ML. NET using Visual Studio Code | |
| Kort et al. | Parse-tree annotations meet re-engineering concerns | |
| JPS61282934A (ja) | ソフトウェア仕様管理方法 | |
| Certezeanu et al. | Quicksort Revisited | |
| Rodriguez | Literate data analysis with Stata and Markdown | |
| Mailund | Introduction to R programming | |
| Jackson | Software abstractions, revised edition: logic, language, and analysis | |
| Miller | The pleasurable difficulty of programming | |
| Visochek | Practical Data Wrangling: Expert techniques for transforming your raw data into a valuable source for analytics | |
| Fu et al. | GeckoGraph: A visual language for polymorphic types | |
| Ribeiro et al. | A mechanized textbook proof of a type unification algorithm | |
| Mailund | Domain-Specific Languages in R | |
| Koskimies et al. | Modelling of space‐efficient one‐pass translation using attribute grammars | |
| Sommerfeld | Unlock PHP 8: From Basic to Advanced | |
| Cox | Speaking Stata: Problems with lists | |
| Kats et al. | Learn Python by Building Data Science Applications: A fun, project-based guide to learning Python 3 while building real-world apps | |
| Gudivada et al. | Languages and Grammar | |
| Lengstorf et al. | Understanding PHP: Language Basics | |
| Petrone et al. | DUAL: An interactive tool for developing documented programs by step-wise refinements. | |
| Kalkhanda | Learning AWK Programming: A fast, and simple cutting-edge utility for text-processing on the Unix-like environment | |
| JP2607976B2 (ja) | デバック方式 |