モデルベースによるアジャイルな組み込みシステム開発(その2)
皆さま、こんにちは。
IDAJの小川です。
前回は、組み込み開発へのアジャイル開発導入に対する技術的な課題についてご説明しましたので、今回は、これら課題を解決するソリューションとなり得るモデルベース開発環境Ansys SCADEをご紹介します。
今回の記事を通して、開発者の皆様が実際に作業するイメージをおおまかにつかんでいただき、ツール選定の際のご参考になればと考えています。
モデルベース開発環境Ansys SCADEによるアジャイル開発
モデルベース開発とは、グラフィカルなモデルによってソフトウェア要件を明確にし、見える化することで、モデルシミュレーションによる検証と、モデルからのコード自動生成によって開発期間を飛躍的に短縮し、ソフトウェアの品質を向上させる開発手法です。
弊社で取り扱っているAnsys SCADEは、形式言語を用いたモデルベース開発環境であり、DO-178C Level-A(DO-331 TQL-1)、IEC61508:2010 SIL 3、ISO26262:2011 ASIL D、EN50128(IEC62279):2011 SIL 3/4といった各種機能安全規格に対応しています。

Ansys SCADEのソリューション全体像
Ansys SCADEにおいてとりわけ特徴的なのが、モデリング言語が形式言語であることです。
形式言語とは、構文と意味(解釈)が厳密に定義された言語であり、プログラミング言語に代表される厳密な機械的解釈のみが成り立つ言語です。
Ansys SCADEではこの形式言語で記述されたモデルからコード生成を行うことで、モデルと生成コードの振る舞いが完全に一致することを保証しています。
つまりモデルレベルで検証を行うことが、コードレベルの検証を実施したのと同等の価値を持つことになり、生成コードに対するコードレビューや単体テスト、Back-to-Backテスト、コードカバレッジ解析を省略できるという大きなメリットがあります。これによって、煩雑で時間のかかるコードレベルの検証を大幅に削減することが可能となり、エンジニアがより設計に集中できる開発環境を提供します。
この点が準形式言語と呼ばれるUML、SysML、MATLAB/Simulink、LabVIEWなどのモデリング言語との大きな違いです。

準形式言語と形式言語モデルの検証工程の違い
前回までに取り上げたアジャイル開発の導入における課題に対して、Ansys SCADEが有効である点をご説明します。
メリット(1)モデルシミュレーションによるテスト駆動開発の実現
モデルベース開発のメリットの1つは、モデルシミュレーションによるソフトウェアの検証が可能であることです。
モデルシミュレーションによって設計段階での検証が可能になり、後工程であるハードウェアを使った検証の工数短縮につながる、いわゆる検証工程のフロントローディングを実現します。このほか、モデルシミュレーションはハードウェアが完成するまでソフトウェアの検証ができないという問題に対しても有効です。
ハードウェアに相当する物理モデルは、特性が単純なものであればAnsys SCADEで自作することができますが、自作するには複雑すぎる場合、対象の特性に適したCAEツールを使用すると効率的なモデル化が可能です。
IDAJでも、1DシミュレーションにはGT-SUITE 、3DシミュレーションはCONVERGE、Ansys Fluent、iconCFDといった各種ツールを取り扱っており、Ansys SCADEはFMI(Functional mockup Interface)と呼ばれるシミュレーションツール連携のための標準規格に対応しているため、様々なCAEツールとのFMI連成シミュレーションが可能です。
これによってテスト・ファーストに必要なテストシナリオを、CAEツールとのFMI連成によって得られるハードウェア相当の応答として取得することができるのです。
またAnsys SCADEを使うと、テスト自動化に関するテストコードの実装は不要です。
Ansys SCADEは、モデルシミュレーションの自動実行機能が充実しているため、機能単位で実装したモデルから任意の機能を選択して個別にシミュレーションを実行することができます。
このとき、入力値に対する出力の期待値といった機能に対するテストシナリオだけを用意すれば、シミュレーションによる単体テスト、回帰テスト、結合テスト、モデルカバレッジを自動実行します。
つまり、機能実装したモデルに対してテストシナリオを設定するだけで自動実行の準備が整うため、一般のアジャイル開発で必要なテストコードの実装に相当する作業が不要となるのです。
以上のように、Ansys SCADEのモデルシミュレーションは、組み込み環境におけるテストシナリオ作成とテスト自動化に対して有効で、組み込み環境におけるテスト駆動開発の実現へのハードルを大幅に下げることができます。
メリット(2)構造化設計とアプリケーション層特化がもたらすリファクタリングの容易性
組み込み環境でリファクタリングが困難な理由として、プログラムのモジュール化が徹底しにくいことと、ドライバAPIやレジスタなどのハードウェアのグローバル記憶域に依存しやすいコードになりがちであることをあげました。
続いて、Ansys SCADEがこれらの問題にどの程度有効であるかについてご説明します。
Ansys SCADEのモデル構成は構造化設計がベースになっていますので、機能単位のモジュール化を自然に実現することができます。

