「システム開発を進めるにあたり、品質管理が心配」
「品質管理で気を付けるべきポイントを知りたい」
今回は、システム開発の品質面で疑問や不安をお持ちの方に向けて、品質管理をテーマに記事をお届けします。
前半では、開発工程でどのような品質管理をおこなうかを解説します。発注側の会社と開発会社それぞれの立場から、具体的にやるべきことをまとめました。
後半では、品質を向上させるためのポイントや品質管理を意識した発注先会社の選び方も紹介します。プロジェクトを成功に導くために、ぜひ参考にしてください。
島添 彰
合同会社Solashi Japan 代表取締役。サントリーにて社内向けシステムの開発・運用に携わる。Yper株式会社を創業し、CTO・CPOとしてプロダクトの立ち上げ・グロースに従事。
システム開発の品質管理とは
システム開発の品質管理とは、文字通りシステム開発の品質を確保するための取り組みのことです。品質管理の対象には、設計書やテストケース、開発プロセスも含まれます。
システム開発で品質管理はとても重要です。適切な品質管理がおこなわれないと、理想のシステムが作れなかったり、トラブルが発生したりする可能性があるためです。
まずは品質管理の目的と、おもな工程をご紹介します。
品質管理の目的
品質管理の目的は、発注会社やユーザーが求める成果物の品質の確保が挙げられます。そのほかに、セキュリティの向上や信頼性の確保、パフォーマンスの最適化などがあります。
また、品質の高い成果物が納品されることで保守を効率的におこなえるため、メンテナンスが容易になるメリットもあります。
品質管理をおこなうおもな工程
システム開発の大まかな工程は、以下の通りです。成果物の品質確保のために、各工程で品質管理をおこないます
- 要求定義
- 要件定義
- 設計(基本設計・詳細設計)
- 実装
- テスト(単体テスト、結合テスト、システムテスト、受け入れテスト)
要求定義と要件定義では、システムに必要な機能を漏れなく定義する必要があります。
設計では、必要な機能が含まれているかだけでなく、セキュリティーやプライバシー、ユーザビリティなども考慮が必要です。
その後、実装をおこない、テストで品質に問題がないかをチェックします。
実際に開発する過程で、「必要な機能が抜け漏れていた」「バグが起きてしまった」など、さまざまなリスクが考えられます。
各工程で予測できるリスクは事前に考慮し、継続的に対策・管理する必要があります。
発注会社が関わる品質管理
ここからは、各工程の具体的な品質管理を、発注会社・開発会社それぞれの立場からご紹介します。まずは発注会社が関わる品質管理を見てみましょう。
- 要求定義
- 要件定義
- 基本設計
- 受け入れテスト
開発会社が品質を保った実装をするのはもちろんですが、実装の前工程である要求定義や要件定義、設計の質も非常に重要です。
そのため、発注会社も品質管理を主体的におこなう必要があります。
要求定義
要求定義は、発注会社が「どのようなシステムを開発したいのか」を具現化していくプロセスです。
開発会社に向けてニーズを伝えるための重要な工程であり、開発会社が主体となっておこないます。
品質管理の観点では、以下のポイントに注意しましょう。
- システムに求める要求に漏れがないか
- システムで実現すべき業務要件に漏れがないか
- 曖昧な定義をしていないか
要件定義
要件定義では、要求定義に沿って、開発するシステムに必要な機能や性能、セキュリティ要件を洗い出し、実装内容を固めていきます。
定めた内容は要件定義書に落とし込み、プロジェクト全体で共有します。期待するシステムを開発するために不可欠なステップなので、慎重に進めましょう。
要件定義は発注会社がおこないますが、ノウハウがなく作成が難しい場合は開発会社へ依頼することも可能です。
ただし、その場合も丸投げはトラブルのもとになります。開発会社とコミュニケーションを取りながら、要求定義の内容が適切に反映されているか確認しましょう。
関連記事:システム開発の要件定義とは?進め方やポイントをわかりやすく解説
基本設計
基本設計とは、要件定義で定めた内容に沿ってシステムの基本設計が策定されるプロセスです。システムの基本機能やインターフェースが具現化され、システムテストも設計されます。
設計書自体は開発会社が作成しますが、発注会社でも不備がないか確認することが大切です。詳細設計や実装工程に入ってしまうと、発注会社にできることは少なくなるからです。
この段階で認識齟齬のないように、ユーザビリティやセキュリティも含めてしっかりチェックしましょう。
受け入れテスト
システム開発のテストは、おもに以下の4種類に分けられます。
- 単体テスト
- 結合テスト
- システムテスト
- 受け入れテスト
このうち、納品前に実施される「受け入れテスト」は開発会社がおこないます。納品されるシステムが、要求定義や要件定義の内容を満たしているかチェックしましょう。
そのほかのテストは開発会社主体で進められますが、開発会社によってテストの質はまちまちです。
確認すべき事項を確認しないままテストが終了されたり、必要なテスト工程を省略されていたりすると、後からバグが見つかる恐れがあります。
各テストの品質は、テストケースレビューで担保されているか」「開発規模に対して、テスターの人数は適切に確保されているか」など、開発会社とのコミュニケーションをよく取っていきましょう。
システム開発会社がおこなう品質管理
続いて、システム開発会社がおこなう品質管理をご紹介します。
- 基本設計
- 詳細設計
- 実装
- 単体テスト・結合テスト・システムテスト
一つずつ解説していきます。
基本設計
要件定義の内容を踏まえて、開発するシステムの全体像を基本設計書に落とし込みます。
基本設計書は、基本構造や機能、性能、セキュリティなどを記述して、発注会社と開発会社が認識をすり合わせるためのものです。
また、プロジェクトの目的や範囲、スケジュール、リスク管理、制約条件も、この段階で設計します。
基本設計の内容は、その後の実装工程に大きく影響します。そのため、詳細設計以降の工程も考慮して、要望と実現性のバランスを取りながら設計するのがポイントです。
また、要件定義との整合性が取れているかも必ず確認しましょう。
詳細設計
詳細設計とは、基本設計をもとに内部構造の設計書を作成するフェーズのことです。
基本設計書がプロジェクト全体の方向性をまとめたものであるのに対し、詳細設計書は、実装をおこなうプログラマーへの指示書となります。
詳細設計では、開発標準化のための記述ルールの策定や、各テストの設計書の作成もおこないます。
「設計書の可読性や保守性が備わっているか」「テストコードが正しいか」などをチェックする必要があります。
実装
実装は、詳細設計書をもとにプログラマーがコーディングするプロセスです。
バグの混入や実装漏れなどの基本的なチェックはもちろん、ソースコードの可読性も確認すべきポイントです。
可読性の低いソースコードは、記述内容を読み取りにくくなります。特にソースコードを書いた本人以外にとっては、理解するのが難しくなるでしょう。
そのため、バグの混入が起きやすくなったり、改修に時間がかかったりするリスクがあります。
単体テスト・結合テスト・システムテスト
テストでは、実装時に混入したバグを洗い出し、問題なくシステムが動くかを確認します。システム開発会社がおこなうテストは以下の3つです。
- 単体テスト
- 結合テスト
- システムテスト
それぞれ解説していきます。
単体テスト
単体テストは、単体のモジュールの完成時におこなうテストです。小さな範囲を対象とした複雑性の低い工程であり、バグを見つけやすいのが特徴です。
結合テスト
結合テストは、単体テストが完了した各モジュールを組み合わせて、動作確認をするテストです。
単体テストでは問題がなかったモジュールでも、結合テストにより動作不良やバグが見つかることがあります。
後工程をスムーズに進めるための重要な工程であり、意図した動作や挙動になっているかをしっかり確認する必要があります。
システムテスト
システムを一通り開発した後に、開発会社が最終確認としておこなうテストです。
要件定義で定めた機能が実装されているか、発注会社が求める性能を満たしているかなどを見極めます。
システム開発の手法による品質管理の違い
システム開発の手法には「ウォーターフォール開発」と「アジャイル開発」の2種類があります。
ここでは、各手法における品質管理の特徴を比較して解説します。
ウォーターフォール開発
ウォーターフォール開発では、仕様を先に決めてから、各工程を順序通りに開発していきます。
品質管理がしやすい反面、不具合が発生すると次に進めないのがデメリットです。また、後戻りが効かず、仕様や計画の変更がしづらいのも特徴です。
アジャイル開発
アジャイル開発は、設計や実装やテストを、システム全体ではなく小単位となる機能ごとに反復する手法です。
アジャイル開発では開発中でも、段階的に機能ごとの評価ができます。したがって、プロトタイプをリリースしてから品質改善・機能拡張をおこなうことも可能です。
発注会社と開発会社とで意見を交わしながら反映を繰り返すため、こまめなコミュニケーションが重要となります。
詳しくは「アジャイル開発とは?メリット・デメリット、進め方を詳しく解説」をご覧ください。
システム開発の品質管理のポイント6つ
ここからは、システム開発の品質管理のポイントを6つご紹介します。
- 定量的な指標で評価する
- 基準を明確にする
- 要求の漏れがないか確認する
- 工程ごとに品質を管理する
- こまめにコミュニケーションを取る
- 品質保証が適切か把握する
1. 定量的な指標で評価する
各工程の品質を評価する際は、定量的な指標で評価することが大切です。
曖昧な評価ではなく、「レビュー時間は何分かかったか」「不具合は何件発生したか」のように、具体的な指標で管理しましょう。
客観的な数値を用いることでプロジェクトの現状を全メンバーに共有でき、目指すべき達成事項や方向性が明確になります。共有の際には、グラフなどで可視化するのもよいでしょう。
ただし、定量的な指標は品質を確実に担保できるものではない点に注意しなければなりません。たとえば不具合件数が多くても、すべてのバグを検出できているとは限らないからです。
しかし、不具合件数が極端に多い、あるいは極端に少ない場合には、何か問題があると考え対策ができます。問題を察知する手段としては有効です。
2. 基準を明確にする
開発の条件に応じて、満たすべき基準を定めることもポイントです。システムの品質管理では、目に見えないものを評価する必要があります。
満たすべき基準を設けることで、発注会社が期待する品質レベルが明確に共有され、開発会社との齟齬を防げます。
たとえば、セキュリティでは「許可する者のみがアクセスできる」「ログを追跡できる」のように、満たすべき基準を設定します。
3. 要求の漏れがないか確認する
システム開発をスムーズに進めるためには、要求を網羅することが重要です。要求の漏れをなくすには、要求定義と要件定義のプロセスが肝となります。
要件定義書は、要件を機能要件と非機能要件に分類したうえで、明確に文書化する必要があります。また、重要度や影響度に応じて、優先順位を設けるのもポイントです。
4. 工程ごとに品質を管理する
工程ごとに品質を管理することで、トラブルや不具合に早急に対処できます。
開発会社が主体となる設計以降の工程でも、問題を早期発見するには、発注会社の協力も欠かせません。積極的に関わりながら、こまめに進捗状況を確認しましょう。
5. こまめにコミュニケーションを取る
プロジェクトを円滑に進めるには、開発現場とのコミュニケーションが欠かせません。開発会社との信頼関係が構築できれば、こまめな報連相をしてもらえるようになるでしょう。
また、社内でのコミュニケーションも重要です。特に要求定義や要件定義の段階では、実際にシステムを使う関連部署と連携しましょう。
現場の声やフィードバックをヒアリングすることで、開発するシステムの方向性を調整できます。
6. 品質保証が適切か把握する
品質保証が適切かどうかも把握しましょう。品質保証とは、開発したシステムの品質を実際に検証し、不具合や問題を特定して修正する取り組みのことです。
満たすべき基準をクリアしているか確認し、不具合や問題が発見された場合は適切に修正する必要があります。
品質管理を円滑におこなう会社の選び方
品質管理をスムーズにおこなうには、以下のポイントに着目して発注先の会社
を選びましょう。
- 品質管理体制が整っている開発会社に依頼する
- 品質管理業務のみ専門の会社に依頼する
品質管理体制が整っている開発会社に依頼する
品質管理体制が整っており、全社的に取り組んでいる開発会社に依頼をしましょう、
システム開発では、各テスト・各工程でのアウトプットを随時確認し、レビューを重ねることで高い品質を実現できます。
そのため、組織全体で品質目標達成をサポートするための体制を構築していることが重要です。
システム開発では通常、プロジェクトマネージャーが品質管理の責任を担います。優秀なプロジェクトマネージャーのいるシステム開発会社へ依頼することがポイントです。
弊社「Solashi Co., Ltd」では、事業立ち上げやスタートアップ案件を担った経験のあるプロジェクトマネージャーが複数名在籍しています。ぜひお気軽にご相談ください。
品質管理業務のみ専門の会社に依頼する
システム開発を内製化している場合、品質管理のみをプロに任せる方法もあります。品質管理専門の会社に依頼することで、不具合を早期発見できる可能性があります。
あるいは、外部の視点を介することで、自社だけでは見逃してしまう不具合を見つけられるかもしれません。
品質管理のみを提供している開発会社は限られますが、効率よく品質を管理したい場合におすすめです。
高品質のシステム開発はSolashiまでご相談を
高品質のシステム開発をご希望なら、ベトナムのシステム開発会社「Solashi Co., Ltd」へご相談ください。コストパフォーマンスが高く、スムーズな開発をご提供します。
弊社には、ブロックチェーンやAIなどの先端技術に精通したエンジニアが多く在籍しています。プロトタイプをリリースしてから品質改善・機能拡張ができるアジャイル開発にも対応しています。
また、日本語が堪能なブリッジSEも開発をサポートし、現地のエンジニアに対して細やかな希望や指示を翻訳して伝達します。言葉の違いによるギャップを感じずに、安心してご依頼いただけます。
品質管理体制の整ったシステム開発会社を探している方は、ぜひ「Solashi Co., Ltd」までお問い合わせください。
島添 彰
合同会社Solashi Japan代表。1989年4月生まれ、福岡県出身。大阪府立大学大学院情報数理科学専攻修了。2014年サントリーホールディングスのIT機能をもつ「サントリーシステムテクノロジー株式会社」に入社。自動販売機の配送管理や効率化、販売管理システムの開発から運用、導入まで広く担当する。2017年にYper株式会社を創業、同社のCTO・CPOに就任。アプリ連動型の置き配バッグ「OKIPPA(オキッパ)」の立ち上げ・プロダクトのグロースに携わる。東洋経済社の名物企画「すごいベンチャー100」、Forbes誌による「Forbes 30 Under 30 Asia 2019」に選出される。