- 更新日 2022.03.09
システム開発における品質管理とは?プロジェクトの成否を左右する重要性を解説!
全体の3割が失敗するともいわれているシステム開発プロジェクトでは、成否を左右する重要なカギとなるのが品質管理です。では、発注者として適切にプロジェクトを品質管理していくにはどうすべきなのか?そういわれても、とまどってしまう企業・店舗担当者の方は少なくないはず。
・システム開発における品質管理とは?
・なぜ品質管理が重要?
・システム開発における品質管理の方法とは?
・発注側としてどのように品質管理すべき?
開発・実装を開発会社に一任することの多いシステム開発プロジェクトでは、重要性に気付かないまま品質管理も一任してしまいがち。しかし、それではプロジェクトの成功を担保できません。
そこで本記事では、システム開発における品質管理の重要性、発注側として積極的に関わっていくべき理由や方法を含めた、品質管理の基本知識を徹底解説!プロジェクトを成功させるためのシステム開発会社の選び方も紹介していきます。
※現在、システム開発の依頼先を探している方はシステム幹事にご相談ください。予算や目的から最適な開発会社を選定します。相談料・紹介料は一切かかりません。
システム開発における品質管理とは?
システム開発の品質管理とは、開発側(主に責任者)が、システムの機能やユーザーの利便性などを評価する業務のこと。
品質とは、成果物である「システム」に求められるニーズ・要求が、どの程度満たされているのか?達成の度合いを意味します。
人が作るシステムに完全なものはありませんが、ニーズ・要求への達成度が100%に近ければ近いほど、高品質なシステムが開発されたと判断できるでしょう。
それでは、高品質なシステムであると判断するための基準となる「ニーズ・要求」は、どのように指標化されるのか?それこそが「SCOPE(スコープ)」です。
画像出典:株式会社システムインテグレータ
IT業界におけるSCOPEとは、あるプログラムの変数・関数などが別のプログラムに与える影響の「範囲」を指しますが、本記事でいうSCOPEとは「プロダクトスコープ」を指します。開発プロジェクトの成果物であるシステム(プロダクト)の要件、そして完成までのタスク実行範囲を定義付けたものがSCOPEです。
システム開発における品質管理の目的・重要性
システム開発における品質管理は、システムに求められる要件である、SCOPEを最大限確保していく業務です。ただし、SCOPEは「発注側のニーズ・要求」を100%反映したものではないことに注意が必要です。
なぜなら、開発費用・納期に制限のないシステム開発プロジェクトは存在しないからです。要求を100%満たすシステムを開発しようとすれば、逆に発注側の望む納期「TIME(タイム)」、開発費用「COST(コスト)」要件を満たせなくなってしまいます。
つまり、制限のある納期(TIME)、開発費用(COST)とのバランスを取りながら、システムの要件(SCOPE)を最大限担保していくことが、システム開発における品質管理の目的であり、重要性だといえるでしょう。
発注側が品質管理に携わっていくべき理由
それでは、品質管理の基準となる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つのサイクルとした「イテレーション(反復)」を繰り返すアジャイル開発は、ウォーターフォール型のように「要件=SCOPE」を明確に定義しません。
※システム開発の手法についてより詳しく知りたい方は、以下の記事も参考にしてください。
関連記事:システム開発の手法4つの特徴・メリット・デメリットを解説!【比較表付き】
アジャイル型システム開発の品質管理
イテレーションを1〜4週間に区切るアジャイル開発は、機能ごとのTIME・COSTを固定し、イテレーションごとの状況に応じてSCOPEを変動させていくという考え方で品質管理されるのだといえるでしょう。
そのため、アジャイル開発で重要になるのが「イテレーションごとのレビュー・フィードバック」。アジャイル開発では、開発側が成果物としての「プロダクトの品質」を担うのに対し、発注側は「プロダクトの品質を踏まえて方向性を指し示す」役割を担い、企業担当者も開発チームの一員として品質管理を担当していくことになります。
プロジェクトを成功させるには?システム開発会社の選び方
ウォーターフォール型、アジャイル型、どちらの開発手法を選択する場合でも、開発するシステムの品質を担保するためには、パートナーとなるシステム開発会社との協働が欠かせません。
つまり、システム開発プロジェクトを成功させるためには、高い意識を持って品質管理に取り組める、優良なシステム開発会社を選定することが重要。以下から、品質管理の観点から見た、システム開発会社の選び方のポイントを紹介していきます。
品質管理の体制が整っているか?
一般的なシステム開発プロジェクトでは、「プロジェクトマネージャー(PM)」が品質管理の責務を担います。そのため、PMの力量によって、システム開発プロジェクトの成否が左右されてしまう恐れがあります。
こうした属人的なスキルに左右されない品質管理を目指し、近年ではPMO(プロジェクト・マネジメント・オフィス)を設置する、専任のQMO(クオリティ・マネジメント・オフィサー)を配置するシステム開発会社が増えています。PMOの設置、QMOの配置などの品質管理体制作りに力を入れているシステム開発会社であれば、安心してプロジェクトを任せられるでしょう。
PMO(プロジェクト・マネジメント・オフィス)とは?
PMO(Project Management Office)とは、その名の通り、組織内のプロジェクトマネジメントを横断的に支援する部署のこと。
・組織内のプロジェクトマネジメント方法を標準化する
・個々のシステム開発プロジェクトのマネジメントを支援
・プロジェクト間の人材配置・コストなどのリソース管理
・研修などによるPMの育成
PMOが果たす役割はさまざまですが、目的はプロジェクト管理・品質管理を強化することでシステム開発プロジェクトの成功率を高め、顧客へ高い価値を提供することです。
QMO(クオリティ・マネジメント・オフィサー)とは?
QMO(Quality Management Officer)とは、組織のプロジェクト管理を担うPMOのなかでも、品質管理に特化した役割を担う役職のこと。品質管理が最重視される製造業などでは、独立した専門部署として、QMO(クオリティ・マネジメント・オフィス)が設置される場合もあります。
要求定義フェーズから参加できるか?
システム開発における品質管理の最初のステップは、自社ニーズ・要求を具体化する「要求定義」です。一般的には、自社課題を洗い出し、理想のカタチとのギャップを埋める「システムへの要求」をRFP(提案依頼書)にまとめることが要求定義の基本です。しかし、ITに苦手意識を持つ担当者の場合、自社ニーズ・要求を言語化できないことも。
そんなときは、RFP策定もサポートできるシステム開発会社を選定することもおすすめです。要求定義フェーズからシステム開発に参加してもらえれば、開発工程すべてにわたり一環した品質管理が期待できます。
関連記事:RFPとは?システム開発の質を高める提案依頼書の作り方を解説!【サンプルあり】
システム開発の品質管理まとめ
本記事では、システム開発における品質管理の重要性、発注側として積極的に関わっていくべき理由や方法を含めた、品質管理の基本知識を解説してきました。要点をおさらいしておきましょう。
・品質とは、成果物(システム)に求められる要求・ニーズの達成度
・品質管理とは、システムへの要求を現実的な要件に落とし込んだSCOPEを、TIME・COSTとのバランスを取りながら最大限担保していくこと
・品質管理の方法・プロセスは、SCOPEの定義、テスト・レビューの計画、テスト・レビュー実施の3つ
・システム開発の手法が異なれば、品質管理の手法も異なる
システム開発プロジェクトを成功させるためにも、発注側として積極的に品質管理に携わっていく姿勢が必要です。ただし、発注側の努力だけでは品質管理を徹底させることが難しいのも事実。そのため、なによりも重要なのは、品質管理への高い意識を持つ、優良なシステム開発会社をパートナーとして選定することなのです。
システム開発会社を探している方へ
現在、システム開発会社を探している方はシステム幹事にご相談ください。専門のコンサルタントがあなたの要望を丁寧にヒアリングし、予算にあった最適な開発会社を選びます。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
ご相談・ご紹介はすべて無料。また紹介された制作会社に必ず発注する必要はありません。
この記事を書いた人

梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