アスペクト指向ソフトウェアにおけるアーキテクチャの文書化に関する研究
ß 静的構造図検査ツールの設計と実現 ß 加藤 敏夫

 宮田 和季
指導教員

はじめに
本研究室では 組込みソフトウェアのためのアスペク
ト指向ソフトウェアアーキテクチャスタイルとして  を提案している
現在  ではアーキテクチャの記述方法としていくつか手段があるが現在  の記法を基準としたアーキテクチャの記述法が提案されている に記法をもちいている理由として 世界的に広く普及しており直感的な理解が得られやすく  のツールも豊富にあるので実用性が高いということが挙げられる
しかし  の記述法においてセマンティクスの整理が現在行われてなく また セマンティクスを検査する方法も現在確立していない
本研究の目的は  の静的構造図における  のセマンティクスの整理  に基づいたアーキテクチャの静的構造図におけるセマンティクス検査を行うツールの開発である
本研究では  ツールで記述した  に基づいたアーキテクチャから中間形を生成するツールを作成した このツールを用いて静的構造図のシンタックスを検査するツールの作成を行い セマンティクスを検査するツールの作成を行う
この論文は 章・  章・ツールについて 章・考察という構成になっている 
本章では

  に付いて述べる   は 組み込みソフトウェアのアスペクト
指向ソフトウェアアーキテクチャスタイルである  では 組込みソフトウェアアーキテクチャを 並行に動作する状態遷移機械の集合として規定して  では 並行に動作する状態遷移機械
いる
が互いにメッセージを送り 協調動作を行う また  では  を用いてモジュール化を行っている       とはモジュール化を行う方法であり  つの が  つの  を持ち  が複数の  や を管理 協調動作を行っている 柴田 将志

野呂 昌満
並行状態遷移機械
並行に動作する状態遷移機械 以下  の構造を表したのが図  であるInterAspectDescription

並行処理状態遷移アプリケーションロジック
InterAspectDescription
遷移時のアクションアスペクトアスペクト間記述

 の構造
¯ 並行処理アスペクト
並行処理に関する処理を行う
¯ 状態遷移アスペクト状態遷移機械を持ち 状態遷移に関する処理を行う¯ アプリケーションロジックアスペクト
状態遷移時のアクション処理中の データアクセ
スに関する処理を行う¯ アスペクト間記述  !"#! " 以下
図

 #
各アスペクト間の関連を記述する¯ アスペクト間記述 遷移時のアクション状態遷移アスペクトが状態遷移するときのアクションを記述する
並行状態遷移機械では並行処理アスペクト 状態遷移アスペクト アプリケーションロジックアスペクトがアスペクト間記述によりメッセージ通信をおこない 協調動作することにより機能を実現している
アーキテクチャ記述
  のアーキテクチャの記述についての説明を行う
定義されているステレオタイプ
  のアーキテクチャを記述する際に定義されているステレオタイプを以下の表  に示す
以下のステレオタイプは  に付与するステレオタ
イプである
表

定義されているステレオタイプ$%!%&

ステレオタイプ

'"'"ステレオタイプ
は  がいくつか

の   に対し管理 協調動作を行う場合に用いられるス テ レ オ タ イ プ
 は  が 外 部 の  に た い し て メ ッ セ ー ジ を 送 る こ と で協調動作を行う場合に用いられる
ま た  が 
 両方の動作を行う場合は両方のステレオタイプが付与することになる 静的構造図の記法
  ではアーキテクチャの静的な記述法として コンポーネント図を用い記述を行っている 図は  で用いられているアーキテクチャの例である

 の関連を表すクラス図では 各  内における が管理しているコンポーネントを一つのクラスとして考え  が管理している各コンポーネントの関係を示すものである
クラス図を用いている理由は関連の表記方法が多くコンポーネント図では明記出来ない関連や集約 汎化等の図式経路が明記可能だからである

ツールの設計と実現
本研究ではセマンティクス検査ツールを作成する手順として以下の手順をふまえ作成を行うことにした

 入力形式の決定
 中間形生成ツールの設計と実現
 シンタックス検査ツールの設計と実現
 セマンティクス検査ツールの設計と実現

