新たなサービス・製品を開発するうえで、これまで以上に複数のシステムが連携することで実現され、さらには複数の企業がパートナーシップを組むことで成り立っているものが増えてきております。
ユーザーが利用している1つの機能であったとしても、複数システム・複数ベンダーが連携し、はじめて1つの機能を実現していることが多いのが実情ではないでしょうか。
課題の1つとして、テストフェーズで不具合を検出し改修するアプローチだけでは、品質を高めにくくなってきていると感じています。
なかには、V字モデルの下流工程であるテストフェーズにおいて、インシデントとして明らかになった場合においても、インシデントが検出された段階から品質を高め市場に投入できるかというと難しい現実があるかもしれません。
具体的な1つの例として、異なる企業がそれぞれ担う複数システムで、1つの要求を担うケースがあげられると思います。
ある特定の機能に求められる「応答時間」や「完了までの処理時間」を満たすことが要求されている場合において、各システム向けに適切に「要求」が伝えられていないケースが要因・リスクとして考えられると思います。
この場合においては、「要求」が適切な粒度に分解され、それぞれのシステムを担う企業に対して伝わっていなくては実現できません。
さらには、異なる文化の企業同士で対話をする場面が増えてきたことで、例えば「要求」「品質」に対する言葉、そして言葉の意味合い、捉え方に差があり、認識を合わせていく点においても課題があるかもしれません。
新たなサービス開発・製品開発が適切な「品質」で世に送り出していくためには、私たちエンジニア同士が、「品質」に対して 「共通の観点」「共通のことば」で考え、対話することが、今、求められているのではないかと感じています。
「品質」について共通観点、共通用語として思い浮かぶものとして、ソフトウェアテストにおいても馴染みのある 『品質特性』が挙げられると思います。
その『品質特性』を含めた、ISO/IEC 25000シリーズ(以下、SQuaRE)が、私たちが「品質」について対話を進めるうえで、選びやすいものになると感じています。
おさらいになる点ではありますが、
ISO/IEC 25000シリーズは、システムおよびソフトウェア製品の品質要求および評価(SQuaRE)を目的とした国際規格です。
- ISO/IEC 25010:システムおよびソフトウェア製品の品質モデルを定義します。いわゆる『品質特性』について記載があります。
- ISO/IEC 25020:品質測定のためのデータの収集と評価に関するガイドラインを提供します。
- ISO/IEC 25030:品質要求の仕様とその文書化に関するガイドラインを提供します。
- ISO/IEC 25040:品質評価プロセスの実施に関するガイドラインを提供します。
- ISO/IEC 25050:品質測定のための一般的なガイドラインを提供します。
上流工程の「要求分析」フェーズにおいて、充分な分析・検討・要求の構造化が行えているかについては、その要求を受け取る「要件定義」フェーズ、要求が実現できていることを確認する「受入れテスト」に携わるエンジニアも積極的に関わっていくことが求められていると思います。
そうすることで、下流工程へ引き継いでいく「要求」が適切にテーラリングされた「要求」となっていき、安心してそれぞれの工程で担うことに注力できるようになると思います。
あくまでも一例ですが、馴染みのあるV字モデルに対して、ISO/IEC 25000シリーズの観点を割り付けてみました。
現在担っておられる工程において、どの時点で品質特性を意識したアプローチが必要になっているのかが、意識しやすくなれば幸いです。
V字モデルの各工程とISO/IEC 25000シリーズの割り付け
要求分析
- ISO/IEC 25010: 品質モデルを使用して、システムやソフトウェアの品質特性(機能適合性、性能効率性、使用性、信頼性、セキュリティ、互換性、保守性、移植性)を明確に定義します。
- ISO/IEC 25030: 品質要求の定義に関するガイドラインを使用して、ステークホルダーの要求を品質要求に変換します。
要件定義
- ISO/IEC 25010: 定義された品質特性に基づいて、具体的な品質要求を詳細化します。
- ISO/IEC 25030: 品質要求の文書化と管理に関するガイドラインを適用します。
基本設計
- ISO/IEC 25010: 品質特性を考慮した設計を行い、システム全体のアーキテクチャを決定します。
- ISO/IEC 25020: 設計段階での品質測定指標を設定し、設計の品質を評価します。
詳細設計
- ISO/IEC 25010: 各コンポーネントの設計において、品質特性を具体的に反映させます。
- ISO/IEC 25020: 詳細設計の品質測定指標を設定し、設計の品質を評価します。
コーディング
- ISO/IEC 25020: コーディングの品質測定指標(コードの複雑さ、カバレッジなど)を使用して、コードの品質を評価します。
コードレビュー
- ISO/IEC 25020: コードレビューの品質測定指標を使用して、コードの品質を評価します。
- ISO/IEC 25040: 品質評価プロセスを適用し、コードの品質を評価します。
単体テスト
- ISO/IEC 25020: 単体テストの品質測定指標(テストカバレッジ、エラー率など)を使用して、テストの品質を評価します。
- ISO/IEC 25040: 品質評価プロセスを適用し、テストの品質を評価します。
結合テスト
- ISO/IEC 25020: 結合テストの品質測定指標を使用して、テストの品質を評価します。
- ISO/IEC 25040: 品質評価プロセスを適用し、テストの品質を評価します。
システムテスト
- ISO/IEC 25020: システムテストの品質測定指標を使用して、テストの品質を評価します。
- ISO/IEC 25040: 品質評価プロセスを適用し、テストの品質を評価します。
受入れテスト
- ISO/IEC 25020: 受入れテストの品質測定指標を使用して、テストの品質を評価します。
- ISO/IEC 25040: 品質評価プロセスを適用し、テストの品質を評価します。
まとめ
- ISO/IEC 25010: 要求分析、要件定義、基本設計、詳細設計
- ISO/IEC 25020: 基本設計、詳細設計、コーディング、コードレビュー、単体テスト、結合テスト、システムテスト、受入れテスト
- ISO/IEC 25030: 要求分析、要件定義
- ISO/IEC 25040: コーディング、コードレビュー、単体テスト、結合テスト、システムテスト、受入れテスト