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

一般社団法人電子情報通信学会 THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS 信学技報 IEICE Technical Report アスペクト指向プログラミングによる高性能 低消費電力化 鷲崎弘宜 大河原洸

N/A
N/A
Protected

Academic year: 2021

シェア "一般社団法人電子情報通信学会 THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS 信学技報 IEICE Technical Report アスペクト指向プログラミングによる高性能 低消費電力化 鷲崎弘宜 大河原洸"

Copied!
6
0
0

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

全文

(1)

This article is a technical report without peer review, and its polished and/or extended version may be published elsewhere. Copyright ©2014 by IEICE

アスペクト指向プログラミングによる高性能・低消費電力化

鷲崎 弘宜

大河原 洸太

原 章浩

深澤 良彰

†早稲田大学基幹理工学部情報理工学科

早稲田大学グローバルソフトウェアエンジニアリング研究所

〒169-8555 東京都新宿区大久保 3-4-1

E-mail: †washizaki@waseda.jp

あらまし 特定の品質要求を満足するためのプログラムコードはしばしば、プログラムの基本的なモジュール構 成に対して横断的に散らばることが知られている。そのような横断的関心事のモジュール化を通じて保守性を維持 あるいは高めることに有効な技術として、アスペクト指向プログラミング(Aspect-Oriented Programming: AOP)が ある。本稿では、AOP の実行性能や品質向上に関する応用として、マルチコア環境における単体テスト実行時間の 短縮を目的とした単体テストフレームワーク JUnit の AspectJ(Java 言語用の AOP 処理系)によるマルチスレッド 化と、ロボット制御プログラムの低消費電力化を目的としたハードウェア制御方式やアルゴリズムの AspectC(C 言語用の AOP 処理系)による追加および変更の事例をそれぞれ報告する。

キーワード アスペクト指向プログラミング,モジュール,マルチスレッド,低消費電力

High Performance and Low Energy Consumption by Aspect-Oriented

Programming

Hironori Washizaki

Kota Ohkawara

Akihiro Hara

and Yoshiaki Fukazawa

†Waseda University, Dept Computer Science and Engineering, Global Software Engineering Laboratory

3-4-1, Okubo, Shinjuku-ku, Tokyo, 169-8555 Japan

E-mail: †washizaki@waseda.jp

Abstract In this paper, we report two case studies of applying aspect-oriented programming for achieving high

performance and low energy consumption while keeping or improving maintainability: multi-threading existing unit test framework (JUnit) to reduce testing time on multi-core processing environments, and, adding and changing hardware control strategies and algorithms to reduce energy consumption while controlling robotics.

Keyword Aspect-oriented programming, Modularity, Multithread, Low energy consumption

1. は じ め に

プ ロ グ ラ ム の 実 装 に お い て 、 特 定 の 品 質 要 求 を 満 足 す る た め の コ ー ド は し ば し ば 、 プ ロ グ ラ ム の 基 本 的 な モ ジ ュ ー ル 構 成 に 対 し て 横 断 的 に 散 ら ば る こ と が 知 ら れ て い る 。 例 え ば 、 テ ス ト 容 易 性 の 向 上 や 、 セ キ ュ リ テ ィ 対 策 と し て 証 跡 を 残 す こ と を 目 的 と し た ロ グ 出 力 コ ー ド は 、 プ ロ グ ラ ム 中 で ロ グ 出 力 の 必 要 な 至 る 所 に 埋 め 込 ま れ る こ と と な る 。 そ の よ う な 品 質 要 求 ( お よ び そ の 満 足 の た め の 実 現 手 段 )は 横 断 的 関 心 事 で あ り 、 モ ジ ュ ー ル 化 せ ず に 横 断 的 に 実 装 し た ま ま と す る と 、 当 該 品 質 要 求 を 満 足 す る が た め に か え っ て プ ロ グ ラ ム 全 体 の 見 通 し が 悪 く な り 、 以 降 の 開 発 効 率 や 保 守 性 の 低 下 を 招 き か ね な い 。 横 断 的 関 心 事 の モ ジ ュ ー ル 化 に 有 効 な 技 術 と し て 、 ア ス ペ ク ト 指 向 プ ロ グ ラ ミ ン グ ( Aspect-Oriented Programming: AOP ) [1][2]が あ る 。 AOP と は , 要 求 を