入力形式の決定
本研究で作成するセマンティクス検査ツールは 
ツールに依存しないツールの作成を目的としており つのファイル形式を入力として考えた¯ ( ファイル¯ ( ファイル( ファイルはメタモデルの交換形式としてつかわれているファイル形式である しかし 本研究で作成する

図  アーキテクチャの例

 内にステレオタイプ



が付与しているコンポーネントは  である また 内に記述されているコンポーネントは  の が管理しているコンポーネントである アセン
ブリコネクタで接続されているコンポーネントの関係は要求インターフェース側が提供インタフェース側のコンポーネントを  を用いて管理しているものである
また  が管理する   の関係を表した図をクラス図として各  ごとに一つのダイアグラムを作成する の関連を表すクラス図の例が図 である

ツールに対して必要な情報がかけていることから本研究の入力形式としては不適切であった
次に ( ファイルを入力形式として考えた場合 本研
究で作成するツールに対し必要な情報全てが含まれており 多くの  ツールが ( ファイルを出力出来ることから入力形式として ( ファイルを採用した

中間形生成ツールの設計と実現
次に入力された ( ファイルから中間形を生成するツールの作成を行った
まず我々は 中間形のデータ構造の設計を行った
まず アーキテクチャを記述する際にはダイアグラムが用意される次に  におけるコンポーネントの役割に付いて    が挙げられ は  が持っているものであり かつ  の  種として考えられる
最後に  は  に管理されるものである
以上のことから我々はデータ構造を作成した
作成しデータ構造を以下の図  に示す
データ構造
StaticDiagramCSTM
Policy - boolean
1..*

1
*
1

UMP
1

*

図

 の関連を表すクラス図 例

図  ツールのデータ構造

静的構造図から必要な情報
次に我々は静的構造図から必要な情報に付いて分析を行った 静的構造図からデータ構造のオブジェクトに対し必要な情報を以下に示す

 ダイアグラム名  の名前  の名前
 ダイアグラム #  の #  の #  が  であるかどうか
 どのようなステレオタイプが付与しているかまたデータ構造のオブジェクト間の関係に付いて必要な情報を以下に示す
) コンポーネントがどのコンポーネントを入れ子にしているのか アセンブリコネクタで接続されたコンポーネントの入れ子関係
* コンポーネントが  でのどの役割なのか+  と対応する  のクラス図ダイアグラ
ムとの対応関係 で必要な情報に対して 我々は ( ファイルからダイアグラム コンポーネントごとにオブジェクトを生成し 名前・#・ステレオタイプ等の情報をオブジェクトに格納を行ったの情報に対して  が  かどうかを判断するには以下の条件から判断を行った



データ構造
本ツールを用いて実際にデータ構造を構築した例を以下の図  に示すまず %#%, %' が  を持ち その  が    等の入れ子にしているものを木構造のようにデータを構築した
StaticDiagram
UMP1

UMP1Policy

ト同士の入れ子関係の情報を読み取ることが可能である
 の関係に付いてアセンブリコネクタで接続されているコンポーネントは ( ファイルから 提供側・要求側の # から対応する # を検出し提供側のコンポーネン
トが要求側のコンポーネントによって入れ子にされる* の関係に付いては ( ファイルからダイアグラムは識別が可能である   においては  を入れ子にしているか していないかから判別を行った
+ については  の名前とダイアグラムの名前とで対応付けを行った
最終的なデータ構造を以下の図 ) に示すUMP3

UMP2Policy

UMP4

UMP3Policy

UMP4Policy

CSTM2

CSTM3

CSTM1

図  データ構造 例

シンタックスチェック
本研究で作成した中間形生成ツールをもとに 静的構
造図において検査するべきシンタックスを以下に示す    はコンポーネントである  に  が  つある  にステレオタイプがある  にアセンブリコネクタを接続する際は常¯  に入れ子にされている¯ 他のコンポーネントを入れ子にしていない¯ ステレオタイプが付与している) の関係に付いては ( ファイルから コンポーネン

UMP2に提供インタフェースが接続される本研究で作成したシンタックス検査ツールで検査を行う
シンタックスエラーについて以下に記述する
検査方法

 ( の情報から    がコンポーネントであるかを検査することで検査を行う  のなかで  であるコンポーネントを検出し  の条件をみたしているかどうか検査を行う ( の情報から  に対しステレオタイプが付属しているかどうかを検出することで検査を行う ( ファイルのアセンブリコネクタの要求側と提供側の # を検出し もし要求側のコンポーネントが である場合にエラーを排出する

セマンティクスチェック
静的構造図においてセマンティクスチェックを行うべき項目として  に付与するステレオタイプが正しいものが付与しているかどうかを判別する必要がある

セマンティクスの整理
セマンティクス検査を行う際に 各ステレオタイプのセマンティクスの整理を行う必要があると考える 我々が各ステレオタイプに対してセマンティクスの整理を行った¯
複数の   を管理し 協調動作を行うコンポーネント¯外部の  や  に対して メッセージ間通信を行っているコンポーネント

図

ツールのデータ構造 

セマンティクス検査を行う方法として 次の方法が考えられる に関するステレオタイプのセマンティクス検査として アーキテクチャの静的構造図と各  に対応するクラス図から  に付与すべきステレオタイプの判別を行う方法が考えられる のクラス図において  が  と  を接続しているもの または  を含む  が外部にある  とメッセージ通信を行っている場合はステ を付与するものであると考える
レオタイプ
ま た  が い く つ か の  と  を 用いて機能を実現しているものはステレオタイを付与するものであると考えるプ 考察
本研究で作成したツール セマンティクス検査に対して考察を行う セマンティクス検査に関する考察
本研究ではセマンティクス検査まで行うツールは実現が出来なかったが 本研究で提案したセマンティクス検査の方法に付いて考察を行う
本研究では  に付与するステレオタイプのセマンティクス検査において  のクラス図からステレオタイプを判別する方法を提案した この手法において  のステレオタイプの判別は行えると考える しかし  のクラス図においてもシンタックス検査 セマンティクス検査を行う必要があると考えられる  のクラス図のシンタックス検査 のクラス図において検査するべきシンタックスを以下に示す  にステレオタイプ  がついている アセンブリコネクタで接続されているコンポーネントにはステレオタイプている  がついについてはアーキテクチャ全体の図からクラスに対して対応しているコンポーネントの情報を検出し 検査が可能であると考える  のクラス図のセマンティクス検査
また  のクラス図において検査するべきセマンティクスを以下に示す  が管理しているコンポーネントでダイアグラムが構成されている において アーキテクチャ全体の図から  が管理しているコンポーネントの情報を読み込み  が管理してくるコンポーネントでクラス図が構成されているかどうかの検査を行うことで可能であると考える
今後の課題として  のクラス図のシンタックスセマンティクス検査を行う機能を実現し 静的構造図のセマンティクス検査を行うツールの実現を行う必要がある ツールの汎用性に関する考察
我々が今回作成したダイアグラム情報提供ツールでは本研究で用いた  ツールが出力する ( ファイルのみにしか対応していないので汎用性はかなり低いという結論にいたった
ツールの汎用性を高めるのに以下の手法が考えられる 提案した図式表現のダイアグラムを記述可能なツールの作成
 様々な  ツールが出力した ( ファイルを読み込み必要な情報を提供出来るツールの作成
 の手法を実現するには  のアーキテク
チャの記述ができ  のセマンティクスを満たしていない図式表現をした場合エラーを出すツールを作成することで実現可能であると考えるの手法を実現するには様々な  ツールが出力した( ファイルを字句解析 構文解析を行い 統一的な記述に変換し出力を行い 変換したファイルを読み込み必要な情報を提供するツールを作成することで実現すること可能であると考える

おわりに
本研究では
  の静的構造図のアーキテクチャからコードの自動生成に対して情報を提供するツールの作成を行い 静的構造図のシンタックス検査ツールを実現した 次に 静的構造図で検査するべきセマンティ
クスチェックについて考え セマンティクスの整理を行った
最後に セマンティクス検査に付いての考察 ツールの汎用性の考察も行った
以上のことから 今後の課題であるセマンティクス検査ツールを実現する前段階のツールが実現できた
今後の課題は セマンティクスを検査するためのツールの作成が考えられ その実現に必要な  のクラス図におけるシンタックス検査 セマンティクス検査ツールの作成 また汎用性の高いツールの作成が考えられる

謝辞
本研究をすすめるにあたり 熱心な御指導をいただいた野呂昌満教授 有益なアドバイスをくださった沢田篤
司教授 蜂巣吉成講師 大学院生の皆さんに深く感謝致します また 年間共にがんばってきた野呂研究室 沢田研究室 蜂巣研究室のみなさんにも感謝致します

参考文献-. /01 %%,'2 3" 著 西原 裕善 監訳：
  仕様書  - . 株式会社オージス総研 オブジェクトの広場編集部：
その場で使えるしっかり学べる    - . $  %3,4 著 須賀 裕治 監訳：
5%6%7(   -. "% 8!'5%"% 9  " ! 4 * %!&