はじめに
はじめまして。AMBLの青木と申します。好きな色は紺碧です。沖縄の泡盛に「紺碧」という銘柄があり、気に入って飲んでいました。
私は現在、金融・投資システムの開発に携わっており、統合テストから参画して現在はシステムテストを行っています。
突然ですが、「ソフトウェア品質とは何か?」という問いに対して皆様はどのように答えますか?
以前の私だったら、恐らく「仕様通りに作られ、問題なく動作できること」と答えていたと思います。
しかしコロナ禍で多くのシステムのDX化が進み、システムやソフトウェアが人々の生活に根ざしている現代では、その浸透度に比例して、システムやソフトウェアの品質不良に起因するリスクが高まっており、品質の重要を強く意識する必要があります。
そこで本稿では、経済産業省が掲出している「ソフトウェアメトリクス高度化プロジェクト プロダクト品質メトリクス WG ー システム/ソフトウェア製品の品質要求定義と品質評価のための メトリクスに関する調査報告書」を具体的に業種別に当てはめて考えていきたいと思います。
まず、品質を考慮するうえで活用できるソフトウェア品質特性を、「製品品質モデル」と「利用時の品質モデル」に分けて考え方を説明し、記事の後半で業種別にこのモデルを利用して考えられる要件定義の実例をご紹介します。
要件定義の際に必要となる品質特性を選定、確認するための基準としてお役立て頂けますと幸いです。
品質モデル概要
まずは、「品質モデルとは?」という点をご説明します。品質モデルとは、ソフトウェアの品質を確保する上で必要となる特性を1つのモデルとして定義したものです。
品質モデルは国際基準である「ISOとIEC」が制定している規格の中で定義されている内容です。続いて「ISOとIEC」について簡単にご説明します。
ISOは正式名称を国際標準化機構(International Organization for Standardization)といい、電気、電子技術、通信分野を除いた全ての産業分野に関する国際的な規格を策定している非政府機関です。
もう一方のIECは正式名称を国際電気標準会議(International Electrotechnical Commission)といい、電気工学・電子技術分野に関する国際標準を策定しています。
このISO とIEC が共同でソフトウェア品質について制定している規格を「 ISO / IEC 25000 SQuaRE シリーズ」と言い、品質モデルはその中で定義されています。
「製品品質モデル」は、ソフトウェア製品そのものが持つ品質の特徴を定義しているもので、「利用時の品質モデル」は実際に利用される際の有効性や安全性、満足度などについて定義しているものです。
ここからは「製品品質モデル」と「利用時の品質モデル」について順に説明します。
製品品質モデル
(出典:経済産業省 ソフトウェアメトリクス高度化プロジェクト プロダクト品質メトリクス WG ー システム/ソフトウェア製品の品質要求定義と品質評価のための メトリクスに関する調査報告書 )
まずは「製品品質モデル」から見ていきます。
製品品質モデルは、ソフトウェアの使いやすさや性能、信頼性、セキュリティなど、機能以外の要件(非機能要件)の定義として活用することができます。
「機能適合性」、「性能効率性」、「互換性」「使用性」、「信頼性」、「セキュリティ」、「保守性」、「移植性」と8つの特性に区分されており、それぞれの特性とソフトウェアの要求を照らし合わせ、品質確保に必要な要素を網羅的に確認できるというものです。
まずは、8つの特性をそれぞれ詳しくみていきましょう。
2−1:特性1:機能適合性
システム、ソフトウェアに実装された機能がユーザーからの要求をどれだけ満たしているか?
<副特性>
・機能完全性 ユーザーの目的を機能として満たしているか
・機能正確性 機能が正確に動作するか
・機能適切性 ユーザーの目的を達成する為に機能が適切な仕様になっているか
2−2:特性2:性能効率性
システムを実行する際の資源効率や性能が適切であるか?
<副特性>
・時間効率性 非機能要求に対してシステムが応答、処理などを実行する速度を満たしているか
・資源効率性 メモリやHDなどの資源使用量が非機能要求を満たしているか
・容量満足性 同時利用数やデータの許容量などシステムの容量が非機能要求を満たしているか
2−3:特性3:互換性
システムが同じ環境の他システムに置き換えても同様に動作できるか、またデータを共有し利用できるか?
<副特性>
・共存性 他のソフトウェアと同じ環境でソフトウェアを共存させることができること、また、後から別のソフトをインストールしたために正常に動かない、などの事象が発生しないか
・相互運用性 他システムとの連携が上手くいくか
2−4:特性4:使用性
ユーザーがシステムを利用する際に有効かつ効率よく、満足に利用することができるか?
<副特性>
・適切度認識性 ニーズを適切に満たしているかということをユーザーが認識できるか
・習得性 ユーザーが使い方を学習しやすいか
・運用操作性 ソフトウェアの運用、操作がしやすいか
・ユーザーエラー防止性 ユーザーの使用時にシステムが誤操作されないように防止できているか
・ユーザーインターフェース快美性 UIがユーザーを満足させるようなものになっているか
・アクセシビリティ 幅広い範囲の心身特性や能力の人が利用し目的を達成することができるか
2−5:特性5:信頼性
システムが指定の時間、条件下で適切に機能を実行することができるか?
<副特性>
・成熟性 障害が発生した際に、ソフトウェアが安定して稼働し続け、故障しないでいられるか
・可用性 ユーザーが使用したいときに使用できるか
・障害許容性 障害が起きてもソフトウェアが機能し続けられるか
・回復性 障害から回復し、引き続き正常に機能することができるか
2−6:特性6:セキュリティ
認められたデータアクセスの権限について、システムがデータを保護できているか?
<副特性>
・機密性 認められた権限からのアクセスが遵守されているか
・インテグリティ 権限を持たない場合にデータへアクセスすることや修正することを防止しているか
・否認防止性 システムにおいての事象や行為が引き起こされた証明できるようになっているか
・責任追跡性 システムにおいての行為を追跡し、実施の実態を特定することができるか
・真正性 ユーザーやデータの同一性を認証、証明できているか
2−7:特性7:保守性
システムを修正する場合に有効性、効率性を考慮した構造になっているか?
<副特性>
・モジュール性 システムが別々の要素から構成されている、モジュール構成になっているか
・再利用性 システムの資産を他のシステムの資産作成に使用することができるか
・解析性 システムの修正箇所が識別できるようになっているか、修正時の影響範囲について分析することができるか
・修正性 システムの修正時にバグが出にくく、デグレートも発生しにくくなっているか
・試験性 システムの試験を行う際の基準が確立されており、有効かつ効率よく試験が実行できるか
2−8:特性8:移植性
ソフトウェアを別の環境へ移した際に、容易であるか、またそのまま動作するか?
<副特性>
・適応性 システムを他の環境に移植する場合やバージョンアップする場合などにおいて問題なく動作するか
・設置性 指定された環境下にシステムを設置すること、及びその環境から削除することができるか
・置換性 同じ環境下で製品を同一目的の他のソフトウェア製品に置き換えることができるか
以上が製品品質モデルの8つの品質特性です。
これらはあくまで ISO / IEC の規格として定められているものであり、システム、ソフトウェア開発において、これらの品質特性全てを網羅しなければならない訳ではありません。
ソフトウェア品質に求められる要求、期待は提供するユーザーごとに異なります。各品質特性をベースにして、ユーザーのために優先すべき特性を検討し、組み入れていくことで、顧客満足度を向上させることが期待できます。
では続いて、利用時の品質モデルについて見てみましょう。
利用時の品質モデル
(出典:経済産業省 ソフトウェアメトリクス高度化プロジェクト プロダクト品質メトリクス WG ー システム/ソフトウェア製品の品質要求定義と品質評価のための メトリクスに関する調査報告書 )
次に「利用時の品質モデル」の5つの特性を一つずつ順番に見ていきます。
3−1:利用時品質モデルの特性1:有効性
システムを利用することでユーザーが目標を正確に、完全に達成することができるか?
3−2:利用時品質モデルの特性2:効率性
目標を達成する為にユーザーが適切な量の資源を利用することができるか?
3−3:利用時品質モデルの特性3:満足性
システムがユーザーのニーズを満たすことができているか?
<副特性>
・実用性 ユーザーがシステムを利用し目標を達成したことで、そのユーザーをどれだけ満足させられているか
・信用性 ユーザーがシステムを利用する際に、意図したとおりに動作することをどれだけ確信しているか
・快感性 ユーザーのニーズを満たすことによりどれだけ喜びを感じられているか
・快適性 ユーザーがシステム利用時にどれだけ快適に利用できているか
3−4:利用時品質モデルの特性4:リスク回避性
ユーザーがシステムを利用するにあたり、経済状況や生活、環境における潜在的リスクを緩和することができるか
<副特性>
・経済リスク緩和性 ユーザーの経済状況に関するリスクを緩和することができているか
・健康、安全リスク緩和性 ユーザーの健康や安全などの生活に関するリスクを緩和することができているか
・環境リスク緩和性 ユーザーの環境に関するリスクを緩和することができているか
3−5:利用時品質モデルの特性5:利用状況網羅性
想定される指定の状況下で、ユーザーが問題なくシステムを利用することができること
<副特性>
・利用状況完全性 想定した全ての利用状況で、他の利用時の品質特性を伴って問題なくシステムが利用できているか
・柔軟性 想定した要求事項を逸脱した状況で、他の利用時の品質特性を伴って問題なくシステムが利用できているか
以上が利用時の品質モデルの品質特性です。
利用時の品質モデルも製品品質モデルと同様に、利用するユーザーが要求することや必要とすべきことに重きをおいた上で、これらの特性をベースにして重要と考えられる構成要素について検討していくことが肝要であると言えます。
有効性~リスク回避性については、ISO / IEC 9126 の4つの特性と共通していますが、満足性、リスク回避性については副特性が設けられ、より深堀して定義されています。
特にこと「品質」、つまりシステム、ソフトウェアを利用したことで得られる体験の質に対する重要性の高まりや、リスクへの感応度の高まりから、これらに対する意識も高まっていると考えられます。
また全体を通して包括的に動作することができるかを、利用状況網羅性として定義した点も変更点として挙げられます。
製品品質モデルと利用時の品質モデルを使った業種別・具体的な要件定義例
ここまで、「製品品質モデル」と「利用時の品質モデル」についてそれぞれ詳しく見てきました。ここからは、この二つのモデルを利用して、製品のクオリティを担保するために必要な要件定義の事例を、「金融・保険分野」、「公共分野」、「一般的なWebコンテンツ」の3つに区分してご紹介します。
なぜこの3つの分野(業種)をピックアップするかというと、まんべんなく品質特性を紹介できると考えたからです。以下はそれぞれの分野ごとに特徴的な品質特性に絞って記載します。
4−1:金融・保険分野のシステム
金融や保険分野のシステムを構築する際に、重点を置くべき「製品品質モデル」の品質特性は以下の5点です。
- 機能適合性 (副特性:機能正確性)
- 性能効率性 (副特性:時間効率性)
- 使用性 (副特性:適切度認識性)
- 信頼性 (副特性:可用性、障害許容性)
- セキュリティ(副特性:機密保持性)
この中で「機能適合性」と「性能効率性」について具体的に見ていきます。
機能適合性は、副特性の1つ「機能正確性」の観点から、
・金融市場における信頼を損なわない為に、正確なデータ処理がされること
・契約締結などに使用する各種書面が正確に印刷されること
・ユーザーが使用する端末の機能が正確に動作すること
などの要件を定義することができます。
次に「性能効率性」の副特性の1つ、「時間効率性」の観点から、
・株式の売買注文において、迅速なデータ処理(定められた基準以内に処理)されること
・保険料の算出を行うにあたり、一定の基準以内に実行処理が完了すること
という要件を定義することができます。
次に、金融や保険分野のシステムが重点を置くべき「利用時の品質モデル」の品質特性は以下の3点です。
・有効性
・満足性 (副特性:信用性)
・リスク回避性 (副特性:経済リスク緩和性)
この中で「有効性」と「 リスク回避性」について具体的に見ていきます。
有効性の観点から、
・保険料算出において、保険契約者への不適当な不利益が生じないよう正確かつ完全に処理が行われること
・株式の売買注文において、ユーザーの注文が正確に入力され、適切に約定すること
また、リスク回避性は、副特性の1つ「経済リスク緩和性」の観点から、
・金融商品の流動性を損なうようなデータ欠損やシステム停止などが起きないよう管理されている、または対策が講じられていること
などのような要件を定義することができます。
4−2:公共分野のシステム
公共分野のシステムで、重点を置く「製品品質モデル」の品質特性は以下の4点です。
・機能適合性 (副特性:機能正確性)
・性能効率性 (副特性:時間効率性)
・信頼性 (副特性:成熟性)
・セキュリティ(副特性:インテグリティ)
この中で「 信頼性」と「セキュリティ」について具体的に見ていきます。
信頼性の副特性の1つ「成熟性」の観点から、
・利用者の財産や生命など、重要なことに関わる情報であるため、システムが障害なく安定して稼働すること
また、セキュリティは、副特性の1つ「インテグリティ」の観点から、
・重要な顧客情報を取り扱うため、データ改ざん等がされないよう厳重に権限が管理されていることという要件を定義することができます。
*システムにおける「インテグリティ」とは、プログラムやデータにアクセスする権限を適切に付与すると同時に権限を持たない者がアクセス・修正・改ざんすることに対して適切な防止策をとることです。
次に、「利用時の品質モデル」で重点を置く品質特性は以下の2点です。
・有効性
・満足性 (副特性:実用性)
この中で「満足性」について具体的に見ていきます。
副特性の1つ「実用性」の観点から、
・ICカードによる出改札において、ピーク時間の通行量でも規定の時間内に通過することができること
などのような要件を定義することができます。
4−3:一般的なWebコンテンツ分野のシステム
一般的なWebコンテンツが重点を置くべき「製品品質モデル」の品質特性は以下の3点です。
・機能適合性 (副特性:機能正確性)
・性能効率性 (副特性:時間効率性)
・使用性 (副特性:適切度認識性、ユーザーインターフェース快美性)
この中で「 使用性」について具体的に見ていきます。
使用性の副特性の1つ「適切度認識性」の観点から、
・ユーザーが取得したい情報が存在することを明示できていること
・ユーザーや商品などの検索が容易に行えること
また「ユーザーインターフェース快美性」の観点から、
・見た目や操作方法が複雑でないこと
・統一感のあるデザインで快適に使用することができること
などのような要件を定義することができます。
最後に、「利用時の品質モデル」で重点を置く品質特性は以下です。
・満足性 (副特性:快感性)
副特性の1つ「快感性」の観点から、
・教育システムにおいて、ゲーム形式等の学習意欲を持続させるような仕組みが用いられていること
などのような要件を定義することができます。
まとめ
「製品品質」と「利用時の品質」は、あくまで品質を考慮する際のベースです。
私は、エンジニアとして要件定義を行う際に根本的に重要なことは、「想定しているユーザーに対してどれだけ満足してもらえる品質を作り上げることができるか」であると考えています。
今後ますますDX化が進むにつれ、顧客ニーズは多種多様になり、品質に関する悩みもより複雑になってくるのは明白です。そのような状況において、お客様が求めるものだけでなく、DX推進による顧客ビジネスの変革や本質的な使い勝手を追求し、より価値の高いプロダクトを提供できるのがプロフェッショナルであり、私自身もそのような技術者を目指して行きたいと思っています。
記事をご覧いただいた方が品質についてお考えになる際に、少しでも本稿が参考になれば幸いです。
最後までお読みいただきありがとうございました。