システム開発の品質管理において重要なポイントとは?手法や工程を解説
目次
システム開発において、品質管理に関する悩みを抱えている方は少なくありません。品質管理に携わっている現役エンジニアや非エンジニアの方々は、効果的な品質管理手法を求めていることでしょう。適切な品質管理をおこなうことで、納期遅延の防止、情報漏洩リスクの回避、バグの再発防止など、多くの課題をクリアできます。本記事では、システム開発における品質管理の手法やプロセスの重要なポイントを解説します。品質管理に関する知識を深めるための資格も紹介するので、品質管理を学びたい方はぜひ参考にしてください。
この記事は、デザインワン・ジャパン DX事業本部でシステム・アプリ開発に携わる泉川学が作成しました。
システム開発の品質管理とは?定義と目的、品質保証との違い
品質管理とは、生産工程において製品やサービスがクライアントのニーズを満たすように品質の維持・向上につながる取り組みのことです。システム開発における品質管理では、クライアントからヒアリング・要件定義をし、要件を満たせるシステムを設計やテストを実施します。システム開発と製造業では対象となる製品・サービスが異なりますが、品質管理の基本的な考え方は変わりません。品質管理の目的と品質保証との違いについて詳しくみていきましょう。
品質管理の主な目的と重要性
品質管理をおこなう目的は、主に以下の5つがあります。
- 納期の遅延を防ぐこと
- 品質を確保すること
- 情報漏洩のリスクを回避すること
- 運用・保守の負担を減らすこと
- バグの再発を防止すること
これらは、いずれもクライアントが求める品質を満たし、顧客満足度を高めるために欠かせない要素です。システム開発では、設計前に品質管理の計画を立てます。計画どおりに実施することで品質を確保し、納期の遅延を防ぎます。また、納品後の運用・保守も計画段階で考慮するため、システムエンジニアの負担軽減やコスト削減にもなるでしょう。運用・保守がしやすいシステムは、情報漏洩のリスク回避やバグの再発防止に役立ちます。品質管理は直接利益を生む取り組みではありませんが、顧客満足度や会社の信頼性の向上につながるでしょう。
「品質保証」との違い
品質管理と混同しやすい言葉として品質保証(QA)が挙げられます。品質保証とは、クライアントが求めるレベルの品質を保証できるように適切なプロセスを遵守することです。品質管理が組織のマネジメントも含めた全般的なものであるのに対し、品質保証は品質を満たすまでのプロセスに重点を置いています。
品質マネジメントは、品質に関して組織の方針を示し、組織をコントロールするための活動をすべて含む。品質マネジメントは、品質保証と品質コントロールの両方を含む。品質保証は、一般的に、品質が適切なレベルに確実に到達するよう、適切なプロセスを遵守することに重点を置く。
引用元:テスト技術者資格制度 Foundation Level シラバス
品質管理はシステム開発をおこなう社内向け、品質保証はクライアント向けという区別もできますが、どちらも「クライアントが求める品質を満たすこと」が目的である点は同じです。なお、国際ソフトウェアテスト資格認定委員会(ISTQB)では品質管理と品質保証という区別ではなく、品質管理(QM)のなかに品質コントロール(QC)と品質保証(QA)が含まれるとしています。
システム開発における品質管理の大きな5つの工程
システム開発における品質管理は、主に5つの工程に分けられます。
- 品質管理の計画
- 基本設計と詳細設計
- 単体テスト、結合テスト、総合テスト
- セキュリティテストと脆弱性診断
- 要因分析と修正・検証
品質管理は一度実施して終わりではなく、PDCAサイクルを回して計画を随時修正することにより、顧客満足度の向上を目指します。
1.品質管理の計画
品質管理の計画は、クライアントが求める品質やニーズとは何かを定義することから始まります。どんなに高品質な製品・サービスでも、クライアントのニーズに合わないものでは意味がありません。このプロセスは要件定義と呼ばれ、設計前にクライアントやサービス利用者のニーズを明確にすることで、顧客満足度の高いシステム開発につながります。
2.基本設計と詳細設計
計画が定まったら、基本設計と詳細設計の順にシステムの設計をおこないます。基本設計は、要件定義で決めた機能・性能を具体化する設計です。システムの外部構造を設計する工程であり、外部設計とも呼ばれます。詳細設計は、基本設計に基づいてシステムの内部構造や処理方法を定める設計です。クライアントが直接見ることのできないシステムの内部を設計する工程で、内部設計とも呼ばれます。基本設計と詳細設計が完成してから、プログラミングの工程に入ります。
3.単体テスト、結合テスト、総合テスト
システムが完成したら、要件定義を満たしているかを単体テスト、結合テスト、総合テストの順に確認します。単体テストは各機能、結合テストは複数の機能、総合テストはシステム全体を対象に、想定どおりに動作するのかをテストします。狭い範囲から徐々に広い範囲へテストをおこなう理由は、問題発生時に原因を特定しやすいためです。
4.セキュリティテストと脆弱性診断
システムが想定どおりに動作することを確認したら、セキュリティテスト(脆弱性診断)をおこないます。セキュリティテストには、アプリケーション診断とプラットフォーム診断の2つがあります。アプリケーション診断は、開発したアプリケーションやWebサービスに対するセキュリティテストです。不正ログイン対策など、外部からの攻撃によりクライアントやシステム利用者に被害が発生する危険性を診断します。プラットフォーム診断は、ネットワークに接続されている機器やサーバーに対するセキュリティテストです。ネットワークの脆弱性を診断します。
5.要因分析と修正・検証
システム運用中に発生する課題や問題は、要因分析をおこない、修正・検証を重ねていきます。要因分析は、問題の背後にある要因を特定し、その影響度を分析することです。品質管理では、チェックシートなど「QC7つ道具(品質管理の代表的な手法)」を使って分析し、品質改善につなげます。
QC7つの道具 | |
---|---|
手法 | 概要 |
パレート図 | 問題の原因を重要度順に並べて表示する図表です。主要な問題を特定し、優先的に対策をおこなうことができます。 |
特性要因図 | 問題の原因を視覚的に整理するための図です。問題の特性とその要因を整理し、原因の分析と対策の検討に役立ちます。 |
グラフ | データを異なるカテゴリ別に分析する手法です。データの傾向やパターンを特定のグループに分けて観察することで、原因分析をより詳細におこなうことができます。 |
ヒストグラム | データの分布を視覚的に表す棒グラフです。特定の範囲内にデータが集中しているか、異常値が存在するかを視覚的に把握できます。 |
散布図 | 2つの変数の関係を示すグラフです。データポイントがどのように分布しているかを観察することで、変数間の相関関係を分析するのに役立ちます。 |
管理図 | 製造プロセスの安定性を監視するためのグラフです。データポイントが管理限界内に収まっているかを確認することで、プロセスが安定しているか、または異常が発生しているかを判断できます。 |
チェックシート | データ収集と整理に使用するツールです。現場での観察や検査結果を記録するために使用され、データを効率的に集めて分析するのに役立ちます。 |
システム開発の品質管理の手法
システム開発における品質管理の進め方は、開発手法によって異なります。ここでは、「ウォーターフォール開発」と「アジャイル開発」の品質管理方法について解説します。
ウォーターフォール開発の品質管理
ウォーターフォール開発の品質管理は要件定義から始まり、基本設計、詳細設計と上流工程を進めたあと、下流工程に進みます。一度完了させた工程には戻りません。ウォーターフォール開発は、アジャイル開発と比べて品質管理の計画が立てやすいです。しかし、開発途中に発生した仕様変更などの変化に弱く、時間がかかってしまうデメリットがあります。仕様変更の可能性が低く、クライアントの求める品質が明確な場合に適しているでしょう。
アジャイル開発の品質管理
アジャイル開発の品質管理は、機能ごとに要件定義、設計、テストを繰り返しおこないます。アジャイル開発では早い段階でテスト工程に入るため、問題点を早期に発見でき、ほかの機能の要件定義や設計に反映できます。仕様変更が予想される開発案件では、アジャイル開発が適しているでしょう。
システム開発の品質管理において重要な5つのポイント
システム開発の品質管理をするうえで重要なポイントが5つあります。
- クライアントへのヒアリングと要件定義が最重要
- 品質の定義とやるべきことを決め、関係者に共有すること
- 工程ごとにチェックすること
- 定量的に品質評価すること
- 関係部署と連携を取ること
1.クライアントへのヒアリングと要件定義が最重要
品質の良し悪しを決めるのはクライアントです。そのため、ヒアリングと要件定義が最重要です。クライアントを考慮しない品質管理は、ただの自己満足に過ぎません。品質管理の計画を立てる前にクライアントのニーズを正確に把握し、どんなシステムであれば顧客満足度の向上につながるのかを考えましょう。
2.品質の定義とやるべきことを決め、関係者に共有すること
要件定義ができると、求められる品質や機能・性能も決まります。しかし、担当者だけが理解していても、顧客が満足するシステムを開発することは難しいでしょう。システム設計の担当者やプログラマーなど、関係者に品質の定義や必要な機能・性能を共有することが重要です。プロジェクトに関わる全員が同じ完成イメージをもつことで、要件定義とのズレを防げます。
3.工程ごとにチェックをすること
各工程ごとに計画どおりに作業が進んでいるかをチェックします。ウォーターフォール開発の場合は前の工程に戻れないため、確認不足のまま次の工程に進んでしまうと軌道修正が難しくなります。あらかじめ工程ごとにチェックシートを作成しておくと、抜けや漏れがなく確認できるでしょう。
4.定量的に品質評価をすること
システム開発の品質評価では難しいですが、バグ密度やテスト密度などを用いて定量的な品質評価をおこないます。バグ密度は開発規模に対するバグの量、テスト密度は開発規模に対するテストの量を数値化したものです。システム開発の規模を測る指標として、FP(機能ポイント)やLOC(プログラムの行数)などがあります。ただし、システム開発における定量的な品質評価は、品質を直接評価するものではありません。バグ密度やテスト密度の数値だけで評価するのではなく、これらの指標を総合的に活用して品質をチェックしましょう。
5.関係部署と連携を取ること
品質管理は関係者全員が意識してこそ成り立つため、初期段階から関係部署との連携を取るようにしましょう。要件定義の段階でシステム開発部門と完成イメージを共有しておくことは当然として、設計やプログラミングの工程でも積極的にコミュニケーションを取っておくことで、進捗状況の把握もしやすくなります。関係部署との密な連携が、不具合の早期発見につながります。
システム開発の品質管理に役立つ資格4選
システム開発の品質管理に役立つ資格を4つ紹介します。
- JSTQB認定テスト技術者資格
- ソフトウェア品質技術者資格認定制度(JCSQE)
- IT検証技術者認定試験(IVEC)
- 品質管理検定(QC検定)
品質管理に必要な知識を身につけたい方は、勉強してみましょう。
1.JSTQB認定テスト技術者資格
JSTQB認定テスト技術者資格は、日本のソフトウェアエンジニアのテスト技術向上を目的として設けられた資格です。テスト技術だけでなく品質管理や品質保証の考え方も学べます。JSTQB認定テスト技術者資格は、JSTQB(日本におけるソフトウェアテスト技術者資格認定の運営組織)と、パートナーである一般財団法人日本科学技術連盟が試験を実施しています。JSTQBは各国のテスト技術者認定組織が参加しているISTQB(International Software Testing Qualifications Board)の加盟組織であり、各国の団体が相互認証をおこなっているため、海外でも有効な資格です。
2.ソフトウェア品質技術者資格認定制度(JCSQE)
ソフトウェア品質技術者資格認定制度(JCSQE)は、ソフトウェア品質向上を目的とした資格です。一般財団法人日本科学技術連盟が試験を実施しています。品質の概念・定義や各工程の技法など、品質管理に必要な知識を身につけられます。
3.IT検証技術者認定試験(IVEC)
IT検証技術者認定試験(IVEC)は、「テストエンジニア」に必要とされる知識、実務経験、スキルを認定する資格試験です。テストに関する内容が中心ですが、品質管理についても学べます。テストの現場における実務を重視しており、各キャリアクラスごとに実務力を問う記述式の試験を実施しています。
4.品質管理検定(QC検定)
品質管理検定(QC検定)は、品質管理に関する知識を客観的に評価をする資格です。QC検定の協賛団体をみると製造業関連が多く、工場など製造現場での品質管理を想定した資格になります。「QC7つ道具」など、品質管理に必要な知識を身につけられます。
さいごに
品質管理は、プロジェクトの成功と顧客満足度の向上に不可欠です。品質管理の担当者は、クライアントのニーズを正しく理解し、工程ごとに品質の認識にズレが生じないよう関係部署との連携を密にすることが重要になります。本記事で紹介した知識を活用することで、顧客満足度の高いシステムを提供できるようになるでしょう。