組み込みソフトがこの10年で変わったこと、変わらないこと:山浦恒央の“くみこみ”な話(MONOist10周年特別寄稿)(3/3 ページ)
MONOist開設10周年に合わせて、MONOistで記事を執筆していただいている方々からの特別寄稿を掲載していきます。第1弾は、間もなく連載100回を迎える「“くみこみ”な話」を執筆していただいている山浦恒央氏の寄稿です。
4.これから考えるべきこと
組み込み製品が社会の根幹を形成する今、以下のことが重要になると筆者は個人的に考えています。
4.1 品質のカプセル化
ソフトウェアの生産性と品質をどのように向上させるか? この緊急課題に対し、2つのアプローチがあります。1つは、単位時間当たりに、より多くのソースコードを書き、たくさんのテスト項目を消化すること。もう1つは、ソースコードをなるべく書かず、また、テストもしないことです。
筆者が注目するのは後者で、オブジェクト指向の考え方を「機能」と「品質」の両方に適用し、「機能のブラックボックス化」「品質のブラックボックス化」を進めることです。再利用において、「機能の再利用」に注目するだけでなく、「品質の再利用」も効果が大きいことを認識してください。「品質のカプセル化」により、「いかに、多数のテストを効率よく実施するか?」から、「いかに、テストしないで済ませるか?」にパラダイムをシフトします。
4.2 品質のレベル分け
ソフトウェアは工業製品なのに、実質上、JISマークはついていません。品質のレベルを定め、指定できると、ソフトウェア開発を発注する場合、要求する品質レベルを明示できますし、発注側は、「品質を上げるとコストも上がる」ことを認識できます。
品質のレベル分けの具体例を以下に示します。
- レベル1:レベル2〜5に該当しない(=正常ケースも動作しない場合がある)。C0網羅、C1網羅とも計測せず
- レベル2:正常系は全て、異常系は代表的なケースでのみ正しく動作する。C0網羅80%、C1網羅は計測せず
- レベル3:正常系、異常系は全て、組み合わせ系は代表的なケースでのみ正しく動作する。C0網羅80%、C1網羅50%以上
- レベル4:正常系、異常系、組み合わせ系が全て正しく動作する。C0網羅100%、C1網羅80%以上
- レベル5:過負荷テスト、最小構成テスト、長時間耐久テストなどを全て実施。C0網羅、C1網羅とも100%
上記のレベル1とレベル5では、品質制御の工数やコストは10倍の違いが出ると思われます。品質レベルを設定すると、製品全体の品質レベルや、機能単位での品質レベルを指定し、目標品質を明確に出来ます。
4.3 応用分野別の品質情報データベースの確立
組み込み系ソフトウェアの応用分野が広範囲に渡るため、品質制御方式を一般化するのは困難で、非現実的です(心臓のペースメーカーの制御プログラムと、ゲームのソフトウェアでは、品質目標が大きく異なる)。デジタルカメラ制御用ソフトウェアと携帯電話機用プログラムでは、同じ組み込み系ソフトウェアであっても、「常連バグ」や、バグが出やすい状況は全く異なります。
各応用分野の「常連バグ」をデータベース化し、それを自社製品用にカスタマイズすることで、応用分野ごとの品質制御のレベルが上がると期待しています。
東海大学 大学院 組込み技術研究科 非常勤講師(工学博士)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫MONOist開設10周年特集
- ≫連載「山浦恒央の“くみこみ”な話」バックナンバー
- タダでソフト開発の生産性と品質を上げる方法(7):高機能な単体テストツール「GoogleTest」を使いこなす(その2)
「タダでソフト開発の生産性と品質を上げる方法」の第7回。グーグル(Google)製の単体テストフレームワーク「GoogleTest」の高度な機能のうち、今回は「パスカバレッジ」を取り上げます。 - タダでソフト開発の生産性と品質を上げる方法(6):高機能な単体テストツール「GoogleTest」を使いこなす(その1)
「タダでソフト開発の生産性と品質を上げる方法」の第6回。前回紹介したグーグル(Google)製の単体テストフレームワーク「GoogleTest」には高度な機能がありますが、今回は「アサーションマクロ」と「テストフィクスチャの使い方」を取り上げます。 - タダでソフト開発の生産性と品質を上げる方法(5):グーグルの隠し球的単体テストツール「GoogleTest」
「タダでソフト開発の生産性と品質を上げる方法」の第5回。今回は、IT業界の巨人、グーグル(Google)製の単体テストフレームワーク「GoogleTest」を紹介する。 - タダでソフト開発の生産性と品質を上げる方法(4):単体テストで威力を発揮する「MinUnit」
「タダでソフト開発の生産性と品質を上げる方法」の第4回。今回は、単体テストで威力を発揮する「MinUnit」を紹介する。