• 検索結果がありません。

ww wを利用したソフトウェア部品の管理ツール

N/A
N/A
Protected

Academic year: 2021

シェア "ww wを利用したソフトウェア部品の管理ツール"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)

長崎大学工学部研究報告 第29巻 52号 平 成11

ww w を利用 した ソフ トウェア部品の管理 ツール

73

大 月 美 佳 *・吉 田 紀 彦 =

WWW‑ ba s e dMa na ge me ntToolf o rSof t wa reCo mpone nt s

b y

Mi k aOHTSUKI *a n dNor i hi k oYOSHI DA* *

Cooper a t i ves of t wa r edevel opmenti ndi s t r ibut edenvi r onmen t shasb ec omec ommonbec a us eofr ec ent p opul a r iz at i onofwi d ea r e an e t wo r k.I ns uc had e v e l o pme n tf a s hi on,r e us eo fs oRwa J ℃C O mP One n t Si sne c e s s a r

y a

s we l la si np er s on a l orl o c a ld e v e l o pme nt ,a L ndob j e c t ‑ or ie n t e dt e c hn ol og yl Si mp or t a nta saba s i s .Re us eofo b j e c t ‑ or ient e ds of t wa rec omponent si ndi s t r ibut e denvi r onment s ,howeve r ,ha snotbe comecommony e ta shasbe e n e x p ec t e d.

T

h i sor ig ina t esi nn otonl ydi f Gc ul t yl nu n d e r s t a ndi ngc h a L r a C t e r is t i c sofob j e c t

o r ien t e ds o

ft

wa r ec ompon e n t s wh os es t r uc t ur e sa r ec ompl i c a t e d,bu ta lS oa bs e n c eofs u ppor tme c ha ni s msf oro bt a ini ngc ompon e nt si ndi s t r ibu t e d e nv ir onme nt s .I nt hi spa p er ,f i r s tofa lI ,Wedi s c us swha ta r et ob eha ndl e da sr e us a bl eo b j ec t ‑ or ie n t e ds of t wa re c omponent s ,t he npr opos eama na geme ntmec hani s m f orpr omot i ngr eus eOft hecomponent si ndi s t r ibut ed e nvl r Onme n t S .

1.はじめに

我 々の最終的 な目標 は ,オブジェク ト指向 ソフ トウ エアの分散環境 での協 同開発 を,その ライフサ イクル 全般 に渡 って支援す ることにある.数人以上のチーム で ライブ ラ リや部品 を共有 しなが ら

1

つの ソフ トウェ アを構築 してい く場合 ,分散協 同作業で あることか ら 従来の ソフ トウェア開発支援 における課題 に加 えて , 次の ような課鳶 も解決 しなければな らない.

・多様 な ソフ トウェア部品 と多様 な部品間関係の分 散透過的かつ統合的 な管理

・協同作業 に係わ るアクセス制御 ,バ ージ ョン管理 , 意見調整支援 ,理解支援

後者の アクセス制御やバ ー ジ ョン管理 につ いては , 協 同開発支援 に限 らず一般の開発支援 に対 してすでに 多 くの研究 があ り,商 品化 もな されている.例 えば , ソ‑ス コー ドのバ ージ ョン管理 と して

S C C Sl ) ,RCS

2)

などがある. しか し,それ らは概ね一元的な集 中管理

に基づいていて ,分散化 には至 っていない. また ,意 見調整支援 につ いて はグル ープ ウェア

( CSCW

と も 呼 ばれ る)3)の分野 で研究 が進 め られ てお り,ソフ ト ウェア協同開発への応用 につ いて も幾つかの試み が始 まってい る45).

一方 ,部品管理 につ いては ソースコー ドのデー タベ ース化の研究6)な どが見 られ るが ,実際 には ソフ トウ ェア部品は ソース コー ドだけでな く,仕様 ドキュメン ト,マシンコー ド,テス トデー タ,メモやユーザの コ メ ン トなど様 々な もの を含む. さらに,デザインパ タ ー ン7,8)や フレームワークなども抽象度の高 い部品 と考 える ことがで きる. そ して部品間の関係 に も,抽 象一 具体 ,継 承 ,全体一部分 ,参照 な ど ,様 々な もの があ

る.

また,今後の ネ ッ トワークの さらなる広域化 とそれ に伴 な う協 同開発環境の広域分散化 を鑑み ると,従来 の システムにみ られ るよ うな部品の集 中管理 には限界

平 成

1 0

1 0

1

日受理

