著者
中村 宏明 安田 和 大平 剛 三ッ井 欽一
雑誌
全国大会講演論文集
巻号頁・発行日
vol.47, pp.99-100, 1993-09-27

オブジェクト指向ソフトウエア開発では共通のモデルを用いて分析・設計・実装が行なうことができる。各フェーズが継目なくつながることで、ソフトウエアの変更・修正・追加、再利用などの容易化が期待できる。この利点を生かすためにはフェーズ間を逆方向へ戻れることも重要で、特にプログラムを理解することによって分析・設計に関する情報を得ることが、反復的・進化的なソフトウエアの開発の鍵になる。ところがオブジェクト指向の主要な性質である継承と多相性は、プログラムを理解することを困難なものにしている。例えば次のようなC++の関数呼び出しを理解するために、関数を定義している場所を求める過程を考える。table.Put(token);(1)tableがデータ・メンバーである場合、この関数呼び出しを含むメンバー関数が宣言されているクラスの継承階層の中でtableが定義されているクラスを探し、tableの型を知る。(2)関数の多義性を解決するために、同様にしてtokenの型を調べる。(3)tableのクラスの継承階層の中で、メンバー関数putを定義しているクラスを探す。この他にC++には、マクロ、多義演算子、自動型変換、例外処理など、プログラムを書くことを簡潔にするが、読むことを複雑にする要素が多く含まれている。したがって、オブジェクト指向の利点を生かしたソフトウエア開発を行なうためには、プログラムの理解を支援する環境が不可欠である。本稿では、まずプログラムの理解支援に対する要件を考察し、次に、我々が作成したC++ソース・コードの理解支援システムの構成と、その使用例を紹介する。