本 質 と 横 断 的 関 心 事 の 集 合 と し て 分 離 し て 捉 え , 本 質 を 表 す 箇 所 の 修 正 な し に 、 結 合 ル ー ル に よ っ て 一 つ の プ ロ グ ラ ム へ と 纏 め 上 げ る プ ロ グ ラ ミ ン グ 手 法 で あ る . AOP は 様 々 な 種 類 の 品 質 の 効 率 的 か つ 変 更 や 拡 張 に 優 れ た 作 り こ み に 有 効 な こ と が 知 ら れ て お り 、 例 え ば Web ア プ リ ケ ー シ ョ ン 開 発 に お け る 広 義 の デ ィ ペ ン ダ ビ リ テ ィ ( 可 用 性 お よ び そ の 影 響 要 因 と し て の 信 頼 性 や 保 守 性 、 セ キ ュ リ テ ィ 等 の 能 力 や 程 度 全 般 ) の 確 保 に つ い て 様 々 な 手 法 や 実 践 が 知 ら れ て い る [3]。 本 稿 で は 、そ の よ う な 品 質 の 作 り こ み に お け る AOP の 応 用 と し て 、 我 々 に よ る 異 な る 以 下 の 二 つ の 事 例 を 報 告 す る 。  単 体 テ ス ト 実 行 時 間 の 短 縮( お よ び そ れ を 通 じ た 各 種 ソ フ ト ウ ェ ア 開 発 に お け る 効 率 的 な 信 頼 性 向 上 )を 目 的 と し て 、AOP に よ る 効 率 的 か つ 修 正 や 拡 張 に 優 れ た 単 体 テ ス ト フ レ ー ム ワ

(2)

ー ク の マ ル チ ス レ ッ ド 化  ロ ボ ッ ト 制 御 プ ロ グ ラ ム の 低 消 費 電 力 化 を 目 的 と し て 、AOP に よ る 効 率 的 か つ 修 正 や 拡 張 に 優 れ た 制 御 ア ル ゴ リ ズ ム の 追 加 お よ び 変 更

2. 単 体 テ ス ト フ レ ー ム ワ ー ク の マ ル チ ス レ ッ

ド 化 に よ る テ ス ト 時 間 短 縮

ソ フ ト ウ ェ ア の 大 規 模 、複 雑 化 に よ り 以 前 に 比 べ 開 発 に 時 間 を 要 す る よ う に な っ た 。 ま た 、 こ れ に と も な っ て 、 ソ フ ト ウ ェ ア の テ ス ト 工 程 に お け る 単 体 テ ス ト の テ ス ト ケ ー ス の 数 が 増 え テ ス ト に も 時 間 を 要 す る よ う に な っ て い る 。 テ ス ト を 補 助 す る た め の 単 体 テ ス ト フ レ ー ム ワ ー ク が 存 在 す る 。 こ れ は 、 テ ス ト ケ ー ス の 作 成 か ら 、 テ ス ト の 実 行 と そ の 結 果 の 表 示 ま で の 補 助 を 一 貫 し て 行 う 。 例 え ば JUnit[4]や TestNG[5]が そ れ に 当 た る 。 JUnit の テ ス ト ケ ー ス は 、 テ ス ト ク ラ ス と テ ス ト の 内 容 を 記 述 す る テ ス ト メ ソ ッ ド か ら な る 。 単 体 テ ス ト の 実 行 時 間 短 縮 の 方 法 の 一 つ と し て 、計 算 機 環 境 の マ ル チ コ ア CPU の リ ソ ー ス を 活 用 し た 単 体 テ ス ト の 並 列 実 行 が 挙 げ ら れ る 。 こ こ で 、 単 体 テ ス ト 実 行 の 基 盤 と な る 単 体 テ ス ト フ レ ー ム ワ ー ク が マ ル チ ス レ ッ ド 化 さ れ て い れ ば 、 マ ル チ コ ア 環 境 の リ ソ ー ス が 活 か さ れ る こ と が 期 待 で き る 。 し か し 、 JUnit 4.x の よ う に マ ル チ ス レ ッ ド 化 が 行 わ れ て い な い 単 体 テ ス ト フ レ ー ム ワ ー ク が 存 在 す る 。 つ ま り 、 テ ス ト ク ラ ス に 存 在 す る テ ス ト メ ソ ッ ド は 、 上 か ら 記 述 し て あ る 順 番 に 逐 次 実 行 さ れ る 。こ れ で は 、現 在 の マ ル チ コ ア CPU の リ ソ ー ス を 活 か し 切 れ な い 。 ま た 、 マ ル チ ス レ ッ ド 化 が な さ れ て い て も 、 テ ス ト ク ラ ス 内 部 の 個 々 の テ ス ト メ ソ ッ ド 間 の 依 存 関 係 を 考 慮 し て 並 列 実 行 が で き な け れ ば 、 意 図 し た テ ス ト が 行 わ れ な い 可 能 性 が あ る 。 そ こ で 我 々 は 、AOP 処 理 系 で あ る AspectJ[2]を 用 い て 単 体 テ ス ト フ レ ー ム ワ ー ク JUnit を 修 正 せ ず に 、 テ ス ト ク ラ ス 内 の 依 存 関 係 を 考 慮 し た 上 で 、 既 存 の 単 体 テ ス ト フ レ ー ム ワ ー ク を マ ル チ ス レ ッ ド 化 し 、 テ ス ト を 並 列 実 行 す る た め の 拡 張 を 行 っ た 。 以 降 で そ の 仕 組 み お よ び 結 果 を 示 す 。