'九州大学大学院 システム情報科学研究科 福岡市東区箱崎

( Gr a dua t eSc hoolofI nf oml a t i onSc i e nc ea ndEl e c t r i c a l Eng in e e r ing, Kyus huUni ve r s i t y, Ha koz a

k

i , Fu kuo ka)

'僧 報 システム工学科 (

De p

a

r t me ntof

C

ompt l t e ra ndI n f or ma t i onSc i e n c e s )

(2)

7 4

大 月 美佳 ・吉田J紀彦

があり,分散管理 ,しか も実際の所在 を意辞 させない 分散透過性 が重要 となる.

そこで ,先の最終 日標 に向 けた第一の取組み と して , 本論文では特 に上記の前書 ,部品 と関係の分散透過的 かつ統合的な管理 に焦点 を当て ,これ を実現す る分散 部品管理 システムの構築 につ いて述べ る. これは協同 開発支損の最 も重要 な基盤の⊥ っ となるものである'. まず統合管理 について考 えると,先 に挙 げたよ うな 多種 多様 な部品は書式や関係 が定型化 されていないた め ,データベースのよ うな定型的な枠組で それ らを

いに関係づけて統合的に取 り扱 うのは困難である. こ の ような不定型で多様 な形態の部品 を相互 に関係づけ て管理す るために,最 も有効 な枠組の一つ と考 えられ ているのが ,ハ イパーテキス トである.

ハ イパ ーテキス ト9)は情報管理のための方式の一つ であり,リンクによって結 ばれた ノー ドか らなるネ ッ

トワークによってデータを保持 ,管理す る. ノー ドは 情報の任意の‑ かたまりを表わ し,テキス トだけでな く音声や画像 な どのマルチ メデ ィア情報 も扱 い得 る.

リンクは ノー ドの間の任意の関係 を表わ し,リンクを 順次た どることによって求め るノー ドを探 しだす こと になる.従 って ,ソフ トウェア部品 をノー ド,それ ら の関係 を リンクとす ることによ り,多様 で不定型 な部 品 を統合的に保持 ,管理す ることがで きる.

ハ イパ ー テ キ ス トシ ス テ ムの標 準 モ デ ル で あ る

Dex t e r

ハ イパ ーテキス ト参照 モデル10)では ,ハ イパ ー テキス トは蓄 積層

( s t or agel ayer )

,実 行 時層

( r un‑

t i meI a ye r )

,部品内部層

( w it hi n‑ c ompon entl a ye r )の 3

層 か ら構成 され る.ハ イパ ーテキス トの基本構造 , す なわ ち原 子 部 品

( at omi ccomponent )

,複 合 部 品

( c omp os i t ec ompone nt )

,および リンクの振舞 いが蓄耕 層で規定 され ,アプ リケーシ ョンか ら蓄積層への イン

ターフェースが実行時層で規定 され る. これに対 して , 本論文 は部品内部層の構築 ,す なわち,どの よ うにソ

フ トウェア部品 をノー ドと して蓄積 し,関連 を分散透 過的 な リンク と して形成 す るか ,に焦点 を当ててい

る.

ハ イパ ーテキス トの分散化 は ,ノー ドを分散的に配 置 して リンクを分散透過的に張 ることによって実現す る. これ が可能 で あ ることは ,すで に例 えば

wor l d wi d eWe b ( W )などによって示 されている.

ソフ トウェア開発支援 に向 けた部品管理 にハ イパー テキス トを応用す ることを試みた関連研究 として ,こ れ までに次の よ うな事例 がある.

Dyn a m icDes i g nl l )

米 テク トロニクス杜 が開発 した

cASE環境であり,

C言藩 を対象 としている.ソ 「 ドと;して ,要求 ,仕様 , 設計 ノー ト,設計仮説 ,コメン ト,ソースコー ド,オ

ブジェク ト (マ シンコー ド),シンボル テーブル , ド キュメンテーシ ョン,レポー トを扱 い,リンクとして , 前後 ,言及 ,参照 ,手続 き呼び出 し,実装 ,定義の関 係 を扱 う.

この

Dy mJ l a m icDe s i g

nは

Hyp et e x tAbs t r z h : IMa ch i n e ( HAM)1 2 )

