「技術の深層」
ソフトウェア品質保証技術


<品質保証と品質管理>

品質保証という言葉は幅が広く、あいまいである。また品質管理との違いもあまり意識せずに使われていることが多い。品質保証という言葉は、日本では、「消費者の要求する品質が十分に満たされていることを保証するために生産者が行う体系的活動(JIS Z 8101)」と定義されている。したがって、品質保証の意味する範囲は非常に幅が広く、品質管理技術やTQCはもちろん、品質を作り込むための開発技術、開発方法論の適用までが品質保証のための体系として論じられたりもする。

一方、欧米では品質保証は「あるものが品質要求事項を満たすことについての十分な信頼感を供するために、品質システムの中で実施され、必要に応じて実証される、すべての計画的かつ体系的な活動(ISO8402)」と定義されている。ここで、品質システムとは、「品質管理を実施するために必要となる組織構造、手順、プロセス、及び経営資源(ISO8402)」をいう。また、「実証」とは実施していることを証拠をもって第2者または第3者に示すことをいう。ちなみに、品質管理は「品質方針、目標及び責任を定め、それらを品質システムの中で品質計画、品質管理手法、品質保証及び品質改善などによって実施する全般的な経営機能のすべての活動(ISO8402)」を意味している。このように、日本でいう品質保証は、むしろ欧米の品質管理に近い概念であるが、国際化が進展する今日、用語も国際的な整合がとれたものに見直すことが必要である。

<ソフトウェアの品質と品質向上技術>

ソフトウェアの品質とは、ソフトウェアが指定された効用を発揮するために必要なすべての特性を意味し、「ソフトウェア製品の評価-品質特性及びその利用要領」(ISO/IEC 9126)では機能性、信頼性、使用性、効率性、保守性、移植性と定義している。ソフトウェア品質の構造を図1に示す。



従来、品質向上活動としては特に信頼性に着目し、ソフトウェア開発における欠陥の除去を目的として、設計結果のレビューやプログラムの試験による品質状況の把握と残存欠陥数の予測を行うことが一般的に行われてきた。しかし、ソフトウェアの普及とあいまってソフトウェアの保守性が問題視され、また、対話型のソフトウェアが主流になったことから、ソフトウェアの使用性が重視されるなど、品質に関する認識が高まり、現在では前述した特性により品質を管理することが一般的になりつつある。

一方、品質向上技術としては図2に示すものがあげられる。これらのうち品質管理手法として欠陥混入防止技術、欠陥検出技術を用いた手法が一般的に実施されている。品質の確保に必要なコストは、製品のライフサイクルにおいて下流にいけばいくほど高くなることがわかっている。このため、できるだけ上流で品質を確保することが得策であり、各工程の作業結果に対して十分なレビューを行うことが重要である。



<ソフトウェアの品質管理>

これまで製品品質の高さから世界的な注目を集めた日本的品質管理(TQC)は、顧客満足度を志向した品質の重視、全員参加、自己啓発による自主的な活動、統計的手法の活用などを特徴とした総合的な経営管理手法である。ソフトウェア開発においては、QCサークルの導入や、品質機能展開、バグ分析などへの統計的手法の適用などが実施されている。前項で述べた品質管理手法もTQCの一環として組み入れられる。日本的品質管理は、ボトムアップ重視の活動であり、発展途上にあり、目標が明らかであった時代には大いにその効果を発揮したが、物質的な充足を迎えた今日では多様化する社会ニーズや情報化、国際化などの環境変化に対応できず、むしろ、欧米流トップダウン型品質管理(TQM)への変革を迫られている。

<ソフトウェアの品質保証>

組識における品質管理の活動を品質システムとして確立し、実証することにより購入者に対して信頼感を与えるための活動を品質保証という。この品質保証活動は、「品質システム-設計、開発、製造、据え付け及び付帯サービスにおける品質保証モデル」(ISO 9001)という規格により定義されている。これはソフトウェアの開発においてもそのまま適用されるものであり、その骨子は以下のとおりである。

1)品質システムの確立

購入者に対して品質を保証するためには、まず、品質を管理するための手順を確立することが必要である。そのためには、品質に影響する業務を管理し、実行し、検証するすべての関係者の責任と権限および相互関係を明確にし、適切な経営資源を割り当てなければならない。また、業務の実施を確実にするために手順を文書化することが必要である。品質方針を示し、組織の品質システムを記述した文書を品質マニュアルと呼ぶ。

2)品質システムの運用

組織の経営者は、品質に対する方針、目標、責務を明確にし、組織のすべての階層で理解され、実施され、維持されることを確実にしなければならない。そのために、品質システムを実行維持する管理責任者を選任する。また、品質システムが効果的に運営され、維持されるために、適切な間隔で品質システムの見直しを行う。 これに対して各部門では製品のライフサイクル全体にわたって、品質マニュアルで定めた業務を実施する。これには契約内容のレビューから始まり、設計、製造、テスト、製品の引渡しに至るまでの品質に係るすべての活動が含まれる。またこれらの活動は、内部品質監査と是正処置により、意図されたとおり実施されることが確実にされなければならない。

<品質改善>

品質を向上するために品質管理をより高度なレベルに高めるための活動が品質改善である。TQCでは、PDCAによるボトムアップ活動が多く実践されているが、改善の方向性に対して体系的に整理されたものはこれまでなかった。これに対して、カーネギーメロン大学・ソフトウェア工学研究所(SEI)が開発した能力成熟度モデル(CMM: Capability Maturity Model)は、ソフトウェアプロセスの改善の方向を示すモデルとして、世界的に注目されている。CMMは、図3にあるように、レベル2がソフトウェア開発プロジェクトレベルでの基本的なプロセスを示しており、レベル3が組織レベルのプロセス、レベル4が組織におけるプロセスの定量的な分析、レベル5がプロセスと技術の継続的な革新を示している。各レベルは継続的なプロセスの改善にとって次のレベルの基礎をなすものであって、この道筋をもとに改善を進めることにより、品質やコスト、開発期間などの予測精度や、品質、生産性自体の効果的な向上が期待できるとしている。



<品質システムの今後>

ISO9000シリーズやCMMはこれまで行ってきた品質管理の活動に対して体系的な枠組みを与えるものとしてとらえることができる。今後、ネットワークを通じたグローバルな電子商取引の時代が来る。このときは体系的に整理された品質保証の枠組みと実践は、それが単に遵守すべき国際標準であるか否かにかかわらず必要な活動としてますます重要な要素になると考えられる。しかし、一方、オブジェクト指向技術やネットワーク化技術の革新により、ソフトウェア開発作業やその組織化の方法は大きく変わることが想定される。また、品質そのものに対する価値観も多様化し、変化してくるであろう。今後はそのような時代にふさわしい一歩進んだ品質管理と品質システムの構築が求められる。

NTTソフトウェア
ニュービジネス事業本部担当部長
堀田勝美