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

修 士 論 文 概 要 書

N/A
N/A
Protected

Academic year: 2021

シェア "修 士 論 文 概 要 書"

Copied!
3
0
0

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

全文

(1)

修 士 論 文 概 要 書

        CD 2008 年 2 月提出                      学籍番号 3604U062 ‐ 2 専攻名(専門

分野)

情報・ネットワーク

専攻 指 導

研究指導名

ソフトウェア開発工学

氏 名 斉藤 勇樹

教 員

深澤 良彰     印

研 究

題 目 クラス間依存関係に基づく Java EE アプリケーションの品質特性分析に関する研究

1. はじめに

大規模なJava Enterprise Edition(Java EE)アプリケーシ ョン開発において,そのアプリケーションは長期に渡る運用を 考え,高い保守性を備える必要がある.層状構造はソフトウェ ア開発で広く適用されるアーキテクチャパターンであり、アプ リケーションをサブシステムに分割する際にそれらの責務に応 じた層に分類することで,再利用性,交換可能性といった品質 特性を満足する[1].しかし,アーキテクチャパターンとして記 述される層状構造はそれを実現するための詳細なコーディング までは言及していない.その結果,アプリケーションが再利用 性や交換可能性といった層状構造が本来提供する品質特性を保 持しているかどうか,保守者が判断することが困難になる.本 研究では,層状構造を意図して実装されたJava EEアプリケー ションの構造が,層状構造の品質特性である再利用性および交 換可能性を満足するのに適した構造になっているかどうかを分 析する方法を提案する.

2. パッケージ構造と再利用性、交換可能性

再利用性および交換可能性は,Javaを始めとしたプログラミ ング言語が提供するパッケージと密接な関係がある.単一のク ラスが再利用の単位になることは稀であり,パッケージが再利 用の単位になる[2].以下ではパッケージデザインの特性とシス テムの再利用性および交換可能性の関係について述べる.

2.1 再利用性

パッケージ依存グラフ (PDG) は

PDG

= (

N, E

) で定義さ れ,

N

はある抽象レベルにおけるシステム中のパッケージの集 合,

E

はパッケージ間のコンパイル依存集合からなる有向辺を 表す.再利用性はソフトウェアモジュールが2つ以上のコンピ ュータプログラムもしくはソフトウェアシステムで使用可能な 程度を指し,PDGのトポロジーに大きく依存する.以下にトポ ロジーの異なるPDGを3つ示す.

図2.1: トポロジーの異なるPDG

図中の箱はパッケージを表し,数字は累積コンポーネント依存 数(CCD)と呼ばれ,そのパッケージを再利用する際にコピーし なければならない自身を含めたパッケージの総数を表す.CCD の合計値はcが最小であり,3つのPDGではcが最も再利用に 適したパッケージ構造である.再利用に適したパッケージ構造 は,(1)循環依存関係がない(2)PDG のクリティカルパスが短い という特性をもつ.提案する分析法は,再利用性に適した構造 かどうかを判断する基準として(1)を用いる.

2.2 交換可能性

交換可能性は,他のサブシステムに影響を与えず,特定の サブシステムを意味的に等価なサブシステムに置き換える ことができる程度を表す.すなわち交換可能性が高いソフト ウェアシステムでは,特定のサブシステム S1を意味的に等 価なモジュール S2 に交換した場合,他のモジュールが S2 を使用する際にかかるコストが低くなる.以下の図に交換可 能性の高いシステムの部位を示す.

図2.2: 交換が容易な依存関係

パッケージ内に描かれている箱はクラスを表す.パッケージ 間の依存関係が1つであるため,パッケージ2を意味的に等 価なパッケージ3に交換した場,パッケージ1がパッケージ 3を利用する際に発生するコストはパッケージ1のファサー ドクラス(灰色)を利用することで低く抑えられると考える.

3. 分析法の概要

本研究で提案する分析法は,再利用性,交換可能性を定量 的な尺度で測定するための測定法を必要とする.まず再利用 性の分析については,再利用に適したパッケージ構造かどう かを判別する既存のクラス到達可能性集合サイズ(CRSS)メ トリック[3]を用い,交換可能性については層間結合度(CBL) を用いる.

3.1 Class Reachability Set Size (CRSS)