と呼 ばれ るハ イパ ーテキス ト用仮 想機械 の 上 に構築 されてい る.HAM が扱 うハ イパ ーテキス ト の構成要素 は ,グ ラフ,コンテキス ト,ノー ド,リン クおよびア トリビュー トである.グ ラフはノー ドと1) ンクのネ ッ トワーク構造 を写像 した もので ,ネ ッ トワ ーク構造の可視化 などに用いる. コンテキス トは ノー ドの頼序 を表 わ し,バ ージ ョン管理 に用いる.ア ト1) ビュー トは他の要素 に対す る注釈である.グ ラフや コ ンテキス トは興味深 い捷某で あるが ,分散性 につ いて み ると,HAMの分散性 は集 中管理 であって広域 的 な 分散化や分散透過性 は考 えていない.

chi me

fa13)

Adaの分散続.

合開発支携環境

Ar c ha di a

の一部 で あ り,ハ イパ ーテキス トの概念 を抽象 データ型 と して規 定 したインターフェースをツールに対 して捷供す るこ とで ,分散部品データベースの内容 をハ イパ ーテキス トとして透過的に扱 えるよ うにす る ミドル ウェア的な システムである. この システムは ,我々の研究 と異 な り,ソフ トウェア部品の構造 と碑連 をどの ように分散 環境 に配置 して透過的に扱 うかよ りも,異種分散環境 でのハ イパ ーテキス トのモデル化 とインターフェース

と しての実現 に重点 をおいている.

以下 ,第

2

章でオブジェク ト指向 ソフ トウェアの分 散協同開発支援 に向 けた分散部品管理 システムの概念

と基本設計 ,第

3

章で詳耕設計 と実装につ いて述べ る.

4

章 はまとめである.

2.

分散部品管理 システムの基本按針

オブジェク ト指向 ソフ トウェアでは,部品群 はその 抽象度 に応 じて階層構造 を成 す と考 えることがで き

る.すなわち ,デザインパ ターン78),フレームワーク, OOA/00Dにお ける図式記述1415,16),クラス定義 ,と いった順 に具体化 な らびに詳細化 がな され る.部品間 の開係 は同一階層内だけでな く,階層にまたがる形で も抽象一具体 関係 がある. ここでは最初の取 りかか り と して ,最 も基本的 なクラス定義の層 をまず考 える.

よ り抽象度 と集約度の高い部品階層 はこの上 に重層的 に構築 され る.

クラス定義層のハ イパーテキス ト構造の枕横 を図

1

(3)

ww

w を利用 した ソフ トウェア部品の管理 ツール

s i t e A

Fi g u r e 1 .Hy p e r t e x ts t r uc t t J r eofc l a s s ‑ T Cl a t e di n f o r ma t i o n

に示す. ここに含 まれ るノー ドの種類 は ,クラスの公 開 インタ‑フェースノー ド,クラスの実装 ノー ド,ソ

‑スコー ドなどの実装 レベル部品 ノー ド,メモ他 ドキ ュメン トの ノー ドなどであるが ,これ らに限定 され る ものではな く,利用者 が新 しい種類の ノー ドを任意 に 定義 ・導入す ることも可能で ある.

・公開 インターフェースノー ド :クラスの公開 イン ターフェ‑ス情報 を保持す る.

・実装 ノー ド :クラスの非公開 インターフェ‑ス情 報 を保持 し,実装 レベル部品 ノー ドへの リンクを 持つ . ここでい うインターフェース情報 とは ,名 前 ,引数や返 り値 などの

Ap pl i c a t i on

Pr

o

gr

a m i ng l n t e r f a c e ( API )と しての情報で ある.

・実装 レベル部品 ノー ド :例 えば

C+

十では ,ヘ ッ ダファイル ,ソースコー ドファイル ,マシンコー ドファイル,Ma

k e 負l e

などが含 まれ る.他のオブ ジェク ト指向言語で も,クラスの ソースコ‑ ドフ ァイルなどが相 当す る.

これ らの ノー ドは基本的にはクラスを単位 としてグ ループ化 され ,公開 インターフェースノー ドがその グ

75

ル ープの外部 インターフェース窓口 となる. そ して , クラスの公開インターフェース ノー ド相互の間で ,ク ラス間の関係 に応 じて ,分散的に リンクが張 られ る.

この ク ラス間関係 とは ,参 照関係 ,全体一部分関係 , 継皐関係である.

なお ,公開インターフェースノー ドと実装 ノー ドを 分 けるのは ,利用者の利用形態 に応 じたクラスの見 え 方の違 いを提供す るためである.す なわち ,エ ン ドユ ーザ的な参照に対 しては ,クラスをカプセル化 された 部品 として ,内部実装情報 をむやみに捷供すべ きでは ない.一方で ,開発者 と しての参照 に対 しては.クラ スを拡張可能 な部品 として ,内部実装情報 が要求 され た場合 に答 えなければな らない.この ような見 え方の 違 いは ,分散協同開発や コンポーネン トウェアにおい ては特 に重要である.

