![]() |
[2009 年 7 月号] |
[技術講座]
本稿は、第 12 回組込みシステム開発技術展(ESEC2009)で発表した内容を再構成したものです。
読者の皆さんはアーキテクチャ記述言語という言葉を聞いたことはありますか? これは読んで字の如く、アーキテクチャを記述するための言語のことです。
本記事では、SysML とAADL という 2 種類のアーキテクチャ記述言語について、その特徴や使い方等を、具体的な例を示しながら紹介していきます。
アーキテクチャとは何か、という問題は、古くからの問題であり、多くの関係者によって様々な定義が主張されてきた歴史があります。
現在では IEEE 標準 (IEEE1471) の中でアーキテクチャの定義が以下のように定められています。
「アーキテクチャとは、コンポーネント、コンポーネント間および環境との関係、またその設計と進化の指針となる原理に体現されたシステムの基本構造である」(IEEE1471)
やや難しそうな表現が含まれていますが、ここでは以下のような点をおさえておいてください。
アーキテクチャ記述言語は、
等のために使われます。
なぜ今、弊社オージス総研はアーキテクチャ記述言語に注目しているのでしょうか。
従来、弊社オージス総研では、UML モデルベース開発に関連する各種サービスに力を入れてきました。UML は、ソフトウェアの機能的側面の記述を得意としています。弊社では、ソフトウェアの機能的側面に限らずに、より広い範囲を網羅したサービスを提供していきたいと考えています。そこで弊社は、ソフトウェアの非機能的側面の扱いを支援するための言語として AADL に、システム全体を扱う言語として SysML に、各々期待をしています。
SysML はシステムエンジニアリング用の標準モデリング言語です。ここで「システム」とは、「複数の要素が互いに関連し合いながら、ある目的のために機能するもの」といった、やや抽象的な概念を指します。
例えば、プラント、ジェット機、複合機等、ハードウェアやソフトウェアを包含した様々なものを「システム」として捉えることができます。
SysMLは、このような「システム」の仕様化、分析、設計、妥当性確認や検証に用いられます。
仮に SysML のような標準モデリング言語を使わずにシステムを設計するとすると、どのように設計することになるでしょうか。この場合、日本語のような自然言語に、多くを頼りながらシステムを設計せざるを得ないでしょう。
自然言語に頼った場合、システム設計の成果物に以下のような問題が生じます。
SysML の優れた特徴として、以下が挙げられます。
これら、SysML の特徴と、その効果、前述した従来の問題点の対応関係を、図 5 に示します。
図 6 は、システム開発の一般的なプロセスを表す V 字モデルと呼ばれるものです[3]。SysML は、この中で特にシステムアーキテクチャ設計の工程を最も得意としています。この他、要求定義やソフトウェアアーキテクチャ設計の工程も対象とします。
本章では、コピー機を題材として、SysML を用いたシステムアーキテクチャ設計の工程について説明します。
以降では、図 7 のような手順に沿ってシステムアーキテクチャ設計を進めます。まずシステムのふるまいを分析し、その結果を踏まえてシステムの構造を分析します。更にその結果を踏まえて、ハードウェアとソフトウェアの役割分担を検討します。
図 8 は、コピー機のふるまいを表すアクティビティ図です。
※ 図中のオレンジ色の吹き出しや矢印は、アクティビティ図を補足するものであり、アクティビティ図の一部ではありません。
図 8 のアクティビティでは、用紙や原稿を入力としてコピー処理を行います。コピー処理済みの用紙や原稿が、このアクティビティの出力となります。
このアクティビティ図の中では、大きく 3 つの「流れ」が表現されています。この「流れ」を、図の中のオレンジ色の矢印で表現しています。3 つの流れのうち、原稿と用紙の流れは不連続的であるのに対し、画像断片の流れは連続的なものになっています。ここで「連続的」というのは、流れる複数の画像断片の間の時間的な距離が限りなくゼロに近づくことを意味します。例えば、ベルトコンベアのような流れを「不連続的」とすると、川の流れのような絶え間ない流れは「連続的」な流れとして表現します。
以上のように、SysML のアクティビティ図を使うと、電子的な情報だけでなく、物理的な物(例えば紙、流体等)の流れもシンプルに表現できます。
次に、ふるまいの分析の結果を踏まえ、内部ブロック図を使ってシステムの構造を検討します。内部ブロック図は、システムをブロック群の組み合わせとして表現する図です。ここではシステムを構成するブロック群を抽出していきますが、このとき、アクティビティ図の各アクション(処理)とブロックの対応を意識しながら進めます。
コピー機の例では、表1のようなブロックを抽出しました。
ブロック名 | 責務 |
---|---|
コピー機制御部 | コピー機全体を統括してコピー機の機能を実現する |
原稿搬送部 | 原稿を搬送する |
原稿読み取り部 | 原稿から画像を読み取る |
作像部 | 画像を用紙上に印刷する |
用紙搬送部 | 用紙を搬送する |
ユーザインタフェース | ユーザとの相互作用を行う |
これらのブロックを組み合わせて、図 9 のような構造を作成しました。
図 9 の中でやり取りされる物や情報の流れの概略を、図 10 に示します。
※ 図 10 中の黄色い吹き出しと赤い矢印は内部ブロック図を補足するものであり、内部ブロック図の一部ではありません。
以上のように、SysML の内部ブロック図を使うと、ブロック間の物や情報のやり取りをシンプルに表現できます。
これまでに検討したシステムの構造に基づいて、ハードウェアとソフトウェアの役割分担を検討します。このとき、実現コストや性能面等、いくつかの点から検討を加えます。
まず、ハードウェアの配置を検討します。
コピー機を構成するいずれのブロックもハードウェアを必要とすると考えられます。全てのブロックにハードウェアを割り当てることとし、これを示すために、図 11 のように全てのブロックに <<hardware>> ステレオタイプを付けました。
次に、ソフトウェアの配置を検討します。
ハードウェアと同様、ソフトウェアも全てのブロックに配置することが考えられます。この様子を図 12 に示します。このようにすると、各ブロックの独立性が高まり、高い性能が期待できそうです。しかしプロセッサを多く必要とする等、コスト的には不利になります。
そこで、図 13 のように、ソフトウェアをコピー機制御部のみに搭載することにして、集中管理方式を取ることにしました。このようにすると、性能は多少落ちるかもしれませんが、コストを抑えることができます。
ここでは補足として、パラメトリック図について取り上げます。
パラメトリック図は、性能や信頼性等の分析のために有用なダイアグラムです。システムが実現すべき性能等を制約として記述できます。数式が多用されるシステム(連続系システム等)で有効と考えられます。
今回はシステム全体の記述に適したアーキテクチャ記述言語、SysML をご紹介しました。
次回は非機能的側面に適したアーキテクチャ記述言語、AADL をご紹介します。どうぞお楽しみに!!
[1] Object Management Group, "OMG Systems Modeling Language (OMG SysML) Version 1.1", 2008-11-02, 2008
[2] Sanford Friedenthal, Alan Moore, Rick Steiner, "OMG Systems Modeling Language (OMG SysML) Tutorial", 2008
[3] 情報処理推進機構ソフトウェア・エンジニアリング・センター編, "【改訂版】組み込みソフトウェア向け開発プロセスガイド", 翔泳社, 2007
© 2009 Shigeru Suzuki |
|