高品質なシステムを提供するためには、適切な品質管理プロセスが欠かせません。品質管理を正しく行うには、品質管理の定義や実施の流れを理解する必要があります。
本記事では、システム開発における品質管理の概要、目的、流れ、開発手法ごとの違い、そして実施する際のポイントについて解説します。
目次
システム開発における品質管理とは
システム開発における品質管理とは、開発側がシステムの機能や利便性について評価するプロセスです。
ここでいう品質とは、開発しているシステムが、発注者の要望やニーズをどの程度満たしているかを示します。発注者のニーズや要求を満たしている度合いが100%に近いほど、高品質なシステムです。
品質管理に関連する言葉として「品質保証」があります。品質保証とは、成果物の品質を満たすために必要なプロセスのことです。品質管理は、成果物の品質を評価する活動全体を指すため、品質保証は品質管理の一部といえます。
システム開発で品質管理を行う目的
システム開発における品質管理の目的は、主に以下の3つです。
- 顧客の要望や要件定義を満たしているか確認するため
- トラブルを回避してスムーズに開発を進めるため
- バグや不具合の再発防止・対応方法確立のため
それぞれの目的について、詳しく解説します。
顧客の要望や要件定義を満たしているか確認するため
品質管理を行うことで、高品質なシステムを開発でき発注者のニーズを満たせます。
発注者のニーズや要件定義は、システム開発の中心となる要素です。どれだけ高性能なシステムを開発しても、軸がぶれてしまえば、発注者からの価値は下がってしまいます。
そのため、品質管理を通じて「仕様に誤りがないか」「要望通りに機能が動作しているか」を確認することが重要です。
この確認作業により、発注者が望む基準や要件定義を満たしたシステムの開発が可能です。
トラブルを回避してスムーズに開発を進めるため
品質管理は、円滑な開発プロセスの進行のために欠かせない要素です。
システム開発では、各工程での品質確認を怠ると、リリース直前になって意図せぬバグや仕様の誤りが見つかる可能性が高くなります。
その場合、修正のために納期が遅れ、発注者と開発会社の双方が、予定外の時間とコストを費やすことになります。見積もりと実際の開発費用や期間に大きなずれが生じると、発注者からの信頼を失いかねません。
トラブルを回避しスムーズに開発を進めるためにも、品質管理は重要です。
バグや不具合の再発防止・対応方法確立のため
品質管理は、バグや不具合の再発防止および対応方法の確立にも効果的です。
品質管理の過程では、品質の向上を阻害する問題点やバグ、不具合をチェックし修正・改善を行います。
このとき、不具合やバグが生じる要因を特定し、対応策を練ることで、後工程やリリース後の再発を防止できます。万が一問題が発生した場合でも、対応策に基づいて迅速に解決できるため、プロジェクトメンバーの負担や発注者のストレス軽減も可能です。
継続的な品質管理により、より安定したシステム開発が実現します。
システム開発の品質管理の流れ
システム開発における品質管理は、下図のような一連の流れに沿って行われます。ここでは、各段階での作業内容について詳しく解説します。
品質管理計画を策定する
まずはじめに、開発側と発注者側の打ち合わせを通じて、品質計画の策定を行います。具体的には、システム開発の要件定義を行ったうえで、要件を満たしているかどうかを判断する際の基準を決めていきます。
特に要件定義は、システム開発の軸となり、品質を左右する重要な工程です。この段階で開発側と発注者側の間に認識のズレがあると、以下のようなトラブルが発生する可能性が高まります。
- 成果物が発注者の望んだ品質を満たせない
- 修正のために工期が伸びる
- 想定外の費用が発生する
開発側は、発注者に対して十分なヒアリングを実施し、システム開発に至った背景や、抱えている課題を漏れなく洗い出すことが大切です。解決のためにどのようなシステムを開発するべきなのか、予算や納期も含めて具体的な計画に落とし込みましょう。
品質測定を行う
設計に基づきシステムが完成したら、品質測定を実施します。テストは以下のように狭い範囲からスタートし、徐々に範囲を広げながら、システムの品質を測定していきます。
- 単体テスト
- 結合テスト
- システムテスト
- 受入れテスト
開発側の品質管理担当者は、徹底したテストを行い動作性や耐久性に問題がないか確認することが大切です。テストが不十分だと、バグや欠陥、仕様の誤りを特定できず、リリース後の不具合やトラブルにつながります。
また、発注側は一般的に受入れテストに立ち会い、開発側のテスト結果と受入れテストの状況に差異がないか、機能性や安全性に問題はないかといったポイントをチェックしていきます。
2932
品質の分析・評価を行う
品質測定の結果に基づき、現状のシステムの品質状態を評価します。
不具合やバグが発見された場合、品質管理担当者はその内容を詳細に言語化し、ドキュメントなどにまとめて報告書を作成します。報告書に記載する内容は以下のとおりです。
- 発生したバグの内容
- 発生したタイミング
- 環境情報
- 再現手法
- 本来の正しい動作など
また、問題点の原因の特定や、問題が及ぼす影響を分析する際には、以下のようなフレームワークを活用します。これらのフレームワークは「QC7つ道具」と呼ばれます。
QC7つの道具 | |
手法 | 内容 |
パレート図 | 問題が生じる原因を重要度順に並べる図表対策の優先順位付けに活用できる |
特性要因図 | 問題が生じる要因を可視化して整理する図表問題の分析と対策立案に活用できる |
グラフ | 数値を円や棒、折れ線を用いて可視化する図表問題点の整理や要因の分析に活用できる |
ヒストグラム | 数値の分布を可視化するグラフ数値の集中度や異常値の検出に活用できる |
散布図 | 2つの要素の関係性を可視化する図表それぞれの要素の相関関係の分析に活用できる |
管理図 | 開発プロセスの安定性を管理する図表プロセスが安定して進行しているか、異常が生じていないかを管理できる |
チェックシート | データを収集し、状況を整理するためのツールシステム品質の観察や測定結果の記録に活用できる |
報告書に基づき修正・検証を行う
エンジニアやプログラマは、報告書に基づいてコードやプログラムを変更し、バグや不具合を解消します。検証段階では、適切な修正が行われているか、その修正内容によって他の動作に影響がないのかを確認します。
修正と検証は、システムが十分な品質に至るまで繰り返しの実施が必要です。最終的には、品質管理担当者によって、問題が解消し品質が向上したと判断されれば修正・検証は完了です。
システムの品質が確実に向上し、発注者の期待に応える成果物を提供するには、このプロセスが欠かせません。
システム開発手法ごとの品質管理の違い
システム開発手法によって、品質管理の実施方法やタイミングは異なります。下表は、主な開発手法であるウォーターフォール型とアジャイル型の、品質管理の違いをまとめたものです。
項目 | ウォーターフォール型 | アジャイル型 |
---|---|---|
品質管理のタイミング | 開発の各工程の完了時(主にテストの段階で実施) | 各開発工程で継続的に実施 |
修正のタイミング | テストが完了した段階で集中的に実施 | 各開発工程のサイクルの中で実施 |
発注者とのやり取り | 主にプロジェクトの計画立案時や要件・仕様変更時(やり取りの頻度は少なめ) | 開発工程の中で定期的にフィードバックを取り入れる(やり取りの頻度は多め) |
変更への柔軟性 | 変更に対しての柔軟性が低め | 変更に対しての柔軟性が高め |
品質管理方法 | 細かな計画と文書に依存する面が大きい | チームメンバーの連携と協力に基づく |
品質管理の責任 | 主に品質管理に特化したチームが中心となる | チームメンバー全員が責任を持つ |
それぞれの手法ごとに、詳しく見ていきましょう。
2942
ウォーターフォール型
ウォーターフォール型は、段階的にシステム開発を進める手法です。手順は以下のとおりです。
工程 | 作業内容 |
---|---|
要件定義 | 顧客のヒアリングを行い、要件定義をする |
基本設計 | システム全体の構成、機能性、データの流れを設計する |
詳細設計 | 各機能やコンポーネントの動作や構造について設計する |
コーディング | 設計をもとにプログラムする |
テスト | 開発されたシステムにバグや不具合がないかチェックする |
保守・運用 | システムを運用し、問題が発生した場合には改善する |
品質管理は基本的にテスト工程で実施され、開発の各段階が完了した時点ではじめてバグ修正が行われます。そのため、品質管理に特化したチームが組まれることも多いです。
アジャイル型
アジャイル型のシステム開発では、開発を小規模な工程に分けて進めます。手順は以下のとおりです。
工程 | 作業内容 |
---|---|
要件定義 | プロジェクトの目的や範囲、必要なリソースやスケジュールを設定する。このときに品質目標も定める。 |
基本設計 | 機能要件と非機能要件、改善点に優先順位をつける。品質管理に関する作業も計画に含める |
スプリント計画 | 短期開発サイクルで達成すべき目標とタスクを決定する。品質管理の計画も予定しておく |
タスク実施 | スプリント計画に基づいて作業し、随時、品質チェックを行う |
進捗確認・調整 | ミーティングで定期的に進捗状況を確認し、品質管理活動の調整も行う |
テスト・検証 | システムの品質チェックを行い、不具合やバグがある場合はすぐに対応する |
レビュー・デモ | 各スプリント終了時に発注者から品質に関するフィードバックを受ける |
リリース | 実際の運用環境で導入して、品質の維持や向上を目指す |
アジャイル型では、各段階ごとに品質管理を行うため、発注者側の要望に対して柔軟に対応でき、継続的な品質向上にも取り組めます。品質管理を成功させるためには、チームメンバー間で連携し、進捗や品質の共有をこまめに行うことが重要です。
システム開発における品質管理のポイント
システム開発の品質管理を成功させるためには、開発側と発注側、双方に注意すべきポイントがあります。ここでは、両者の視点から品質管理のポイントを紹介します。
システム開発側
システム開発側が品質管理を行ううえで重要なポイントは以下の4つです。
- 発注者に対して細やかなヒアリングを実施する
- 品質管理の基準や指標値を明確にしてチーム内で共有する
- 各工程ごとに品質管理を行う
- 関連部署間で密接にコミュニケーションをとる
それぞれ詳しく解説します。
発注者に対して細やかなヒアリングを実施する
発注者へのヒアリングを丁寧に行うことで、要件定義の内容がより具体的になります。
要件定義は、システム全体の品質の軸となる重要なプロセスです。発注者の要求に適した要件定義書の作成が、高品質なシステム開発につながります。
また、ヒアリングの際には、システムのイメージや求める機能だけでなく、システム開発に至った経緯や現状抱えている課題なども確認しましょう。こうした情報を把握することで、発注者の求めるシステム像への理解が深まります。
発注者の回答を復唱し、認識のズレがないか確認しながら進めていくことで、より精度の高い要件定義が可能です。
品質管理の基準や指標値を明確にしてチーム内で共有する
システムの品質や機能、仕様は要件定義に基づいて決定されますが、すべてのチームメンバーが要件定義の場に参加できるわけではありません。
チームメンバー全員が同じイメージを持つためには、品質基準や指標値を明確に設定することが重要です。これにより、要件定義に沿った発注者の期待に見合うシステムが開発できます。
また、定量的な基準を設けることにより、目指すべき品質レベルが明確になり、その後の品質評価や修正工程においても、統一された基準にのっとった品質向上が見込めます。
各工程ごとに品質管理を行う
品質管理は各工程ごとに実施することで、問題の早期解決や高品質なシステム開発につながります。
特にウォーターフォール型のシステムは、段階的に開発プロセスを進めるため、後工程でミスが発覚しても前工程に戻れません。余分な工数の発生や工期の延長を避けるためにも、必ず各工程ごとに品質管理を実施することが重要です。
その際は、先述した「QC7つの道具」のチェックシートが役立ちます。基準を満たしているか、機能や仕様に抜け漏がないかを確認することで、より詳細な品質チェックが実施でき、最終的な成果物の品質も向上します。
関連部署間で密接にコミュニケーションをとる
システム開発の品質を高めるためには、関連部署との連携が重要です。
品質管理の工程では、品質測定の結果や修正内容、その検証結果といったさまざまな情報がやりとりされます。頻繁にコミュニケーションを取ることで、進捗状況や測定結果をスムーズに共有でき、不具合の早期発見や解決にも効果的です。
さらに、システムの変更や改善の影響について協議できれば、システムの品質も向上にもつながります。
発注者
発注者が注意すべきポイントは以下のとおりです。
- 要望を抜け漏れなく明確に伝える
- 開発工程も開発会社に丸投げせず積極的に関与する
発注者側も品質管理に積極的に関与することで、より高品質なシステム開発が可能となります。
要望を抜け漏れなく明確に伝える
高品質のシステムを開発してもらうために最も重要なのは、自社がシステムに求める条件を、開発側に対して抜け漏れなく正確に伝えることです。
発注者側の要求が曖昧だと、開発側は詳細な機能や仕様を把握できません。結果として何度も質問や調整を繰り返さなければならず、工数の増加や納期の遅れが生じる可能性があります。さらに、双方の認識がずれたまま開発が進めば、最終的な成果物が自社のニーズと乖離してしまう恐れもあります。
時間や費用を無駄にしないためには、開発側と発注者側の認識のすり合わせが大切です。
開発工程も開発会社に丸投げせず積極的に関与する
高品質なシステム開発を実現するためには、開発側との適切なコミュニケーションが欠かせません。要件定義が終わり開発工程に移った後も、開発側に任せきりにせず、積極的に関与することが重要です。
発注者が開発プロセスに関与しないと、納期の遅れや予算オーバー、品質の低下を招く可能性があります。また、プロジェクトの進捗状況や品質測定のテスト結果については、発注者も確認することが求められます。
まとめ
システム開発における品質管理は、高品質なシステムを提供するための重要な工程です。
この工程により顧客の要望を満たし、トラブルやバグの再発が防げます。本記事で紹介した流れやポイントを参考にしながら、適切な品質管理を実施してください。
システム開発における品質管理に課題を感じるのなら、専門家への依頼もおすすめです。relationでは、専門チームがプロジェクトの初期段階から保守運用までをサポートします。問題の早期発見・解決を目指し、品質向上に寄与します。
また、頻繁な仕様変更にも柔軟に対応し、システムの最適化も実現可能です。ぜひお気軽にご相談ください。