CRSSはクラス依存グラフ(CDG)に対して適用するメトリ ックである.CDGは

CDG

= (

C, E

) で表され,

C

はシステム 中のクラス集合,

E

はクラス間のコンパイル依存集合からな る有向辺を表す.CRSS値は特定のノードから到達できる自 身を含めたノードの総数を示す.システム中の全てのクラス の CRSS 値の分布を示したものが CRSS ヒストグラムであ る.CRSSヒストグラムの形状から,パッケージ構造に循環 依存関係の有無を判別することが可能である.CRSSヒスト グラム中で CRSS 値が比較的大きいクラスが多数存在する 場合,パッケージ間の循環依存は避けられないことを示す.

3.2 Coupling Between Layers (CBL)

CBLは層間の結合強度を測定するための測定法である.

CBLを

CBL = x / MN

で定義する.ここで

M

は層Aに属す るクラスの総数を表し,

N

は層 Aが依存する層Bの数を表 す.

x

は層Aから層 Bへのクラス間依存の数である.CBL 値が大きいほど,層間の結合が強いことを示し,層Bを意味 的に等価な層 Cに交換した場合,層 Aにかかる修正コスト が大きくなると推定する.

a) b) c)

5 5 5 5 5

5 4 3

3

2 1

2 2

1 1

パッケージ

1

パッケージ2

(2)

3.3 層状構造をもつシステムへのCRSSおよびCBLの適用 層状構造をもつシステムに対しCRSSおよびCBLを適用す るには,層および層に属するクラスを特定しなければならない.

層優先構築は層状構造を実装するためのガイドラインの1つで あり,1 つの層をシステムの最上位パッケージに割り付けるた め,層および層のクラスを一意に特定することができる.層優 先構築に従ったJava EEアプリケーションにおいて,層内部の クラス間依存をもとにRSSヒストグラムを生成し,層間のクラ ス間依存をもとにCBL値を算出する.得られたCRSSヒスト グラムを再利用性の分析に,CBL値を交換可能性の分析に用い る.

4. 評価・考察

層優先構築に従った2つのJavaEEアプリケーションに対し てCRSSおよびCBLを適用した.紙面の都合上,xPetstore[4]

に対する評価結果のみ示す.xPetstore のバージョン 2.0 およ び3.0の最上位パッケージは,web,services,domainである.

それぞれの層に対応するCRSSヒストグラムを以下に示す.

0 10 20 30

Number of Classes

CRSS Value CRSS Histgram for Web Layer in xPetstore

xpetstore-2.0 27 0 0 0

xpetstore-3.0 30 0 0 0

1‐5 6‐10 11‐15 16‐20

図4.1: web層のCRSSヒストグラム

0 5 10 15 20

Number of Classes

CRSS Value CRSS Histgram for Services Layer in xPetstore

xpetstore-2.0 20 8 0 0

xpetstore-3.0 17 1 0 0

1‐5 6‐10 11‐15 16‐20

図4.2: services層のCRSSヒストグラム

0 10 20 30

Number of Classes

CRSS Value CRSS Histgram for Domain Layer in xPetstore

xpetstore-2.0 27 15 0 2

xpetstore-3.0 26 15 1 2

1‐5 6‐10 11‐15 16‐20

図4.3: domain層のCRSSヒストグラム

web,services,domain各層間のCBL値を以下の表に示す.

表4.1: xPetstore2.0の各層間のCBL値

Web Services Domain

Web - - -

Services 0.0595 - -

Domain 0.0185 0.0422 -

表4.2: xPetstore3.0の各層間のCBL値

Web Services Domain

Web - - -

Services 0.0463 - -

Domain 0.0159 0.0556 -

図4.1,4.2,4.3から,xPetstoreバージョン2.0の各層で 循環依存のないパッケージ構造が構築できることを示す.パ ッケージに内包する要素数の上限をパッケージサイズと呼 ぶ.xPetstoreではパッケージサイズが10であった.ここで は,全てのパッケージに10個のクラスが存在すると仮定し,

