![]() |
[2009 年 9 月号] |
[技術講座]
本稿は、第 12 回組込みシステム開発技術展(ESEC2009)で発表した内容を再構成したものです。
前回の SysML に引き続き、今回はアーキテクチャ記述言語 AADL についてご説明します。
“The SAE Architecture Analysis &Design Language”(以下、AADL)は、主としてリアルタイムシステムのアーキテクチャを、分析・設計するために使用されるモデリング言語です。
本記事で後述しますが、AADLは、特にシステムの非機能的側面の検証への応用に適しています。また、システムのアーキテクチャを詳細に記述することを容易にします。
AADL は元々テキストベースの言語として設計されました。モデルをテキストで表現できるため、特別なツールを使わなくとも AADL のモデルを作成することができます。AADL の図式表記の仕様も後から追加で定義され、グラフィカルなモデリングも可能になっています。
OSATE、Topcased といったオープンソースのツールを利用して、AADL のモデルを作成することができます。
本記事に掲載している AADL モデルは、これらオープンソースのツールを使って作成したモデルです。図式表記の方が、コンポーネント間の関係等の理解が容易なため、ここではグラフィカルなモデルを使います。
従来は、システムが非機能的な要求を満たしているかどうか、アーキテクチャ設計の段階で検証することなく、開発を進めることが多かったのではないでしょうか。
もしアーキテクチャ設計の段階で、非機能的なリスクの存在を認識することができれば、プロトタイプを作成してリスクを低減することができます。しかしあまりプロトタイプに頼りすぎても、開発コストが多くかかるという弊害があります。
リスクの存在に気付かず開発を進めてしまうこともあります。このような場合、プロジェクトの終盤になって大きな問題が発見されるような事態も起こり得ます。
AADL の長所として、以下が挙げられます。
図1に、開発プロセス中における AADL の適用範囲を示します。AADL は、図中の工程のうち、特にソフトウェアアーキテクチャ設計の工程で威力を発揮します。
また、システムアーキテクチャ設計の工程も対象としており、ソフトウェアが動作するためのハードウェア・プラットフォームを記述することができます。
本稿では、AADL によるソフトウェアアーキテクチャ設計の例を示します。
AADL では、表1に示すような様々なコンポーネントを使ってアーキテクチャを表現します。AADL はハード・ソフトを区別なく包含する、抽象的な「システム」の概念を扱うことができます。またそれに加え、スレッド、デバイス等、より具体的な概念を使ってシステムを表現することができます。
それでは、AADL を用いたソフトウェアアーキテクチャ設計の工程を見ていきましょう。SysML に引き続き、コピー機を題材とします。
図2は、AADLの図式表現を用いてソフトウェアアーキテクチャを表したモデルです。
前回解説した SysML モデルの中に、コピー機制御部というブロックがありました。このコピー機制御部にソフトウェアを搭載する構造を設計しました(前編の図13参照)。図2の AADL モデルで表現しているのは、コピー機制御部に搭載するソフトウェアの構造です。
図2の全体が1つのプロセスを表しており、そのプロセスの内部に複数のスレッドを包含しています。黄色いひし形が単一のスレッドを表しており、ピンクの角の丸い矩形はスレッド群を表しています。
ここではコンポーネント間の接続やポート(コンポーネントの接続点)については、モデルに必要な全ての情報を表示することはせず、説明上重要と思われるもののみを表記しています。
ここでは表2のようなコンポーネントを抽出しています。
コンポーネント | 説明 |
---|---|
Copy | プロセス内の全スレッドを統括してコピー機としての機能を実現するためのスレッド |
DocFeeder | 原稿搬送部を制御するためのスレッド群 |
DocReader | 原稿読み取り部を制御するためのスレッド群 |
ImageDeveloper | 作像部を制御するためのスレッド群 |
PaperFeeder | 用紙搬送部を制御するためのスレッド群 |
UserInterface | ユーザインタフェース(操作パネル)とのやり取りのためのスレッド |
AADL を用いた非機能的検証の例として、フロー遅延時間分析について説明します。
フロー遅延時間分析は、AADL の言語要素であるフローを使って、遅延時間を計算する手法です。
例えば、以下のような問題に適用できます。
AADL はフロー遅延時間分析を支援する枠組みを提供します。
図3は、フローを追加した AADL モデルです。図中の赤い矢印が、フローを表しています。このフローは、スタートキー押下から原稿給紙指示までの制御の流れを表しています。フロー遅延時間分析を行なう際には、あらかじめフローが通過する各言語要素に対して、下記のような値をプロパティとして設定しておきます。
その上で、フローに沿ってプロパティ値を集計することによって、遅延時間を算出します。
図4では、スタートキー押下から読み取り準備完了までの制御に関係するフローを赤い矢印で、スタートキー押下から作像準備完了までの制御に関係するフローを青い矢印で、各々示しています。このようなフローを定義することで、読み取り準備完了までと作像準備完了までの、どちらの処理が律速するか、といった評価が可能になります。
図4の例では、UserInterface スレッドの周期や、UserInterface-Copy 間の接続の遅延時間といった値が複数回利用されています。このようにアーキテクチャを複数の観点から多面的に評価しようとすると、モデル中の一つの値が複数の観点から再利用されることになります。
AADLを使ってアーキテクチャのモデルを一度表現しておくと、アーキテクチャの一部を変更した時にも、アーキテクチャの多面的な評価を、一括して再実行することが容易になります。
SysML と AADL を比較すると以下のようになります。
SysML | AADL | |
---|---|---|
記述対象 | (ハード・ソフト含む)システム全般 | リアルタイムシステム(主にソフトウェア) |
最も効果的な開発工程 | システム・アーキテクチャ設計 | ソフトウェア・アーキテクチャ設計 |
典型的な使い方 | 概略から詳細へと思考を深めながらアーキテクチャを検討する | 検討済みのアーキテクチャを詳細に記述して、非機能要求を満たすか検証する |
理解容易性 | グラフィカルな表記で理解が容易 | 基本はテキスト表現であり、一瞥しての理解は難しいところがある。グラフィカルな表記では、表現されない情報もある。 |
ツール | 商用のツールが充実している | オープンソースのツールが利用可能 |
[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 |
|