Doctor Thesis Abstract (in Japanese)
博士論文要旨

Management of Object-Oriented Software Components in Distributed Environments
分散環境におけるオブジェクト指向ソフトウェア部品管理に関する研究

大月 美佳
1999年2月

近年のネットワークの普及およびオブジェクト指向パラダイムの普及に伴い,分散環境でのソフトウェアの分散協同開発が可能になってきている.すなわち,ネットワークに分散した開発者がオブジェクト指向パラダイムによって作成された部品を共有・再利用しながら応用プログラムの開発を行うことが可能となってきている.しかし,このような分散環境でのオブジェクト指向ソフトウェア部品の共有と再利用は期待されたほどには行われていない.これは,オブジェクト指向ソフトウェア部品の構造や振舞いが複雑で部品の性質を理解しにくいことと,分散環境での部品取得を支援する機構が確立されていないためである.部品としては,ソースコード,仕様書,クラス,デザインパターンなど多様なものが存在する.これらの部品を統一的な形態で,かつ物理的な位置を意識させること無く,すなわち分散透過に利用できることが必要である.また,開発の過程で生成・参照・変更されることにより部品間に生じるさまざまな関連を相互参照の形で保存して,部品自身や応用プログラムの理解を支援する必要がある.

本研究ではオブジェクト指向ソフトウェア部品を分散環境において統一的な形態かつ分散透過に取得でき,部品間の関連をたどれるような部品管理機構を提供することを目指した.そのためにまずオブジェクト指向ソフトウェア部品の基本構成要素となるクラスを対象として,分散部品管理機構を提案,プロトタイプを構築した.この機構をわれわれは分散部品リポジトリと呼んでいる.さらに,部品の理解支援においてデザインパターンのような設計のための知識と関連づけることが有効であることから,デザインパターンを部品としてこの分散部品リポジトリに組み込むことを目指した.しかし,デザインパターンを部品として扱うための枠組みはまだ確立されてはいない.このため,本研究ではまず部品としてデザインパターンを扱う枠組みを提案・実現することを考えた.そして,部品化されたデザインパターンからソースコードの生成支援を行うことにより,設計支援を可能にするとともに,クラス部品の生成と関連づけの自動化を目指した.

第2章は基盤となる分散部品リポジトリについて論じている.従来の部品管理においては,ソースコードに管理の重点があり部品の多様性やその間の関連を重視したものは少ない.また,部品の関連を実現したものでもオブジェクト指向の抽象的な部品や分散環境での利用を考えてはいない.そこで我々は,まず多様な部品の分散環境における相互参照を実現するために,分散ハイパーテキストであるWWW (World Wide Web)の機構を利用した.そして,ノードを分散透過的に管理するために,部品識別子-部品位置変換を行う名前管理サーバのプロトタイプを構築し,分散透過な部品相互参照を実現した.この名前管理サーバとWWWの連携による部品格納管理システムが分散部品リポジトリである.

第3章は,この分散リポジトリで取り扱うもっとも基本的な部品としてクラスを組み込む手法について扱っている.従来の部品管理でのクラスはソースコードと等価であるが,本研究ではインターフェースを抽出した抽象的な単位でのクラスを取り扱う.インターフェースについても,公開インターフェースノードと非公開実装ノードを用意することで,公開と非公開の区別を可能にした.さらに,従来資源の本機構への登録を簡便にするため,ソースコード情報を自動抽出する機構を用意した.そして,実際のプログラミングライブラリの一部に適用して,情報抽出と分散部品リポジトリの機能を確認した.

第4章は,デザインパターンを部品化する枠組みの提案である.デザインパターンとは,様々な応用プログラムによく現れるが,個々の問題とは独立であるような典型的なプログラムパターンを記述したものである.デザインパターンは,再利用しやすい構造の設計を行う指針となるだけでなく,デザインパターンに基づいて設計された構造に対する説明として用いることができれば再利用を促進することが可能である.しかし,現状においてはデザインパターンは主に文書として取り扱われており,カタログ化して計算機で管理するための統一された枠組みはまだない.そこで本研究では上記リポジトリに統合した形でカタログ化することを考え,デザインパターンを構成する文章・図・疑似コードを統合的に扱うためのSGML (Standard Generalized Markup Language)に基づく構造記述言語を提案・作成した.この言語をPIML (Pattern Imformation Markup Language)と呼んでいる.このPIMLでデザインパターンを一括して記述することにより,意味の一貫性管理やソースコードとの対応付けなどの支援が容易になる.本章では,さらにこのPIMLで記述されたパターンをHTML文書として表示するための機構を提案し,プロトタイプの試作を行った.これにより,デザインパターンの閲覧を容易にするとともに,分散部品リポジトリとの連携の基盤を提供している.本プロトタイプは,実際のデザインパターンの登録・閲覧に適用して,その効果を確認した.

第5章は,PIML文書からのソースコード生成支援機構の構築について述べている.従来の研究としては,マクロによりソースコードを展開するものやテンプレートのオブジェクトを複製するものなどがあるが,本研究では,デザインパターンの束縛条件もPIMLの記述に組み込むことにより,生成されるソースコードが束縛条件を満たすことを保証する.構造と擬似コードとして記述された情報が自動的に補われるので,デザインパターン利用者の作業の軽減が図られる.閲覧機構に加えて,ソースコード生成支援機構を用意することにより,デザインパターンによる設計を支援している.実際にいくつかのパターンからのソースコードの生成を行い,その効果を確認している.

この分散部品リポジトリは従来のリポジトリと置き換わるものではなく,むしろ協調することにより分散環境での部品共有を支援することができると考える.ただし,そのためには従来のリポジトリとの部品の共有機構について考える必要がある.また,現在はクラス部品だけを取り扱っているので他の部品を扱えるようにする必要がある.

デザインパターンの分散部品リポジトリへの統合とクラス部品との関連づけは今後の課題である.クラス部品との関連づけの支援については,現在はデザインパターンからの生成によるものを考えているが,クラス群からの関連づけを支援するリバースエンジニアリングについても考える必要がある.

分散環境でのオブジェクト指向部品の共有を支援するためには,クラスやデザインパターンに加えてその他のオブジェクト指向ソフトウェア部品や,さらに従来のソフトウェア部品との連携も図っていく必要がある.分散部品リポジトリを実用的に運用するためのキャッシュ機能やバージョン管理などの機能の充実も将来の課題である.


論文題目一覧