各パッケージ内のクラスは互いに依存しあっているものと する.web層では27個のクラスが存在し,これらは3個の パッケージに分配される.仮定によれば各パッケージ内のク ラスは互いに依存しあっているためCRSSは少なくとも7ま たは 10 であり,3 個のパッケージ間に循環依存を発生させ ることなく図4.1の分布を満たすことができる.これはweb 層で循環依存のないパッケージ構造を構築できることを意 味する.services 層は 28個のクラスが存在し,これらは 3 個のパッケージに分配される.各パッケージ内のクラスの CRSS は少なくとも 8 または 10 を示す.28個のクラスが CRSS 6-10の範囲内に存在することができるため,services 層のパッケージ内で循環依存のないパッケージ構造を構築 できることを意味する.domain 層は 44 個のクラスが存在 し,これらは5個のパッケージに分配される.各パッケージ 内のクラスのCRSSは少なくとも4または10を示す.40個 のクラスが CRSS 6-10 の範囲内内に存在するため,CRSS

1-5,6-10 の分布は満たすことができる.ヒストグラムの右

側の2個のクラスは他の16-20個のクラスに推移的に依存し なければならない.そのためにはパッケージサイズ 10の 4 個のパッケージのうち,2個に依存すればよい.そしてCRSS 16-20のクラスは2個なので,domain層の5個のパッケー ジは循環依存のないパッケージ構造を構築することができ る.以上からxPetstore2.0の各層のクラス間依存は循環依存 のないパッケージを構築することが可能なことがわかった.

これは再利用を考慮する上で重要な判断基準の1つである.

交換可能性に関して本研究ではコストの増減を裏付ける データがないためCBLの有用性の検証には不十分であるが,

今後のために CBL値を算出しておくことは重要である.表 4.1,4.2は列に示す層が行に示す層にCBL値で表される強 度で依存することを示す.たとえば表 4.1 から web 層が services 層に強度 0.0595で依存していることがわかる.バ ージョン2.0から3.0に変更する際,CBL値の減少がみられ たのはweb層-services層,web層-domain層であり,増加 がみられたのはservices層-domain層である.services層を 意 味 的 に 等 価 な 層 services’と 交 換 し た 場 合 ,web 層 が services’層を利用するコストはバージョン2.0よりバージョ ン3.0の方が小さいと推定する.

5. おわりに

各層のCRSSヒストグラムをおよび各層間のCBL値から 層優先構築に従ったJava EEアプリケーションの再利用性,

交換可能性を分析する方法を提案し,評価結果から提案した 分析法の有用性を示した.今後は,再利用性については再利 用に適した構造かどうかを判断する基準(2)を考慮し,交換可 能性については CBL と修正コストとの相関性を示すことで CBLの有用性の向上を図ることを課題としたい.

6. 参考文献

[1] Bass,L. et al.

Software Architecture in Practice 2

nd

Edition

. Addison-Wesley, 2003

[2] Martin, R.C. ’Granularity’,

C++ Report

8(10), 57-62, 1996

[3] Melton, H. et al., “CRSS Metric for Package Design Quality”, in Proc. of 13th ACSC2007

[4] xPetstore. http://xpetstore.sourceforge.net.

(3)

表 4.2: xPetstore3.0 の各層間の CBL 値

参照

関連したドキュメント

この実験の目的は,提案手法によってシーダが保証さ

本稿では、有線ネットワークにボトルネックがあり、仕様

k周目までエリアにおいて,各円形エリア間に隙間 が生じていないかを調査し,隙間がある場合はk周

図 3 に,単語あたりの学習データ数に対する単語誤り 率を示す.これより, 75 発話のように比較的多くの単語 発話を学習に用いた場合は, LLP を用いた手法 (LLP-

本研究では MPI を用いてクラスタ向けに作られた学習 節共有による並列効果の高い並列 SAT ソルバ, c-sat を ベースに SAT Competition2009 で最も優秀な成績を修めた

そこで , 本研究では機械学習の 1 つである Support Vector Machine(SVM) を用いた動的な チューニングを行う機能を追加した c-satws を作成した.. SVM

非暗号化状態の SIP と RTP 、既存の音声暗号化シ ステム、提案手法、それぞれの通信確立手法を比較 評価する。RTP

通信データサイズによる MN の分類のために,閾値 τ を用いる.閾値 τ は単位を [KB] とし,予め MR に設 定しておく.通信データサイズが閾値 τ 以上の MN を 上位 MAP ,閾値 τ 以下の MN