JP3112623B2 - プログラム生産支援装置 - Google Patents

プログラム生産支援装置

Info

Publication number
JP3112623B2
JP3112623B2 JP06226928A JP22692894A JP3112623B2 JP 3112623 B2 JP3112623 B2 JP 3112623B2 JP 06226928 A JP06226928 A JP 06226928A JP 22692894 A JP22692894 A JP 22692894A JP 3112623 B2 JP3112623 B2 JP 3112623B2
Authority
JP
Japan
Prior art keywords
description
module
language
tree structure
programming language
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.)
Expired - Fee Related
Application number
JP06226928A
Other languages
English (en)
Other versions
JPH0895761A (ja
Inventor
誠市 舩坂
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=16852806&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP3112623(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP06226928A priority Critical patent/JP3112623B2/ja
Publication of JPH0895761A publication Critical patent/JPH0895761A/ja
Application granted granted Critical
Publication of JP3112623B2 publication Critical patent/JP3112623B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、プログラムの生産を
支援する装置に関するものである。
【0002】
【従来の技術】図82は、例えば特開平4−11112
4号公報に示された従来のプログラム生産支援装置を示
す構成図、図83は同従来のプログラム生産支援装置の
動作を示すフローチャートである。図82において、1
501はキーボードなどのデータ入力手段、1502は
データ定義部、1503は表示部、1504は表示手
段、1505はブロック・チャート編集部、1506は
ブロック・エディタ部、1507はソースコード出力
部、1508はソースコード記録手段である。
【0003】この従来のプログラム生産支援装置の動作
について、図83のフローチャートを用いて説明する。
まず、データ入力手段1501より、ファイル名、デバ
イス・タイプなどのデータをデータ定義部1502に入
力し、表示部1503を介して表示手段1504に表示
して確認を行なう。同様にして、データ入力手段150
1より、ブロック・チャートのレイアウト情報をブロッ
ク・チャート編集部1505に入力し、表示部1503
を介して表示手段1504に表示して確認し、修正の必
要があれば同じ手順にて修正する。更に、データ入力手
段1501より、プログラムの部品内容をブロック・エ
ディタ部1506に入力し、表示部1503を介して表
示手段1504に表示して確認し、修正の必要があれば
同じ手順にて修正する。以上の作業結果に不備がある場
合は、満足のいく結果が得られるまで以上の操作を手作
業にて繰り返し行なう。しかる後に、データ定義、ブロ
ック・チャート、プログラム部品の情報を寄せ集めてソ
ースコード出力部1507に入力して編集し、その結果
をソースコード記録手段1508に記録する。こうして
得られたソースコードに不備がある場合は、満足のいく
結果が得られるまで以上全ての操作を繰り返し行なう。
【0004】
【発明が解決しようとする課題】従来のプログラム生産
支援装置は以上のように構成されているので、プログラ
ムを変更する場合には、作業者が上記作業を画面で確認
しながら繰り返して行なう必要があり、かなりの時間を
要するという問題があった。更に作業者が間違ったデー
タを入力しても、そのことを検出する手段がなかった
り、入力途中の段階では内容を確認できないなどの問題
点があった。入力に際しても設計が固まってからでなけ
れば作業に着手できず、設計途中の未完成段階では全く
入力できないという問題があった。また、このような作
業を行なう為には、グラフィック表示機能の付いた高価
な計算機が必要となり、広く全員に広めることが不可能
であった。
【0005】この発明は上記課題を解決する為になされ
たものであり、言語ベースのデータを入力とすることに
より、このデータを入力するだけで、入力データに関す
る文法チェックを自動的に行なうと共に、必要な図表を
自動的に生成する装置を得ることを目的とする。また、
前工程で作成されレビューされたデータを、後工程の入
力(ひな型)として流用できるようにすることで、前工
程のデータを正確に後工程に伝える為の装置を得ること
も目的とする。更に、全ての入力と出力をテキスト(文
字データ)にすることにより、広く一般に普及している
汎用のテキスト・エディタを用いて、データの入力およ
び編集を可能にすると共に、広く一般に普及しているC
RTおよびプリンタから図表を出力できるようにし、広
く全員に普及できる装置を得ることも目的とする。
【0006】
【課題を解決するたもの手段】この発明におけるプログ
ラム生産支援装置は、言語から言語もしくは言語から図
表への自動変換を主体とし、言語の正当性検査手段と図
表の自動生成手段を設けたものである。この発明に係る
プログラム生産支援装置は、自然言語と各機能の階層構
造を示す記号とで記述された仕様記述を読み込みその内
容を字句に分解する字句解析手段と、字句に分解された
仕様記述の構文解析を行う構文解析手段と、構文解析結
果をもとに各機能の階層構造を抽出する階層構造抽出手
段と、上記抽出された階層構造をもとに上記仕様記述に
対応した図または自然言語及びプログラミング言語に準
じた制御構造で記述された疑似言語記述を生成する生成
手段とを有するものである。
【0007】さらに、仕様記述に、種別を示す記号を記
述し、生成手段が、上記種別に従って、ディレクトリ、
ファイル、またはモジュールの少なくとも1つを生成す
るようにしてもよい。
【0008】また、この発明に係るプログラム生産支援
装置は、自然言語とプログラミング言語に準じた制御構
造で記述された疑似言語記述を読み込みその内容を字句
に分解する字句解析手段と、字句に分解された疑似言語
記述の構文解析を行う構文解析手段と、構文解析結果を
もとに上記疑似言語に対応した資料、図またはプログラ
ミング言語記述を生成する生成手段とを有するものであ
る。また、疑似言語記述に、インターフェース仕様が記
述された仕様記述部とモジュールの定義・参照が記述さ
れたロジック記述部とを記述し、生成手段が、構文解析
結果をもとに上記仕様記述部に記述されたインターフェ
ース仕様を抽出するインターエース仕様抽出手段と、上
記構文解析結果をもとに上記ロジック記述部に記述され
たモジュールの定義・参照を抽出するモジュール定義・
参照抽出手段と、上記抽出されたインターフェース仕様
及びモジュールの定義・参照をもとに上記疑似言語記述
に対応したデザインレビュー用資料を生成するデザイン
レビュー用資料生成手段とを有するようにしてもよい。
【0009】また、生成手段が、構文解析結果をもとに
自然言語で記述されている処理説明および制御構造を木
構造に変換して記憶する制御構造抽出手段と、変換され
た木構造をもとに疑似言語記述に対応した木構造チャー
トを生成する木構造チャート生成手段とを有するように
してもよい。
【0010】さらに、生成手段が、構文解析結果をもと
に自然言語で記述されている処理説明及び制御構造を木
構造に変換して記憶する制御構造抽出手段と、変換され
た木構造をもとに疑似言語の制御構造をそれに対応する
プログラミング言語の制御構造に変換する制御構造変換
手段と、上記変換された木構造をもとに疑似言語の処理
説明をプログラミング言語のコメントに変換する手段と
を有するようにしてもよい。
【0011】また、この発明に係るプログラム生産支援
装置は、特定のプログラミング言語で記述されたテキス
トのプログラミング言語記述を読み込みその内容を字句
に分解する字句解析手段と、字句に分解されたプログラ
ミング言語記述の構文解析を行う構文解析手段と、構文
解析結果をもとに上記プログラミング言語に対応した
図、表または言語記述を生成する生成手段とを有するも
のである。
【0012】また、生成手段が、構文解析結果をもとに
プログラムの制御構造及びそれに付随するコメントを抽
出する制御構造抽出手段と、上記制御構造をもとにプロ
グラミング言語の制御構造を自然言語及び上記プログラ
ミング言語に準じた制御構造で記述された疑似言語の制
御構造に変換する制御構造変換手段と、上記制御構造を
もとに上記プログラミング言語の文およびコメントを上
記疑似言語の自然言語で記述された処理説明に変換する
手段とを有するようにしてもよい。
【0013】また、生成手段が、構文解析結果をもとに
プログラムの制御構造とそれに付随するコメントを木構
造に変換して記憶する制御構造抽出手段と、指定に応じ
て木構造に反映したくない情報を木構造から削除する不
要情報割愛手段と、木構造をもとにプログラミング言語
に対応した木構造チャートを生成する木構造チャート生
成手段とを有するようにしてもよい。
【0014】また、生成手段が、構文解析結果をもとに
プログラミング言語記述のヘッダーコメントに記述され
たインターフェース仕様を抽出するインターフェース仕
様抽出手段と、構文解析結果をもとに上記プログラミン
グ言語記述のモジュールの定義・参照を木構造に変換し
て記憶するモジュール定義・参照抽出手段と、ヘッダー
コメント中のモジュール欄の名称が実際のモジュール名
に一致しているかを照合するモジュール名照合手段と、
上記インターフェース仕様及び上記木構造をもとにプロ
グラミング言語記述に対応したモジュール仕様書を生成
するモジュール仕様生成手段とを有するようにしてもよ
い。
【0015】また、生成手段が、構文解析結果をもとに
モジュールの定義・参照を木構造に変換して記憶するモ
ジュール定義・参照抽出手段と、上記木構造をもとに同
一構造を上記木構造から削除し置換用の情報で置換する
同一構造割愛手段と、上記木構造をもとにプログラミン
グ言語記述に対応したモジュール構成図を生成するモジ
ュール構成図生成手段とを有するようにしてもよい。
【0016】また、生成手段が、構文解析結果をもとに
シンボルの定義情報を記憶するシンボル定義抽出手段
と、上記シンボルの定義情報をシンボルが定義された順
に並び換えるシンボル定義並び換え手段と、上記シンボ
ルの定義情報をもとにプログラミング言語記述に対応し
たシンボル一覧表を生成するシンボル一覧表生成手段と
を有するようにしてもよい。
【0017】また、字句に分解されたプログラミング言
語記述中の特定の位置に位置するものだけを抽出しその
中に特定のパターンが含まれていることを検出して警告
メッセージを出力する特定パターンの検出手段を有する
ようにしてもよい。
【0018】さらに、生成手段が、構文解析結果をもと
にプログラミング言語記述中の所定の位置にプログラム
の実行を追跡するための実行追跡処理を埋込む実行追跡
処理埋め込み手段を有するようにしてもよい。
【0019】
【作用】この発明におけるプログラム生産支援装置は、
言語から言語への変換を主体とし、図表レベルでの変更
・修正に比べてデータの変更・修正を容易とする一方、
データが部分的に入力された段階でも各種図表を生成
し、中間的な出力結果を見ながらデータを変更・修正し
ていくことを可能とする。すなわち、この発明のプログ
ラム生産支援装置は、書籍の目次に準じた形式の仕様記
述を入力にすることにより、プログラムの機能構成を示
した機能構成図を自動的に生成する。
【0020】さらに、書籍の目次に準じた形式の仕様記
述を入力にすることにより、プログラムを実現するに必
要なディレクトリ、ファイルおよびモジュールを自動的
に生成する。
【0021】また、この発明のプログラム生産支援装置
は、プログラミング言語に準じた疑似言語記述を入力に
することにより、モジュールのデザインレビュー用資料
を自動的に生成する。
【0022】また、プログラミング言語に準じた疑似言
語記述を入力にすることにより、モジュールの処理フロ
ーを示す木構造をチャートを自動的に生成する。
【0023】さらに、プログラミング言語に準じた疑似
言語記述を入力にすることにより、モジュールのプログ
ラミング言語記述のひな形を自動的に生成する。
【0024】また、この発明のプログラム生産支援装置
は、プログラミング言語記述を入力にすることにより、
プログラミング言語記述からプログラミング言語記述に
準じた疑似言語を自動的に生成する。
【0025】また、プログラミング言語記述を入力にす
ることにより、プログラミング言語記述からユーザ(操
作者)の要求に応じた木構造チャートを自動的に生成す
る。
【0026】また、プログラミング言語記述を入力にす
ることにより、ヘッダーコメント中の「MODULE」欄に記
述された名前に正確に対応したモジュール仕様書を自動
的に生成する。
【0027】また、プログラミング言語記述を入力にす
ることにより、プログラミング言語記述から実用的なモ
ジュール構成図を自動的に生成する。
【0028】また、プログラミング言語記述を入力にす
ることにより、プログラミング言語記述から実用的なシ
ンボル一覧表を自動的に生成する。
【0029】また、プログラミング言語記述を入力にす
ることにより、プログラミング言語記述から文法的には
正しいが意味的にはエラーである可能性が高い記述を自
動的に検出して警告メッセージを出力する。
【0030】また、プログラミング言語記述を入力にす
ることにより、プログラミング言語記述にプログラムの
実行追跡処理を自動的に埋め込む。
【0031】さらに、プログラム生産における事務的な
処理を自動化したり、前工程で作成されレビューされた
情報を後工程の入力として流用することが可能となる。
【0032】
【実施例】以下、この発明の各実施例について、図1乃
至図81を用いて説明する。図81は、以下に記述する
実施例1〜実施例12の前提となるハードウェアを示す
構成図である。この図81において、1401は入力手
段としてのキーボード、1402は表示手段としてのデ
ィスプレイ、1403はプログラム生産支援装置の主要
構成部としての計算機、1404は計算機1403に対
する外部メモリを構成する外部記憶、1405は出力手
段としてのプリンタである。 実施例1.図1は実施例1のプログラム生産支援装置を
示す構成図、図2は実施例1におけるプログラム生産支
援装置の動作を示すフローチャート、図3および図4は
実施例1の入力である「仕様記述」の一例を示す図、図
5および図6は実施例1の出力である「機能構成図」の
一例を示す図、図7は実施例1の制御構造抽出手段によ
って変換され記憶される木構造を示す図である。
【0033】図1において、101は自然言語および各
機能の階層構造と種別が記述された「仕様記述」、10
2は仕様記述101を読み込みその内容を字句に分解す
る「字句解析手段」、103は字句に分解された仕様記
述101の構文解析を行う「構文解析手段」、104は
構文解析手段103による仕様記述101の構文解析結
果をもとに各機能の階層構造を木構造に変換して記憶す
る「階層構造抽出手段」、105は階層構造抽出手段1
04によって記憶された木構造をもとに仕様記述101
に対応した機能構成図を自動生成する「機能構成図生成
手段」、106は機能構成図生成手段105によって自
動生成された「機能構成図」である。
【0034】この実施例1におけるプログラム生産支援
装置の動作について、図2に示すフローチャートを用い
て説明する。まず、字句解析手段102は、自然言語お
よび各機能の階層構造と種別を示す特殊記号で記述され
た仕様記述101(図3および図4参照)を読み込みそ
の内容を字句に分解する(図2のステップ(イ))。次
に、構文解析手段103は、字句解析手段102によっ
て字句に分解された仕様記述101の構文解析を行う
(図2のステップ(ロ))。次に、階層構造抽出手段1
04は、構文解析手段103による仕様記述101の構
文解析結果をもとに仕様記述101内の行頭に記述され
たピリオドの数によって、各機能の階層構造(ピリオド
の数が多いほど下位構造であることを意味する)を判断
し、その情報、例えば、 .大機能 ..中機能 ...小機能 ...小機能 ..中機能 ...小機能 ...小機能 を図7に示す木構造に変換して記憶すると共に、ピリオ
ドの直後に記述されている機能概要(例えば図3および
図4中の「全機能」)を、階層構造に対応付けて記憶す
る(図2中のステップ(ハ))。次に、機能構成図生成
手段105は、階層構造抽出手段104によって記憶さ
れた木構造をもとに、仕様記述101に対応した機能構
成図106(図5および図6参照)を自動生成する(図
2中のステップ(ニ))。
【0035】この実施例1では、各機能の階層構造を示
す特殊記号としてピリオドを用いる方法を紹介したが、
これは他のいかなる記号(例えば「@」)であっても構
わない。同様に、この実施例1では、各機能の階層構造
を記憶する手段として木構造を用いる方法を紹介した
が、これは他のいかなるデータ構造(例えば「リスト構
造」)であっても構わない。
【0036】次に、従来例と比較して、この実施例1の
優れている点について説明する。この実施例1と同じ機
能を実現する従来の方法としては次の2つが考えられ
る。
【0037】第1の方法は、図形エディタなどの汎用ツ
ールを用いて、目的とする機能構成図を人間が作成する
というものである。この方法は確かに現実的ではある
が、図の作成に膨大な時間が必要(作業コストの問題)
となるだけでなく、図の書き方に個人差が出る(属人性
の問題)、ミスが入り込みやすい(作業品質の問題)、
など多くの問題がある。
【0038】第2の方法は、機能構成図を作成する為の
専用エディタを開発し提供するというものである。この
方法では、第1の方法の欠点をある程度解消することは
できるが、代わりに、専用エディタを開発するのに相当
な費用がかかる(開発コストの問題)、開発したエディ
タは機能構成図専用であり潰しが利かない(投資効果の
問題)、ユーザに専用エディタの使い方を教育する必要
がある(教育コストの問題)、といった新たな問題を誘
発する。
【0039】これに対しこの実施例1を使用した場合、
書籍の目次に準じた形式(〜章、〜節、〜項といった感
覚)の仕様記述101を入力するだけで、プログラムの
機能構成を示した機能構成図が自動的に生成されるの
で、人間が図形エディタなどを用いてこれと同等な機能
構成図を作成するのに比べ、図の作成に要する時間が大
幅に短縮されるだけでなく、図の書き方に関する個人差
が完全に是正されると共に、仕様と図との不一致が全く
無くなるという効果がある。更に、入力となる仕様記述
101は容易に再配置可能であり、必要に応じ如何よう
にでも順番を入れ替えて試行錯誤できるという効果があ
る。また、入力となる仕様記述101は単なるテキスト
であり、一般的なテキスト・エディタを用いて作成でき
るので、新たに専用エディタを開発して提供する必要が
ないばかりか、ユーザが自分の使い慣れたエディタを用
いて仕様記述101を作成できるという効果がある。こ
れは、この実施例1が低コストで実現かつ運用可能であ
ることを意味している。
【0040】以上のようにこの実施例1によれば、図1
に示すように、書籍の目次に準じた形式の仕様記述10
1を入力にすると共に、プログラム生産支援装置中に、
字句解析手段102、構文解析手段103、階層構造抽
出手段104、および機能構成図生成手段105を設け
ることにより、機能構成図106の作成に要する時間を
大幅に短縮できると共に、機能構成図106の品質を格
段に高めることができ、結果としてプログラム生産の高
品質化に大きく寄与することができる。
【0041】実施例2.図8は、実施例2のプログラム
生産支援装置を示す、図9は実施例2におけるプログラ
ム生産支援装置の動作を示すフローチャート、図10は
実施例2の出力であるディレクトリ構成の一例を示す
図、図11は実施例2の出力であるモジュールの一例を
示す図構成図である。なお、実施例2の入力である「仕
様記述」の一例としては、図3および図4に図示したも
のを使用する。
【0042】以下、図8の図1と異なる要素について説
明する。図8において、201は階層構造抽出手段10
4によって記憶された木構造をもとに仕様記述101に
従ってディレクトリを自動生成する「ディレクトリ生成
手段」、202は階層構造抽出手段104によって記憶
された木構造をもとに仕様記述101に従ってファイル
を自動生成する「ファイル生成手段」、203は階層構
造抽出手段104によって記憶された木構造をもとに仕
様記述101に従ってモジュールを自動生成する「モジ
ュール生成手段」、204は「外部記憶」、205はデ
ィレクトリ生成手段201によって外部記憶204中に
自動生成された「ディレクトリ」、206、207、2
08はファイル生成手段202によってディレクトリ2
05下に自動生成された「ファイル」、209、21
0、211はモジュール生成手段203によってファイ
ル208内に自動生成された「モジュール」である。
【0043】この実施例2におけるプログラム生産支援
装置の動作について、図9に示すフローチャートを用い
て説明する。図9において、ステップ(イ)、ステップ
(ロ)、ステップ(ハ)は、図2のそれと基本的に同じ
である。ただし、ステップ(ハ)は、ピリオドの直後に
記述されている機能概要(例えば図3および図4中の
「全機能」)を階層構造に対応付けて記憶する以外に、
ピリオドで始まる行の行末に記述されている識別子(例
えば図3および図4中の「dir_1」)、その識別子の末
尾に記述されている各機能の種別を示す特殊記号
(「/」「.c」「()」)、および、行頭がピリオドで始
まる行の次の行に記述されている機能説明(例えば図3
および図4中の「全機能に対する機能説明」)を、階層
構造に対応付けて記憶する点が異なっている。尚、この
とき階層構造に対応付けて記憶された各機能の種別を示
す特殊記号は、のちほど各機能を具現化する際に、それ
らをディレクトリ205、ファイル206〜208、モ
ジュール209〜211のいずれとして生成するかを決
定する(図9のステップ(ニ))。以下、図9の図2と
異なる動作について説明する。仕様記述101に対して
一通りの処理(木構造への変換とその記憶)が完了する
と、ディレクトリ生成手段201は、階層構造抽出手段
104によって記憶された木構造をもとに、各機能の種
別を示す特殊記号が「/」であるものについて、それに
対応して記憶された識別子を名前とするディレクトリ2
05を、外部記憶204中に自動生成する(図9のステ
ップ(ホ))。同様に、ファイル生成手段202は、階
層構造抽出手段104によって記憶された木構造をもと
に、各機能の種別を示す特殊記号が「.c」であるものに
ついて、それに対応して記憶された識別子を名前とする
ファイル206〜208(図10参照)をディレクトリ
205下に自動生成する(図9のステップ(ヘ))。同
様に、モジュール生成手段203は、階層構造抽出手段
104によって記憶された木構造をもとに、各機能の種
別を示す特殊記号が「()」であるものについて、それに
対応して記憶された識別子を名前とするモジュール20
9〜211(図11参照)をファイル208内に自動生
成する(図9のステップ(ト))。
【0044】次に、仕様記述101からモジュール20
9〜211を生成する手順を、図3と図4および図11
を用いて説明する。
【0045】前述のとおり、仕様記述101内の情報が
ディレクトリ205、ファイル206〜208、モジュ
ール209〜211のいずれとして具現化されるかは、
各機能の種別を示す特殊記号(「/」「.c」「()」)に
よって決定される。例えば、図3および図4中の ..大機能 dir_1_1/ [大機能に対する機能説明] ...中機能 file_1_1_1.c [中機能に対する機能説明] ....小機能 func_1_1_1_1() [小機能に対する機能説明] という記述は、行頭のピリオドの数によって、 大機能−中機能−小機能 という階層構造を意味すると共に、各機能の種別を示す
特殊記号によって、「「dir_1_1」という名前のディレ
クトリを生成(「/」で指示)した上で、その下に「fil
e_1_1_1.c」という名前のファイルを生成(「.c」で指
示)し、その内部に「func_1_1_1_1」という名前のモジ
ュールを生成(「()」で指示)せよ」という作業指示を
意味している。この原則により、仕様記述101から必
要なディレクトリ205、ファイル206〜208、モ
ジュール209〜211が自動的に生成される。
【0046】尚、こうして生成されたモジュール209
〜211には、仕様記述101中のピリオドで始まる行
の行末に記述されている識別子(例えば図3および図4
中の「func_1_1_1_1()」)がモジュール209〜211
内の仕様記述部(function spec)とロジック記述部(f
unction logic)の名前として、ピリオドの直後に記述
されている機能概要(例えば図3および図4中の「小機
能」)が仕様記述部のABSTRACT欄の説明として、ピリオ
ドで始まる行の次の行に記述されている機能説明(例え
ば図3および図4中の「小機能に対する機能説明」)が
仕様記述部のFUNCTION欄の説明として、それぞれ function spec func_1_1_1_1() ←仕様記述部 { ABSTRACT: 小機能 FUNCTION: 小機能に対する機能説明 NOTE : interface: ARGUMENT: RETURN : GLOBAL : } function logic func_1_1_1_1() ←ロジック記述部 { } という形式で自動的に反映される。
【0047】この実施例2では、各機能の階層構造を示
す特殊記号としてピリオドを用いる方法を紹介したが、
これは他のいかなる記号(例えば「@」)であっても構
わない。同様に、この実施例2では、各機能の階層構造
を記憶する手段として木構造を用いる方法を紹介した
が、これは他のいかなるデータ構造(例えば「リスト構
造」)であっても構わない。同様に、この実施例2で
は、各機能の種別を示す特殊記号(ディレクトリ20
5、ファイル206〜208、モジュール209〜21
1のいずれとして具現化するかを指示)として、それぞ
れ「/」「.c」「()」を用いる方法を紹介したが、これ
は他のいかなる記号(例えば「.dir」「.file」「.modu
le」)であっても構わない。同様に、この実施例2で
は、仕様記述内の情報をモジュール209〜211内に
反映する手段として、「仕様記述部」と「ロジック記述
部」という形式を用いる方法を紹介したが、これは他の
いかなる形式(例えば「表形式」)であっても構わな
い。
【0048】次に、従来例と比較して、この実施例2の
優れている点について説明する。この実施例2と同じ機
能を実現する従来の方法としては次のものが考えられ
る。
【0049】その方法とは、ディレクトリ、ファイル、
およびモジュールを生成する為の対話型ツールを開発し
提供するというものである。この方法は一見合理的に見
えるが、実施例1のところでも指摘したとおり、対話型
ツールを開発するのに相当な費用がかかる(開発コスト
の問題)、開発した対話型ツールは当該機能専用であり
潰しが利かない(投資効果の問題)、ユーザに対話型ツ
ールの使い方を教育する必要がある(教育コストの問
題)だけでなく、目的のものを作成するのに膨大な時間
がかかる(作業コストの問題)、作業のやり方に個人差
が出る(属人性の問題)、ミスが入り込みやすい(作業
品質の問題)、など多くの問題がある。
【0050】これに対しこの実施例2を使用した場合、
書籍の目次に準じた形式(〜章、〜節、〜項といった感
覚)の仕様記述101を入力するだけで、プログラムを
実現するのに必要なディレクトリ205、ファイル20
6〜208およびモジュール209〜211が自動的に
生成されるので、人間が対話型ツールを用いてこれと同
等なリソースを生成するのに比べ、これらの生成に要す
る時間が大幅に短縮されるだけでなく、作業のやり方に
関する個人差を完全に是正できると共に、前工程の設計
情報(機能構成)を後工程に忠実に伝えることができる
という効果がある。また、入力となる仕様記述101は
単なるテキストであり、一般的なテキスト・エディタを
用いて作成できるので、新たに専用エディタを開発して
提供する必要がないばかりか、ユーザが自分の使い慣れ
たエディタを用いて仕様記述101を作成できるという
効果がある。これは、この実施例2が低コストで実現か
つ運用可能であることを意味している。
【0051】以上のようにこの実施例2によれば、図8
に示すように、書籍の目次に準じた形式の仕様記述10
1を入力にすると共に、プログラム生産支援装置中に、
字句解析手段102、構文解析手段103、階層構造抽
出手段104、ディレクトリ生成手段201、ファイル
生成手段202、およびモジュール生成手段203を設
けることにより、プログラムを実現するのに必要なディ
レクトリ205、ファイル206〜208、およびモジ
ュール209〜211を自動生成できると共に、前工程
の設計情報(機能構成)を後工程に忠実に伝えることが
でき、結果としてプログラム生産の高品質化に大きく寄
与することができる。
【0052】実施例3.図12は実施例3のプログラム
生産支援装置を示す構成図、図13は実施例3における
プログラム生産支援装置の動作を示すフローチャート、
図14および図15は実施例3の入力である「疑似言語
記述」の一例を示す図、図16は実施例3の出力である
「デザインレビュー用資料」の一例を示す図である。
【0053】図12において、301はモジュールのイ
ンターフェース仕様と処理フローが記述された「疑似言
語記述」、302は疑似言語記述301を読み込んで字
句に分解する「字句解析手段」、303は字句に分解さ
れた疑似言語記述301の構文解析を行なう「構文解析
手段」、304は構文解析手段303による疑似言語記
述301の構文解析結果をもとに仕様記述部の各欄に記
述されたインターフェース仕様を記憶する「インターフ
ェース仕様抽出手段」、305は構文解析手段303に
よる疑似言語記述301の構文解析結果をもとにロジッ
ク記述部に記述されたモジュールの定義・参照を記憶す
る「モジュール定義・参照抽出手段」、306はインタ
ーフェース仕様抽出手段304およびモジュール定義・
参照抽出手段305によって記憶された情報をもとに疑
似言語記述301に対応したデザインレビュー用資料を
自動生成する「デザインレビュー用資料生成手段」、3
07はデザインレビュー用資料生成手段306によって
自動生成された「デザインレビュー用資料」である。
【0054】この実施例3におけるプログラム生産支援
装置の動作について、図13に示すフローチャートを用
いて説明する。
【0055】まず、字句解析手段302は、モジュール
のインターフェース仕様と処理フローが記述された疑似
言語記述301(図14および図15参照)を読み込み
その内容を字句に分解する(図13のステップ
(イ))。次に、構文解析手段303は、字句解析手段
302によって字句に分解された疑似言語記述301の
構文解析を行なう(図13のステップ(ロ))。次に、
インターフェース仕様抽出手段304は、構文解析手段
303による疑似言語記述301の構文解析結果をもと
に、疑似言語記述301内の仕様記述部(function spe
c)の先頭に記述されているモジュール名(例えば図1
4および図15中の「main」)、ABSTRACT欄に記述され
ている機能概要(例えば図14および図15中の「モジ
ュールの概要」)、FUNCTION欄に記述されている機能説
明(例えば図14および図15中の「モジュールの機
能」)、NOTE欄に記述されている備考(例えば図14お
よび図15中の「モジュールを使う際の注意事項」)、
ARGUMENT欄に記述されている仮引数(例えば図14およ
び図15中の「IN int argument_1 仮引数の説
明」)、GLOBAL欄に記述されている大域変数(例えば図
14および図15中の「IN int global_1 大域変数
の説明」)、RETURN欄に記述されている戻り値(例えば
図14および図15中の「0 戻り値の説明」)を抽出
して記憶する(図13のステップ(ハ))。次に、モジ
ュール定義・参照抽出手段305は、構文解析手段30
3による疑似言語記述301の構文解析結果をもとに、
疑似言語記述301内のロジック記述部(function log
ic)の先頭に記述されているモジュールの定義(例えば
図14および図15中の「function logic main {
・・・ }」)と、ロジック記述部(function logic)中
に記述されているモジュールの参照(例えば図14およ
び図15中の「××を××する[function_1]」)を抽出
して記憶する(図13のステップ(ニ))。次に、デザ
インレビュー用資料生成手段306は、インターフェー
ス仕様抽出手段304および、モジュール定義・参照抽
出手段305によって記憶された情報をもとに、疑似言
語記述301に対応したデザインレビュー用資料307
(図16参照)を自動生成する(図13のステップ
(ホ))。
【0056】この実施例3では、モジュールのインター
フェース仕様と処理フローを記述する手段として、C言
語に準じた疑似言語を用いる方法を紹介したが、これは
他のいかなるプログラミング言語(例えば「Ada」)に
準じたものであっても構わない。同様に、この実施例3
では、モジュールの処理フローの階層構造を記述する手
段として、疑似言語のブロック構造(例えば図14およ
び図15中の「{・・・}」)を用いる方法を紹介した
が、これは他のいかなる方法(例えばbegin文とend文で
下位構造を囲む)であっても構わない。 (注1)疑似言語とは、プログラミング言語の制御構造
と自然言語の文章が混在する設計用の仮想言語を意味す
る。 (注2)C言語とは、AT&Tベル研究所で開発され、ANSI
(American NationalStandards Institute)で標準化さ
れたプログラミング言語を意味する。 (注3)Adaとは米国防総省で開発されたプログラミン
グ言語のことである。
【0057】次に、従来例と比較して、この実施例3の
優れている点について説明する。この実施例3と同じ機
能を実現する従来の方法としては次の2つが考えられ
る。
【0058】第1の方法は、ワープロなどの汎用ツール
を用いて、目的とするデザインレビュー用資料を人間が
作成するというものである。この方法は確かに現実的で
はあるが、デザインレビュー用資料の作成に膨大な時間
が必要(作業コストの問題)となるだけでなく、デザイ
ンレビュー用資料の形式に個人差が出る(属人性の問
題)、ミスが入り込みやすい(作業品質の問題)、など
多くの問題がある。
【0059】第2の方法は、デザインレビュー用資料を
作成する為の専用エディタを開発し提供するというもの
である。この方法では、第1の方法の欠点をある程度解
消することができるが、代わりに、専用エディタを開発
するのに相当な費用がかかる(開発コストの問題)、開
発したエディタはデザインレビュー用資料専用であり潰
しが利かない(投資効果の問題)、ユーザに専用エディ
タの使い方を教育する必要がある(教育コストの問
題)、といった新たな問題を誘発する。
【0060】これに対しこの実施例3を使用した場合、
プログラミング言語に準じた疑似言語記述を入力するだ
けで、モジュールのデザインレビュー用資料307が自
動的に生成されるので、人間がワープロなどを用いてこ
れと同等なデザインレビュー用資料を作成するのに比
べ、デザインレビュー用資料307の作成に要する時間
が大幅に短縮されるだけでなく、デザインレビュー用資
料307の形式に関する個人差が完全に是正されると共
に、モジュールの仕様とデザインレビュー用資料307
との不一致が完全になくなるという効果がある。また、
入力となる疑似言語記述301は単なるテキストであ
り、一般的なテキスト・エディタを用いて作成できるの
で、新たに専用エディタを開発して提供する必要がない
ばかりか、ユーザが自分の使い慣れたエディタを用いて
疑似言語記述301を作成できるという効果がある。こ
れは、この実施例3が低コストで実現かつ運用可能であ
ることを意味している。
【0061】以上のようにこの実施例3によれば、図1
2に示すように、プログラミング言語に準じた疑似言語
記述301を入力にすると共に、プログラム生産支援装
置中に、字句解析手段302、構文解析手段303、イ
ンターフェース仕様抽出手段304、モジュール定義・
参照抽出手段305およびデザインレビュー用資料生成
手段306を設けることにより、デザインレビュー用資
料307の作成に要する時間を大幅に短縮できると共
に、デザインレビュー用資料307の品質を格段に高め
ることができ、結果としてプログラム生産の高品質化に
大きく寄与することができる。
【0062】実施例4.図17は実施例4のプログラム
生産支援装置を示す構成図、図18は実施例4における
プログラム生産支援装置の動作を示すフローチャート、
図19は実施例4の出力である「木構造チャート」の一
例を示す図、図20は実施例4の制御構造抽出手段によ
って変換され記憶される木構造の一例を示す図、図21
は実施例4の木構造チャート生成手段によって生成され
る木構造チャートの一例を示す図、図22は実施例4の
制御構造抽出手段によって変換され記憶される上記とは
別の木構造の一例を示す図、図23は実施例4の木構造
チャート生成手段によって生成される上記とは別の木構
造チャートの一例を示す図である。なお、この実施例4
の入力である「疑似言語記述」の一例としては、図14
および図15に図示したものを使用する。
【0063】以下、図17の図12と異なる要素につい
て説明する。図17において、401は構文解析手段3
03による疑似言語記述301の構文解析結果をもとに
疑似言語記述301のロジック記述部に記述された処理
説明および制御構造を木構造に変換して記憶する「制御
構造抽出手段」、402は制御構造抽出手段401によ
って記憶された木構造をもとに疑似言語記述301に対
応した木構造チャートを自動生成する「木構造チャート
生成手段」、403は木構造チャート生成手段402に
よって自動生成された「木構造チャート」である。
【0064】この実施例4におけるプログラム生産支援
装置の動作について、図18に示すフローチャートを用
いて説明する。図18において、ステップ(イ)、ステ
ップ(ロ)は図13のそれと同じである。以下、図18
の図13と異なる動作について説明する。まず、制御構
造抽出手段401は、構文解析手段303による疑似言
語記述301の構文解析結果をもとに、疑似言語記述3
01のロジック記述部(function logic)に記述された
処理説明(例えば図14および図15中の「// ××を
××する」)および制御構造(例えば図14および図1
5中の「if (・・・) {・・・}」)を木構造に変換して
記憶する(図18のステップ(ハ))。次に、木構造チ
ャート生成手段402は、制御構造抽出手段401によ
って記憶された木構造をもとに、疑似言語記述301に
対応した木構造チャート403(図19参照)を自動生
成する(図18のステップ(ニ))。
【0065】次に、制御構造抽出手段401および木構
造チャート生成手段402が、疑似言語記述301から
木構造チャート403を生成する手順を図14、図15
および図19〜図23を用いて説明する。
【0066】この疑似言語では、 (1)ブロック(「{」と「}」)は、その内側に記述さ
れた要素を下位構造として包含する。例えば、 という記述において、「××を××する」という処理説
明は、「△△を△△する」という処理説明を下位構造と
して包含する。 (2)「//」は、それに連なる一連の要素を下位構造と
して包含する。例えば、 // ××を××する △△を△△する; □□を□□する; という記述において、「××を××する」という処理説
明は、「△△を△△する」および「□□を□□する」と
いう2つの処理説明を下位構造として包含する。という
単純な原則を前提としているので、例えば、 という疑似言語記述301は、制御構造抽出手段401
によって図20に示す木構造に変換して記憶された後、
木構造チャート生成手段402によって図21に示す木
構造チャートに自動的に変換される。同様に、図14お
よび図15中の という疑似言語記述301は、制御構造抽出手段401
によって図22に示す木構造に変換して記憶された後、
木構造チャート生成手段402によって図23に示す木
構造チャート(図19参照)に自動的に変換される。
【0067】この実施例4では、モジュールのインター
フェース仕様と処理フローを記述する手段として、C言
語に準じた疑似言語を用いる方法を紹介したが、これは
他のいかなるプログラミング言語(例えば「Ada」)に
準じたものであっても構わない。同様に、この実施例4
では、モジュールの処理フローの階層構造を記述する手
段として、疑似言語のブロック構造(例えば図14およ
び図15中の「{・・・}」)を用いる方法を紹介した
が、これは他のいかなる方法(例えばbegin文とen
d文で下位構造を囲む)であっても構わない。同様に、
この実施例4では、具体的な木構造チャートとしてNT
T(株)で考案されたHCPチャートを用いる例を紹介
したが、これは他のいかなる木構造チャート(例えば日
本電気(株)のSPD)であっても構わない。同様に、
この実施例4では、処理説明の階層構造を記憶する手段
として木構造を用いる方法を紹介したが、これは他のい
かなるデータ構造(例えば「リスト構造」)であっても
構わない。 (注4)HCPチャートとは、Hierarchical and ComPa
ct description chartの略称である。 (注5)SPDとは、Structured Programming Diagram
の略称である。
【0068】次に、従来例と比較して、この実施例4の
優れている点について説明する。この実施例4と同じ機
能を実現する従来の方法としては次の2つが考えられ
る。
【0069】第1の方法は、図形エディタなどの汎用ツ
ールを用いて、目的とする木構造チャートを人間が作成
するというものである。この方法は確かに現実的ではあ
るが、木構造チャートの作成に膨大な時間が必要(作業
コストの問題)となるだけでなく、木構造チャートの形
式に個人差が出る(属人性の問題)、ミスが入り込みや
すい(作業品質の問題)、など多くの問題がある。
【0070】第2の方法は、木構造チャートを作成する
為の専用エディタを開発し提供するというものである。
この方法では、第1の方法の欠点をある程度解消するこ
とができるが、代わりに、専用エディタを開発するのに
相当な費用がかかる(開発コストの問題)、開発したエ
ディタは木構造チャート専用であり潰しが利かない(投
資効果の問題)、ユーザに専用エディタの使い方を教育
する必要がある(教育コストの問題)、といった新たな
問題を誘発する。
【0071】これに対しこの実施例4を使用した場合、
プログラミング言語に準じた疑似言語記述301を入力
するだけで、モジュールの処理フローを示す木構造チャ
ート403が自動的に生成されるので、人間が図形エデ
ィタなどを用いてこれと同等な木構造チャート403を
作成するのに比べ、木構造チャート403の作成に要す
る時間が大幅に短縮されるだけでなく、木構造チャート
403の形式に関する個人差が完全に是正されると共
に、モジュールの処理フローと木構造チャート403と
の不一致が完全になくなるという効果がある。また、入
力となる疑似言語記述301は単なるテキストであり、
一般的なテキスト・エディタを用いて作成できるので、
新たに専用エディタを開発して提供する必要がないばか
りか、ユーザが自分の使い慣れたエディタを用いて仕様
記述を作成できるという効果がある。これは、本実施例
が低コストで実現かつ運用可能であることを意味してい
る。
【0072】以上のようにこの実施例4によれば、図1
7に示すように、プログラミング言語に準じた疑似言語
記述301を入力にすると共に、プログラム生産支援装
置中に、字句解析手段302、構文解析手段303、制
御構造抽出手段401および木構造チャート生成手段4
02を設けることにより、木構造チャート403の作成
に要する時間を大幅に短縮できると共に、木構造チャー
ト403の品質を格段に高めることができ、結果として
プログラム生産の高品質化に大きく寄与することができ
る。
【0073】実施例5.図24は実施例5におけるプロ
グラム生産支援装置の構成を示すブロック図、図25は
実施例5におけるプログラム生産支援装置の動作を示す
フローチャート、図26および図27は実施例5の出力
である「プログラミング言語記述のひな形」の一例を示
す図、図28は実施例5の制御構造抽出手段によって変
換され記憶される木構造の一例を示す図である。なお、
この実施例5の入力である「疑似言語記述」の一例とし
ては、図14および図15に図示したものを使用する。
【0074】以下、図24の図17と異なる要素につい
て説明する。図24において、501は制御構造抽出手
段401によって記憶された木構造をもとに疑似言語の
制御構造をプログラミング言語の制御構造に変換する
「制御構造変換手段」、502は制御構造抽出手段40
1によって記憶された木構造をもとに疑似言語の処理説
明をプログラミング言語のコメントに変換する「処理説
明→コメント変換手段」、503は制御構造変換手段5
01および処理説明→コメント変換手段502によって
自動生成された「プログラミング言語記述のひな形」で
ある。
【0075】この実施例5におけるプログラム生産支援
装置の動作について、図25に示すフローチャートを用
いて説明する。
【0076】図25において、ステップ(イ)、ステッ
プ(ロ)、ステップ(ハ)は図18のそれと同じであ
る。以下、図25の図18と異なる動作について説明す
る。まず、本処理系は、制御構造抽出手段401によっ
て記憶された木構造をもとに、変換すべき対象が制御構
造、処理説明のいずれであるかを判断する(図25のス
テップ(ニ))。変換すべき対象が制御構造の場合、制
御構造変換手段501は、制御構造抽出手段401によ
って記憶された木構造をもとに、疑似言語の制御構造
(例えば図14および図15中の「if (・・・) {・・
・}」)を、プログラミング言語の制御構造(例えば図
26および図27中の「if () {・・・}」に変換する
(図25のステップ(ホ))。変換すべき対象が処理説
明の場合、処理説明→コメント変換手段502は、制御
構造抽出手段401によって記憶された木構造をもと
に、疑似言語の処理説明(例えば図14および図15中
の「××が××ならば」)を、プログラミング言語のコ
メント(例えば図26および図27中の「/* ? ××が
××ならば */」)に変換する(図25のステップ
(ヘ))。
【0077】次に、制御構造変換手段501および処理
説明→コメント変換手段502が疑似言語記述301か
らプログラミング言語記述のひな形503を生成する手
順を、図14および図15と図26および図27を用い
て説明する。
【0078】疑似言語からプログラミング言語への変換
に際しては、 (1)疑似言語の仕様記述部に記述されているモジュー
ルのインターフェース仕様を、プログラミング言語のコ
メントに変換してモジュールの先頭に出力する。 (2)上記(1)の実行に際し、仮引数に関するインタ
ーフェース仕様だけは、プログラミング言語における仮
引数の宣言およびコメントに変換して出力する。 (3)疑似言語の制御構造を、プログラミング言語の制
御構造に変換して出力する。 (4)疑似言語の処理説明を、プログラミング言語のコ
メントに変換して出力する。 (5)上記(4)の実行に際し、疑似言語記述の条件中
に記述された処理説明を条件の外へ移動させると共に、
文章の先頭に「?」マークを付加してからプログラミン
グ言語のコメントに変換して出力する。 (6)上記(4)の実行に際し、break文、return文、e
xit文に付随する処理説明を、それぞれの文と分離して
からプログラミング言語のコメントに変換して出力す
る。 という変換規則を前提としているので、例えば、図14
および図15中の という疑似言語記述301は、制御構造抽出手段401
によって図28に示す木構造に変換して記憶された後、
制御構造変換手段501および処理説明→コメント変換
手段502によって /* * ××を××する */ if () { /* ? ××が××ならば */ /* ××を××する */ function_1(); return; /* エラーステータス */ } というプログラミング言語記述のひな形(図26および
図27参照)に自動的に変換される。
【0079】この実施例5では、モジュールのインター
フェース仕様と処理フローを記述する手段として、C言
語に準じた疑似言語を用いる方法を紹介したが、これは
他のいかなるプログラミング言語(例えば「Ada」)に
準じたものであっても構わない。同様に、この実施例5
では、モジュールの処理フローの階層構造を記述する手
段として、疑似言語のブロック構造(例えば図14およ
び図15中の「{・・・}」)を用いる方法を紹介した
が、これは他のいかなる方法(例えばbegin文とend文で
下位構造を囲む)であっても構わない。同様に、この実
施例5では、処理説明の階層構造を記憶する手段として
木構造を用いる方法を紹介したが、これは他のいかなる
データ構造(例えば「リスト構造」)であっても構わな
い。
【0080】次に、従来例と比較して、この実施例5の
優れている点について説明する。この実施例5と同じ機
能を実現する従来の方法としては次のものが考えられ
る。
【0081】その方法とは、モジュールのインターフェ
ース仕様および処理フローをユーザに対話形式で定義さ
せ、それらの情報からプログラミング言語記述のひな形
を生成する対話型ツールを開発し提供するというもので
ある。この方法は一見合理的に見えるが、前記実施例1
のところでも指摘した通り、対話型ツールを開発するの
に相当な費用がかかる(開発コストの問題)、開発した
対話型ツールは当該機能専用であり潰しが利かない(投
資効果の問題)、ユーザに対話型ツールの使い方を教育
する必要がある(教育コストの問題)だけでなく、これ
らのツールは、一般にモジュールの処理フローを自然言
語で記述すること(例えば「××を××する」)ができ
ないので、設計工程であるにもかかわらず、ユーザはプ
ログラミング言語でコーディングするのと変わらないレ
ベルの詳細な情報(例えば「if (a == 0) { a = a + 1;
}」)の入力を強要されるという問題がある。すなわ
ち、この種のツールは、設計工程(モジュールの輪郭を
定義することが目的)とコーディング工程(モジュール
の詳細を定義することが目的)の境目を不明確にし、結
果的にデザインレビュー(設計の再検討)を阻害すると
いう問題を内包している。
【0082】これに対しこの実施例5を使用した場合、
プログラミング言語に準じた疑似言語記述301からプ
ログラミング言語記述のひな形503が自動的に生成さ
れるので、前記実施例3および実施例4を用いてモジュ
ールのインターフェース仕様および処理フロー(疑似言
語で記述)に対し十分なデザインレビューを行ってか
ら、その情報をプログラミング言語記述のひな形503
に正確に反映させられるという効果がある。これは、前
工程(設計)における設計者の意図を後工程(コーディ
ング)を担当するプログラマに正確に伝えられることを
意味している。また、入力となる疑似言語記述301は
単なるテキストであり、一般的なテキスト・エディタを
用いて作成できるので、新たに専用エディタを開発して
提供する必要がないばかりか、ユーザが自分の使い慣れ
たエディタを用いて仕様記述を作成できるという効果が
ある。これは、この実施例5が低コストで実現かつ運用
可能であることを意味している。
【0083】以上のようにこの実施例5によれば、図2
4に示すように、プログラミング言語に準じた疑似言語
記述301を入力にすると共に、プログラム生産支援装
置中に、字句解析手段302、構文解析手段303、制
御構造抽出手段401、制御構造変換手段501および
処理説明→コメント変換手段502を設けることによ
り、前工程(設計)で十分にデザインレビューされた情
報(疑似言語記述)を、後工程(コーディング)の入力
(プログラミング言語記述のひな形)として流用できる
ので、設計者の意図をプログラマに正確に伝えることが
でき、結果としてプログラム生産の高品質化に大きく寄
与することができる。
【0084】実施例6.図29は実施例6のプログラム
生産支援装置を示す構成図、図30は実施例6における
プログラム生産支援装置の動作を示すフローチャート、
図31および図32は実施例6の入力である「プログラ
ミング言語記述」の一例を示す図、図33および図34
は実施例6の出力である「疑似言語記述」の一例を示す
図、図35は実施例6の制御構造抽出手段によって変換
され記憶される木構造の一例を示す図、図36は実施例
6の制御構造変換手段によって置換された木構造の一例
を示す図である。
【0085】図29において、601は特定のプログラ
ミング言語で記述された「プログラミング言語記述」、
602はプログラミング言語記述601を読み込んで字
句に分解する「字句解析手段」、603は字句に分解さ
れたプログラミング言語記述601の構文解析を行う
「構文解析手段」、604は構文解析手段603による
プログラミング言語記述601の構文解析結果をもとに
プログラムの制御構造とそれに付随するコメントを木構
造に変換して記憶する「制御構造抽出手段」、605は
制御構造抽出手段604によって記憶された木構造をも
とにプログラミング言語の制御構造を疑似言語の制御構
造に変換する「制御構造変換手段」、606は制御構造
抽出手段605によって記憶された木構造をもとにプロ
グラミング言語のコメントを疑似言語の処理説明に変換
する「コメント→処理説明変換手段」、301は制御構
造変換手段605およびコメント→処理説明変換手段6
06によって自動生成された「疑似言語記述」である。
【0086】この実施例6におけるプログラム生産支援
装置の動作について、図30に示すフローチャートを用
いて説明する。
【0087】図30において、ステップ(イ)〜(ヘ)
は図25のそれと基本的に同じである。両者で異なるの
は、図30が「プログラミング言語記述→疑似言語記
述」への変換を、図25が「疑似言語記述→プログラミ
ング言語記述」への変換を説明している点である。
【0088】次に、制御構造変換手段605およびコメ
ント→処理説明変換手段606がプログラミング言語記
述601から疑似言語記述301を生成する手順を、図
31〜図36を用いて説明する。
【0089】プログラミング言語から疑似言語への変換
に際しては、 (1)モジュールのヘッダー・コメント中のABSTRACT
欄、FUNCTION欄、NOTE欄、RETURN欄に記述されたインタ
ーフェース仕様、および、モジュールの仮引数の型・名
前・コメント、モジュール内で参照している大域変数の
型・名前・コメントを、疑似言語における仕様記述部
(function spec)の形式に変換して出力する。 (2)モジュール内の制御構造を、疑似言語の制御構造
に変換して出力する。 (3)モジュール内のコメントを、疑似言語の処理説明
に変換して出力する。 (4)上記(3)の実行に際し、文章の先頭に「?」マ
ークの付いたコメントをそれに対応する条件と置き換
え、疑似言語の処理説明に変換して出力する。 (5)上記(3)の実行に際し、break文、return文、e
xit文の行末にあるコメントをそれに対応する引数と置
き換え、疑似言語の処理説明に変換して出力する。 という変換規則を前提としているので、例えば、図31
および図32中の /* * ××を××する */ if (global_1 == 0) { /* ? ××が××ならば */ /* ××を××する */ function_1(); return -1; /* エラーステータス */ } というプログラミング言語記述601は、制御構造抽出
手段604によって図35に示す木構造に変換して記憶
された後、制御構造変換手段605およびコメント→処
理説明変換手段606によって図36のようにif文の条
件とreturn文の引数がそれぞれに対応するコメントと置
き換えられてから という疑似言語記述301(図33および図34参照)
に自動的に変換される。
【0090】この実施例6では、入力となるプログラミ
ング言語としてC言語を用いる方法を紹介したが、これ
は他のいかなるプログラミング言語(例えば「Ada」)
であっても構わない。同様に、この実施例6では、出力
としてC言語に準じた疑似言語を用いる方法を紹介した
が、これは他のいかなるプログラミング言語(例えば
「Ada」)に準じたものであっても構わない。同様に、
この実施例6では、処理説明の階層構造を記憶する手段
として木構造を用いる方法を紹介したが、これは他のい
かなるデータ構造(例えば「リスト構造」)であっても
構わない。
【0091】次に、従来例と比較して、この実施例6の
優れている点について説明する。この実施例6と同じ機
能を実現する従来の方法としては次のものが考えられ
る。
【0092】その方法とは、プログラミング言語記述の
中からモジュールのインターフェース仕様に関する情報
を手作業で抽出するというものである。この方法は誰も
が無意識に行っていることであるが、情報を抽出するの
に膨大な時間が必要(作業コストの問題)となるだけで
なく、経験年数などによって作業効率のばらつきが大き
い(属人性の問題)、ミスが入り込みやすい(作業品質
の問題)など多くの問題がある。
【0093】これに対しこの実施例6を使用した場合、
プログラミング言語記述601からプログラミング言語
に準じた疑似言語が自動的に生成されるので、こうして
得られた疑似言語記述301に対して前記実施例3およ
び実施例4を適用すれば、結果的に、プログラミング言
語記述からモジュールのインターフェース仕様に関する
情報を自動的に抽出し、その情報をデザインレビュー用
資料307や木構造チャート403の形式で把握できる
という効果がある。実際問題として、ソフトウェアが大
規模・複雑化の一途を辿っている現状では、何百、何千
とあるモジュールのインターフェース仕様を人間に分か
りやすいデザインレビュー用資料307や木構造チャー
ト403の形式で把握できる意義は極めて大きい。
【0094】以上のようにこの実施例6によれば、図2
9に示すように、プログラミング言語記述601を入力
にすると共に、プログラム生産支援装置中に、字句解析
手段602、構文解析手段603、制御構造抽出手段6
04、制御構造変換手段605およびコメント→処理説
明変換手段606を設けることにより、プログラミング
言語記述601からモジュールのインターフェース仕様
に関する情報を自動的に抽出できるので、実際に動作し
ているプログラムの仕様を容易かつ正確に把握すること
が可能となり、結果としてプログラム生産および保守の
高品質化に大きく寄与することができる。
【0095】実施例7.図37は実施例7のプログラム
生産支援装置を示す構成図、図38は実施例70のプロ
グラム生産支援装置の動作を示すフローチャート、図3
9および図40は実施例7の入力である「プログラミン
グ言語記述」の一例を示す図、図41乃至図43は実施
例7の出力である「木構造チャート」の一例を示す図、
図44は実施例7の制御構造抽出手段によって変換され
記憶される木構造の一例を示す図、図45は実施例7の
木構造チャート生成手段によって生成される木構造チャ
ートの一例を示す図、図46は実施例7の不要情報割愛
手段701によって補正される木構造の一例を示す図、
図47は実施例7の木構造チャート生成手段によって生
成される上記とは別の木構造チャートの一例を示す図、
図48は実施例7の木構造チャート生成手段によって生
成される上記とは更に別の木構造チャートの一例を示す
図である。
【0096】以下、図37の図29と異なる要素につい
て説明する。図37において、701は制御構造抽出手
段604によって記憶された木構造をもとにユーザの指
定に応じ木構造から不要情報を割愛する「不要情報割愛
手段」、702は不要情報割愛手段701によって補正
された木構造をもとにプログラミング言語記述601に
対応した木構造チャートを自動生成する「木構造チャー
ト生成手段」、703は木構造チャート生成手段702
によって自動生成された「木構造チャート」である。
【0097】この実施例7のプログラム生産支援装置の
動作について、図38に示すフローチャートを用いて説
明する。図38において、ステップ(イ)〜(ハ)は図
6Bのそれと同じである。以下、図38の図30と異な
る動作について説明する。まず、不要情報割愛手段70
1は、ユーザの指定に応じて、制御構造抽出手段604
によって記憶された木構造から何を割愛するかを決定す
る(図38のステップ(ニ))。ユーザの指定が「全て
の文を木構造チャートに反映せよ」である場合、不要情
報割愛手段701は、制御構造抽出手段604によって
記憶された木構造に対して何も行わない。ユーザの指定
が「コメントと制御構造のみを木構造チャートに反映せ
よ」である場合、不要情報割愛手段701は、制御構造
抽出手段604によって記憶された木構造からコメント
と制御構造以外を削除する(図38のステップ
(ホ))。ユーザの指定が「コメントのみを木構造チャ
ートに反映せよ」である場合、不要情報割愛手段701
は、制御構造抽出手段604によって記憶された木構造
からコメント以外を削除する(図38のステップ
(ヘ))。次に、木構造チャート生成手段702は、不
要情報割愛手段701によって補正された木構造をもと
に、プログラミング言語記述601に対応した木構造チ
ャート703(図41、図42、図43参照)を生成す
る(図38のステップ(ト))。
【0098】次に、不要情報割愛手段701および木構
造チャート生成手段702が、プログラミング言語記述
601からユーザの指定に応じ木構造チャート703を
生成する手順を図39〜図48を用いて説明する。
【0099】例えば、図39および図40中の というプログラミング言語記述は、制御構造抽出手段6
04によって図44に示す木構造に変換して記憶され
る。ユーザの指定が「全ての文を木構造チャートに反映
せよ」である場合、不要情報割愛手段701はこの木構
造に対して何も行わないので、木構造チャート生成手段
702は図45に示す木構造チャート(図41参照)を
自動的に生成する。これに対し、ユーザの指定が「コメ
ントと制御構造のみを木構造チャートに反映せよ」であ
る場合、不要情報割愛手段701は木構造からコメント
と制御構造以外を削除し、図46に示すように、木構造
を補正するので、木構造チャート生成手段702は図4
7に示す木構造チャート703(図42参照)を自動的
に生成する。更に、ユーザの指定が「コメントのみを木
構造チャートに反映せよ」である場合、不要情報割愛手
段701は木構造からコメント以外を全て削除し ××を××する のように木構造を補正するので、木構造チャート生成手
段702は図48に示す木構造チャート703(図43
参照)を生成する。
【0100】この実施例7では、入力となるプログラミ
ング言語としてC言語を用いる方法を紹介したが、これ
は他のいかなるプログラミング言語(例えば「Ada」)
であっても構わない。同様に、この実施例7では、具体
的な木構造チャート703としてNTT(株)で考案さ
れたHCPチャートを用いる方法を紹介したが、これは
他のいかなる木構造チャート(例えば日本電気(株)の
SPD)であっても構わない。同様に、この実施例7で
は、処理説明の階層構造を記憶する手段として木構造を
用いる方法を紹介したが、これは他のいかなるデータ構
造(例えば「リスト構造」)であっても構わない。
【0101】次に、従来例と比較して、この実施例7の
優れている点について説明する。
【0102】従来、プログラミング言語記述から木構造
チャートを自動生成するツールとしては既に幾つかのも
のが知られているが、それらは一様にプログラミング言
語記述中の文をありのまま木構造チャートに反映するも
のであり、大規模なプログラムに適用した場合には木構
造チャートが詳細すぎて、プログラムの大まかな流れを
把握する目的では使い物にならないという問題があっ
た。
【0103】これに対しこの実施例7を使用した場合、
ユーザの指定に応じて「プログラミング言語記述中の全
ての文を木構造チャートに反映する」、「コメントと制
御構造のみを木構造チャートに反映する」、「コメント
のみを木構造チャートに反映する」、といった具合に木
構造チャート703の粗さを調整できるので、「処理内
容を逐一チェックしたい」、「プログラムの大まかな流
れを把握したい」、「処理の概要を把握したい」という
目的に応じた木構造チャート703を生成できるという
効果がある。
【0104】以上のようにこの実施例7によれば、図3
7に示すように、プログラミング言語記述601を入力
にすると共に、プリンタ生産支援装置中に、字句解析手
段602、構文解析手段603、制御構造抽出手段60
4、不要情報割愛手段701および木構造チャート生成
手段702を設けることにより、プログラミング言語記
述601からユーザの要求に応じた木構造チャート70
3を生成することができ、結果としてプログラム生産お
よび保守の高品質化に大きく寄与することができる。
【0105】実施例8.図49は実施例8のプログラム
生産支援装置を示す構成図、図50は実施例8のプログ
ラム生産支援装置の動作を示すフローチャート、図51
および図52は実施例8の入力である「プログラミング
言語記述」の一例を示す図、図53は実施例8の出力で
ある「モジュール仕様書」の一例を示す図である。図4
9の図29と異なる要素について説明する。図49にお
いて、801は構文解析手段603によるプログラミン
グ言語記述601の構文解析結果をもとにモジュールの
インターフェース仕様を記憶する「インターフェース仕
様抽出手段」、802は構文解析手段603によるプロ
グラミング言語記述601の構文解析結果をもとにモジ
ュールの定義・参照情報を記憶する「モジュール定義・
参照抽出手段」、803はインターフェース仕様抽出手
段801およびモジュール定義・参照抽出手段802に
よって記憶された情報をもとにモジュール名を照合する
「モジュール名照合手段」、804はインターフェース
仕様抽出手段801およびモジュール定義・参照抽出手
段802によって記憶された情報をもとにプログラミン
グ言語記述601に対応したモジュール仕様書を自動生
成する「モジュール仕様書生成手段」、805はモジュ
ール仕様書生成手段804によって自動生成された「モ
ジュール仕様書」である。
【0106】この実施例8のプログラム生産支援装置の
動作について、図50に示すフローチャートを用いて説
明する。
【0107】図50において、ステップ(イ)〜(ロ)
は図30のそれと同じである。以下、図50の図30と
異なる動作について説明する。まず、インターフェース
仕様抽出手段801は、構文解析手段603によるプロ
グラミング言語記述601の構文解析結果をもとに、モ
ジュールのヘッダーコメント中の各欄(例えば図51お
よび図52中の「MODULE」欄)に記述されたインターフ
ェース仕様を抽出して記憶する(図50のステップ
(ハ))。次に、モジュール定義・参照抽出手段802
は、構文解析手段603によるプログラミング言語記述
601の構文解析結果をもとに、モジュールの定義(例
えば図51および図52中の「void main() {・・
・}」)および、モジュールの参照情報を抽出して記憶
する(図50のステップ(ニ))。次に、モジュール名
照合手段803は、インターフェース仕様抽出手段80
1およびモジュール定義・参照抽出手段802によって
記憶された情報をもとに、ヘッダーコメント中の「MODU
LE」欄に記述されている名前と、そのヘッダーコメント
に対応するモジュール定義の名前を照合する(図50の
ステップ(ホ))。モジュール名が一致した場合、モジ
ュール仕様書生成手段804は、インターフェース仕様
抽出手段801およびモジュール定義・参照抽出手段8
02によって記憶された情報をもとに、プログラミング
言語記述601に対応したモジュール仕様書805を生
成する(図50のステップ(ヘ))。モジュール名が一
致しなかった場合、モジュール仕様書生成手段804
は、エラーメッセージを出力してその旨をユーザに報告
しモジュール仕様書805の生成を中止する(図50の
ステップ(ト))。
【0108】この実施例8では、入力となるプログラミ
ング言語としてC言語を用いる方法を紹介したが、これ
は他のいかなるプログラミング言語(例えば「Ada」)
であっても構わない。
【0109】次に、従来例と比較して、この実施例8の
優れている点について説明する。
【0110】従来、プログラミング言語記述からモジュ
ール仕様書を自動生成するツールとしては既に幾つかの
ものが知られているが、それらは一様に、ヘッダーコメ
ント中から抽出したインターフェース仕様を、その直後
に記述されているモジュール定義と盲目的に対応付けて
モジュール仕様書を生成する様になっている為、ヘッダ
ーコメント中に記述されたインターフェース仕様がモジ
ュール定義と対応していなくてもモジュール仕様書が生
成されるという問題があった。現実問題として、仕様書
から内容を判断して作業しなければならない場合も多い
ので、でたらめな仕様書がソフトウェア生産全体に与え
る影響は無視できない。 勿論、ヘッダーコメントを記
述する際に細心の注意を払っていれば問題ないのだが、
実際には (1)最初のモジュールに対してヘッダーコメントを作
成する。 (2)それをテンプレートにして2番目のヘッダーコメ
ントを作成する。 (3)以下、全てのモジュールに対して(2)を繰り返
す。 といった手順で作業した方が合理的なので、往々にして
無関係なヘッダーコメントの付いたモジュールが発生す
る。大規模なプログラムではモジュールの数が1000
を越えることも珍しくないだけに、一旦紛れ込んだミス
を見つけるのはこの問題がプログラムの動作に影響しな
い分だけ余計に厄介である。
【0111】これに対しこの実施例8を使用した場合、
ヘッダーコメント中の「MODULE」欄に記述された名前と
そのヘッダーコメントに対応するモジュール定義の名前
が一致しないと、エラーメッセージが出力されモジュー
ル仕様書805の生成が中止されるので、この種の事故
を未然に、かつ確実に防ぐことができるという効果があ
る。
【0112】以上のようにこの実施例8によれば、図4
9に示すように、プログラミング言語記述601を入力
にすると共に、プログラム生産支援装置中に、字句解析
手段602、構文解析手段603、インターフェース仕
様抽出手段801、モジュール定義・参照抽出手段80
2、モジュール名照合手段803およびモジュール仕様
書抽出手段804を設けることにより、プログラミング
言語記述601から実際のモジュール定義に正確に対応
したモジュール仕様書805を自動生成することがで
き、結果としてプログラム生産および保守の合理化に大
きく寄与することができる。
【0113】実施例9.図54は実施例9プログラム生
産支援装置を示す構成図、図55は実施例9におけるプ
ログラム生産支援装置の動作を示すフローチャート、図
56および図57は実施例9の入力である「プログラミ
ング言語記述」の一例を示す図、図58は従来の「モジ
ュール構成図」の一例を示す図、図59は実施例9の出
力である「モジュール構成図」の一例を示す図、図60
は実施例9のモジュール定義・参照抽出手段によって変
換され記憶される木構造の一例を示す図、図61は実施
例9の同一構造割愛手段によって補正された木構造の一
例を示す図である。
【0114】図54の図29と異なる要素について説明
する。図54において、802は構文解析手段603に
よるプログラミング言語記述601の構文解析結果をも
とにモジュールの定義・参照情報を記憶する「モジュー
ル定義・参照抽出手段」、901はモジュール定義・参
照抽出手段802によって記憶された木構造をもとに木
構造上の同一構造を割愛する「同一構造割愛手段」、9
02は同一構造割愛手段901によって補正された木構
造をもとにプログラミング言語記述601に対応したモ
ジュール構成図を自動生成する「モジュール構成図生成
手段」、903はモジュール構成図生成手段902によ
って自動生成された「モジュール構成図」である。
【0115】この実施例9におけるプログラム生産支援
装置の動作について、図55に示すフローチャートを用
いて説明する。図55において、ステップ(イ)〜
(ロ)は図30のそれと同じである。以下、図55の図
30と異なる動作について説明する。まず、モジュール
定義・参照抽出手段802は、構文解析手段603によ
るプログラミング言語記述601の構文解析結果をもと
に、モジュールの定義(例えば図56および図57中の
「main() {・・・}」)およびモジュールの参照(例え
ば図56および図57中の「sub();」)を木構造に変換
して記憶する(図55のステップ(ハ))。次に、同一
構造割愛手段901は、モジュール定義・参照抽出手段
802によって記憶された木構造をもとに、木構造上か
ら同一構造を摘出する(図55のステップ(ニ))。同
一構造が摘出できなかった場合、同一構造割愛手段90
1は、モジュール定義・参照抽出手段802によって記
憶された木構造に対して何も行わない。同一構造が摘出
された場合、同一構造割愛手段901は、モジュール定
義・参照抽出手段802によって記憶された木構造上か
ら同一構造を削除し「〜と同じ」という情報で置換する
(図55のステップ(ホ))。次に、モジュール構成図
生成手段902は、同一構造割愛手段901によって補
正された木構造をもとに、プログラミング言語記述60
1に対応したモジュール構成図903(図59参照)を
自動生成する(図55のステップ(ヘ))。
【0116】次に、同一構造割愛手段901およびモジ
ュール構成図生成手段902がプログラミング言語記述
601からモジュール構成図903を生成する手順を、
図56および図57、図59を用いて説明する。
【0117】例えば、図56および図57中の というプログラミング言語記述601は、モジュール定
義・参照抽出手段802によって図60に示す木構造に
変換して記憶された後、同一構造割愛手段901によっ
て、木構造を根元から辿りながら同一構造を順次「〜と
同じ」という情報で置換することによって図61に示す
木構造に補正され、モジュール構成図生成手段902に
よって、図59に示すモジュール構成図903が自動的
に生成される。ちなみに、従来の方法では同一構造が割
愛されない為に、結果として図58に示す冗長なモジュ
ール構成図が生成される。
【0118】この実施例9では、入力となるプログラミ
ング言語としてC言語を用いる方法を紹介したが、これ
は他のいかなるプログラミング言語(例えば「Ada」)
であっても構わない。同様に、この実施例9では、処理
説明の階層構造を記憶する手段として木構造を用いる方
法を紹介したが、これは他のいかなるデータ構造(例え
ば「リスト構造」)であっても構わない。
【0119】次に、従来例と比較して、この実施例9の
優れている点について説明する。
【0120】従来、プログラミング言語記述からモジュ
ール構成図を自動生成するツールとしては既に幾つかの
ものが知られているが、それらが生成するモジュール構
成図は一様に図58の出力形式に準じたものであり、同
一モジュールの参照が随所に現われる大規模プログラム
(数万行以上)では、生成されるモジュール構成図が冗
長(場合によってはA4版で数百ページ)になりすぎて
使い物にならないという問題があった。
【0121】これに対しこの実施例9を使用した場合、
モジュール構成図903上の同一構造が「〜と同じ」と
いう情報で置換されるので、同一モジュールの参照が随
所に現われるような大規模プログラムでは、それに対す
るモジュール構成図903が劇的に簡素化(圧縮)され
るという効果がある。
【0122】以上のようにこの実施例9によれば、図5
4に示すように、プログラミング言語記述601を入力
にすると共に、プログラム生産支援装置中に、字句解析
手段602、構文解析手段603、モジュール定義・参
照抽出手段802、同一構造割愛手段901およびモジ
ュール構成図生成手段902を設けることにより、プロ
グラミング言語記述601から実用的なモジュール構成
図903を自動生成することができ、結果としてプログ
ラム生産および保守の合理化に大きく寄与することがで
きる。
【0123】実施例10.図62は実施例10のプログ
ラム生産支援装置を示す構成図、図63は実施例10に
おけるプログラム生産支援装置の動作を示すフローチャ
ート、図64乃至図67は実施例10の入力である「プ
ログラミング言語記述」の一例を示す図、図68は従来
の「シンボル一覧表」の一例を示す図、図69は実施例
10の出力である「シンボル一覧表」の一例を示す図で
ある。
【0124】図62の図29と異なる要素について説明
する。図62において、1001は構文解析手段603
によるプログラミング言語記述601の構文解析結果を
もとにシンボルの定義情報を記憶する「シンボル定義抽
出手段」、1002はシンボル定義抽出手段1001に
よって記憶された情報をもとにシンボルの定義情報を定
義位置の順に並べ換える「シンボル定義並換え手段」、
1003はシンボル定義並換え手段1002によって並
べ換えられた情報をもとにプログラミング言語記述60
1に対応したシンボル一覧表を自動生成する「シンボル
一覧表生成手段」、1004はシンボル一覧表生成手段
1003によって自動生成された「シンボル一覧表」で
ある。
【0125】この実施例10におけるプログラム生産支
援装置の動作について、図63に示すフローチャートを
用いて説明する。
【0126】図63において、ステップ(イ)〜(ロ)
は図30のそれと同じである。以下、図63の図30と
異なる動作について説明する。まず、シンボル定義抽出
手段1001は、構文解析手段603によるプログラミ
ング言語記述601の構文解析結果をもとに、シンボル
の定義(例えば図64乃至図67中の「function_1()
{}」)を辞書順に記憶する(図63のステップ
(ハ))。次に、シンボル定義並換え手段1002は、
シンボル定義抽出手段1001によって記憶された情報
をもとに、シンボルの定義情報を定義位置(例えば「mo
dule-list.cの6行目」)の順に並べ換える(図63の
ステップ(ニ))。次に、シンボル一覧表生成手段10
03は、シンボル定義並換え手段1002によって並べ
換えられた情報をもとに、プログラミング言語記述60
1に対応したシンボル一覧表1004を自動生成する
(図63のステップ(ホ))。
【0127】この実施例10では、入力となるプログラ
ミング言語としてC言語を用いる方法を紹介したが、こ
れは他のいかなるプログラミング言語(例えば「Ad
a」)であっても構わない。同様に、この実施例10で
は、シンボルの例としてモジュール定義を対象とする方
法を紹介したが、これは他のいかなるシンボル(例えば
「大域変数」や「マクロ」)であっても構わない。
【0128】次に、従来例と比較して、この実施例10
の優れている点について説明する。
【0129】従来、プログラミング言語記述からシンボ
ル一覧表を自動生成するツールとしては既に幾つかのも
のが知られているが、それらが生成するシンボル一覧表
は一様に図68の出力形式に準じたものである。この種
の表は特定のシンボルがどこで定義されているかを探す
手掛かりとしては有用であるが、一般にモジュールや大
域変数といったシンボルは、関連性の強いもの同士が一
箇所(特定のファイル内)に固めて定義される傾向があ
る為、辞書順にシンボル名を並べる方法だと、例えば int x_axis; /* X座標 */ int y_axis; /* Y座標 */ という定義が一覧表上ではばらばらに出力されてしまう
可能性が高い。従って、辞書順にシンボルを出力する形
式のシンボル一覧表では、定義順序に込められたプログ
ラマの意図をないがしろにしてしまうという問題があっ
た。
【0130】これに対しこの実施例10を使用した場
合、プログラミング言語記述601中に定義された順に
シンボルが出力されるので、定義順序に込められたプロ
グラマの意図がありのまま表現されるという効果があ
る。
【0131】以上のようにこの実施例10によれば、図
62に示すようにプログラミング言語記述601を入力
にすると共に、プログラム生産支援装置中に、字句解析
手段602、構文解析手段603、シンボル定義抽出手
段1001、シンボル定義並換え手段1002およびシ
ンボル一覧表生成手段1003を設けることにより、プ
ログラミング言語記述601から実用的なシンボル一覧
表1004を自動生成することができ、結果としてプロ
グラム生産および保守の合理化に大きく寄与することが
できる。
【0132】実施例11.図70は実施例11のプログ
ラム生産支援装置を示す構成図、図71は実施例11に
おけるプログラム生産支援装置の動作を示すフローチャ
ート、図72および図73は実施例11の入力である
「プログラミング言語記述」の一例を示す図、図74は
実施例11の出力である「警告メッセージ」の一例を示
す図である。
【0133】図70の図29と異なる要素について説明
する。図70において、1101は字句解析手段602
によって字句に分解されたプログラミング言語記述60
1をもとに字句の並びの中から特定パターンを検出する
「特定パターンの検出手段」、1102は特定パターン
の検出手段1101によって出力された「警告メッセー
ジ」である。
【0134】この実施例11におけるプログラム生産支
援装置の動作について、図71に示すフローチャートを
用いて説明する。
【0135】図71において、ステップ(イ)は図30
のそれと同じである。以下、図71の図30と異なる動
作について説明する。まず、特定パターンの検出手段1
101は、字句解析手段602によって字句に分解され
たプログラミング言語記述601をもとに、それらの字
句がプログラムのどこに現われたかを見極め、特定の場
所(例えば条件の中)に現われた字句の並びだけを抽出
する(図71のステップ(ロ))。次に、特定パターン
の検出手段1101は、特定の場所に現われた字句の並
びを並びのパターンによって選別し経験則と照合する
(図71のステップ(ハ))。字句の並びが経験則と一
致した場合、特定パターンの検出手段1101は、その
旨を通知する警告メッセージ1102を出力する(図7
1のステップ(ニ))。
【0136】次に、特定パターンの検出手段1101
が、プログラミング言語記述601(図72および図7
3参照)から文法的には問題ないが意味的にはエラーで
ある可能性の高いことが知られている記述を検出する手
順を、図72〜図74を用いて説明する。
【0137】例えば、図72および図73中の というC言語記述は文法的には正しい為、この記述に対
しC言語のコンパイラはいかなるエラーメッセージも出
力しない。ところが、C言語において「if (a = 0)」と
いう条件が成立することはありえない為、結果的に「fu
nction();」という決して実行されることのない死角が
発生する。このような記述に対し、特定パターンの検出
手段1101は、特定の場所(この場合は「条件の
中」)に現われた字句の並び(この場合は「a = 0」)
だけに着目し、それを 条件の中に代入演算子「=」が単独で現われるのはおか
しい 条件の中にビット演算子「|」が単独で現われるのはお
かしい といった一連の経験則と照合することにより、それが経
験則と合致する場合には 演算子「==」と「=」を間違えている可能性があります といった警告メッセージを出力し、文法的には正しいが
意味的にはエラーである可能性が高い記述を摘出する。
【0138】次に、従来例と比較して、この実施例11
の優れている点について説明する。この実施例11と同
じ機能を実現する従来の方法としては次のものが考えら
れる。
【0139】その方法とは、プログラミング言語記述の
中から文法的には正しいが意味的にはエラーである可能
性が高い記述を、自分の経験だけを頼りに手作業で摘出
するというものである。この方法は誰もが無意識に行っ
ていることであるが、問題を摘出するのに膨大な時間が
必要(作業コストの問題)となるだけでなく、経験年数
などによって作業効率のばらつきが大きい(属人性の問
題)、ミスが入り込みやすい(作業品質の問題)など多
くの問題がある。
【0140】これに対しこの実施例11を使用した場
合、プログラミング言語記述601から文法的には正し
いが意味的にはエラーである可能性が高い記述を自動的
に検出できるので、同様な作業を人間が行った場合に比
べ、問題点の摘出に要する時間を桁違いに短縮(数日に
対して数秒)できるだけでなく、チェック漏れ、チェッ
クミスといったことが全く無くなるという効果がある。
【0141】以上のようにこの実施例11によれば、図
70に示すように、プログラミング言語記述601を入
力にすると共に、プログラム生産支援装置中に、字句解
析手段602、特定パターンの検出手段1101を設け
ることにより、プログラミング言語記述601から文法
的には正しいが意味的にはエラーである可能性が高い記
述を自動的に検出できるので、結果としてプログラム生
産の高品質化に大きく寄与することができる。
【0142】実施例12.図75は実施例12のプログ
ラム生産支援装置を示す構成図、図76は実施例12に
おけるプログラム生産支援装置の動作を示すフローチャ
ート、図77は実施例12の入力である「プログラミン
グ言語記述」の一例を示す図、図78は実施例12の出
力である「加工されたプログラミング言語記述」の一例
を示す図、図79は実施例12によって加工されたプロ
グラムの「実行結果」の一例を示す図である。
【0143】図75の図29と異なる要素について説明
する。図75において、1201は構文解析手段603
によるプログラミング言語記述601の構文解析結果を
もとにプログラミング言語記述601の特定箇所にプロ
グラムの実行を追跡する為の実行追跡処理を埋込む「実
行追跡処理埋込み手段」、1202は実行追跡処理埋込
み手段1201によって実行追跡処理を埋め込まれた
「加工されたプログラミング言語記述」である。
【0144】この実施例12におけるプログラム生産支
援装置の動作について、図76に示すフローチャートを
用いて説明する。
【0145】図76において、ステップ(イ)〜(ロ)
は図30のそれと同じである。以下、図76の図30と
異なる動作について説明する。まず、実行追跡処理埋込
み手段1201は、構文解析手段603によるプログラ
ミング言語記述601の構文解析結果をもとに、プログ
ラム中の位置によって処理を振り分ける(図76のステ
ップ(ハ))。プログラム中の位置が「モジュールの先
頭」である場合、実行追跡処理埋込み手段1201は、
プログラムのブロックを一つ深くして実行追跡処理を埋
込む(図76のステップ(ニ))。プログラム中の位置
が「モジュールの末尾」である場合、実行追跡処理埋込
み手段1201は、プログラムのブロックを一つ深くし
て実行追跡処理を埋込む(図76のステップ(ホ))。
プログラム中の位置が「return文の所」である場合、実
行追跡処理埋込み手段1201は、return文を囲む局所
的なブロックを作って実行追跡処理を埋込む(図76の
ステップ(ヘ))。プログラム中の位置が「普通の実行
文の所」である場合、実行追跡処理埋込み手段1201
は、実行文の直前に局所的なブロックを作って実行追跡
処理を埋込む(図76のステップ(ト))。
【0146】次に、実行追跡処理埋込み手段1201が
プログラミング言語記述601(図77参照)に対して
実行追跡処理を埋め込む手順を、図77、図78を用い
て説明する。例えば、図77中において1〜2行目の が「モジュールの先頭」という条件に該当するが、この
行に対して実行追跡処理埋込み手段1201は、 の様に2行目の「{」の外側にもう一つ「{」を追加して
ブロックを一つ深くした上で、 の様に「{」と「{」の間にプログラムの実行追跡処理を
埋め込む。これにより、元のプログラムの動作には一切
干渉せず当該プログラムの実行を追跡することが可能と
なる。尚、こうして埋め込まれた「_probe」というモジ
ュールには、それが埋め込まれた「プログラム中の論理
的な位置(この場合はモジュールの実行開始を示す
「+」)」、「モジュールの名前(この場合は「mai
n」)」、「物理的な位置(この場合は「sample.cとい
うファイルの2行目」)」という情報が引数で渡される
為、後ほどこのプログラムを実行した時にどの「_prob
e」であるかを容易に判断することができる。同様に、
図77において10行目の } が「モジュールの末尾」という条件に該当するが、この
行に対して実行追跡処理埋込み手段1201は、 } } の様に10行目の「}」の外側にもう一つ「}」を追加
してブロックを一つ深くした上で、 } _probe(■-■,”main”,”sample.c”, 10); } のように「}」と「}」の間にプログラムの実行追跡処理
を埋め込む。「モジュールの先頭」の場合と同様、こう
して埋め込まれた「_probe」というモジュールには、そ
れが埋め込まれた「プログラム中の論理的な位置(この
場合はモジュールの実行終了を示す「-」)」、「モジ
ュールの名前(この場合は「main」)」、「物理的な位
置(この場合は「sample.cというファイルの10行
目」)」という情報が引数で渡される。同様に、図77
において8行目の return(sub()); が「return文の所」という条件に該当するが、この行に
対して実行追跡処理埋込み手段1201は、 { return(sub()); } のように8行目のreturn文を「{」と「}」で囲んで局所
的なブロックに封じ込めた上で、 { int tmp; tmp = sub(); _probe(■-■,■main”,■sa
mple.c”, 8); return(tmp); } のように、return文の引数を一旦一時変数に退避する処
理と、return文との間にプログラムの実行追跡処理とを
埋め込む。「モジュールの先頭」の場合と同様、こうし
て埋め込まれた「_probe」というモジュールには、それ
が埋め込まれた「プログラム中の論理的な位置(この場
合はモジュールの実行終了を示す「-」)」、「モジュ
ールの名前(この場合は「main」)」、「物理的な位置
(この場合は「sample.cというファイルの8行目」)」
という情報が引数で渡される。尚、return文の引数を一
旦一時変数に退避しているのは、return文の引数が関数
参照である場合にプログラムの実行追跡結果が main: sample.cの2行目 [モジュールの実行開始] main: sample.cの5行目 main: sample.cの8行目 [モジュールの実行終了] sub: sample.cの13行目 [モジュールの実行開始] sub: sample.cの14行目 sub: sample.cの15行目 [モジュールの実行終了] のように見かけ上おかしくなるのを回避する為である。
ちなみに、この実施例12の方法では main: sample.cの2行目 [モジュールの実行開始] main: sample.cの5行目 sub: sample.cの13行目 [モジュールの実行開始] sub: sample.cの14行目 sub: sample.cの15行目 [モジュールの実行終了] main: sample.cの8行目 [モジュールの実行終了] のように実際の実行順序に従って正しく報告される。同
様に図77において6行目の i = 1; が「普通の実行文の所」という条件に該当するが、この
行に対して実行追跡処理埋込み手段1201は、 { } i = 1; のように実行文の直前に「{」と「}」で囲まれた局所的
なブロックを作った上で、 { _probe(■=■,”main”,”sample.c”, 6); } i =
1; のように「{」と「}」の間にプログラムの実行追跡処理
を埋め込む。「モジュールの先頭」の場合と同様に、こ
うして埋め込まれた「_probe」というモジュールには、
それが埋め込まれた「プログラム中の論理的な位置(こ
の場合はモジュールの実行途中を示す「=」)」、「モ
ジュールの名前(この場合は「main」)」、「物理的な
位置(この場合は「sample.cというファイルの6行
目」)」という情報が引数で渡される。
【0147】この実施例12では、入力となるプログラ
ミング言語としてC言語を用いる方法を紹介したが、こ
れは他のいかなるプログラミング言語(例えば「Ad
a」)であっても構わない。同様に、この実施例12で
は、全ての実行文を対象とする方法を紹介したが、これ
は「モジュールの開始と終了」だけを対象とするもので
あっても構わない。
【0148】次に、従来例と比較して、この実施例12
の優れている点について説明する。この実施例12と同
じ機能を実現する従来の方法としては次のものが考えら
れる。
【0149】その方法とは、プログラミング言語記述の
任意の場所にプログラムの実行追跡処理を手作業で埋め
込むというものである。この方法はコンピュータの歴史
が始まった頃から行われているが、実行追跡処理を埋め
込むのに膨大な時間が必要(作業コストの問題)となる
だけでなく、経験年数などによって作業効率のばらつき
が大きい(属人性の問題)、ミスが入り込みやすい(作
業品質の問題)、プログラミング言語記述を修正する度
に実行追跡処理を埋め込み直す必要があるなど多くの問
題がある。
【0150】これに対しこの実施例12を使用した場
合、プログラムの実行追跡処理がプログラミング言語記
述601中に自動的に埋め込まれるので、同様な作業を
人間が行った場合に比べ、実行追跡処理の埋め込みに要
する時間を桁違いに短縮(数日に対して数秒)できるだ
けでなく、埋め込み漏れ、埋め込みミスといった事が全
く無くなるという効果がある。更に、 (1)入力となるプログラミング言語記述を読み込む。 (2)プログラミング言語記述に実行追跡処理を埋め込
む。 (3)加工したプログラミング言語記述を別のファイル
に出力する。 (4)出力されたファイルをコンパイルして実行モジュ
ールを生成する。 という手順を踏めば、オリジナルのプログラミング言語
記述601を一切変更せずに実行追跡処理を埋め込んだ
実行モジュールを生成できるので、プログラミング言語
記述601に直接実行追跡処理を埋め込むことによる弊
害、すなわち、 ・プログラミング言語記述が汚くなる(可読性、保守性
が低下する)。 ・実行追跡処理を埋め込む前の状態に戻せない。 といった問題を完全に解消できるという効果がある。
【0151】以上のようにこの実施例12によれば、図
75に示すように、プログラミング言語記述601を入
力にする字句解析手段602、構文解析手段603、お
よび実行追跡処理埋込み手段1201を設けることによ
り、プログラミング言語記述601にプログラムの実行
追跡処理を自動的に埋め込むことができるので、結果と
してプログラム生産および保守の合理化に大きく寄与す
ることができる。
【0152】実施例13.図80は実施例13のプログ
ラム生産支援装置を示す構成図である。図80におい
て、101は各機能の階層構造と種別が記述された「仕
様記述」、106は前記実施例1によって自動生成され
た「機能構成図」、1301は前記実施例2によって自
動生成された「疑似言語記述のひな形」、301はモジ
ュールのインターフェース仕様と処理フローが記述され
た「疑似言語記述」、307は前記実施例3によって自
動生成された「デザインレビュー用資料」、403は、
前記実施例4によって自動生成された「木構造チャー
ト」、503は前記実施例5によって自動生成された
「プログラミング言語記述のひな形」、601は特定の
プログラミング言語で記述された「プログラミング言語
記述」、703は前記実施例7によって自動生成された
「木構造チャート」、805は前記実施例8によって自
動生成された「モジュール仕様書」、903は前記実施
例9によって自動生成された「モジュール構成図」、1
004は前記実施例10によって自動生成された「シン
ボル一覧表」、1102は前記実施例11によって自動
出力された「警告メッセージ」、1202は前記実施例
12によって自動生成された「加工されたプログラミン
グ言語記述」である。
【0153】この実施例13のプログラム生産支援装置
は、本発明の第1〜12の実施例によって構成されてい
るので、それぞれの部分の動作は第1〜12の実施例で
説明した通りである。
【0154】この実施例13では前記実施例1〜12を
全て組み合わせたものを紹介したが、この発明は前記実
施例1〜12を任意に組み合わせたものであっても適用
できる。
【0155】次に、従来例と比較して、この実施例13
の優れている点について説明する。この実施例13と同
じ機能を実現する従来の方法としては次のものが考えら
れる。
【0156】その方法とは、 (1)プログラムの機能構成を決定する。 (2)ワープロなどを用いてそれらの情報を手作業で機
能構成図の形にまとめる。 (3)機能構成図を見ながら手作業でモジュール分割を
行う。 (4)モジュールのインターフェース仕様と処理フロー
を決定する。 (5)ワープロなどを用いてそれらの情報を手作業で仕
様書の形にまとめる。 (6)仕様書を見ながらプログラミング言語記述を手作
業でコーディングする。 (7)プログラミング言語記述を見ながら必要な図表を
手作業で作成する。 (8)プログラムの実行追跡処理を手作業で埋め込む。 (9)プログラムを実行する。 というものである。この方法は現在一般的に行われてい
るものであり現実的ではあるが、手作業が主体である以
上は、それぞれの作業に膨大な時間が必要(作業コスト
の問題)となるだけでなく、作業のやり方に個人差が出
る(属人性の問題)、ミスが入り込みやすい(作業品質
の問題)など多くの問題がある。個々の作業を人手で行
っている限り本質的にこれらの問題を解決することは不
可能である。
【0157】これに対しこの実施例13を使用した場
合、事務的な作業(例えば機能構成図の作成など)が全
て自動的に行われるので、同じ作業を人間が手作業で行
う場合に比べ、作業効率および品質が格段に高くなる
(理論的にミスは発生しない)という効果がある。更
に、前工程で作成されレビューされた情報(仕様記述、
疑似言語記述など)を後工程の入力(ひな形)として流
用できるので、前工程を担当した作業者の意図を後工程
の作業者に正確に伝えられるという効果がある。また、
それぞれの段階で利用される入力は単なるテキストであ
り、一般的なテキスト・エディタを用いて作成できるの
で、新たに専用エディタを開発して提供する必要がない
ばかりか、ユーザが自分の使い慣れたエディタを用いて
仕様記述を作成できるという効果がある。これはこの実
施例13が、低コストで実現かつ運用可能であることを
意味している。
【0158】以上のようにこの実施例13によれば、前
記実施例1〜12のいずれか2つ以上の組み合わせを利
用することにより、プログラム生産における事務的な処
理を自動化できると共に、前工程で作成されレビューさ
れた情報を後工程の入力として流用できるので、結果と
してプログラム生産および保守の合理化に大きく寄与す
ることができる。
【0159】
【発明の効果】以上のように、本発明に係るプログラム
生産支援装置は、自然言語と各機能の階層構造を示す記
号とで記述された仕様記述を読み込みその内容を字句に
分解する字句解析手段と、字句に分解された仕様記述の
構文解析を行う構文解析手段と、構文解析結果をもとに
各機能の階層構造を抽出する階層構造抽出手段と、上記
抽出された階層構造をもとに上記仕様記述に対応した図
または自然言語及びプログラミング言語に準じた制御構
造で記述された疑似言語記述を生成する生成手段とを有
しているので、機能構成図または疑似言語記述の作成に
要する時間を大幅に短縮できると共に、機能構成図また
は疑似言語の品質を格段に高めることができ、結果とし
てプログラム生産の高品質化に大きく寄与することがで
きる。
【0160】さらに、仕様記述に、種別を示す記号を記
述し、生成手段が、上記種別に従って、ディレクトリ、
ファイル、またはモジュールの少なくとも1つを生成す
る場合には、プログラムを実現するのに必要なディレク
トリ、ファイルモジュールを自動生成できると共に、
前工程の設計情報(機能構成)を後工程に忠実に伝える
ことができ、結果としてプログラム生産の高品質化に大
きく寄与することができる。
【0161】また、本発明に係るプログラム生産支援装
置は、自然言語とプログラミング言語に準じた制御構造
で記述された疑似言語記述を読み込みその内容を字句に
分解する字句解析手段と、字句に分解された疑似言語記
述の構文解析を行う構文解析手段と、構文解析結果をも
とに上記疑似言語に対応した資料、図またはプログラミ
ング言語記述を生成する生成手段とを有しているので、
汎用のテキストエディタ等を用いてデータの入力や編集
を可能にすると共に、必要な資料、図またはプログラミ
ング言語記述を生成することができる。 また、疑似言語
記述に、インターフェース仕様が記述された仕様記述部
とモジュールの定義・参照が記述されたロジック記述部
とを記述し、生成手段が、構文解析結果をもとに上記仕
様記述部に記述されたインターフェース仕様を抽出する
インターエース仕様抽出手段と、上記構文解析結果をも
とに上記ロジック記述部に記述されたモジュールの定義
・参照を抽出するモジュール定義・参照抽出手段と、上
記抽出されたインターフェース仕様及びモジュールの定
義・参照をもとに上記疑似言語記述に対応したデザイン
レビュー用資料を生成するデザインレビュー用資料生成
手段とを有する場合には、デザインレビュー用資料の作
成に要する時間を大幅に短縮できると共に、デザインレ
ビュー用資料の品質を格段に高めることができ、結果と
してプログラム生産の高品質化に大きく寄与することが
できる。
【0162】また、生成手段が、構文解析結果をもとに
自然言語で記述されている処理説明および制御構造を木
構造に変換して記憶する制御構造抽出手段と、変換され
た木構造をもとに疑似言語記述に対応した木構造チャー
トを生成する木構造チャート生成手段とを有する場合に
は、木構造チャートの作成に要する時間を大幅に短縮で
きると共に、木構造チャートの品質を格段に高めること
ができ、結果としてプログラム生産の高品質化に大きく
寄与することができる。
【0163】さらに、生成手段が、構文解析結果をもと
に自然言語で記述されている処理説明及び制御構造を木
構造に変換して記憶する制御構造抽出手段と、変換され
た木構造をもとに疑似言語の制御構造をそれに対応する
プログラミング言語の制御構造に変換する制御構造変換
手段と、上記変換された木構造をもとに疑似言語の処理
説明をプログラミング言語のコメントに変換する手段と
を有する場合には、前工程(設計)で十分にデザインレ
ビューされた情報(疑似言語記述)を後工程(コーディ
ング)の入力(プログラミング言語記述のひな形)とし
て流用できるので、設計者の意図をプログラマに正確に
伝えることができ、結果としてプログラム生産の高品質
化に大きく寄与することができる。
【0164】また、本発明に係るプログラム生産支援装
置は、特定のプログラミング言語で記述されたテキスト
のプログラミング言語記述を読み込みその内容を字句に
分解する字句解析手段と、字句に分解されたプログラミ
ング言語記述の構文解析を行う構文解析手段と、構文解
析結果をもとに上記プログラミング言語に対応した図、
表または言語記述を生成する生成手段とを有しているの
で、汎用のテキストエディタ等を用いてデータの入力や
編集を可能にすると共に、必要な図、表または言語記述
を生成することができる。
【0165】また、生成手段が、構文解析結果をもとに
プログラムの制御構造及びそれに付随するコメントを抽
出する制御構造抽出手段と、上記制御構造をもとにプロ
グラミング言語の制御構造を自然言語及び上記プログラ
ミング言語に準じた制御構造で記述された疑似言語の制
御構造に変換する制御構造変換手段と、上記制御構造を
もとに上記プログラミング言語の文およびコメントを上
記疑似言語の自然言語で記述された処理説明に変換する
手段とを有する場合には、プログラミング言語記述から
モジュールのインターフェース仕様に関する情報を自動
的に抽出できるので、実際に動作しているプログラムの
仕様を容易かつ正確に把握することが可能となり、結果
としてプログラム生産および保守の高品質化に大きく寄
与することができる。
【0166】また、生成手段が、構文解析結果をもとに
プログラムの制御構造とそれに付随するコメントを木構
造に変換して記憶する制御構造抽出手段と、指定に応じ
て木構造に反映したくない情報を木構造から削除する不
要情報割愛手段と、木構造をもとにプログラミング言語
に対応した木構造チャートを生成する木構造チャート生
成手段とを有する場合には、プログラミング言語記述か
らユーザの要求に応じた木構造チャートを生成すること
ができ、結果としてプログラム生産および保守の高品質
化に大きく寄与することができる。
【0167】また、生成手段が、構文解析結果をもとに
プログラミング言語記述のヘッダーコメントに記述され
たインターフェース仕様を抽出するインターフェース仕
様抽出手段と、構文解析結果をもとに上記プログラミン
グ言語記述のモジュールの定義・参照を木構造に変換し
て記憶するモジュール定義・参照抽出手段と、ヘッダー
コメント中のモジュール欄の名称が実際のモジュール名
に一致しているかを照合するモジュール名照合手段と、
上記インターフェース仕様及び上記木構造をもとにプロ
グラミング言語記述に対応したモジュール仕様書を生成
するモジュール仕様生成手段とを有する場合には、プロ
グラミング言語記述から実際のモジュール定義に正確に
対応したモジュール仕様書を自動生成することができ、
結果としてプログラム生産および保守の合理化に大きく
寄与することができる。
【0168】また、生成手段が、構文解析結果をもとに
モジュールの定義・参照を木構造に変換して記憶するモ
ジュール定義・参照抽出手段と、上記木構造をもとに同
一構造を上記木構造から削除し置換用の情報で置換する
同一構造割愛手段と、上記木構造をもとにプログラミン
グ言語記述に対応したモジュール構成図を生成するモジ
ュール構成図生成手段とを有する場合には、プログラミ
ング言語記述から実用的なモジュール構成図を自動生成
することができ、結果としてプログラム生産および保守
の合理化に大きく寄与することができる。
【0169】また、生成手段が、構文解析結果をもとに
シンボルの定義情報を記憶するシンボル定義抽出手段
と、上記シンボルの定義情報をシンボルが定義された順
に並び換えるシンボル定義並び換え手段と、上記シンボ
ルの定義情報をもとにプログラミング言語記述に対応し
たシンボル一覧表を生成するシンボル一覧表生成手段と
を有する場合には、プログラミング言語記述から実用的
なシンボル一覧表を自動生成することができ、結果とし
てプログラム生産および保守の合理化に大きく寄与する
ことができる。
【0170】また、字句に分解されたプログラミング言
語記述中の特定の位置に位置するものだけを抽出しその
中に特定のパターンが含まれていることを検出して警告
メッセージを出力する特定パターンの検出手段を有する
場合には、プログラミング言語記述から文法的には正し
いが意味的にはエラーである可能性が高い記述を自動的
に検出できるので、結果としてプログラム生産の高品質
化に大きく寄与することができる。
【0171】さらに、生成手段が、構文解析結果をもと
にプログラミング言語記述中の所定の位置にプログラム
の実行を追跡するための実行追跡処理を埋込む実行追跡
処理埋め込み手段を有する場合には、プログラミング言
語記述にプログラムの実行追跡処理を自動的に埋め込む
ことができるので、結果としてプログラム生産および保
守の合理化に大きく寄与することができる。
【図面の簡単な説明】
【図1】 実施例1のプログラム生産支援装置を示す構
成図である。
【図2】 実施例1のフローチャートである。
【図3】 実施例1の仕様記述(入力)の一例を示す図
である。
【図4】 実施例1の仕様記述(入力)の一例の続きを
示す図である。
【図5】 実施例1の機能構成図(出力)の一例を示す
図である。
【図6】 実施例1の機能構成図(出力)の一例の続き
を示す図である。
【図7】 実施例1の木構造の一例を示す図である。
【図8】 実施例2のプログラム生産支援装置を示す構
成図である。
【図9】 実施例2のフローチャートである。
【図10】 実施例2のディレクトリ構成(出力)の一
例を示す図である。
【図11】 実施例2の疑似言語記述のひな形(出力)
の一例を示す図である。
【図12】 実施例3のプログラム生産支援装置を示す
構成図である。
【図13】 実施例3のフローチャートである。
【図14】 実施例3の疑似言語記述(入力)の一例を
示す図である。
【図15】 実施例3の疑似言語記述(入力)の一例の
続きを示す図である。
【図16】 実施例3のデザインレビュー用資料(出
力)の一例を示す図である。
【図17】 実施例4のプログラム生産支援装置を示す
構成図である。
【図18】 実施例4のフローチャートである。
【図19】 実施例4の木構造チャート(出力)の一例
を示す図である。
【図20】 実施例4の木構造の一例を示す図である。
【図21】 実施例4の木構造チャートの一例を示す図
である。
【図22】 実施例4の木構造の一例を示す図である。
【図23】 実施例4の木構造チャートの一例を示す図
である。
【図24】 実施例5のプログラム生産支援装置を示す
構成図である。
【図25】 実施例5のフローチャートである。
【図26】 実施例5のプログラミング言語記述のひな
形(出力)の一例を示す図である。
【図27】 実施例5のプログラミング言語記述のひな
形(出力)の一例の続きを示す図である。
【図28】 実施例5の木構造の一例を示す図である。
【図29】 実施例6のプログラム生産支援装置を示す
構成図である。
【図30】 実施例6のフローチャートである。
【図31】 実施例6のプログラミング言語記述(入
力)の一例を示す図である。
【図32】 図31の続きを示す図である。
【図33】 実施例6の疑似言語記述(出力)の一例を
示す図である。
【図34】 図34の続きを示す図である。
【図35】 実施例6の木構造の一例を示す図である。
【図36】 実施例6の木構造の一例を示す図である。
【図37】 実施例7のプログラム生産支援装置を示す
構成図である。
【図38】 実施例7のフローチャートである。
【図39】 実施例7のプログラミング言語記述(入
力)の一例を示す図である。
【図40】 実施例7のプログラミング言語記述(入
力)の一例の続きを示す図である。
【図41】 実施例7の木構造チャート(出力)の一例
を示す図である。
【図42】 実施例7の木構造チャート(出力)の一例
を示す図である。
【図43】 実施例7の木構造チャート(出力)の一例
を示す図である。
【図44】 実施例7の木構造の一例を示す図である。
【図45】 実施例7の木構造チャートの一例を示す図
である。
【図46】 実施例7の木構造の一例を示す図である。
【図47】 実施例7の木構造チャートの一例を示す図
である。
【図48】 実施例7の木構造チャートの一例を示す図
である。
【図49】 実施例8のプログラム生産支援装置を示す
構成図である。
【図50】 実施例8のフローチャートである。
【図51】 実施例8のプログラミング言語記述(入
力)の一例を示す図である。
【図52】 図51の続きを示す図である。
【図53】 実施例8のモジュール仕様書(出力)の一
例を示す図である。
【図54】 実施例9のプログラム生産支援装置を示す
構成図である。
【図55】 実施例9のフローチャートである。
【図56】 実施例9のプログラミング言語記述(入
力)の一例を示す図である。
【図57】 図56の続きを示す図である。
【図58】 従来のモジュール構成図(出力)の一例を
示す図である。
【図59】 実施例9のモジュール構成図(出力)の一
例を示す図である。
【図60】 実施例9の木構造の一例を示す図である。
【図61】 実施例9の木構造の一例を示す図である。
【図62】 実施例10のプログラム生産支援装置を示
す構成図である。
【図63】 実施例10のフローチャートである。
【図64】 実施例10のプログラミング言語記述(入
力)の一例を示す図である。
【図65】 図64の続きを示す図である。
【図66】 図65の続きを示す図である。
【図67】 図66の続きを示す図である。
【図68】 従来のシンボル一覧表(出力)の一例を示
す図である。
【図69】 実施例10のシンボル一覧表(出力)の一
例を示す図である。
【図70】 実施例11のプログラム生産支援装置を示
すブロック図である。
【図71】 実施例11のフローチャートである。
【図72】 実施例11のプログラミング言語記述(入
力)の一例を示す図である。
【図73】 図72の続きを示す図である。
【図74】 実施例11の警告メッセージ(出力)の一
例を示す図である。
【図75】 実施例12のプログラム生産支援装置を示
す構成図である。
【図76】 実施例12のフローチャートである。
【図77】 実施例12のプログラミング言語記述(入
力)の一例を示す図である。
【図78】 実施例12の加工されたプログラミング言
語記述(出力)の一例を示す図である。
【図79】 実施例12の実行結果(出力)の一例を示
す図である。
【図80】 実施例13のプログラム生産支援装置を示
す構成図である。
【図81】 実施例1〜13の前提となるハードウェア
構成を示す図である。
【図82】 従来のプログラム生産支援装置を示す構成
図である。
【図83】 従来のフローチャートである。
【符号の説明】
101 仕様記述、102 字句解析手段、103 構
文解析手段、104 階層構造抽出手段、105 機能
構成図生成手段、106 機能構成図、201 ディレ
クトリ生成手段、202 ファイル生成手段、203
モジュール生成手段、204 外部記憶、205 ディ
レクトリ、206 ファイル1、207 ファイル2、
208 ファイルN、209 モジュール1、210
モジュール2、211 モジュールN、301 疑似言
語記述、302 字句解析手段、303 構文解析手
段、304 インターフェース仕様抽出手段、305
モジュール定義・参照抽出手段、306 デザインレビ
ュー用資料生成手段、307 デザインレビュー用資
料、401 制御構造抽出手段、402 木構造チャー
ト生成手段、403 木構造チャート、501 制御構
造変換手段、502 処理説明→コメント変換手段、5
03 プログラミング言語記述のひな形、601 プロ
グラミング言語記述、602 字句解析手段、603
構文解析手段、604 制御構造抽出手段、605 制
御構造変換手段、606 コメント→処理説明変換手
段、701 不要情報割愛手段、702 木構造チャー
ト生成手段、703 木構造チャート、801 インタ
ーフェース仕様抽出手段、802 モジュール定義・参
照抽出手段、803 モジュール名照合手段、804
モジュール仕様書生成手段、805 モジュール仕様
書、901 同一構造割愛手段、902 モジュール構
成図生成手段、903 モジュール構成図、1001
シンボル定義抽出手段、1002 シンボル定義並換え
手段、1003 シンボル一覧表生成手段、1004
シンボル一覧表、1101 特定パターンの検出手段、
1102 警告メッセージ、1201 実行追跡処理埋
込み手段、1202 加工されたプログラミング言語記
述、1301 疑似言語記述のひな形、1401 キー
ボード、1402 ディスプレイ、1403 計算機、
1404 外部記憶、1405 プリンタ、1501
データ入力手段、1502 データ定義部、1503
表示部、1504 表示手段、1505 ブロックチャ
ート編集部、1506 ブロックエディタ部、1507
ソースコード出力部、1508 ソースコード記録手
段。
フロントページの続き (56)参考文献 特開 平4−364543(JP,A) 特開 平3−266037(JP,A) 特開 平1−283631(JP,A) 特開 平4−216129(JP,A) 特開 平4−55938(JP,A) 特開 平4−178838(JP,A) 特開 平4−273328(JP,A) 「Borland C++プログラマ ーズガイド」,初版,株式会社ボーラン ドジャパン,1991年7月25日発行,p p.423 「SPARC LT Semate V3 プログラム設計支援MCDtoo ls C言語ソース生成/逆生成ツール 説明書」,東芝,A1版,平成4年9月 30日,pp.50−149 ”統合化Cプログラミングシステ ム”,横河技報,1991,Vol.35,N o.2,pp.49−52 ”Cまっぷ”,C MAGAZIN E,1992年6月号,ソフトバンク,p p.138−139 ”第3部 保守ツール動向 リエンジ ニアリング機能など既存資産に適用可能 な製品が登場”,日経コンピュータ, 1990年7月30日号,pp.82−89 「構造化プログラム設計図法SPD −わかりやすいプログラムへの招待状 −」,共立出版,初版,1992年6月1 日,pp.119−143 ”ソフトウエア保存支援システム”, 三菱電機技法,1988年,Vol.62,N o.10,pp.13−20 (58)調査した分野(Int.Cl.7,DB名) G06F 9/06 - 9/44

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】 自然言語と各機能の階層構造を示す記号
    とで記述された仕様記述を読み込みその内容を字句に分
    解する字句解析手段と、字句に分解された仕様記述の構
    文解析を行う構文解析手段と、構文解析結果をもとに各
    機能の階層構造を抽出する階層構造抽出手段と上記抽
    出された階層構造をもとに上記仕様記述に対応した図ま
    たは自然言語及びプログラミング言語に準じた制御構造
    で記述された疑似言語記述を生成する生成手段とを有す
    ることを特徴とするプログラム生産支援装置。
  2. 【請求項2】 仕様記述には、種別を示す記号が記述さ
    れており、 生成手段は、上記種別に従って、ディレクトリ、ファイ
    ル、またはモジュールの少なくとも1つを生成すること
    を特徴とする請求項1記載の プログラム生産支援装置。
  3. 【請求項3】 自然言語とプログラミング言語に準じた
    制御構造で記述された疑似言語記述を読み込みその内容
    を字句に分解する字句解析手段と、字句に分解された疑
    似言語記述の構文解析を行う構文解析手段と、構文解析
    結果をもとに上記疑似言語に対応した資料、図またはプ
    ログラミング言語記述を生成する生成手段とを有するこ
    とを特徴とするプログラム生産支援装置。
  4. 【請求項4】 疑似言語記述には、インターフェース仕
    様が記述された仕様記述部とモジュールの定義・参照が
    記述されたロジック記述部とが記述されており、 生成手段は、構文解析結果をもとに上記仕様記述部に記
    述されたインターフェース仕様を抽出するインターエー
    ス仕様抽出手段と、上記構文解析結果をもとに上記ロジ
    ック記述部に記述されたモジュールの定義・参照を抽出
    するモジュール定義・参照抽出手段と、上記抽出された
    インターフェース仕様及びモジュールの定義・参照をも
    とに上記疑似言語記述に対応したデザインレビュー用資
    料を生成するデザインレビュー用資料生成手段とを有す
    ることを特徴とする請求項3記載の プログラム生産支援
    装置。
  5. 【請求項5】 生成手段は、構文解析結果をもとに自然
    言語で記述されている処理説明および制御構造を木構造
    に変換して記憶する制御構造抽出手段と、変 換された木
    構造をもとに疑似言語記述に対応した木構造チャートを
    生成する木構造チャート生成手段とを有することを特徴
    とする請求項3記載のプログラム生産支援装置。
  6. 【請求項6】 生成手段は、構文解析結果をもとに自然
    言語で記述されている処理説明及び制御構造を木構造に
    変換して記憶する制御構造抽出手段と、変換された木構
    造をもとに疑似言語の制御構造をそれに対応するプログ
    ラミング言語の制御構造に変換する制御構造変換手段
    と、上記変換された木構造をもとに疑似言語の処理説明
    をプログラミング言語のコメントに変換する手段とを有
    することを特徴とする請求項3記載のプログラム生産支
    援装置。
  7. 【請求項7】 特定のプログラミング言語で記述された
    テキストのプログラミング言語記述を読み込みその内容
    を字句に分解する字句解析手段と、字句に分解されたプ
    ログラミング言語記述の構文解析を行う構文解析手
    、構文解析結果をもとに上記プログラミング言語に対
    応した図、表または言語記述を生成する生成手段とを有
    することを特徴とするプログラム生産支援装置。
  8. 【請求項8】 生成手段は、構文解析結果をもとにプロ
    グラムの制御構造及びそれに付随するコメントを抽出す
    る制御構造抽出手段と、上記制御構造をもとにプログラ
    ミング言語の制御構造を自然言語及び上記プログラミン
    グ言語に準じた制御構造で記述された疑似言語の制御構
    造に変換する制御構造変換手段と、上記制御構造をもと
    に上記プログラミング言語の文およびコメントを上記疑
    似言語の自然言語で記述された処理説明に変換する手段
    とを有することを特徴とする請求項7記載のプログラム
    生産支援装置。
  9. 【請求項9】 生成手段は、構文解析結果をもとにプロ
    グラムの制御構造とそれに付随するコメントを木構造に
    変換して記憶する制御構造抽出手段と、指定に応じて木
    構造に反映したくない情報を木構造から削除する不要情
    報割愛手段と、木構造をもとにプログラミング言語に対
    応した木構造チャートを生成する木構造チャート生成手
    段とを有することを特徴とする請求項7記載のプログラ
    ム生産支援装置。
  10. 【請求項10】 生成手段は、構文解析結果をもとにプ
    ログラミング言語記述のヘッダーコメントに記述された
    インターフェース仕様を抽出するインターフ ェース仕様
    抽出手段と、構文解析結果をもとに上記プログラミング
    言語記述のモジュールの定義・参照を木構造に変換して
    記憶するモジュール定義・参照抽出手段と、ヘッダーコ
    メント中のモジュール欄の名称が実際のモジュール名に
    一致しているかを照合するモジュール名照合手段と、上
    記インターフェース仕様及び上記木構造をもとにプログ
    ラミング言語記述に対応したモジュール仕様書を生成す
    るモジュール仕様生成手段とを有することを特徴とする
    請求項7記載のプログラム生産支援装置。
  11. 【請求項11】 生成手段は、構文解析結果をもとにモ
    ジュールの定義・参照を木構造に変換して記憶するモジ
    ュール定義・参照抽出手段と、上記木構造をもとに同一
    構造を上記木構造から削除し置換用の情報で置換する同
    一構造割愛手段と、上記木構造をもとにプログラミング
    言語記述に対応したモジュール構成図を生成するモジュ
    ール構成図生成手段とを有することを特徴とする請求項
    7記載のプログラム生産支援装置。
  12. 【請求項12】 生成手段は、構文解析結果をもとにシ
    ンボルの定義情報を記憶するシンボル定義抽出手段と、
    上記シンボルの定義情報をシンボルが定義された順に並
    び換えるシンボル定義並び換え手段と、上記シンボルの
    定義情報をもとにプログラミング言語記述に対応したシ
    ンボル一覧表を生成するシンボル一覧表生成手段とを有
    することを特徴とする請求項7記載のプログラム生産支
    援装置。
  13. 【請求項13】 字句に分解されたプログラミング言語
    記述中の特定の位置に位置するものだけを抽出しその中
    に特定のパターンが含まれていることを検出して警告メ
    ッセージを出力する特定パターンの検出手段を有するこ
    とを特徴とする請求項7記載のプログラム生産支援装
    置。
  14. 【請求項14】 生成手段は、構文解析結果をもとにプ
    ログラミング言語記述中の所定の位置にプログラムの実
    行を追跡するための実行追跡処理を埋込む実行追跡処理
    埋め込み手段を有することを特徴と請求項7記載のプロ
    グラム生産支援装置。
