日本ソフトウエアの強み

ソフトウェア開発と品質の考え

かつて組み込みのソフトウェアに代表される、ソフトウェアは規模が小さいものでした。規模が小さいときはハードウェアとソフトウェアの知識を持ちあわせた一人のエンジニアが製品の機能と性能を実現していました。プログラムも小さいため、出来上がったモジュールをランダムテストするだけでほとんどの制御パスを網羅したテストができていました。不具合が発生しても担当エンジニアがシステムの全体像を把握しているため問題がどこにあるのかすぐに見つけることができました。しかし、現在、お客さまの要求が多様化し、組み込み制御される機器が複雑化、大規模化した今では状況が変化しています。

ソフトウェア開発は複数のエンジニアの共同開発となり、中国やベトナムなどの海外開発も活発に行われています。つまり、ソフトウェアは個人で開発するものからプロジェクトチームで開発するものに変化しています。チームでソフトウェアを開発するようになると、「コミュニケーション不足による勘違い」、「プログラミング技術のバラツキ」、「エンジニアのモチベーション維持への配慮」など、それまで気にする必要がなかったさまざまな問題が発生します。ソフトウェアの品質に影響を与える最大の要因は「人間は機械のように緻密ではなく、過ちを犯しやすい」ということであり、開発品質を高めるためには、それを強く意識することです。

ソフトウェア開発と品質の考え

ソフトウェアは、開発者の日々の活動の積み重ねで作られているため、人間のミスはソフトウェアの中に刷り込まれてゆきます。いつもは慎重でミスをしない人でも、疲れていたり、心配事があったりするとミスを犯すことがあります。実際にはプロジェクトメンバのスキルにバラツキがあり、ソフトウェアの、品質の全てをエンジニア個人の能力に頼ることは無理があります。信頼性の高いソフトウェアを作るには、不具合のもとを作りこむ原因となっている「人間の“活動”をコントロール」しなければなりません。「人間をコントロールする」のではなく「人間の“活動”をコントロール」するということが重要だと考えています。

わたしたちは、ソフトウェアの品質向上を目的とした活動を、過ちを犯しやすい人間の活動をコントロールするという視点で考えています。そのために「人間の過ちを軽減する取り組み」と「人間の介在を少なくする取り組み」の2つのアプローチを行っています。

「人間の過ちを軽減する」には、ソフトウェア開発プロセスにおいて、「プロセス定義」「リスク分析」「コーディングルール定義」「テスト」「テスト網羅率の向上」「チェックアンドレビュー」の実行を徹底しています。

「人間の介在を少なくする」には、xUNITなどの「回帰テスト自動化」「ソフトウェア資産の再利用」「フレームワークの採用」などの活動を具体化しています。

開発段階では不具合を作り込まないということが一番重要ですが、それだけではなく、最終の砦として社内のテストにて不具合を必ず摘出することを目標にテスト計画、テスト仕様の策定ならびにテスト実行を行っています。ソフトウェア開発プロジェクトにおいては、QMSを構築し、「V字開発工程」を基本として、それぞれの開発フェーズでのレビュー、フェーズ間での検討と妥当性の確認を実施し、開発工程での品質向上を行っています。

∧