平成10年度 委託研究ソフトウェアの提案 |
研究代表者: | 上田 和紀 教授 |
早稲田大学理工学部情報学科 |
| 氏名 | 所属 |
研究代表者 | 上田 和紀 | 早稲田大学理工学部 情報学科 |
研究協力者 | 網代 育大 | 早稲田大学大学院 情報科学専攻 |
klint第2版は、モード/データ型/参照数に関する制約の生成系と、それらの解析系とからなる。通常は生成系が解析系に渡す制約情報を人間がチェックする必要はないが、klintシステムの理解やデバッグのためには、中間データである制約情報をダンプする機能も不可欠である。またこの機能は、異なった解析系を作成して接続しようとするユーザの便宜にもなる。そこで中間データ形式の可読性を高める改善を行なう。
klintは、モード解析の結果を、モードグラフのテキスト表現として出力する。データ型や参照数についても同様である。この形式の出力は、出力を見ながら人手でモードグラフを描かないと、全体を理解することが容易でなく、出力行数も多い。そこで、多くの言語に見られる型宣言のような形式で簡潔に出力されるように改善する。
klint第2版は、プログラマによる宣言や複雑なオプション指定なしに、気軽に手許のKL1プログラムの解析ができることを第一目標にしてきた。しかしブラシアップに伴い、そのような単純なユーザインタフェースも備えたまま、モード、型、参照数のうちのどの解析情報を出力するか、どのような形式で出力するかなどを制御する機能も追加する。特に、プログラムのデバッグを目的とする人間向けの出力形式と、コンパイラなどの処理系向けの出力形式の両方を生成できるようにする。
現在のklint第2版のソースプログラムには、基本的実装方針に関するコメントはついているものの、まだ十分にself-documentedになっているとは言い難い。そこで、ソースプログラムの理解に有用な情報をできる限り追加して、保守性を向上させる。モジュール構成などもこの機会に見直す。
また、klint第2版で用いられたアルゴリズムは、成果報告書やいくつかの既発表論文には詳述されているが、同等の内容をブラシアップした上で、配布ソフトウェアに添付することによって利便性の向上を図る。
プログラムの静的解析の主要な用途として、プログラムの誤りの静的検出に役立てることと、処理系最適化のための基本情報を提供することの二つがある。前者のためには、プログラマにとって有用な情報を見易く出力する必要があり、後者のためには、将来の最適化コンパイラや、より詳細なプログラム解析を行なう抽象解析系などが容易に取り込むことのできる出力型式が望ましい。
klintは、プログラム診断と処理系最適化の双方に本格的に応用することを視野に入れて作成したソフトウェアであり、本年度のブラシアップによって、KL1プログラム診断技術とKL1言語実装技術の両方の研究開発ならびにそれらの実用化に資するものしてゆきたい。
また下記のように、過去2年間の成果ソフトウェアの機能を統合することによって、今後の発展の共通の土台を築きたい。
klint第2版に、平成8年度委託研究「KL1プログラム開発支援ツール」の成果ソフトウェアであるkimaの機能を統合する。
kimaは、モード解析機能のデバッグへの応用を目指したものであり、矛盾するモード制約の極小部分集合を求めることによるバグ同定、および簡単な自動バグ修正機能を備えていた。だがkimaは、基礎となるモード解析機能として、平成7年度委託研究成果であるklint第1版を用いていた。
これに対し平成9年度は、静的解析機能の処理系最適化への応用を目指して、モード解析機能自体の拡充と、データ型および参照数の解析機能の実装を行なって、klint第2版として公開した。klint第2版は、モード解析機能だけをとってもklint第1版からはかなり改善されているが、kimaのようなプログラム診断機能は備えていない。
そこで平成10年度は、klint第2版の機能とkimaの機能の統合を行ない、モード誤りをもつプログラムのバグ診断機能を追加する。また可能ならば、既発表論文(網代ほか「静的解析と制約充足に基づくプログラム自動デバッグ」、コンピュータソフトウェア、1998年1月)に基づき、より進んだバグの自動修正機能を追加する。
www-admin@icot.or.jp