昨年11月、IPA(情報処理推進機構)より「組込みソフトウェア開発データ白書2019」が公開されました。
2012年の調査と比較しますと、「プロジェクト管理ツール」「構成管理ツール」「設計支援ツール」
「デバッグツール」「テストツール」で”利用有り”の割合が増加しています。
この10年足らずでさまざまなツールが組込みの開発現場で劇的に広まっていることがわかります。

■2019年発行(最新)
■2012年発行

今回の記事では、今後さらに需要が拡大していく開発支援ツール・テストツールについてご紹介します。
様々な変化に対応が求められる今だからこそ、あなたの開発スタイルに合ったツールを選んで効果を上げましょう。

プロジェクト管理ツール

プロジェクトの工程・スケジュール、タスク管理をするシステム。プロジェクトメンバーの作業量や作業負荷を「ガントチャート」や「ロードマップ」「カンバン」などで可視化することができ、問題点の把握・分析や、リソースの最適化を容易にすることができる。クラウドに対応したツールも多く、離れた開発拠点のメンバーの状況もリアルタイムに把握することが可能。アジャイル開発に適応したツールや、構成管理ツールと連携するツールも存在する。

最近では、プロジェクト管理ツールの枠に収まらない、組織全体のプロセスを管理できるような便利なツールも出てきている。

構成管理ツール

ソースコードや、設計書などの文書といったファイルが、「いつ」「どこが」「誰によって」変更されたのか、その履歴を管理するツール。Git や Subversion が有名。
成果物の構成を記録するため、不具合が発生した際には過去の構成を再現することができる。また、ソースコード毎にどの工程にあるのか(実装中なのか、テスト中なのか、完了なのか)を管理できるツールもある。
さらに、構成管理ツールと、JenkinsなどのCI(継続的インテグレーション)ツールを組み合わせ
日々のビルドとテストを自動化することも可能。開発者に依存した作業の削減・ビルドやテストの実施漏れを
防ぐことができる。

設計支援ツール

設計支援ツールには、代表的なものとして、モデリング/シミュレーションツール、ソースコードの構造解析ツールがある。

モデリング/シミュレーションツール

ハードウェアに実装する前にシステムをデザインし、シミュレーションできるツール。作成したモデルと同じ動きをするコードを自動生成することも可能。

構造解析ツール

ソースコードを解析した結果から、制御フロー、関数の呼び出し関係など、グラフィカルに表示。大規模開発や、派生開発において、他人の書いたソースコードを理解するのに有効。

デバッグツール/テストツール

デバッガ

プログラムの不具合修正(デバッグ)を支援するツール。
バグの調査をするために、プログラムを一時停止させる「ブレークポイント」の機能や、プログラムを1ステップずつ実行する「ステップ実行」、プログラムが使っている変数の内容などを表示させたりする機能がある。

静的解析ツール

ソースコードを解析し、ソースコード上に存在するさまざまな問題を、プログラムを実行せずに発見するツール。文や宣言を検証するものから、プログラム全体を解析するものまで、様々なツールが存在する。
次のようなテストを実現できる。

コーディング規約チェック:

ソースコードがMISRAやAUTOSAR、CERTなどのコーディング標準に準拠しているか解析。複数のルールから、自社のコーディング規約に沿ったルールセットを作成できるツールも。

メトリクス計測:

ソースコードの規模や複雑さ、オブジェクト間の結合度などを、数値として計測する手法。可読性・保守性の悪いソースコード、バグが潜在しやすいソースコードを発見することができる。

セキュリティテスト:

脆弱性の原因となるパターンを探したり、処理フローを静的にシミュレートすることで、ソースコード内に潜む脆弱性を発見し、指摘。

動的テスト(解析)ツール

ハートランド・データの DT+ に代表されるような、動作するソフトウェアを対象として、テスト設計やテスト実行の結果確認を支援するツール。
次のようなテストを実現できる。

トレースデバッグ:

CPUを停止せずにプログラムの実行履歴を記録・分析するデバッグ手法。再現性の乏しい不具合の解析や、タイミングに依存する不具合の解析に有効。

動的カバレッジ解析:

結合テスト・システムテストフェーズでの実機テストの中でカバレッジを取得する手法。テストの実施によって、どれだけのコードを網羅できたか確認することができるため、テスト進捗の指標にすることができる。

実行時間計測:

取得したデータから、関数などの実行時間分析が可能。処理時間の最小/最大値や、実行時間のばらつきを可視化することができるため、ボトルネックの改善やパフォーマンス向上に有効。

関連ツール:動的テストツール DT+

テスト自動化ツール

毎回繰り返す作業を人の手を介さずに、自動で実施するためのツール。
次のようなテストを実現できる。
・デスクトップやブラウザ、モバイルにおけるユーザーの操作をキャプチャし、
リプレイすることで、UIテストを自動化。
・ロボットによって、組込み機器のキー操作やタッチパネル操作を自動化。

セキュリティテストツール

近年、IoT機器の脆弱性を狙ったサイバー攻撃が増加しており、セキュリティ対策が重要になっている。
前項で紹介した「静的解析」によるテストの他、疑似的にハッキング攻撃を行うDTST、システムを実際に攻撃して侵入を試みるペネトレーションテストといった、動的テストの手法がある。
機能テストのバックグラウンドでセキュリティテストを実行できるツールも登場している。

まとめ

今回ご紹介したツールはごく一部ですが、効率化・自動化を促進する開発支援ツール・テストツールもどんどん登場しています。また、一つのツールだけではなく、ソフトウェアの開発工程に応じたツールを導入して、改善や効率化に取り組まれているお客様が増えています。

社会全体として様々な変化に対応しなければいけない今だからこそ、これからの開発スタイルを再定義し、いろいろなツールを試してみてはいかがでしょうか。

【無料セミナー動画】動的テストの事例紹介!

組込み機器開発特有のソフトウェアデバッグ、テストにお困りではありませんか?
初期化処理や処理時間、複数CPUのシーケンス処理など、どのようにテストしていますか?
複数の機器で構成されたシステムでは、
「機器同士のやりとりを把握することができない」
「デバッガを使ってブレークをかけることができない」
といった問題にぶつかり、ソフトウェア内部の動きを把握することは困難です。
そこで今回は、動的テストツールDT+ユーザー様を講師にお迎えし、
このような課題に対する活用事例をご紹介いたします。

ご視聴はこちらから!

動的、継承。DT+シリーズ、新登場。

今までのDTシリーズの機能はそのままに、 パーソナルなデバッグから、テストの自動化、リモートテストまで、 多様な開発スタイルに幅広く対応できる、進化する動的テストツール、 それがDT+。

> 詳細はこちら