公開 インターフェースノー ドと実装 ノー ドはシステ ムが自動的に生成 と管理 を行 う.他の ノー ドは利用者 が生成や関係付 けを行 い ,システムはその手立てを提 供す る.クラス間関係 に応 じた公開 インターフェース ノー ド間 リンクもシステムが自動的に張 る. これ らノ ー ドや リンクの 自動生成 は ,利用者の与 えるクラス定 義 をシステムが解析 して必要 な情報 を抽出 し,それ に 基づいて行 う.

この解析 と生成 ,情報蓄稚 ,要求処理の一連の流れ をモデル化 して ,図

2

に示す. ソースコー ドの ように 形式化 されたテキス トか ら構造 を切 り出 して内部者横 形式 に変換す る人力変換部 ,蓄積部 .ユーザか らの閲 覧要求や聞合せに対 して ノー ドとリンクを返答す る出 力変換部の

3

つの部分か ら成 る.

s our c ec od e hy p e r t e x t

Fi gu r e2.Pr o c e s s l ngmo d e lf o rh y p e r t e x t

(4)

7 6

大 月 美佳 ・青田 紀彦

3.

詳細改計 と実装

システムの実装は ,概念設計 と利用者 インターフェ ースがハ イパ ーテキス トであれば ,具体的内部構造は ハ イパ ーテキス トその もので も,より搬密 に定型化 さ れたデータベースで も,よ り平板 な単純 テキス トファ イルで も可能である.いずれ を採用す るかは,情報の 詳細化 と構造化 をどこまで行 うか ,どこまで複雑 な検 索要求 を受 け付 け させ るか ,などによって決 まる.

ここでは ,まず最初のプロ トタイプであることか ら, 最 も直接的な実現 と して内部蓄積形式 もハ イパ ーテキ ス トとし,その物理的配置情報のみ を簡単 なデータベ ースで管理す る方式 を取 る.従 って ,出力変換部は実 際 には検索 ・閲覧処理のみ を行い ,変換処理 は必要 と

しない.

システムの対象言若は ,開発現場で現在の ところ最 も多用 されてい るオブジェク ト指向言語で あ る

C++

を採 用 した.ハ イパ ー テキ ス トを実 装す る枠 組 は

Wo r l dWi d eWe b ( WWW)の横構 を一部借用 し,その Um ive r s a l Re s ou r c eLo c a t o r( URL)によって分散環境

上での所在 を特定す るもの とした.

ここで

,WWW

その もの は リンクを辿 ること しか で きず ,デ ータベース的な管理棟構 を持 たないので , 名称 などのキーと所在 をテーブル化 して管理 し,効率 的な検索 を可能 にす る.この管理 プログ ラムがサ イ ト ごとのサーバ と して横能 し,利用者の応対 をす るクラ イアン ト,およびサ イ トごとの

WWW

サーバ との連 係によって全体的な検索や閲覧 を実現す る.なお ,シ ステム全体の 中心的サーバ は存在 しない.サイ トごと のサ ーバの分散 的 な協調 によ って ,全体の管理 を行

う.

システムの全 体像 を図

3

に示す .図 中の

ht t pdが WWW

サ ー バ

,c mpdが テ ー ブ ル 管 理 サ ー バ , a d d̲c l a s s , l i s Lc l a s s,qu e r y ̲c l a s s

がクライアン トであ

る .

cmpd

cl as s ‑ URL

テ ー ブ ル を 管 理 す る .

a dd̲c l a s s

が先 に述べ た人力変換部 に相 当す る. この

ク ライアン トは与 え られた

C++のプログ ラムを自動

解析 して型 ・ク ラス情報 を抽 出 し,wWW ノー ド形 式である

Hy p

e

r ‑ Te x tMa r ku pLa ng u a g e ( HTML)

ファ イル を自動生成 して関係 ノー ドへの リンクを張 る.他 の クライア ン ト

,l i s Lc l a s sと qu e r y ̲c l a s s

は出力変換 部 に相 当 し,検索要求や閲覧 などの処理 を行 う.

このサーバ ・クライアン ト間では ,次の ようなプロ トコルが授受 され る.

・ADD,UPDAT

E

,DELETE:

