著者
三ッ井 欽一 Javey Shahram 久世 和資
雑誌
全国大会講演論文集
巻号頁・発行日
vol.45, pp.133-134, 1992-09-28
被引用文献数
1

C++のような高機能かつ複雑な言語におけるプログラミングを支援するツールとして、ソースコードブラウザ(以下ブラウザとよぶ)を開発している。ブラウザは、コンパイルの結果得られた情報を基に、これを様々なビューで表現し、プログラムの理解、デバッグ、保守を支援するツールである。C++は、多機能で複雑な言語である。例えば、関数名、オペレーターのオーバーロード、自動的な型変換、オブジェクトのコンストラクタ、デストラクタなど、いずれも効果的に使った場合は、高度なプログラミングが可能である。しかし、逆に、トリッキーなプログラミングも可能であるとも言え、特に他人が書いたプログラムを理解するのに非常に努力を要する場合がある。最近のC++の仕様では、テンプレートや例外処理が追加され、いっそう高機能化、複雑化の様相を呈している。その結果、ますますC++プログラミングを効果的にサポートするツールの必要性が高まっている。次節で述べるような、C++プログラミングを効果的に支援するための多様な機能は、必ずしも全て最初から組み込むことができるわけではなく、幾つかの機能は、本質的にアプリケーションごとに特化されるものと予想される。このような要求を満たすための最も重要な要素は、ブラウザが拡張性を持つことである。ユーザが、新しく有効なビューを発見した場合、それが容易に実現できることが重要である。もちろん、そのビューが、グラフィカルなユーザインタフェースを通して表示されることも必要であり、拡張性には、ユーザインタフェースの拡張も含まれる。本論文では、以上のようなブラウザの設計上考慮した点およびアプローチの仕方について述べる。実際の実現およびその評価については[4],[5]で述べている。
著者
中村 宏明 安田 和 大平 剛 三ッ井 欽一
雑誌
全国大会講演論文集
巻号頁・発行日
vol.47, pp.99-100, 1993-09-27

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