Ansys SCADEのモデル構成
このモジュールは“オペレータ”と呼ばれ、生成コードはC言語の関数に対応し、インターフェースが関数の引数に対応します。
Ansys SCADEでは個別の機能に対してオペレータを作成し、オペレータ同士の接続やサブオペレータの呼び出しによってモデル化します。またグローバル変数に相当するデータは存在せず、オペレータ同士のデータの受け渡しはインターフェースを通してのみ行われます。
これによってオペレータ同士の独立性が高まるため、オペレータ内のロジック変更や呼び出し順序を変更しても、それが外部のオペレータの振る舞いには影響を与えることはありません。
つまりAnsys SCADEを使用することが自然と構造化設計を徹底することにつながり、アジャイルの要求の追加・変更に対しても柔軟に変更が可能なソフトウェア設計が可能となるのです。
ドライバAPIなどの使用がリファクタリングを困難にすることに対しては、Ansys SCADEのモデル化の対象レイヤーがアプリケーション層に特化しているため、ハードウェアに依存したAPIやレジスタの呼び出しはモデル内では基本的には禁止されていることが有効に働きます。

Ansys SCADEの適用範囲
Ansys SCADEが対象とするのは、一定時間内に応答を返すことを繰り返すシステムであるリアクティブシステムであり、モデルから生成するコードはインテグレーション環境(生成コードの搭載先)においてサイクリックに呼び出されることを前提にしています。
またハードウェアやOSに依存しないアプリケーション層のみを適用範囲とするため、ハードウェアのAPIやレジスタへのアクセスは行われません。
つまり、ハードウェアのAPIやレジスタの情報は生成コード呼び出し時に入力され、生成コードからの出力は生成コード実行後にハードウェアのAPIやレジスタに反映されます。
これによってハードウェアを動かすコードと、機能を提供するアプリケーション側のコードが分離された構造が得られるため、リファクタリングの対象となる処理順序やモジュール構造の変更はAnsys SCADEの生成コード、すなわちモデルのみを変更すればよく、ハードウェア側を気にする必要の無いリファクタリングが可能となるのです。
続いてAnsys SCADEのメリットをさらに生かしたアジャイル開発を実現する手段となる、Ansys SCADEによるCI(継続的インテグレーション)の環境構築についてご説明します。
Ansys SCADEによるCI環境の構築
CIとは、Continuous Integrationの略で、継続的インテグレーションと呼ばれています。
CIでは開発者が自分のコード変更を頻繁に構成管理ツールのリポジトリにコミットして、その度に自動化されたビルドとテストが実行されます。
アジャイルの小さなサイクルでインテグレーション(ソフトウェアの統合)を繰り返し行い、エラーを素早く検出して修正することによって、ソフトウェアをより迅速に開発できるようになります。
このCIのソースコードのコミット、マージ、ビルド、テストのサイクルは、その構築を支援するCIツールを使って実現します。
CIツールは有償・無償に限らず様々に提供されていますが、どのツールを使うにしても、ソースコードのコミット、自動ビルド、自動テストについてはユーザーがセットアップする必要があります。
コミット
アジャイルでは、ソースコードを開発チーム内で共有することが推奨されており、それにはソースコードのバージョン管理ツール(構成管理ツール)が使用されます。開発者が編集したソースコードを構成管理ツールに送信することをコミットと呼びます(ツールによって作業名は異なりますが、ここではコミットと呼びます)。
CI環境においては、開発者が独立的にコミットしたソースコードがマージされて自動ビルドが実行されます。
モデルベース開発では、開発者が編集するのはソースコードではなくモデルです。このモデル編集に使用するのが「Ansys SCADE Suite」というソフトウェアで、Ansys SCADE Suiteではモデルを構成するファイルがモジュール(オペレータ)単位で分割されているため、編集したオペレータに対するモデルファイルを構成管理ツールにコミットすることができ、構成管理ツールによるモデルの共有とマージが可能となります。
自動ビルド
一般にソースコードの自動ビルドには、使用するコンパイラのバッチコマンドをCIツールに登録しなければなりません。
これに対してAnsys SCADE Suiteではビルド実行のためのコマンドを記述する必要はなく、次工程の自動テストのコマンド実行時にビルドが自動的に実行され、テスト対象のオペレータに対するシミュレーション実行ファイルが作成されます
したがってAnsys SCADE Suiteを使用した場合には、ビルドに関してCIツールに設定することはありません。
自動テスト
自動テストは、テスト・ファーストによって、開発者のソースコード編集段階ですでに単体テストが実施されていますが、ここではそれに加えて既存機能の回帰テスト、機能間の結合テスト、システム全体の総合テストまでが実行されます。
ソースコード編集によるシステム開発では、これらの各種テストに対するテストシナリオと、テストコード作成が必要です。
Ansys SCADEにおいて各種テストを実施するのは「Ansys SCADE Test」というソフトウェアです。
Ansys SCADE Testでは、Ansys SCADE Suiteのモデル内のテスト対象オペレータに対してテストシナリオを設定して、自動テストを実行します。CI構築のためには、このテストシナリオの設定と、各種オペレータに対するモデルシミュレーションのバッチコマンドを登録しなければなりませんが、テストコードの記述などは不要です。
以上のCIの各工程にAnsys SCADEを適用した場合の運用イメージは以下に示す通りです。