型 ・クラス情報の登 線 ・更新 ・削除

・LI ST,QUERY :

型 ・ク ラス情報の一覧要 求 ・間

Fi g u r e3.Ov e r v i e woft h es ys t e m

合せ

システムは ,サーバ

c mpdを C+

十で ,特 に自動人 力解析変換サブシステムは

YACC

C十

十で ,またサ ーバへの問合せ積構 は

pe

rlおよび

C++

で実装 した.

以下 ,項 目を分けて ,システムの詳細 について述べ る.

3.1

情報抽出 とノー ド生成

情報抽出での 中心的処理 はノー ド単位の切 り分 けと ノー ド間関係の把握 で ある.C十十は純粋 なオブ ジェ ク ト指向言語ではな く,Cを基盤 としていることか ら Cとの互換性 を保つ ためにオ ブ ジェク ト指 向以外の 様 々な言語要素 を内包 している. ここではクラスの情 報抽出 を考 え,クラスに属 さない大域的な関数やデー

タは扱わない.

ノー ド切 り分 けは ,次の

3

種類の情報 を抽出す るこ とで行 う.

・クラス (構造体 と共用体 を含む)宣言

・その他の型宣言

(

type

d e f,e nu m)

・テ ンプ レー トでパ ラメタ化 された宣言

ここで

,t y p ed e f,e nu m

を扱 うの は,C++で はク ラス も型の一種であって ,他の型 との名前衝突 を避 けなけ ればな らなか らである (なれ シグネチャおよび名

(5)

ww

w を利 用 した ソフ トウェア部品の管理 ツール

前空間の宣言 は現段階 では扱わない).

これ らの情報 を解析 ,抽 出す るための

YACC

C十十文法記述 を,最 上位 につ いて示 す と,次 の よ う

にな る.

p r Og r a m:

/

辛e mp t y

*/

e x t d e f s e x t de f s :

e x t d e f se x t d e f e x t de f :

f nde f da t a de ど t e mp l a t e ⊥d e f

す なわち ,プログ ラムは定義の並びか らな り,定義 は 関数 定義

( f nd ef )

,デ ー タ定義

( da t a def )

,テ ンプ レ ー ト定義

( t empl a t e ̲d ef )

などか らな る.

型 宣 言 は デ ー タ 定 義 の 一 部 ,型 つ き宣 言 子

( t yped̲de cl s p ec s )の 中にあ る. そ して ,ク ラス宣言

は型宣言の内の構造体宣言

( s t r uc t s p eC)

に含 まれ るの で ,そこか らクラスにつ いて以下の情報 を抽出す る.

・クラス名

・クラスの インターフェース情報 : メンバ関数 とメンバ変数

アクセス識別子

( pr iva t e ,p r o t e c t

e

d, publ i c )

・ク ラス間の依存関係 :

継承関係 ,全体一部分関係 ,参照関係 これ らの文法記述 は次の よ うになってい る.

S

t r uC t S p eC :

c l a s s ̲h e a dIopt . c ompone nLd e c l ̲l i s tI

cl

a 5 S ̲h e a d:

a gg ri d e n t i f i e r

a gg ri d e n t i f i e r: ba s e ̲c l a s s Ji s t

a ggr : c l a s s s t r u c t unl On

ba s e ̲c l a s s 」i s t : ba s e ̲c l a s s

ba s e ̲c l a s s 」i s t, ba s e ̲c l a s s ba s e ̲c l a s s :

t yp ena me

77

a c c e s s 」i s tt yp e na me a c c e s s ̲l

i

s

t:

v i s s p eca no t he Ls p ec s

op t . c ompon e n Ld e c Ll i s t :

/*

e mpt y

*/

c omp on e nLd e c Ll i s t

op t . c o mp one n t ̲de c l Ji s tv is s p e c:

c ompon e n Ld e c Ll i s t

op t . c omp or L e n Ld e c l Ji s tv is s p eC:

v isspec:

p nVa t e p r o t e c t e d p ubl i c

これ以上 の詳細 は割愛 す る. ク ラス宣 言 の 冒頭 部分

(

cl

a s s ̲h e a d)

か ら,ク ラス名

( i de n t i f i e r )

と継皐の上 位 ク ラス

( ba s e ̲

cl

a s s ̲l i s t )

を抽 出す る.なお ,継皐 に もアクセス権限の区別 があるので ,それ らも識別す る インターフェース情報 ,す なわち関数 と変数の宣言 は ,

c ompone nLde c l 」i s t

