##1. はじめに
「Tomorrow's software testing for embedded systems~明日にでも訪れてしまう組込みシステムのテストの姿~」で登場するMBD(モデルベース開発)やMBT(モデルベーステスト)をイマイチ理解していない感じがあったのですが、たまたま本屋で手にした「Arduinoで学ぶ組込みシステム入門」がArduinoでモデルベース開発を謳っていて読んだところ、下記の理由でテストエンジニアやQAにおススメと思いました。
- コンピュータアーキテクチャの基礎的なところが整理されている
- モデルベース開発がわかる
- 組込みシステムを開発できるとテストツール開発やテスト自動化に役立つ
今時の大学生は組込みシステムの基礎的なところを大学で学べてちょっと羨ましいですね。
##2.コンピュータアーキテクチャの基礎的なところが整理されている
主なキーワードを以下に挙げます。
###2.1 ハードウェア
- コンピュータを構成する5大装置
- コンピュータに求められる性能とトレードオフ
- アーキテクチャ(フォン・ノイマン型、ハーバード型)
- CPUの構成要素(ALU、レジスタ、アキュムレータ、プログラムカウンタ、スタックポインタなど)
- 命令に関するもの(命令の種類、命令の実行サイクル、命令体系、パイプライン)
- 消費電力
- メモリの種類と入出力インターフェース
###2.2 ソフトウェア
- アプリケーション、デバイスドライバによるハードウェア制御、マルチタスク、組込みソフトウェアの階層構造
- リセット解除からプログラムがロードされて実行されるまでのシーケンス
- オブジェクトとセクション、コンパイルとリンク、ROM化
- メモリ配置(プログラム、スタック)
- 割込み処理
- プログラムの実行とメモリの状態
- プログラムの実行順序の制御
なお、スタック領域は登場するもののヒープ領域は登場しないことから本書のテーマはあくまでも(Arduinoを題材にした)組込みシステムであってOSを使う組込み機器の開発ではないことが読み取れます。
##3. モデルベース開発がわかる
5章~8章がモデルベース開発の話になります。
5章はモデリングとモデルの書き方です。状態遷移関数δや出力関数ωといった用語も登場します。順序機械の表現に用いられている状態遷移図や状態遷移表はテストの教科書でも出てきますが状態遷移表に出力の欄が追加されている記法はこういう書き方もあるのだなあと。
6章は組込みシステムの実装法です。システムを構築しようとするとモデル、ハードウェア制御、電子回路が登場して煩雑にならざるを得ないのですが、6.6節(順序機械の配列による実装)の実装はモデルとハードウェア制御が切り離されて見通しが良く、この方法を知れただけでもモトを取った感じです。この章のおかげでMBD/MBTの理解がだいぶ進みました。モデルそのものを実装できればテストしやすくなりますね。
7章はチャタリング除去やビジーウェイト、ポーリング、割込み、デッドロック、ビット演算といった、ソフトウェア開発の足回りが取り上げられています。
8章はテストの章です1。テスト技法は、動的テストとして同値分割、境界値分析、制御パステスト、状態遷移テストが取り上げられているほか、詳細は割愛されているものの静的テストとしてデータフロー解析やモデル検査、形式手法といったワードが登場します。章の最後はありがちな回路実装ミスやコーディングミスが紹介されています。
##4. 組込みシステムを開発できるとテストツール開発やテスト自動化に役立つ
組込みシステムの概要や仕組み、データの扱いは1章に、入出力のための主な電子部品は2.4節に、Arduinoを使った組込み機器の開発2は4章にまとまっているほか6章以降に適宜登場します。最後の9章で組込みシステムとパソコンの協調動作を題材にした実践的な組込みシステム開発が取り上げられています。
必ずしもArduinoでなくても構わないのですが代表的なArduinoであるUno R3はオリジナルが3,300円(税込)、互換品なら1,000円程度、ブレッドボードや各種電子部品を揃えても数千円程度と入手性が良く、自分は「ストップウォッチを使う性能テストを実ステップ300行に満たない自動テストシステムで自動化する」に使用しています。組込みシステムを開発できるとテストツールの開発やテストの自動化に役に立ちます。
##5. おわりに
これ一冊で、1)コンピュータアーキテクチャの基礎の振り返りができる、2)モデルベース開発がモデリングから実装、テストまで押さえられている、3)Arduinoを活用した組込みシステムの実装方法がわかる、と3度おいしい&大学の教科書なので基礎的なトピックスが多く賞味期限の長い本でした。本来の対象者である大学生だけでなくテストエンジニアやQAの方にもおススメです。