-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter1.tex
78 lines (68 loc) · 4.68 KB
/
chapter1.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
\chapter{はじめに}
%\pagenumbering{arabic} %% ページ番号をアラビア数字に変更
\HM{教員のコメント}
\YC{教員のコメント}
\YT{教員のコメント}
今日、分散ソフトウェア、つまり複数の計算機上で動作するソフトウェアの必要
性が高まる一方、その開発にかかるコストが問題になっている。これは、分散プ
ログラムを作成する場合にネットワークなどの分散環境特有の問題に対処しなけ
ればならないためである。それらの処理の記述を含んだ分散プログラムは煩雑に
なり、非分散プログラムの作成に比べて、分散プログラムの作成や維持にかかる
人的コストは飛躍的に大きくなりがちである。
分散プログラミングが煩雑であることの要因として、プログラムの分散に無関係
な記述の中に分散に関わる処理が拡散して入り交じっている(crosscutting
concerns)ことがあげられる。このようなプログラムは可読性が低く、変更も大
変である。分散に無関係な記述が分かりにくくなる上、分散に関わる処理を変更
するためにはプログラムのあちこちを修正しなければならなくなる。
我々は分散プログラミングをアスペクト指向言語(AOP)により支援する
Addistant を開発してきた。ここで、アスペクト指向とは、オブジェクト指向と
の相補性を意識した概念である。オブジェクト指向とは、機能性という点に着目
して全体をオブジェクトと呼ばれるモジュールに分割していく概念である。しか
し、個々のモジュール内には、同様の処理が股がる可能性がある。この個々のモ
ジュールに股がった同様な処理を、オブジェクトとは別の側面から考慮し、それ
をモジュール化する概念を{\bf{アスペクト指向}} といい、そのモジュールを
{\bf{アスペクト}}という。
Addistant は次の特徴をもつ。
%
\begin{itemize}
\item{
Addistant の利用者に、各クラスごとそのオブジェクトを分散環境中のどこに配
置するかを指定させる。Addistant では、分散に関わる処理がプログラム全体に
拡散して入り交じることを避けるため、利用者は、分散に無関係な記述である非
分散プログラムとは別に、分散に関わる記述をまとめて記述する。このまとめて
別に書かれた分散に関わる記述を{\bf{分散アスペクト}}と呼ぶ。
}
\item{
対象プログラムのバイトコードを変換して、分散アスペクトによって指定された
クラスが、遠隔ホストで動作している Java 仮想機械(JVM)上で実行されるよ
うにする。Addistant は変換のために、対象プログラムのソースコードを必要と
しない。変換されたバイトコードは正規の Java バイトコードであり、実行のた
めに特別な JVM を必要としない。バイトコード変換には
Javassistを用いた。
}
\item{
変換されたバイトコードを Addistant の実行系により遠隔 JVM に自動的に
配布される。
}
\end{itemize}
%
\noindent
Addistant では、遠隔オブジェクト参照を、従来の分散プログラミング・ツール
で使われてきたアイディアを組み合わせて実現した。この実装は、{\bf{プロキ
シ・マスタ方式}}に基づいたもので、Addistant がバイトコード変換により自動
的に行う。
しかしながら、Addistant では、開発が進むにつれ、その利点とともに問題点も
明らかになってきた。その問題点とは、分散アスペクトの記述力が十分ではなかっ
たため、利用者が望む機能分散をうまく実現できない場合があることである。
そこで我々は、Addistant の分散アスペクトの記述力を大幅に高めたAddistant
2を開発中である。本稿では Addistant 2 の典型的な利用方法の例をあげ、分
散アスペクトの新しい記述方法を説明する。
本稿の残りは、次のような構成からなっている。(以下では、Addistant を
Addistant 1 と呼ぶ。)
第 2 章は 分散プログラミング用アスペクト言語の
必要性と Addistant 1 の性能を述べる。
第 3 章では、Addistant 2 の分散アスペクト記述を、
第 4 章では、Addistant 2 のこれまでの実装、
第 5 章では、Addistant 2 を利用したソフトウェアの機能分散例、
第 6 章では、関連研究を、そして
第 7 章でまとめを述べる。