2.1. マルチスレッド化 アスペクト

マ ル チ ス レ ッ ド 化 を 行 う た め に 、J.L.Sobral の 提 案 手 法 [6]を 用 い る 。具 体 的 に は AspectJ を 用 い て [6]の 手 法 に お け る Concurrency ア ス ペ ク ト を 用 意 し て JUnit 内 部 に 手 を 加 え る こ と な く 自 動 拡 張 す る 。Concurrency ア ス ペ ク ト に お け る 具 体 的 な マ ル チ ス レ ッ ド 化 の 処 理 に つ い て は 、 マ ル チ ス レ ッ ド 化 用 ラ イ ブ ラ リ Fork/Join Framework[7]を 用 い た 。 Fork/Join Framework は ワ ー カ ー ス レ ッ ド に キ ュ ー が 存 在 し 、 個 々 の ワ ー カ ー ス レ ッ ド の キ ュ ー に タ ス ク が 無 く な っ た ら 他 の ワ ー カ ー ス レ ッ ド の キ ュ ー か ら タ ス ク を 奪 う 形 を と る 。 マ ル チ コ ア 環 境 に お い て は 、 Fork/Join Framework は 柔 軟 に タ ス ク の 振 り 分 け を 行 う こ と が で き 効 率 が よ い 。 ア ス ペ ク ト の 主 要 コ ー ド を 以 下 に 示 す 。

(1) 最 初 に 、JUnit の ParentRunner ク ラ ス の runChildren メ ソ ッ ド に つ い て 以 下 の 本 体 コ ー ド ( 抜 粋 ) を 持 つ around ア ド バ イ ス を 適 用 し て 以 降 の 並 列 テ ス ト 実 行 の 準 備 を 行 う 。 こ れ は 結 果 と し て 、 各 BaseRunnerScheduler の schedule メ ソ ッ ド お よ び finished メ ソ ッ ド を 呼 び 出 す こ と と な る 。 final ParentRunner pr = (ParentRunner)thisJoinPoint.getThis();

RecursiveAction rootra = new RecursiveAction() { protected void compute() {

proceed(notifier); } }; pr.fFJpool.invoke(rootra); rootra.join(); pr.fFJpool.shutdown(); (2) BaseRunnerScheduler ク ラ ス の schedule メ ソ ッ ド に 対 し て は 以 下 の 本 体 コ ー ド ( 抜 粋 ) を 持 つ around ア ド バ イ ス を 適 用 し て 、 並 列 化 を 達 成 す る ス ケ ジ ュ ー リ ン グ に 向 け た fork を 実 行 す る 。 RunnerScheduler scheduler = (BaseRunnerScheduler)thisJoinPoint.getTarget();

RecursiveAction ra = new RecursiveAction() { protected void compute() {

proceed(childStatement); } }; ra.fork(); scheduler.fRAarray.add(ra); (3) BaseRunnerScheduler ク ラ ス の finished メ ソ ッ ド に 対 し て は 以 下 の 本 体 コ ー ド ( 抜 粋 ) を 持 つ around ア ド バ イ ス を 適 用 し て 、 ス ケ ジ ュ ー リ ン グ の 動 機 を 取 る た め の join を 実 行 す る 。 RunnerScheduler scheduler = (BaseRunnerScheduler)thisJoinPoint.getTarget(); for(RecursiveAction ra : scheduler.fRAarray) { ra.join(); }

(3)

2.2. 依 存 関 係 の設 定

テ ス ト を 並 列 実 行 す る に 当 た り 、 テ ス ト メ ソ ッ ド 間 の 依 存 関 係 が 重 要 に な る 。 我 々 は 依 存 関 係 を テ ス ト ケ ー ス 作 成 者 が 明 示 的 に 指 定 す る 形 を 採 用 し 、 指 定 方 式 と し て は テ ス ト ケ ー ス 内 の ア ノ テ ー シ ョ ン お よ び テ ス ト ケ ー ス 外 の XML フ ァ イ ル の 両 方 を サ ポ ー ト す る こ と と し た 。 そ れ ら を テ ス ト ケ ー ス 作 成 者 が 記 述 し 、 依 存 関 係 読 込 み 系 に 渡 し 、 依 存 関 係 を 考 慮 し た 上 で 並 列 実 行 を 可 能 に す る 。 そ の 全 体 構 成 を 図 1 に 示 す 。 図 1: 単 体 テ ス ト フ レ ー ム ワ ー ク の マ ル チ ス レ ッ ド 化 の 仕 組 み の 全 体 像

2.3. テスト時 間 短 縮 効 果 の評 価

