平成9年度 委託研究ソフトウェアの提案

(3) パターンに基づくビジュアル並列プログラミング環境

研究代表者:柴山 悦哉 助教授
      東京工業大学大学院 情報理工学研究科



[目次]

  1. 研究体制
  2. 2年目の研究内容
  3. 想定されるソフトウェア成果

[研究体制]

 氏 名 所 属
研究代表者柴山 悦哉東京工業大学大学院情報理工学研究科助教授
研究協力者高橋 伸東京工業大学大学院情報理工学研究科助手
研究協力者豊田 正史東京工業大学大学院情報理工学研究科博士課程2年
研究協力者志築文太郎東京工業大学大学院情報理工学研究科博士課程2年


[2年目の研究内容]

本年度の研究では、昨年度開発した KLIEG ver 2.0 を改良し、特に並列プロ グラミングのデザインのパターンを支援する機能を強化する。具体的には、以 下のような機能を実現する予定である。

  1. 複数のアスペクトを有するパターン

    KLIEG のパターン機能は、通常のデザインパターンのようなミクロな構造だけ でなく、ソフトウェアアーキテクチャのようなよりマクロな構造を表現する能 力を持つ。そのため、変更可能な挙動や性質を一つのパターンが複数持つ場合 が多い。たとえば、単純な負荷分散機能を実現するマスタ・ワーカパターンの ような小規模なパターンの場合でも、以下のような複数の種類の変更に対応で きることが望ましい。

    一般に、このような変更の種類によって、パターン内の変更すべき箇所は異な る。

    このようなパターンの特質を考慮し、パターンに複数のアスペクトを持たせる ことが可能となるようなユーザインタフェースを設計・実装する。このインタ フェースにより以下のような作業が可能となる。

    変更箇所の強調表示は、フィッシュアイズームのインタフェースによる拡大表 示として実現する予定である。また、アスペクトの切り替えは、モルフィング のような連続的に変化するアニメーションにより表示する。

  2. 複数の実現を保持するホール

    1の項目が、「どこを変更すべきか」を示すためのインタフェースに関するも のであるとするなら、この項目は、「何に変更すべきか」を示すためのインタ フェースに関するものである。Version 2 までの KLIEG では、一つの変更可 能箇所(ホール)に対して一つの実現だけしかシステムで管理することができな かった。本年度の研究では、このような制限を廃し、一つのホールが同時に複 数の実現を保持することを可能とするとともに、必要に応じて実現の切り替え が可能となるようなインタフェースの設計と実装を行う。

    このような支援機能により、以下のような異なる種類の実現を共存させること が可能となる。

  3. エディタとトレーサの連携

    プログラムのデバッグ時には、エディタとトレーサを交互に利用する場合が多 い。エディタで編集した直後には、その編集箇所に対応する計算の様子を特に 重点的に可視化する必要がある。そこで、KLIEG エディタのズーム機能により 拡大されたプログラムの部分が、トレーサによるプログラム実行の可視化の段 階でも自動的に拡大表示されるような機能を設計・実現する。また、パターン のアスペクトを指定することにより、そのアスペクトに応じた拡大・縮小表示 をトレーサでも可能とするような機能を実現する。


[想定されるソフトウェア成果]

(1)作成されるソフトウェア名称

KLIEG システム

(2)そのソフトウェアの機能/役割/特徴

本ソフトウェアは、プロセスとストリームを図式として入力し、並列プログラ ムの開発を可能とするビジュアルプログラミング環境である。また、開発され た並列プログラムをKLIC 言語に翻訳し、実行することができる。さらに、 KLIC 処理系が生成したトレース情報をもとに、実行の過程を視覚化する機能 も持つ。

KLIEG システムは、プロセスやストリームを組み込みの抽象として持つ点が、 KL1 などの並列論理型言語と大きく異なる。論理型言語の特徴も有するが、ど ちらかと言えば、並列オブジェクト指向言語の一種と考えた方が妥当であろう。 なお、論理型言語に慣れたプログラマのために mode づけ可能な flat GHC の 節に相当する図式を記述することも可能としている。このような図式をひとま ず用意することにより、KLIC 等の言語プログラマは、比較的容易に KLIEG 環 境に移行することが可能となる。初心者にとっては、このような機能を利用す るより、KLIEG 独自の抽象を活用した方がプログラミングは容易である。