JP06226928A 1994-09-21 1994-09-21 プログラム生産支援装置 Expired - Fee Related JP3112623B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP06226928A JP3112623B2 (ja) 1994-09-21 1994-09-21 プログラム生産支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP06226928A JP3112623B2 (ja) 1994-09-21 1994-09-21 プログラム生産支援装置

Publications (2)

Publication Number Publication Date
JPH0895761A JPH0895761A (ja) 1996-04-12
JP3112623B2 true JP3112623B2 (ja) 2000-11-27

Family

ID=16852806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP06226928A Expired - Fee Related JP3112623B2 (ja) 1994-09-21 1994-09-21 プログラム生産支援装置

Country Status (1)

Country Link
JP (1) JP3112623B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5125938B2 (ja) * 2008-09-24 2013-01-23 富士通株式会社 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
JP2015005163A (ja) * 2013-06-21 2015-01-08 三菱電機株式会社 仕様書作成装置及びプログラム

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
"Cまっぷ",C MAGAZINE,1992年6月号,ソフトバンク,pp.138−139
"ソフトウエア保存支援システム",三菱電機技法,1988年,Vol.62,No.10,pp.13−20
"第3部 保守ツール動向 リエンジニアリング機能など既存資産に適用可能な製品が登場",日経コンピュータ,1990年7月30日号,pp.82−89
"統合化Cプログラミングシステム",横河技報,1991,Vol.35,No.2,pp.49−52
「Borland C++プログラマーズガイド」,初版,株式会社ボーランドジャパン,1991年7月25日発行,pp.423
「SPARC LT Semate V3 プログラム設計支援MCDtools C言語ソース生成/逆生成ツール説明書」,東芝,A1版,平成4年9月30日,pp.50−149
「構造化プログラム設計図法SPD −わかりやすいプログラムへの招待状−」,共立出版,初版,1992年6月1日,pp.119−143