AOP の 適 用 を 通 じ た マ ル チ ス レ ッ ド 化 に よ る テ ス ト 時 間 短 縮 の 効 果 を 評 価 し た 。具 体 的 に は 、(a)マ ル チ ス レ ッ ド 化 せ ず に テ ス ト を 逐 次 実 行 し た 場 合 、 (b)Executor を 用 い て 並 列 化 を 行 っ て い る Parallel Computer を 用 い て 並 列 実 行 し た 場 合( 関 連 研 究 で 説 明 す る )、 (c)我 々 の 方 法 で Fork/Join Framework を 用 い て 並 列 実 行 し た 場 合 で の テ ス ト が 終 了 す る ま で の 時 間 を 測 定 し た 。

デ ュ ア ル コ ア CPU で あ る Intel Core 2 Duo T7500 2.2GHz、 Memory 4GB の テ ス ト 実 行 環 境 上 で あ る テ ス ト ケ ー ス を そ れ ぞ れ 実 行 し た 結 果 、 5 回 実 行 の 平 均 時 間 は (a)36.0 秒 、 (b)26.2 秒 、 (c)24.6 秒 と な り 、 我 々 の 方 法 が マ ル チ ス レ ッ ド 化 お よ び Fork/Join Framework の 採 用 に よ り テ ス ト 時 間 短 縮 に 優 れ て い る こ と を 確 認 し た 。

2.4. 保 守 性 の評 価

さ ら に 保 守 性 の 評 価 と し て 、 横 断 的 関 心 事 の 実 装 お よ び 変 更 に か か る コ ス ト [8]を 評 価 し た 。 具 体 的 に は 、 あ る 機 能 の 実 装 と 変 更 に あ た り 、AOP を 適 用 し な い 場 合 と 適 用 し た 場 合 で 、 そ の コ ー ド 記 述 量 、 他 の 関 心 事 の コ ー ド を 含 ま ず に 連 続 記 述 し た コ ー ド の 集 合 で あ る コ ー ド 行 集 合 、 変 更 に 伴 っ て コ ー ド を 修 正 し た フ ァ イ ル 数 を 測 定 す る も の で あ る 。 結 果 的 に 、 そ の 機 能 の 変 更 終 了 後 に 修 正 し た フ ァ イ ル 数 が 少 な け れ ば 保 守 性 が 向 上 し て い る こ と に な る 。 最 初 に Executor を 用 い て 実 装 し 、 そ の 後 Fork/Join Framework に 変 更 す る 場 合 を 考 え る 。 ま た 、 拡 張 を 実 装 す る 際 に 追 加 し た ク ラ ス 数 と 実 装 の 段 階 か ら 修 正 を 行 っ た フ ァ イ ル 数 も 測 定 し た 。 結 果 を 図 2 に 示 す 。 図 2 よ り 、 ア ス ペ ク ト を 用 い る と コ ー ド 記 述 量 は 幾 ら か 増 加 す る が 、 変 更 フ ァ イ ル 数 を 削 減 で き て い る こ と が 分 か る 。 ア ス ペ ク ト を 使 用 し た 方 が 未 使 用 の 場 合 に 比 べ て 、 ラ イ ブ ラ リ の 更 新 が 合 っ た 場 合 に 、 変 更 を 行 う フ ァ イ ル の 数 が 少 な い の で 保 守 性 の 向 上 に つ な が る と 共 に 、 追 加 す る フ ァ イ ル の 数 も 少 な い の で 、 ク ラ ス の 関 連 が あ ま り 複 雑 に な ら な い と 考 え ら れ る 。 図 2: 記 述 量 お よ び 変 更 フ ァ イ ル 数 の 比 較

2.5. 関 連 研 究

Parallel Computer は 、JUnit 4.X の experimental パ ッ ケ ー ジ に 付 属 し て い る ク ラ ス で あ る 。 JUnit の テ ス ト は JUnit 内 部 で Java の Runnable イ ン タ ー フ ェ ー ス の 実 装 に よ っ て 実 行 さ れ て い る が 、そ の Runnable イ ン タ ー フ ェ ー ス を 実 行 、 同 期 す る ク ラ ス を Parallel Computer 独 自 の ク ラ ス に 置 き 換 え る こ と に よ っ て 並 列 実 行 を 可 能 に し て い る 。 こ の 独 自 の ク ラ ス は JDK 1.5 で 追 加 さ れ た Executor を 用 い て マ ル チ ス レ ッ ド 化 を 行 っ て い る 。 Java の 単 体 テ ス ト お よ び 結 合 テ ス ト を 行 う フ レ ー ム ワ ー ク で あ る 。 テ ス ト の 記 述 の 形 式 も ア ノ テ ー シ ョ ン を 用 い る も の で JUnit 4.X と ほ ぼ 同 一 で あ る 。 た だ し 、 提 供 し て い る メ ソ ッ ド に 互 換 性 は な く 種 類 も 異 な る 。、 異 な る 点 と し て 、 テ ス ト の 実 行 時 に 設 定 フ ァ イ ル と し て XML を 用 意 す る 。TestNG は 並 列 化 に 対 応 し て お り 、 XML フ ァ イ ル の suite 要 素 に parallel 属 性 を 加 え る こ と