か ら抽 出す る.関数 と変数の宣言 には他 の型へ の参照 が含 まれ る.変数 は全体一部分関 係 と参照の両者であ り得 るが ,文法上 は識別で きない ので特 に区別 しない.

以上 の解析 結果 に基づ いて

,HTML形式の フ ァイ

ル を生成す る.HTMLコー ド生成 は抽 出情報 をフ ァ イルに書 き出す時点で行 なってい る.pu

bl i cな上位 ク

ラス とメンバのみ を公開 インターフェース ノー ドファ イル に ,その他の

pr ot e c t e d,p r iva t e

な上位 クラス とメ ンバ は実装 ノー ドファイルに格納す る.プ ログラムと それ か ら生成 され るノー ドの関係 を図

4

に示す.

生成 され る

HTML

フ ァイル には ,ク ラスの依存関 係 に従 った リンクが埋 め込 まれ る. これ には

HTML

の ア ンカー タグ

<AHREF=● ' URLoft a r ge tnode‑ ' >a nys t r ingdA>

を用い る. ここで ,リンクは

URLをその まま埋 め込

む とファイルの移動 などに伴 う一貫性 の維持が難 しく な るので

,CommonGa t e wa yI n t e r f a c e ( CGI )

を用い

c mp dか らクラスの公開 インターフェース ノー ドの

位置情報 を得

,HTMLの Loc a t i onヘ ッダによってそ

の位置の フ ァイル を渡す ことによ り,c

mpdでの位置

の一括管理 を行 う.具体 的 には,cmpdに問い合 わせ

Lo c a t i onヘ ッダを生成 す る CGI

スク リプ トとその 引数 で あるクラス

I D

を ,フ ァイルの

URL

が入 るべ き位置に埋 め込 む.

(6)

7 8

Agene r a ls t mc t ur eofC++pr ogr a m f i l e na me. h

大 月 美佳 ・青 田 紀彦

Figtlr

C4.Co r r e s p on d e n c e

b

e

tw

e e naC++s ou r c ec o d ea J l d n od e s

3. 2

管理 テーブルの分散化

先 に述べたよ うに ,システム全体の中心的サーバ は 存在せず ,サ イ トごとのサーバの分散的な協調 によっ て全体の管理 を行 う.広域分散環境では集 中管理 は得 策でないため ,これは必然的なアプローチである. こ の分散協調管理 を実現す るためには,サ イ トごとのサ ーバ ,特 に

Cl a s s ‑ UR

Lテーブルの一貫性管理 が重要 と なる. また ,リンクの分散透過性 は

www

サーバの 機能 によって達成で きるが ,この管理 テーブルの分散 透 過性 は別 に考 えなければ な らない.以下

,Cl as s ‑

URLテーブルの分散透過的 な一貫性管理 につ いて述 べ る.

一般 に ,共有資源の分散透過的な一貫性管理 を行 う ためには ,次のような幾つ かの方式が考 えられ る.

・あ るサ イ トを集 中管理 サ ーバ とす る (サ ーバ方 式).

・すべてのサイ トに読出 し可能 なコピ‑を持たせ る (複製方式).

・各サ イ トにキャッシュ的な部分 コピーを必要 に応 じて持たせ る.

これ らは ,その共有資源の アクセス形態 ,す なわち例 えば

u pda t e ‑ ma nyか Wr it c ‑ on c e ‑ r e a d‑ ma nyかなどによ

って使 い分 けられるべ きものである.

ここで ,この

Cl a s s ‑ UR

Lテーブルの アクセス形態 は , 追加 ・更新 (書込み)が稀で ,参照 (就出 し)が類兼 である.参照 は閲覧時だけでな く,クラスの追加時や コンパ イル時に も起 こる.従 って ,その分散透過的 な 一貫性管理には ,上の複製方式 が適 している .弗素な 参照 をで きるだけ効率化す るために ,すべてのサイ ト に管理 テーブルの同一 コピーを置 くもの とす る.そ し て ,サイ ト内のサーバ ・クライアン ト間プロ トコルに 加 えて ,次のサーバ どうしのプロ トコル を用意す る.

・ADD̲FROM̲PEER :追加

・UpDATE̲FROM̲PEER:更新

・DELETE̲FROM‑PEER:削除

なお ,サイ ト間プロ トコルでは遭膚失敗や要求衝突 の可能性 があるので ,それ らに対処 しなければな らな い.要求衝突 については/更新 と削除 につ いては所有 者のみが権限 を持つので衝突 は起 こり得 ないが .新規 登録については特に名称の衝突が起 こり得 る. その場 合 には,本 システムではとりあえず衝突 した要求 をい ずれ も無効化 して当該利用者 に通知す るのみ とす る.

