🔁
概念 #テスト・品質保証 #コード品質 📚 ソフトウェア品質管理

ライフサイクルプロセスのマネジメント(2.2)

ソフトウェア開発の各フェーズ(要件定義〜保守)を一貫した品質基準で管理するライフサイクルプロセスマネジメントの考え方

概要

ライフサイクルプロセスのマネジメントとは、ソフトウェアの企画・要件定義・設計・実装・テスト・リリース・保守・廃棄という各フェーズにわたって、品質を一貫して管理する仕組みを指す。

品質問題の多くは「後工程で発覚するが、原因は前工程にある」。ライフサイクル全体を見渡した品質管理が必要な理由はここにある。

主要な標準・フレームワーク

標準概要
ISO/IEC 12207ソフトウェアライフサイクルプロセスの国際標準。開発・運用・保守・支援プロセスを定義
ISO/IEC 15288システムライフサイクルプロセスの標準。ソフトウェアより上位のシステム視点
V字モデル開発フェーズとテストフェーズを対応付けたモデル。各工程の成果物と検証の関係を明確にする

ライフサイクル各フェーズの品質管理ポイント

フェーズ品質上の主な関心事
要件定義要件の曖昧さ・抜け・矛盾の排除。ここでの欠陥は後工程で最も高コスト
設計アーキテクチャの品質属性(性能・保守性・セキュリティ)の作り込み
実装コーディング規約の遵守、静的解析、ユニットテストのカバレッジ
テストテスト計画の達成度、欠陥の検出率と残存リスクの評価
リリース受入れ基準の達成確認、リリース判定
保守変更による品質劣化の防止、回帰テストの実施

欠陥の発生コストと検出タイミング

欠陥の修正コストは発見が遅いほど指数的に増大する(一般に「10倍ルール」と言われる)。

要件段階で発見 → コスト 1
設計段階で発見 → コスト 10
実装段階で発見 → コスト 100
リリース後に発見 → コスト 1000

ライフサイクル全体での品質管理は、このコストカーブを左にシフトさせることが目的。

関連概念