一般的なテクストベースの並列プログラミング言語と比較した場合、プロセス やストリームなどの抽象が、ビジュアルな表現を持つユーザインタフェースコ ンポーネントとして実現されている点が、根本的に異なる。この特徴より、 「設計図」を直接描画することによるプログラミング方式が可能となる。また、 プログラムとして与えられた図形情報を反映した、プログラム実行の可視化が 可能となる。

既存のビジュアルプログラミング言語と比較した場合の最大の特徴は、並列プ ログラミング環境に必要なさまざまな側面をパターン化し、パターンの定義と 利用を容易に行いうるインターフェイスを持つ点にある。また,おもちゃでな い規模のプログラムを構築するためのさまざまなサポートを用意している点も 通常のビジュアルプログラミング言語と大きく異なる点である。

(3)ソフトウェアの構成/構造

KLIEG システムは、次のような構成要素からなる。

今回作成するのは、このうち、ライブラリ以外の部分である。 ライブラリについては、必要最小限にとどめる予定である。

(4)参考とされたICOTフリーソフトウェアとの関連

KLIEG により作成された並列プログラムは、KLIC のプログラムに変換され実 行される。
今年度開発する KLIEG version 3 は,昨年度の IFS 委託研究の成果として公 開されている KLIEG version 2 の改良版である。

(5)使用予定言語および動作環境/必要とされるソフトウェア・パッケージ/ポータビリティなど

KLIEG システムのユーザインタフェース部分は、Amulet(フリーな GUI ライブ ラリ)を用いてC++ で記述する。当面、Solaris 2.X/Sparc 上で稼働するシス テムを作成する予定である。移植に関しては、Amulet と C++ が稼働する環境 であれば、比較的容易であると思われる。

KLIEG システムにより作成したプログラムを翻訳実行するためには、C/C++ と KLIC の稼働する環境が必要である。

(6)ソフトウェアの予想サイズ(新規作成分の行数)

新規に作成するソフトウェアは、C++ で10,000行程度を予定している。

(7)ソフトウェアの利用形態

KLIC のプログラミングは、基本的にテクストエディタを用いて行われている。 KLIEG を用いると、このような KLIC によるプログラミングをビジュアルな環 境で行うことが可能となる。ただし、KLIEG は KLIC に比べ、データフローの 向きに関する記述が厳密である。したがって、より正確に言うと、モードづけ 可能な flat GHC 相当の記述力を KLIEG のベース言語は有する。

KLIC のビジュアルプログラミング環境として見たとき、KLIC に比べ、次のよ うな点がよりユーザフレンドリになっている。

  • プロセスとその間の通信の視覚化
    多くの並列プログラムでは、プロセスとその間の通信を表現したプロセスネッ トワーク図の方が、そのテクスト言語による表現よりも根源的である。プロ グラムは、プロセスネットワーク図の可能な表現の一つに過ぎない。

  • 定型的な節の簡略表現
    KLIEG では、モードづけ可能な flat GHC の節を単純に図式として表わした ものの他に、定型的な節をより簡便な図式として表現するようにしている。 たとえば、永続的なプロセスを表現するときによく現われる再帰呼び出しな どが、この場合に該当する。なお、KLIEG では、永続的なプロセスを基本的 な抽象として認めているので、このような機能を提供するのは当然の帰結で ある。

  • ユーザ定義可能なパターンの導入
    SPMD 的な計算や単純な繰り返しのリスト処理などを表現するときには、 KLIC の再帰呼び出しを用いるより、KLIEG のビジュアルなパターンを用い た方が、視覚的な了解性が高い。

  • 実行トレースの視覚化
    プログラム実行中のプロセスの生成/消滅とそれにともなうトポロジーの変 化は、ビジュアルなトレーサを用いた方がはるかにわかりやすい。KLIEG は、 このような過程の表示を、もとのプログラムに現われるプロセス間の位置関 係を極力保存するように配慮しながら表示する。

(8)添付予定資料

ユーザマニュアルおよびプログラム例


www-admin@icot.or.jp