その解決は利用者 間の協議粥侍 に委ね るべ きで あ り, それ を助 けるために例 えば簡単な電子会議的なシステ ムを別に用意す るのが有効であろう.

3. 3

分散

Mak ef i l e自動構築

アプ リケーシ ョン構築の際 には ,クラスの依存関係 情報 をコンパ イラに知 らせてや らなければな らない.

一般 に,アプ リケーシ ョンの ソースコー ドが複政の フ ァイルに分割 されている場合 に ,それ らの間の依存関 係情報 をコンパ イラに知 らせ るツール として,ma

k e

17)

がある. しか し実際 には,依存関係情報 はプログ ラム が完全 に把 握 して

,Ma kef i l e

とい う形 で記述 して

ma ke

に与 えてや らなければな らない.

本 システムでは ,基本的には依存関係情報は リンク で保持 されているので ,既存 ライブラリとの関係 など 別途必要 な情報のみ を利用者 が補填 してやれば ,それ らの情報 に基づいて

Ma kc f i l eを自射的 に構築 す るこ

とがで きる.その際に

,1

つのアプ リケーシ ョン内の 依存関係情報 をすべて一括 して

1

つの

Ma kef i l eで記

述す るのでは ,部品化 と分散管理の妨 げとなる18).そ こで

,Ma ke 別e自動構築のための補助情報 をクラスご

とに (専用の ノー ドで)管理 してお き,アプ リケーシ ョン構築時に リンクを順次た どって依存関係情報 と補 助情報 を収集 し,Ma

ke Gl e

を自動構築す る.

この具体的な手順 は次のよ うになる.なお ,ここで は分散環境が均質であってサ イ ト間で同 じマシンコー ドを共有で きることを前操 としている.これは

,1

(7)

www を利 用 した ソフ トウェア部品の管理 ツール

の アプ リケーシ ョンを分散協同開発するの を支援 しよ うと してい るので あるか ら,妥 当な条件で ある.

(1

)関連 クラスの同定

アブ 1)ケ‑シ ョン全体のコンパイルの場合 にはmi n

( ) .

ク ラスの分割 コンパ イルの場合 にはその クラスを出発 点 と して ,リンクをた どって コンパ イルに必要 な関連

ク ラスを同定す る.

(2

) ネ ッ トワークに分散 した該 当 クラスの収集

関連 クラスのマ シンコー ド,ヘ ッダ,構築補助情報 を, それ ぞれ 当該 ノー ドか らファイル と して収集す る.そ の ク ラスが まだ コンパ イル されてお らずマ シンコー ド

を持 たない場合 には ,(所有者 にその 旨 を通知 した上 で) ソースコ‑ ドも収集 して 自サ イ ト上で コンパ イル

してマシンコー ドを得 る.

以上の作業 を,関連す る各サ イ トで分散的に ,必要 なク ラスがすべて得 られ るまで再帰的 に繰 り返す.

例 えば,classAClassB,ClassCに依存 して , ClassBclassDに依存 してい るとす ると,宣言部 が

フ ァイルClassA.hにあ り,実装部 が フ ァイルClass A.ccetc.ccに分 かれ てい るとい った構築補助情報 か ら,以下のよ うなMakefileが 自動生成 され る.

HEADERS=ClassA.hClassB.hClassD.hClassC.h a

lI.・ClassA.oetc.o

ClassA.o:ClassA.cc令(HEADERS) S(CXXトcClassA.cc

etc.o:etc.ccS(HEADERS) S(CXXトcetc.cc

4.

あ わ りに

オブジェク ト指向 ソフ トウェア部品の分散管理 シス テムにつ いて ,これ まで SunSPARC station SolariS 上 で主にGNUC++コ ンパ イラとperlを用いて実装 を 進 め ,本論文で述べ た機 構 を一通 り完成 させ ている.

但 し,分散 Makefile自動構築 は ,現在 は単一 サ ‑バ 上での動作 まで確認 している.

しか し,本 システムは まだ最初の プ ロ トタイプで あ って ,さらに次 の よ うな課題 を解決 していかなければ な らない.

・現在 は分散透過 な ノー ド閲覧 と問合せ を支援 して いるが ,ソースやマ シンコー ドな どの ノー ドのサ イ ト間転送 も可能 にす る.

・ノー ドにつ いてのオ ‑ナ ‑管理 とアクセス制御 , バ ージ ョン管理 を,これ までの ソフ トウェア工学 の成果 も踏 まえて確立す る.

・デザ インパ ターンや フレームワ‑クなど,さらに 高度 な部品 をも扱 えるよ うにす る.

7 9

・実際の ソフ トウェア開発保守 に適 用 して ,実地の 検証 を行 う.

1)

Rochind,M.F.;TheSourceCodeControlSystem, IEEETrans・SoftwareEng.,SE‑

1 , 4( 1 975) , 364‑ 37 0

2)Tichy,W、F.;RCS‑ A System fわrVersionControl,