Also Published As

Publication number Publication date
JPH0895761A (ja) 1996-04-12

Similar Documents

Publication Publication Date Title
US5341469A (en) Structured text system
US20040158820A1 (en) System for generating an application framework and components
JPH0778742B2 (ja) コンピユータ・プログラム言語変換装置及びその方法
JPS6195458A (ja) 図式プログラム・テスト方法
JPH0640302B2 (ja) 図式・ソ−スプログラム自動生成方法
Kugler et al. Translator’s workbench: Tools and terminology for translation and text processing
CN111309313A (zh) 一种快速生成html以及存储表单数据的方法
WO2019173342A1 (en) A language model, method and apparatus for interpreting zoning legal text
Robillard Schematic pseudocode for program constructs and its computer automation by schemacode
JP3112623B2 (ja) プログラム生産支援装置
CN110083822B (zh) 一种从需求文本转换到SysML需求图的转换方法
Nallusamy et al. A software redocumentation process using ontology based approach in software maintenance
JP5994150B2 (ja) 文書作成方法、文書作成装置及び文書作成プログラム
Golemanov et al. A set of tools to teach language processors construction
Andrews et al. The formal definition of Modula-2 and its associated interpreter
JP6827610B1 (ja) 開発支援装置、プログラム及び開発支援方法
CN110533143B (zh) 生成电子卡片的方法与装置、存储介质及计算机设备
JPH0752387B2 (ja) ソフトウエア開発支援装置
CN112597011B (zh) 一种基于多语言的算子测试用例生成和优化方法
JP3003459B2 (ja) プログラム作成支援装置
JP3069050B2 (ja) プログラム変換方法
JP4458491B2 (ja) テストコマンドファイル作成システムと方法およびプログラム
JP3031767B2 (ja) 自然言語処理装置
JP3316884B2 (ja) 言語翻訳装置
Dubuisson et al. Handling a large manuscript tradition with a computer

Legal Events

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

Free format text: PAYMENT UNTIL: 20080922

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20080922

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090922

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees