ObectSquare [2009 年 9 月号]

[技術講座]


アーキテクチャ記述言語 SysML , AADL

 

後編)非機能的側面に適したアーキテクチャ記述言語 「AADL」

 
株式会社オージス総研
組み込みソリューション部
鈴木 茂

 

本稿は、第 12 回組込みシステム開発技術展(ESEC2009)で発表した内容を再構成したものです。

1. AADL

前回の SysML に引き続き、今回はアーキテクチャ記述言語 AADL についてご説明します。

1.1. AADLの概要

“The SAE Architecture Analysis &Design Language”(以下、AADL)は、主としてリアルタイムシステムのアーキテクチャを、分析・設計するために使用されるモデリング言語です。

本記事で後述しますが、AADLは、特にシステムの非機能的側面の検証への応用に適しています。また、システムのアーキテクチャを詳細に記述することを容易にします。

AADL は元々テキストベースの言語として設計されました。モデルをテキストで表現できるため、特別なツールを使わなくとも AADL のモデルを作成することができます。AADL の図式表記の仕様も後から追加で定義され、グラフィカルなモデリングも可能になっています。

OSATE、Topcased といったオープンソースのツールを利用して、AADL のモデルを作成することができます。

本記事に掲載している AADL モデルは、これらオープンソースのツールを使って作成したモデルです。図式表記の方が、コンポーネント間の関係等の理解が容易なため、ここではグラフィカルなモデルを使います。

1.2. 従来の問題点

従来は、システムが非機能的な要求を満たしているかどうか、アーキテクチャ設計の段階で検証することなく、開発を進めることが多かったのではないでしょうか。

もしアーキテクチャ設計の段階で、非機能的なリスクの存在を認識することができれば、プロトタイプを作成してリスクを低減することができます。しかしあまりプロトタイプに頼りすぎても、開発コストが多くかかるという弊害があります。

リスクの存在に気付かず開発を進めてしまうこともあります。このような場合、プロジェクトの終盤になって大きな問題が発見されるような事態も起こり得ます。

1.3. AADLの長所

AADL の長所として、以下が挙げられます。

1.4. AADLと開発プロセス

図1に、開発プロセス中における AADL の適用範囲を示します。AADL は、図中の工程のうち、特にソフトウェアアーキテクチャ設計の工程で威力を発揮します。

また、システムアーキテクチャ設計の工程も対象としており、ソフトウェアが動作するためのハードウェア・プラットフォームを記述することができます。

図 1 : AADL と開発プロセスの関係
図 1 : AADL と開発プロセスの関係

本稿では、AADL によるソフトウェアアーキテクチャ設計の例を示します。

1.5. AADLにおけるコンポーネント

AADL では、表1に示すような様々なコンポーネントを使ってアーキテクチャを表現します。AADL はハード・ソフトを区別なく包含する、抽象的な「システム」の概念を扱うことができます。またそれに加え、スレッド、デバイス等、より具体的な概念を使ってシステムを表現することができます。

表 1 : AADLにおけるコンポーネント
表 1 : AADLにおけるコンポーネント

1.6. ソフトウェアアーキテクチャ設計

それでは、AADL を用いたソフトウェアアーキテクチャ設計の工程を見ていきましょう。SysML に引き続き、コピー機を題材とします。

1.6.1 ソフトウェアの構造の検討

図2は、AADLの図式表現を用いてソフトウェアアーキテクチャを表したモデルです。

前回解説した SysML モデルの中に、コピー機制御部というブロックがありました。このコピー機制御部にソフトウェアを搭載する構造を設計しました(前編の図13参照)。図2の AADL モデルで表現しているのは、コピー機制御部に搭載するソフトウェアの構造です。

図2の全体が1つのプロセスを表しており、そのプロセスの内部に複数のスレッドを包含しています。黄色いひし形が単一のスレッドを表しており、ピンクの角の丸い矩形はスレッド群を表しています。