(4)

に よ っ て 並 列 に 実 行 が 可 能 に な る 。 た だ し テ ス ト 間 の 複 雑 な 依 存 関 係 の 記 述 と 把 握 に は 適 し て い な い 。 JUnit に よ る テ ス ト 実 行 の 並 列 化 の 別 ア プ ロ ー チ と し て 、 グ リ ッ ド や ク ラ ウ ド 技 術 を 応 用 し 、 並 列 分 散 実 行 す る 手 法 が 提 案 さ れ て い る [9][10]。 我 々 の 提 案 は 、 並 列 実 行 の 環 境 が 異 な る こ と 、 お よ び 、 並 列 実 行 の 仕 組 み の 実 現 に あ た り AOP の 適 用 に よ り JUnit そ の も の の 改 変 を 避 け て い る 点 が 根 本 的 に 異 な る 。JUnit の 改 変 を 避 け る こ と で テ ス ト 環 境 全 体 の 保 守 性 を 保 っ て お り 、 さ ら に は 今 後 の JUnit の 改 訂 に お け る ア ス ペ ク ト の 再 利 用 を 通 じ た 効 率 的 な マ ル チ ス レ ッ ド 化 が 期 待 で き る 。

3. 制 御 方 式 や ア ル ゴ リ ズ ム の 追 加・変 更 に よ る

低 消 費 電 力 化

組 込 み ソ フ ト ウ ェ ア シ ス テ ム の 開 発 に あ た り 、 バ ッ テ リ 駆 動 の 場 合 や 環 境 性 の 考 慮 な ど に よ り 、 省 電 力 性 が 求 め ら れ る こ と が あ る 。 組 込 み ソ フ ト ウ ェ ア の 低 消 費 電 力 化 を 実 現 す る に あ た り 、 コ ン パ イ ル 技 術 、 ア プ リ ケ ー シ ョ ン 設 計 技 術 、OS に よ る 電 力 管 理 技 術 な ど が 挙 げ ら れ る [11]。 我 々 は 、 ア プ リ ケ ー シ ョ ン 設 計 を 変 更 し 、 ハ ー ド ウ ェ ア を 効 率 的 に 制 御 す る こ と で ソ フ ト ウ ェ ア の 低 消 費 電 力 化 を 実 現 す る こ と を 考 え る 。 し か し 、 そ の よ う な ハ ー ド ウ ェ ア の 制 御 方 式 ・ ア ル ゴ リ ズ ム の 変 更 は 、 し ば し ば プ ロ グ ラ ム の 多 数 の 箇 所 を 変 更 す る 必 要 性 を 生 じ 、 結 果 と し て プ ロ グ ラ ム の 見 通 し が 悪 く な り 保 守 性 や 拡 張 性 を 低 下 さ せ る 可 能 性 が あ る 。 そ こ で 我 々 は 、AOP の 適 用 に よ り ハ ー ド ウ ェ ア の 制 御 方 式 ・ ア ル ゴ リ ズ ム を モ ジ ュ ー ル 化 し た 形 で 柔 軟 に 追 加 ・ 拡 張 ・ 変 更 す る こ と を 可 能 と し て 、 低 消 費 電 力 化 と 高 い 保 守 性 の 維 持 の 両 方 を 同 時 に 達 成 す る こ と を 。 試 み た 。 以 降 に お い て そ の 仕 組 み と 結 果 を 示 す 。

3.1. 低 消 費 電 力 化 アスペクト