Software‑ PracticeandExperience

,1 5,7( 1 985) ,637

6 5 4

3)

Marca,D.andBock,G.eds.iGROUPWARE : SoftwareforComputer‑SupportedCooperativeWork

( 1 992)

,IEEEComputerSocietyPress

4)vessey,I.andSravanapudi,A.P.;CASEToolsas CollaborativeSupportTechnologies,Comm.ACM

,

88,I

( 1 9 95) , 8 3‑ 95

5)

Kraul,氏.E.andStreeler

,L.

A.;Coordinationin SoftwareDevelopment,Comm.ACM

,

8

8,

I

( 1 9 95) ,6 9

81

6)安田 他 ;C++プログ ラム ・デー タベース構築,情 報処理学会 ソフ トウェア工学研究会報告

,94

‑SE

‑ 96

( 1 99 4),1 45‑ 1 52

7)

coad,P.;Objectl0rientedPattern,Comm.ACM

,35

,

9( 1 992) ,1 52‑ 1 5 9

8)Gam ma,E.,Helm,R.,Jolmson,R.肌dVlissides,J.;

DesignPattems

( 1 9 95)

,Addison‑Wesley

9)smith,∫.a.andWeiss,S.F.;Hypertext,Comm.

ACM

, 31 ,7( 1 9 88) , 81 6‑ 81 9

1 0)

Halasz,F.andSchwartz,M.;TheDexterHype rtext ReferenceModel,Comm.ACM

, 37, 2( 1 9 9 4) , 30‑ 3 9

ll)Bigelow,J.;HypertextandCASE,IEEE Software

( 1 988)2 3‑ 27

1 2)

Cam pbell,B.andGoodman,J.M.;HAM :AGeneral PurposeHypertextAbstractMachine,Comm.ACM

,31

,

7, ( 1 988 )856 ‑ 861

1 3)

Anderson,K.M.,Taylor,R.N.andWhitehead,Jr.,E.

∫.;Chimera:HypertextforHeterogeneousSoftware Environments,Proc.EuropeanConf.onHypermedia

( 1 99 4)9 4‑ 1 07

1 4)

Rumbaugh,J.;Object‑OrientedModelingandDesign, PrinticeHall

( 1 9 91 )

1 5)

Bo∝h,G.;Object‑OrientedAnalysisaJldDesignwith ApplicatiorLS,Benjamin/Cumi ngs

( 1 9 94)

1 6)

colman,D.,etal.;Objecト0rientedDevelopment

theFusionMethod,PrenticeHall

( 1 994)

1 7)

Feldman,S.I.・,MAKE‑ AProgram forMaintaining ConputerPrograms,Software ‑ Practice and

(8)

8 0

大 月 美佳 ・吉 田 妃彦

E

x p e r ie n c e , 9( 1 97 9)2 55 ‑ 26 5

ン管理 ,情報処理 学会 ソフ トウェア工学研究報 告

1 8)捗山 ; Ob j e c tMa keによるコンフイギュレーシ ョ

9

4‑ SE‑ 97

(19

9

4)

9 ‑ 1 5

参照

関連したドキュメント

HORS

スライド5頁では

この設定では、管理サーバ(Control Center)自体に更新された Windows 用の Dr.Web Agent のコンポ ーネントがダウンロードされませんので、当該 Control Center で管理される全ての Dr.Web

注:一般品についての機種型名は、その部品が最初に使用された機種型名を示します。

【その他の意見】 ・安心して使用できる。

「欲求とはけっしてある特定のモノへの欲求で はなくて、差異への欲求(社会的な意味への 欲望)であることを認めるなら、完全な満足な どというものは存在しない

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

運航当時、 GPSはなく、 青函連絡船には、 レーダーを利用した独自開発の位置測定装置 が装備されていた。 しかし、