ここではコンポーネント間の接続やポート(コンポーネントの接続点)については、モデルに必要な全ての情報を表示することはせず、説明上重要と思われるもののみを表記しています。

図 2 : コピー機制御部のソフトウェアの構造
図 2 : コピー機制御部のソフトウェアの構造

ここでは表2のようなコンポーネントを抽出しています。

コンポーネント説明
Copyプロセス内の全スレッドを統括してコピー機としての機能を実現するためのスレッド
DocFeeder原稿搬送部を制御するためのスレッド群
DocReader原稿読み取り部を制御するためのスレッド群
ImageDeveloper作像部を制御するためのスレッド群
PaperFeeder用紙搬送部を制御するためのスレッド群
UserInterfaceユーザインタフェース(操作パネル)とのやり取りのためのスレッド
表 2 : コピー機制御部プロセス内部のコンポーネント
1.6.2 フロー遅延時間分析

AADL を用いた非機能的検証の例として、フロー遅延時間分析について説明します。

フロー遅延時間分析は、AADL の言語要素であるフローを使って、遅延時間を計算する手法です。

例えば、以下のような問題に適用できます。

AADL はフロー遅延時間分析を支援する枠組みを提供します。

 

図3は、フローを追加した AADL モデルです。図中の赤い矢印が、フローを表しています。このフローは、スタートキー押下から原稿給紙指示までの制御の流れを表しています。フロー遅延時間分析を行なう際には、あらかじめフローが通過する各言語要素に対して、下記のような値をプロパティとして設定しておきます。

その上で、フローに沿ってプロパティ値を集計することによって、遅延時間を算出します。

図 3 : フローの定義
図 3 : フローの定義

図4では、スタートキー押下から読み取り準備完了までの制御に関係するフローを赤い矢印で、スタートキー押下から作像準備完了までの制御に関係するフローを青い矢印で、各々示しています。このようなフローを定義することで、読み取り準備完了までと作像準備完了までの、どちらの処理が律速するか、といった評価が可能になります。

図 4 : 律速評価のためのフローの定義
図 4 : 律速評価のためのフローの定義

図4の例では、UserInterface スレッドの周期や、UserInterface−Copy 間の接続の遅延時間といった値が複数回利用されています。このようにアーキテクチャを複数の観点から多面的に評価しようとすると、モデル中の一つの値が複数の観点から再利用されることになります。

AADLを使ってアーキテクチャのモデルを一度表現しておくと、アーキテクチャの一部を変更した時にも、アーキテクチャの多面的な評価を、一括して再実行することが容易になります。

2. SysMLとAADLの比較

SysML と AADL を比較すると以下のようになります。

SysMLAADL
記述対象(ハード・ソフト含む)システム全般リアルタイムシステム(主にソフトウェア)
最も効果的な開発工程システム・アーキテクチャ設計ソフトウェア・アーキテクチャ設計
典型的な使い方概略から詳細へと思考を深めながらアーキテクチャを検討する検討済みのアーキテクチャを詳細に記述して、非機能要求を満たすか検証する
理解容易性グラフィカルな表記で理解が容易基本はテキスト表現であり、一瞥しての理解は難しいところがある。グラフィカルな表記では、表現されない情報もある。
ツール商用のツールが充実しているオープンソースのツールが利用可能
表 3 : SysMLとAADLの比較

3. 参考文献

[1] An SAE International Group, "ARCHITECTURE ANALYSIS & DESIGN LANGUAGE (AADL)", AS5501, 2004
[2] An SAE International Group, "SAE Architecture Analysis and Design Language (AADL) Annex Volume 1", AS5506/1, 2006
[3] 情報処理推進機構ソフトウェア・エンジニアリング・センター編, "【改訂版】組み込みソフトウェア向け開発プロセスガイド", 翔泳社, 2007

 


© 2009 Shigeru Suzuki
Prev. Index
Prev. Index