教 育 用 レ ゴ マ イ ン ド ス ト ー ム で 組 み 立 て ら れ た ロ ボ ッ ト を 、 床 に ひ か れ た ラ イ ン に 沿 っ て 自 動 走 行 さ せ て 荷 物 を 搬 送 す る ラ イ ン ト レ ー ス 制 御 ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム を 対 象 と す る( 参 考 [12])。も と も と の プ ロ グ ラ ム の 記 述 言 語 は C 言 語 で あ る 。 そ こ で AOP 処 理 系 と し て は AspectC[13]を 用 い た 。 最 初 に 、 省 電 力 性 を 検 討 せ ず に 、 荷 物 搬 送 や ラ イ ン ト レ ー ス と い っ た ユ ー ス ケ ー ス ・ 機 能 要 求 を 満 足 す る た め の シ ン プ ル な プ ロ グ ラ ム 実 装 を 用 意 し た 。 続 い て 低 消 費 電 力 化 の 戦 略 と し て 、 よ り 効 率 的 な ラ イ ン ト レ ー ス 方 式 へ と 変 更 す る こ と 、 お よ び 、 効 率 的 な 光 セ ン サ 制 御 の 二 つ を 検 討 し 、 そ れ ぞ れ も と の プ ロ グ ラ ム の 複 数 の フ ァ イ ル に 対 し て 作 用 す る 横 断 的 な ア ス ペ ク ト と し て 実 装 し た 。 も と の プ ロ グ ラ ム に 対 す る 作 用 の 散 ら ば り の 様 子 を 図 3 に 示 す 。 前 者 に つ い て は 、 も と の 簡 単 な 走 行 方 式 に 置 き 換 え て 、 比 例 制 御 ( P 制 御 ) に よ り ラ イ ン に 滑 ら か に 沿 っ て 効 率 的 に 走 行 さ せ る 方 式 を 、 イ ン タ ー タ イ プ 宣 言 と around ア ド バ イ ス を 用 い て 実 現 す る ア ス ペ ク ト と し て 実 装 し た 。 後 者 に つ い て は 、 ア プ リ ケ ー シ ョ ン 全 体 の 中 で 光 セ ン サ を 転 倒 さ せ る 必 要 の な い 状 態 ( 例 え ば ラ イ ン ト レ ー ス せ ず に 荷 物 の 積 み 込 み を 待 機 し て い る 状 態 ) を 識 別 し 、 そ の よ う な 状 態 に お い て 光 セ ン サ を 自 動 消 灯 さ せ る 方 式 を 、複 数 の before ア ド バ イ ス に よ り 実 現 す る ア ス ペ ク ト と し て 実 装 し た 。 バンパ 荷台 ディスプレイ クラクション タイマ Unit Controller 行動制御 ライン トレース モータ 制御部 ライン 監視部 比例制御呼び出し 比例制御の定義 光センサ消灯呼び出し 光センサ点灯呼び出し 図 3: も と の プ ロ グ ラ ム に 対 す る 低 消 費 電 力 化 戦 略 実 現 コ ー ド の 散 ら ば り

3.2. 低 消 費 電 力 化 効 果 の評 価

低 消 費 電 力 化 の 効 果 に つ い て 、プ ロ グ ラ ム 実 行 中 の バ ッ テ リ 電 圧 の 推 移 を も っ て 代 替 的 に 評 価 す る こ と と し た 。 放 電 特 性 に 伴 い 、 電 力 消 費 に 応 じ て バ ッ テ リ 電 圧 が 減 少 し て い く こ と が 知 ら れ て い る 。 低 消 費 電 力 を 考 慮 し な い も と も と の プ ロ グ ラ ム 実 行 に お け る バ ッ テ リ 電 圧 の 推 移 を 図 4 に 示 す 。対 し て 、AOP に よ り 効 率 的 な ラ イ ン ト レ ー ス 方 式 ( P 制 御 ) へ の 変 更 、 効 率 的 な 光 セ ン サ の 制 御 を 組 み 入 れ た プ ロ グ ラ ム 実 行 の 場 合 を 図 5 に 示 す 。 左 縦 軸 は バ ッ テ リ 電 圧 初 期 値 か ら の バ ッ テ リ 電 圧 の 降 下 し た 値 を 示 し て い る 。 右 縦 軸 は ど の 状 態 に あ る か を 示 し て い る 。 そ し て 、 横 軸 は 時 間 を 示 し て い る 。 両 図 の 比 較 に よ り 、 低 消 費 電 力 化 を 図 っ た プ ロ グ ラ ム の 方 が プ ロ グ ラ ム を 実 行 す る 際 に バ ッ テ リ 電 圧 の 低 下 が 少 な く 、 低 消 費 電 力 化 は 成 功 し た と い え る 。 ラ イ ン ト レ ー ス を 行 っ て い る の は 、 グ ラ フ に お け る 状 態 1、5 で あ る 。そ の 際 の バ ッ テ リ 電 圧 は 低 消 費 電 力 を 考 慮 し て い な い も と の プ ロ グ ラ ム の 方 が よ り 降 下 し て い る 。 ま た ア ス ペ ク ト に よ り 光 セ ン サ の 消 灯 を す る こ と に し た の は 、 状 態 2、 3、 6、 7、 8 で あ る 。 図 5 で は ラ イ ン ト レ ー ス 方 式 も 変 更 し て い る た め 光 セ ン サ の 消 灯 に よ り 効 果 が あ っ た の か ど う か が 判 断 し に く い 。 そ こ

(5)

