SQuBOK Guide V3 を勉強してみた(1)

2022/03/24に公開

はじめに

SE・バックエンドエンジニアからQAエンジニアにジョブチェンジしてから早4年。
システム開発で実施すべきテストは経験しているが、
理解したつもりになっていると思ったのがきっかけで、
ソフトウェア品質を体系的に学ぶべく「SQuBOK Guide V3」を手に取りました。
※自分ではできるつもりでいるけど、人に説明できないとかね
目標としてはJCSQEの資格を取得すると共に、
せっかくなので勉強したことを自分の中で整理しアウトプットしていきたい。
Zennを始めたのはこのような経緯に至ります。
※最後に書くけど、資格取得に向けてお願いもある

本題

さて今回は第1章の「品質の概念」を学んでいきたいと思います。

ソフトウェア品質の基本概念

1.1 KA:品質の概念

(1)品質の定義
ソフトウェア品質の代表的な定義:明示された状況下で使用するとき、明示的ニーズまたは暗黙ニーズを満たすためのソフトウェア製品の能力
※なかなか抽象的
品質の本質の理解:顧客の要求把握・要求の実現・結果として得られる顧客満足、という3つの要素から考えると良い
※顧客目線が重要ってことかしら

  1. 顧客の要求把握
    明示的要求や規制要求事項だけでなく、明示されない常識的な要求や、潜在的なニーズや期待なども含む。
    昨今は、社会や環境への影響も考慮する必要があるため、要求の取捨選択やバランスが重要となってきている。
    ※言われたことだけ満たせば良いわけではない
  2. 要求の実現
    要求の実現とは、さまざまな観点からの顧客の要求をソフトウェアの要求に変換し実現すること
  3. 結果として得られる顧客満足
    要求の実現は当たり前となり、顧客の予想を超えた価値の提供が重要
    ※使う側として考えると納得してしまう

(2)企業と品質とソフトウェア
ソフトウェアの位置付けと変遷、価値の認知や創出スピードの変化を的確に把握して、製品やサービスの品質を考えることが肝要である。

(3)ソフトウェア品質に関する用語
ソフトウェア開発途中に摘出される障害は、「機能性欠陥」と「発展性欠陥」に分類される。
機能性欠陥は、障害(fault)の定義に該当し、故障(failure)を引き起こす。
発展性欠陥は、コードの読みやすさや構造などに起因する。コーディングルールからの逸脱は、コードの見通しの悪さを引き起こし、将来の保守工数の増大や障害を誘発する。
※発展性欠陥はスピード感を優先する現代においてあるあるよね。。

1.1.1 S-KA:品質の定義(品質の考え方の変遷)

品質は、物質の様相を指す概念として定義された。
ドイツやオーストリア:商品学では商品の質的性質を主として材質や原料の側面から議論し品質を分析した。
米国:品質管理は物質的な側面よりも、プロセスを管理することによって、均一な品質の製品を安定して生産することに関心を寄せた。
ソフトウェアの歴史:知識を持った人がサービスとして提供していたことを、コンピューターに肩代わりさせるために登場したのがソフトウェアである。
1950年代はプログラムが正しく動くことが顧客にとって重要であったが、
その後、信頼性や処理時間に焦点が移り、
1980年代には信頼性は当たり前品質と称されて、使用性に目が向けられ始めた。
次にセキュリティやセーフティが大きな関心事になり、
現在では、ソフトウェアを使ったサービスの品質が注目されている。
このように、ソフトウェアの果たす役割の変化が品質の考え方に深く影響を与えていることを理解する必要がある。

1.1.2 S-KA:ソフトウェア品質モデル

ソフトウェア品質モデルとは、ソフトウェアの品質を階層構造のモデルで表現したものである。
ソフトウェア品質は「誤りの有無」のみで評価されるではなく、ユーザーのニーズを満たすためにさまざまな視点のソフトウェア品質特性から評価されなければならない。
1973年に階層構造を持つ品質モデルを提案したのが最初である。
1977年に品質特性を「利用者視点(ファクター)」「開発者視点(クライテリア)」「測定可能なメトリクス」の3階層の構造を持つ品質モデルとして提案した。
1980年代後半からさまざまな品質モデルの併存はソフトウェア品質を比較評価するのに不都合なため、ISOで標準化の作業が始まった。
1991年にISO/IEC 9126「品質特性及びその利用要領」が規定され、この規格ではソフトウェア製品の品質を「外部品質特性」「内部品質特性」として定義した。
その後1999年〜2002年にかけて、ソフトウェア製品の品質評価のための規格群ISO/IEC 14598シリーズが発行された。
2001年〜2004年にかけて、ISO/IEC 9126を発展させ強化した新しいISO/IEC 9126シリーズが発行された。この規格で新たに「利用時の品質特性」が追加され、また「内部品質測定法」「外部品質測定法」「利用時の品質測定法」が規定された。
その後、ISO/IEC 9126シリーズとISO/IEC 14598シリーズを整理統合し品質要求を加えたISO/IEC 25000シリーズを発行した。

1.1.2.1 T:システムおよびソフトウェア製品の品質モデル(ISO/IEC 25000シリーズ)

システムおよびソフトウェア製品の品質要求と評価に関して規定している国際規格である。
※「System and Software Engineerin - System and Software Quality Requirements and Evaluation」を略してSQuaREシリーズと呼ぶ
SQuaREシリーズでは「利用時の品質モデル」「製品品質モデル」「データ品質モデル特性」の3つのモデルを規定している。

  1. 利用時の品質モデル
    利用者が実際に把握できる品質特性からなるモデルである。
    ある環境で利用者が目標を達成することができる程度を示し、有効性・効率性・満足性・リスク回避性・利用状況網羅性の5つの特性からなる。
  2. 製品品質モデル
    機能適合性・性能効率性・互換性・使用性・信頼性・セキュリティ・保守性・移植性の8つの特性からなる。
  3. データ品質モデル特性
    正確性・完全性・一貫性・信憑性・最新性・アクセシビリティ・標準適合性・機密性・効率性・精度・追跡可能性・理解性・可用性・移植性・回復性の15の特性からなる。

さいごに

まずはここまで。そして最後にお願いがあります。
JCSQEはマイナーな資格なのか主要都市でしか開催してないのですが、
東北在住のため仙台で開催したく!

30名程度集まれば開催してもらえるそうなので、
ソフトウェア品質の資格に興味がある方は、ぜひご協力お願いいたしますー!
詳しくはこちら
https://www.juse.jp/jcsqe/faq/#q7

Discussion