Ansys SCADEによるCI環境の運用イメージ
CI環境上で開発者が行うのは、自身が編集したモデルを構成管理ツールにコミットするのみで、あとはCI環境上でモデルのマージ、ビルド、テストが全て自動実行されることになります。
ビルドもしくはテスト実行時にエラーが発生した場合には、関与する開発者全員にメール等で通知されます。
CI環境さえ構築しておけば、不具合の早期発見につながり、また影響範囲が小さい段階で修正できるようになるため、リリースまでにかかる修正コストを削減することができ、またテストの自動化によってテストの頻度が上がるため、ソフトウェア品質も向上します。
アジャイル開発の強固な基盤となりうる環境を構築し、組み込みシステムに対してはテスト・ファーストとリファクタリングが実施可能となり、CI環境構築のセットアップも容易なAnsys SCADE。
Ansys SCADEとアジャイル開発への適用について、ご興味がございましたらぜひお気軽にお問い合わせください!
Ansys SCADEに関する詳細については、是非過去のブログ記事もご参照ください。
関連ブログ(記事)
認証取得済みコード生成機能を核とした、組み込みソフトウェアのモデルベース開発環境「AnsysSCADE」 のご紹介(その1)
認証取得済みコード生成機能を核とした、組み込みソフトウェアのモデルベース開発環境「Ansys SCADE」 のご紹介(その2)
認証取得済みコード生成機能を核とした、組み込みソフトウェアのモデルベース開発環境「Ansys SCADE」 のご紹介(その3)
無料オンラインセミナー(Webinar)
弊社では、Ansys SCADEにご興味のあるお客様を対象に、常設で下記のオンラインセミナーを開催しています。
「開発責任者・管理職・シニアエンジニア様向けAnsys SCADEご紹介セミナー」
本セミナーでは、普段、Ansys SCADEを操作されることはなくても、組み込みソフトウェア開発を統括・推進されている開発責任者・管理職・シニアエンジニアの皆様に、Ansys SCADEがどのようなシーンでお役に立つのかをわかりやすくご説明しています。IDAJは単にソフトウェアのご提供だけでなく、機能安全規格に準拠した開発プロセスへのツール適用や効率的なモデルの作成などをコンサルティングサービスとしてご提供します。ぜひご都合の良い時間にご視聴いただければ幸いです。
■オンラインでの技術相談、お打合せ、技術サポートなどを承っています。下記までお気軽にお問い合わせください。ご連絡をお待ちしています。
株式会社 IDAJ 営業部
Webからのお問い合わせはこちら
E-mail:info@idaj.co.jp
TEL: 045-683-1990