で 、 ア ス ペ ク ト に よ り 効 率 的 な 光 セ ン サ の 制 御 の み を 組 み 込 ん だ プ ロ グ ラ ム を 別 途 用 意 し て( 図 6)、確 か に 低 商 品 電 力 化 に 寄 与 し て い る こ と を 確 認 し た 。 図 4: 省 電 力 性 を 考 慮 し な い も と の プ ロ グ ラ ム 実 行 に お け る 電 圧 推 移 図 5: 両 ア ス ペ ク ト を 適 用 し た プ ロ グ ラ ム 実 行 に お け る 電 圧 推 移 図 6: 光 セ ン サ 制 御 ア ス ペ ク ト の み を 適 用 し た プ ロ グ ラ ム 実 行 に お け る 電 圧 推 移

3.3. 保 守 性 の評 価

低 省 電 力 化 の た め の 二 つ の 戦 略( ラ イ ン ト レ ー ス 方 式 変 更 、 光 セ ン サ 制 御 ) を そ れ ぞ れ 、 も と の プ ロ グ ラ ム に 対 し て AOP を 用 い ず に 直 接 実 装 し た 場 合 と 、 AOP を 用 い て 実 装 し た 場 合 で 、 そ の 実 装 に 必 要 な フ ァ イ ル 数 お よ び コ ー ド の ま と ま り 数 ( チ ャ ン ク 数 ) を 測 定 比 較 し た 。 そ の 結 果 を 表 1 に 示 す 。 AOP に お い て 、 実 現 フ ァ イ ル を ア ス ペ ク ト 唯 一 つ に ま と め ら れ る こ と に な っ た た め 、 従 っ て コ ー ド の ま と ま り も 単 一 と な り 、 低 消 費 電 力 化 を 実 現 す る コ ー ド が 散 ら ば る こ と な く モ ジ ュ ー ル 化 で き て い る こ と が 分 か る 。 こ の よ う に 低 消 費 電 力 化 を 実 現 す る コ ー ド を 集 約 で き た こ と で 、 プ ロ グ ラ ム の 修 正 、 拡 張 が 必 要 な 場 合 は ア ス ペ ク ト の み を 見 れ ば よ く 、 多 く の フ ァ イ ル を 見 る こ と が な い の で 保 守 が し や す く な る と い え る 。 ま た 、 も と の プ ロ グ ラ ム は 改 変 し て な い た め 、 プ ロ グ ラ ム の 再 利 用 性 は 高 い と い え る 。 ラ イ ン ト レ ー ス 方 式 等 の 低 消 費 電 力 化 の ア ス ペ ク ト に 関 し て も ポ イ ン ト カ ッ ト を 書 き 直 せ ば 、 他 の プ ロ グ ラ ム に も 適 用 可 能 で あ り 、 再 利 用 で き る 可 能 性 が あ る 。 表 1: 戦 略 実 現 コ ー ド の 散 ら ば り の 比 較 戦 略 の 実 装 方 法 ラ イ ン ト レ ー ス 光 セ ン サ フ ァ イ ル 数 コ ー ド ま と ま り( チ ャ ン ク )数 フ ァ イ ル 数 コ ー ド ま と ま り( チ ャ ン ク )数 直 接 4 5 2 3 AOP 1 1 1 1

(6)

4. お わ り に

本 稿 で は 、品 質 の 作 り こ み に お け る AOP の 応 用 と し て 、 単 体 テ ス ト 実 行 時 間 の 短 縮 を 目 的 と し た 単 体 テ ス ト フ レ ー ム ワ ー ク の マ ル チ ス レ ッ ド 化 と 、 ロ ボ ッ ト 制 御 プ ロ グ ラ ム の 低 消 費 電 力 化 を 目 的 と し た 制 御 ア ル ゴ リ ズ ム の 追 加 お よ び 変 更 の 事 例 を そ れ ぞ れ 報 告 し た 。 い ず れ の 事 例 に お い て も 、 品 質 要 求 の 満 足 ・ 品 質 向 上 を 達 成 し つ つ 、 保 守 性 を 維 持 あ る い は 向 上 さ せ る こ と に 成 功 し て お り 、AOP が 効 率 的 か つ 将 来 に お い て も 保 守 に 優 れ た 品 質 の 作 り こ み の 手 段 と し て 有 効 な こ と を 確 認 で き た と 考 え ら れ る 。 今 後 の 課 題 と し て 、 並 行 性 ・ 並 列 性 ・ 効 率 性 や 低 消 費 電 力 化 以 外 の 品 質 要 求 の AOP に よ る 扱 い の 検 証 や 、 そ れ ら の 実 現 に お け る 共 通 お よ び 特 有 の 課 題 や 定 石 の 蓄 積 と 整 理 が 挙 げ ら れ る 。 ま た 、 異 な る 品 質 特 性 間 の ト レ ー ド オ フ の よ う な 影 響 に つ い て も 追 加 検 証 し た い 。

文 献

