- 更新日 2024.10.18
- カテゴリー システム開発
システム開発における品質管理とは?プロジェクトの成否を左右する重要性を解説【2024年最新版】
多くのプロジェクトが失敗するともいわれているシステム開発プロジェクトでは、成否を左右する重要なカギとなるのが品質管理です。では、発注者として適切にプロジェクトの品質管理をしていくにはどうすべきなのかといわれても、とまどってしまう企業・店舗担当者の方は少なくないのではないでしょうか。以下のような疑問を持っている方も居るでしょう。
- システム開発における品質管理とは?
- なぜ品質管理が重要?
- システム開発における品質管理の方法とは?
- 発注側としてどのように品質管理すべき?
開発・実装を開発会社に一任することの多いシステム開発プロジェクトでは、重要性に気付かないまま品質管理も一任してしまいがち。しかし、それではプロジェクトの成功を担保できません。
そこで本記事では、システム開発における品質管理の重要性、発注側として積極的に関わっていくべき理由や方法、注意点などを含めた品質管理の基本知識を徹底解説!プロジェクトを成功させるためのシステム開発会社の選び方も紹介していきます。
※現在、システム開発の依頼先を探している方はシステム幹事にご相談ください。予算や目的から最適な開発会社を選定します。相談料・紹介料は一切かかりません。
システム開発における品質管理とは?
システム開発の品質管理とは、開発側(主に責任者)が、システムの機能やユーザーの利便性などを評価する業務のこと。
品質とは、成果物である「システム」に求められるニーズ・要求が、どの程度満たされているのか?達成の度合いを意味します。
人が作るシステムに完全なものはありませんが、ニーズ・要求への達成度が100%に近ければ近いほど、高品質なシステムが開発されたと判断できるでしょう。
それでは、高品質なシステムであると判断するための基準となる「ニーズ・要求」は、どのように指標化されるのか?それこそが「SCOPE(スコープ)」です。
画像出典:株式会社システムインテグレータ
IT業界におけるSCOPEとは、あるプログラムの変数・関数などが別のプログラムに与える影響の「範囲」を指しますが、本記事では「プロダクトスコープ」を指します。開発プロジェクトの成果物であるシステム(プロダクト)の要件、そして完成までのタスク実行範囲を定義付けたものがSCOPEです。
システム開発における品質管理の目的・重要性
システム開発における品質管理は、システムに求められる要件である、SCOPEを最大限確保していく業務です。ただし、SCOPEは「発注側のニーズ・要求」を100%反映したものではないことに注意が必要です。
なぜなら、開発費用・納期に制限のないシステム開発プロジェクトは存在しないからです。要求を100%満たすシステムを開発しようとすれば、逆に発注側の望む納期「TIME(タイム)」、開発費用「COST(コスト)」要件を満たせなくなってしまいます。
つまり、制限のある納期、開発費用とのバランスを取りながら、システムの要件を最大限担保していくことが品質管理の目的であり、重要性だといえるでしょう。
発注側が品質管理に携わっていくべき理由
それでは、品質管理の基準となるSCOPEは、どのようにして定義付けるのでしょうか?
SCOPEは、TIME・COSTとのバランスを取りながら、発注側のニーズ・要求を「実現可能なシステムの要件、タスクの計画」へと落とし込んだものです。
SCOPEを定義付けるには、開発会社と綿密なコミュニケーションを重ねながら、ときには要求の一部を諦める、あるいは予算を変更するといった折衝が必要です。発注側がシステム開発の品質管理に積極的に携わっていく必要があるのはこのためであり、開発会社といかに協働していくかが重要なポイントとなるのです。
システム開発の品質管理方法・プロセス
システム開発プロジェクトの具体的な品質管理方法は、大きく以下の3つ。
- 品質管理の基準となるSCOPEを定義する
- SCOPEが満たされているかを確認するためのテスト・レビュー計画を策定する
- テスト・レビューを実施してSCOPEが満たされているかを確認する
品質管理の基準となるSCOPEは、成果物のシステム要件を定義するだけではなく、完成までのタスク実行計画も含まれます。そのため、品質管理のプロセスは、システム開発工程全体におよぶ場合が一般的。以下から、ウォーターフォール型システム開発を例に挙げながら、品質管理のプロセスを具体的に解説していきます。
◎ウォーターフォール型のシステム開発工程
開発フェーズ |
概要 |
要求定義 |
業務課題解決に向け、システムに求めるニーズ・要求を定義 |
要件定義 |
発注側のニーズ・要求を実現可能なシステム要件に落とし込む |
基本設計 |
要件定義をもとにシステムの見える部分を具体化・設計(外部設計) |
詳細設計 |
基本設計をもとに、プログラミングに必要な設計書を作成(内部設計) |
開発・実装 |
設計書をもとにプログラム・機能を開発・実装 |
単体テスト |
機能・モジュール単位で開発されたプログラムをテスト |
結合テスト |
単体テストが完了したモジュールを結合してテスト |
総合テスト |
システムとして出来上がったプログラムを総合的にテスト |
受け入れテスト |
完成したプログラムが要件を満たしているか?発注側でテスト |
リリース |
検収を経てシステム稼働 |
ウォーターフォール型のシステムに関しての基礎知識は以下の記事を参考にしてください。
関連記事:ウォーターフォール型システム開発とは?開発工程・メリット・アジャイル型との違いを解説!
また、システム開発全体の流れや進め方についてはこちらもあわせてご活用ください。
システム開発依頼前にチェック!
中小企業向けシステム開発の進め方をまとめました。
無料でダウンロードする
発注側が携わるべき品質管理プロセス
上述したように、品質管理はシステム開発の工程全体にわたって実施されますが、そのすべてに発注側が携わるわけではありません。発注側が積極的に携わるべき品質管理は主に上流工程です。以下から、簡単に解説していきます。
要求定義
要求定義とは、システム開発の目的でもある「どのようなシステムを開発したいのか?」を明確に定義するためのフェーズ(段階)。現状の課題とその要因を洗い出し、理想のカタチとのギャップをシステムでどのように埋めていくか?具体化していく作業です。
発注側のニーズ・要求とイコールといえる要求定義は、基本的に発注側で整理・具体化しておくことが基本。品質管理のために要求定義でレビューしておくべきポイントは以下の通りです。
- 自社ニーズ・システムに求める要求が網羅されているか?
- システムで実現すべき業務要件が明確にされているか?
- 定義された要求が具体的か?
- TIME、COSTが明確にされているか?
関連記事:システム開発における要求定義の重要性|要件定義との違いや要求定義の実態・改善ポイントを解説!
要件定義
要件定義とは、TIME・COSTとともに明らかにされた発注側の要求定義を、現実的なシステムの要件=SCOPEに落とし込んでいく重要なフェーズ。この時点で、受け入れテストの実施に向けた設計もおこなわれます。
要件定義は、要求定義をもとに開発会社側が策定していくことが基本で、しっかりとコミュニケーションを重ねながら、納得いく形でSCOPE・TIME・COSTのバランスを取っていく必要があります。よってここが発注側が深く携わっていくべき工程ともいえます。品質管理のために要件定義でレビューしておくべきポイントは以下の通りです。
- 要求定義が現実的な視点でシステム要件に落とし込まれているか?
- SCOPE・TIME・COSTのバランスは取れているか?
- スムーズに受け入れテストを実施できる計画が立てられているか?
関連記事:システム開発の要件定義とは?受託開発における重要性や進め方を解説!
基本設計
基本設計とは、要件定義で定められたSCOPEをもとに、開発するシステムの基本的な機能・インターフェースを具体化していくフェーズ。この時点で、総合テストをどのように実施すべきか?総合テスト設計も実施されます。
システムの目に見える部分を具体化していくフェーズであり、開発に着手する前に発注側が携われる最後のチャンス。基本的には、開発会社のSE(エンジニア)が各種設計書を作成しますが、以降の工程で修正が発生しないよう、しっかりチェックすることが重要です。品質管理のために基本設計でレビューしておくべきポイントは以下の通りです。
- 要件定義で定められた要件・機能がすべて網羅されているか?
- ユーザーインターフェースは使いやすさを考慮して設計されているか?
関連記事:システム開発の基本設計とは?重要性・発注者としての関わり方を解説!
受け入れテスト
受け入れテストとは、開発・テストが完了したシステムが要件を満たす機能・性能を保持しているか、発注側が総合的に検証するテストのこと。ユーザーテストとも呼ばれ、設定したSCOPEがキチンと満たされているのかを確認する品質管理の最終フェーズともいえる重要なテストです。
受け入れテストは、実稼働時の状況を想定しながら動作チェックする機能テスト、使い勝手をチェックするユーザビリティテストを中心に実施されます。また、性能テスト・負荷テストなどを含め、網羅的にチェックされる場合も。開発会社側のテスト結果と乖離がないか、テスト結果を共有しながら品質を確認していきます。
開発側が担当する品質管理プロセス(ウォーターフォール型開発の場合)
開発・実装フェーズを含め、システム開発の下流工程における品質管理は、基本的に開発会社側の責任となります。ただし、タッチしない工程でどのような品質管理が行われているのかを発注側として理解しておくことも重要です。以下から、開発会社が担当する品質管理プロセスをウォーターフォール型の開発を例に簡単に紹介していきます。
詳細設計・開発
詳細設計とは、基本設計をもとにプログラマーへの指示書でもある設計書を作成していくフェーズ。開発・実装は、詳細設計書をもとにプログラマーがプログラム開発・機能実装していくフェーズのことです。
詳細設計では、プログラマーのスキル差をなくして品質を担保するための記述ルール、単体・結合テストの実施計画、単体・結合テスト設計書が作られます。品質管理のために詳細設計・開発でレビューするポイントは以下の通りです。
- 可読性・保守性を考慮して詳細設計書が作成されているか?
- 単体・結合テスト用のテストコードが正しく記述されているか?
- 可読性に優れたソースコードで記述されているか?(コードレビュー)
関連記事:システム開発の詳細設計とは?プロジェクトの位置付け・役割をわかりやすく解説!
単体・結合・総合テスト
一般的なシステム開発では、1つの大きなプログラムを一気に開発するのではなく、まずおおまかな機能を細かいプログラム・モジュールに分解します。そして最小単位のモジュールごとに分けた状態で開発が進められていきます。
この最小単位のモジュールが設計書通りに動作するか、チェック・レビューするのが単体テスト。モジュール同士を結合されたサブシステム単位でチェック・レビューするのが結合テスト。すべてのサブシステムを結合させてチェック・レビューするのが総合テストです。
受け入れテストでも触れたように、総合テストの結果は発注側と共有され、最終的な成果物であるシステムの品質管理に活用されます。
【無料】ウォーターフォール型に強いシステム開発会社を紹介してもらう
開発手法が異なれば品質管理の手法も異なる
ここまでは、システム開発の一般的な手法ともいえる、ウォーターフォール型の品質管理について解説してきました。しかし、開発手法が異なれば品質管理の手法・プロセスも異なります。
たとえば、近年採用されることの多いアジャイル型システム開発は、小さな機能ごとに開発・リリースを繰り返しながらシステム全体の完成を目指すという特徴があります。
おおまかなシステム要件・仕様を策定し、優先度の高い順に「計画」>「設計」>「実装」>「テスト」>「リリース」を1つのサイクルとした「イテレーション(反復)」を繰り返すアジャイル開発は、ウォーターフォール型のように「要件=SCOPE」を明確に定義しません。
※システム開発の手法についてより詳しく知りたい方は、以下の記事も参考にしてください。
関連記事:システム開発の手法4つの特徴・メリット・デメリットを解説!【比較表付き】
アジャイル型システム開発の品質管理
イテレーションを1〜4週間に区切るアジャイル開発は、機能ごとのTIME・COSTを固定し、状況に応じてSCOPEを変動させていくという考え方で品質管理されます。
そのため、アジャイル開発で重要になるのが「イテレーションごとのレビュー・フィードバック」。アジャイル開発では、開発側が成果物としての「プロダクトの品質」を担うのに対し、発注側は「プロダクトの品質を踏まえて方向性を指し示す」役割を担います。よって、企業担当者も開発チームの一員として品質管理を担当していくことになります。
プロジェクトを成功させるには?システム開発会社の選び方
ウォーターフォール型、アジャイル型どちらの開発手法を選択する場合でも、システムの品質を担保するためには、パートナーとなるシステム開発会社との協働が欠かせません。
つまり、システム開発プロジェクトを成功させるためには、高い意識を持って品質管理に取り組める、優良なシステム開発会社を選定することが重要。以下で、品質管理の観点から見た、システム開発会社の選び方のポイントを紹介しています。
品質管理の体制が整っているか?
一般的なシステム開発プロジェクトでは、「プロジェクトマネージャー(PM)」が品質管理の責務を担います。そのため、PMの力量によって、システム開発プロジェクトの成否が左右されてしまう恐れがあります。
こうした属人的なスキルに左右されない品質管理を目指し、以下のような対策をするシステム開発会社が増えています。
- PMO(プロジェクト・マネジメント・オフィス)を設置する
- 専任のQMO(クオリティ・マネジメント・オフィサー)を配置する
PMOの設置、QMOの配置などの品質管理体制作りに力を入れているシステム開発会社であれば、安心してプロジェクトを任せられるでしょう。次項でPMO・QMOについて解説します。
PMO(プロジェクト・マネジメント・オフィス)とは?
PMO(Project Management Office)とは、その名の通り、組織内のプロジェクトマネジメントを横断的に支援する部署のこと。
- 組織内のプロジェクトマネジメント方法を標準化する
- 個々のシステム開発プロジェクトのマネジメントを支援する
- プロジェクト間の人材配置・コストなどのリソースを管理する
- 研修などによるPMを育成する
PMOが果たす役割はさまざまですが、目的はプロジェクト管理・品質管理を強化することでシステム開発プロジェクトの成功率を高め、顧客へ高い価値を提供することです。
QMO(クオリティ・マネジメント・オフィサー)とは?
QMO(Quality Management Officer)とは、組織のプロジェクト管理を担うPMOのなかでも、品質管理に特化した役割を担う役職のこと。品質管理が重視される製造業などでは、独立した専門部署として、QMO(クオリティ・マネジメント・オフィス)が設置される場合もあります。
要求定義フェーズから参加できるか?
システム開発における品質管理の最初のステップは、自社ニーズ・要求を具体化する「要求定義」です。一般的には、自社課題を洗い出し、理想のカタチとのギャップを埋める「システムへの要求」をRFP(提案依頼書)にまとめることが要求定義の基本です。しかし、ITに苦手意識を持つ担当者の場合、自社ニーズ・要求を言語化できないこともあるでしょう。
そんなときは、RFP策定もサポートできるシステム開発会社を選定することもおすすめです。要求定義フェーズからシステム開発に参加してもらえれば、開発工程すべてにわたり一貫した品質管理が期待できます。
関連記事:RFPとは?システム開発の質を高める提案依頼書の作り方を解説!【サンプルあり】
システム開発の品質管理を怠るリスク
システム開発で品質管理を正しく行わないと、以下のようなリスクが発生します。
サイバー攻撃による情報漏えい
品質管理を怠るとシステムに十分なセキュリティが実装されず、脆弱性を抱えたまま完成してしまうリスクがあります。セキュリティに脆弱性を抱えたまま運用を開始してしまうと、サイバー攻撃によって情報の漏洩が発生したり、障害が発生してシステムが停止したりしてしまいます。
また、データを勝手に暗号化して復元するための身代金を要求するランサムウェアと呼ばれるサイバー攻撃も近年増えています。このような脅威を防ぐためにも、品質管理を徹底して事前にセキュリティの弱い部分を発見し、対策しておくことが大切です。
顧客の信頼減少・損失
低品質なシステムを稼働させると、障害が発生してパフォーマンスが低下したりシステムが停止したりして、顧客からの信頼を失ってしまうリスクがあります。
また、自社のシステムに障害が発生しても自社の損失だけで済みますが、顧客が利用するシステムの場合は顧客が受けた損害の補償が必要になるケースもありえます。そのようなトラブルを防ぐため、システムが安定して稼働できるように作られているか、品質管理をすることが大切です。
コストの膨大化
品質管理が正しく行われていないと開発途中でトラブルが発生し、対応するための工数・コストがかかってしまうリスクがあります。また、低品質なシステムのまま完成させてしまうと、開発後の運用段階で障害が発生して対応するコストがかかってしまうリスクもあります。
品質管理を行ってトラブルを未然に防ぐことが、結果として開発・運用にかかるコストを抑える効果につながるともいえるでしょう。
システム開発の品質管理をする際の注意点
システム開発の品質管理をするにあたって、注意すべき点は主に以下の4つです。
品質の基準や指標値を明らかにしておく
発注する側の担当者と開発会社の担当者、実際に開発を行うエンジニア間で認識をそろえるために品質の基準や指標値を定めておくことが大切です。なぜなら、品質に対する認識が発注側と受注側で同じになっていないと、求めている品質で開発が行われないおそれがあるからです。
基準を作る際は、開発に関わるすべての関係者が品質に対して同じ意識になるように明確な基準を作ることがポイントです。
要求を網羅できているか確認する
品質管理をする際は各工程をチェックするだけでなく、開発プロジェクト全体を俯瞰して「要求をすべて満たしているか」を確認することが大切です。
特に工程の後戻りがしにくいウォーターフォール型開発の場合は、開発が進んでから足りない機能に気付いて追加しようとすると余計な工数がかかるおそれがあります。常に開発プロジェクト全体を見て、漏れている要求・要件がないかを確認しましょう。
プロセスごとに品質チェックを行う
プロセスごとに品質のチェックを行うこともポイントの1つです。この工程を飛ばしてしまうと、開発が進んでから問題が発生した際に「どこが原因なのか」がわかりにくくなってしまいます。
プロセスごとに品質をチェックしていれば、その時点で問題に気付ける可能性があるため、のちのち大きなトラブルになるリスクを減らせます。プロセスごとに品質チェックシートを作成するなどして、確認すると良いでしょう。
他部署や関係各所との連携を取る
品質管理では、システムに関係するあらゆる部署と連携して行う必要があります。なぜなら、同じシステムでも使う部署によって求めている機能や品質が異なるからです。
ある部署にとっては使うことのない機能でも、他の部署にとっては必要不可欠な機能であるケースもありえます。そのようなケースでも十分な品質のシステムを開発するために、関係する部署と連携して品質管理を行いましょう。事前に他の部署と共同して品質管理用のチェックシートを作っておくと良いかもしれません。
システム開発の品質管理に役立つおすすめ資格5選
システム開発の品質管理をするために役立つ資格がいくつかあるので、おすすめの資格を5つ紹介します。
IT検証技術者認定試験(IVEC)
IT検証技術者認定試験は、テストエンジニアの実務を重視した資格です。テストの初心者から実行者、設計者、プロジェクトリーダー、研究者まで5つのキャリアに分けて一般社団法人IT検証産業協会(IVIA)が認定しています。
テストの実行から詳細設計・実装、要求分析・プロジェクト管理、新技術開発・市場拡大まで5段階のキャリアにあわせてソフトウェアのテストに関する知識が問われます。そのため認定されているキャリアクラスによって「どの段階までの知識があるか」がひと目でわかることが特徴です。
テストに関する知識を中心に学ぶ中で、品質管理に関する知識も学べます。
JSTQB認定テスト技術者資格
JSTQB認定テスト技術者資格は、日本のソフトウェア技術者のテスト技術を向上させることを目的とした資格です。日本のソフトウェアテスト技術者資格認定の運営組織JSTQBが認定しています。世界各国のテスト技術者認定組織が参加しているISTQBに加盟しているため、海外でも有効です。
テスト技術を中心に品質管理に必要な知識を体系的に学べるため、システムの開発者だけでなく発注者側の取得も近年増加している資格です。
R-Map実践技術者認定制度
R-Map実践技術者認定制度は、リスクマネジメント・リスクアセスメントの知識と技術を認定する資格です。日本科学技術連盟が認定しています。資格試験はなく、講座を受講して最後に発表会で成果を発表すれば認定される仕組みです。
縦軸に発生頻度、横軸に危害の程度を配して視覚的にリスクを評価する手法のR-Mapを活用してリスク管理をする能力を身につけられます。そのため、リスク管理の知識を中心に学びたい方におすすめです。
ソフトウェア品質技術者資格認定制度(JCSQE)
ソフトウェア品質技術者資格試験は、ソフトウェアの品質技術を高めて継続的・効果的に品質向上を目指すための資格です。一般財団法人日本科学技術連盟(JCSQE)が認定しています。
同資格認定制度の、品質の概念や定義、品質マネジメント、品質保証などの知識が問われます。ソフトウェア開発の知識を持つ技術者が品質管理を学びたいケースに向いている資格認定制度です。
QC検定
QC検定(品質管理検定)は、品質管理に関する知識を筆記試験で客観的に評価する検定です。一般財団法人日本規格協会と一般財団法人日本科学技術連盟が主催し、一般社団法人日本品質管理学会が認定しています。
「QC7つ道具」と呼ばれる品質管理の分析手法を理解しているか、用いて品質に関わる問題を解決できるかを問われます。そのため、QC7つ道具を駆使して品質管理をするための知識を身につけたい場合におすすめの検定です。
【まとめ】システム開発の品質管理について紹介しました
本記事では、システム開発における品質管理の重要性、発注側として積極的に関わっていくべき理由や方法を含めた、品質管理の基本知識を解説してきました。要点をおさらいしておきましょう。
- 品質とは、成果物(システム)に求められる要求・ニーズの達成度
- ランスを取りながら最大限担保していくこと
- 品質管理の方法・プロセスは、SCOPEの定義、テスト・レビューの計画、テスト・レビュー実施の3つ
- システム開発の手法が異なれば、品質管理の手法も異なる
システム開発プロジェクトを成功させるためにも、発注側として積極的に品質管理に携わっていく姿勢が必要です。ただし、発注側の努力だけでは品質管理を徹底させることが難しいのも事実。そのため、なによりも重要なのは、品質管理への高い意識を持つ、優良なシステム開発会社をパートナーとして選定することなのです。
システム開発会社を探している方へ
現在、システム開発会社を探している方はシステム幹事にご相談ください。専門のコンサルタントがあなたの要望を丁寧にヒアリングし、予算にあった最適な開発会社を選びます。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
ご相談・ご紹介はすべて無料。また紹介された制作会社に必ず発注する必要はありません。
Q. システム開発における品質管理とは何ですか?
システム開発における品質管理とは、開発側(主に責任者)が、システムの機能やユーザーの利便性などを評価する業務のことです。「成果物としての達成度合いが測れる」「システムに求められるニーズ・要求がどの程度満たされているかがわかる」等の特徴があります。
Q. システム開発における品質管理とは?
システム開発における品質管理とは「開発側(主に責任者)が、システムの機能やユーザーの利便性などを評価する業務のこと」です。詳細は記事内で紹介していますので、ぜひご覧ください。
この記事を書いた人
梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