[1] Gregor Kiczales, et al., “Aspect-Oriented Programming,” Proc. European Conference on Object-Oriented Programming, pp.220 -242, 1997. [2] 長 瀬 嘉 秀 , 天 野 ま さ ひ ろ , 鷲 崎 弘 宜 , 立 堀 道 亜 昭 , "AspectJ に よ る ア ス ペ ク ト 指 向 プ ロ グ ラ ミ ン グ 入 門 ", ソ フ ト バ ン ク パ ブ リ ッ シ ン グ , 2004. [3] 鷲 崎 弘 宜 , 高 橋 竜 一 , 村 上 真 一 , 大 橋 昭 , 吉 岡 信 和 , 石 川 冬 樹 , 久 保 淳 人 , 山 本 里 枝 子 , 小 高 敏 裕 , 錠 尚 史 , 鹿 糠 秀 行 , 杉 本 信 秀 , “デ ィ ペ ン ダ ビ リ テ ィ 確 保 に む け た ア ス ペ ク ト 指 向 技 術 動 向”, 情 報 処 理 学 会 第 168 回 ソ フ ト ウ ェ ア 工 学 研 究 発 表 会 , 2010.5. [4] JUnit, http://www.junit.org/

[5] Parallel JUnit, http://testng.org/doc/index.html [6] J. L. Sobral, "Incrementally Developing Parallel

Applications with AspectJ ," 20th International on Parallel and Distributed Processing Symposium (IPDPS), 2006.

[7] Doug Lea, “A Java Fork/Join Framework,” Proceedings of the ACM conference on Java Grande , 2000. [8] 大 橋 昭 , 久 保 淳 人 , 水 町 友 彦 , 江 口 和 樹 , 村 上 真 一 , 高 橋 竜 一 , 鷲 崎 弘 宜 , 深 澤 良 彰 ほ か , “ AOJS: JavaScript の た め の ア ス ペ ク ト 指 向 プ ロ グ ラ ミ ン グ ・ フ レ ー ム ワ ー ク ” , コ ン ピ ュ ー タ ソ フ ト ウ ェ ア , 岩 波 書 店 , Vol.28, No.3, pp114-131, 2011.

[9] Alexandre Duarte, et al., "GridUnit : Software Testing on the Grid," Proceedings of the 28th International Conference on Software Engineering (ICSE), pp.779-782, 2006. [10] 和 田 祐 介 , 大 森 洋 一 , 日 下 部 茂 , 荒 木 啓 二 郎 , “ JUnit 向 け 単 体 テ ス ト を 対 象 と し た MapReduce 型 並 列 分 散 実 行 フ レ ー ム ワ ー ク の 提 案”, 情 報 処 理 学 会 研 究 報 告 . ソ フ ト ウ ェ ア 工 学 研 究 会 報 告 2010-SE-168(5), 1-7, 2010. [11] 石 原 亨 , 冨 山 宏 之 , ” 低 消 費 電 力 化 ソ フ ト ウ ェ ア 技 術 ” , 組 込 み ソ フ ト ウ ェ ア シ ン ポ ジ ウ ム 論 文 集 , 2005(12), pp.188-190,2005. [12] 赤 山 聖 子 , 久 保 秋 真 , 久 住 憲 嗣 , 二 上 貴 夫 , 北 須 賀 輝 明 , “ ソ フ ト ウ ェ ア 初 学 者 へ の モ デ リ ン グ 教 育 に お け る MDD の 活 用 ”, 組 込 み シ ス テ ム シ ン ポ ジ ウ ム 2011 論 文 集 , 2011.

[13] Michael Gong, Charles Zhang, and Hans -Arno Jacobsen, “AspeCt-oriented C for Systems Programming with C,” AOSD 2007 Software Demonstration, 2007. http://www.aspectc.net/

参照

関連したドキュメント

情報理工学研究科 情報・通信工学専攻. 2012/7/12

ポートフォリオ最適化問題の改良代理制約法による対話型解法 仲川 勇二 関西大学 * 伊佐田 百合子 関西学院大学 井垣 伸子

関東総合通信局 東京電機大学 工学部電気電子工学科 電気通信システム 昭和62年3月以降

Instagram 等 Flickr 以外にも多くの画像共有サイトがあるにも 関わらず, Flickr を利用する研究が多いことには, 大きく分けて 2

理工学部・情報理工学部・生命科学部・薬学部 AO 英語基準入学試験【4 月入学】 国際関係学部・グローバル教養学部・情報理工学部 AO

清水 悦郎 国立大学法人東京海洋大学 学術研究院海洋電子機械工学部門 教授 鶴指 眞志 長崎県立大学 地域創造学部実践経済学科 講師 クロサカタツヤ 株式会社企 代表取締役.

物質工学課程 ⚕名 電気電子応用工学課程 ⚓名 情報工学課程 ⚕名 知能・機械工学課程

関谷 直也 東京大学大学院情報学環総合防災情報研究センター准教授 小宮山 庄一 危機管理室⻑. 岩田 直子