製品品質について勉強する3

記事としては2つに分けるけれど,
たぶん今日で終わりかなぁ.

リファレンスはいつもどおり,これ.
JIS X 25010:2013 システム及びソフトウェア製品の品質要求及び評価(SQuaRE)−システム及びソフトウェア品質モデル

■信頼性
定義は以下のとおり.

明示された時間帯で,明示された条件下に,システム,製品又は構成要素が明示された機能を実行する度合い。

「実行する度合い」という表現がとてもわかりづらいが,
まあ,「(指定された条件下で)いつでも実行できること」と
理解して良いと思う.
詳細は4つの副特性で説明されている.

(1) 成熟性
定義は以下のとおり.

通常の運用操作の下で,システム,製品又は構成要素が信頼性に対するニーズに合致している度合い。

他の3つの副特性が,
ユーザの期待値にどれくらい合致しているか,という話.
機能適合性の副特性に「機能適切性」というものがあったが,
あれの信頼性バージョン,という理解で良いと思う.

(2) 可用性
定義は以下のとおり.

使用することを要求されたとき,システム,製品又は構成要素が運用操作可能及びアクセス可能な度合い。

一般には稼働率などで表現される品質.
個人的には,これ,要らない特性だと思う.
というのも,可用性を満たすためには
「壊れにくいこと」「壊れてもすぐ直ること」が必要で,
それがまさにこの後の2つの副特性なんだよね.

(3) 障害許容性(耐故障性)
定義は以下のとおり.

ハードウェア又はソフトウェア障害にもかかわらず,システム,製品又は構成要素が意図したように運用操作できる度合い。

前述の(2)の「壊れにくいこと」に相当する.
世の中に壊れないものなんて存在しないので,
「もし部分的に壊れたとしても」に対する二重・三重の備えが必要となる.
航空機などの命に関わるシステムにおいては
何よりも優先される品質特性と言ってよい.

(4) 回復性
定義は以下のとおり.

中断時又は故障時に,製品又はシステムが直接的に影響を受けたデータを回復し,システムを希望する状態に復元することができる度合い。

前述の(2)の「壊れてもすぐ直ること」に相当する.
どれだけ備えていても,止まるときには止まる,それがシステムだ.
というか,万物においてそうであるはずなのに,
システムだけ異常に「止まること」が許されない……
そんな理不尽に対して,どれだけ備えているかを示す特性となる.

■セキュリティ
定義は以下のとおり.

人間又は他の製品若しくはシステムが,認められた権限の種類及び水準に応じたデータアクセスの度合いをもてるように,製品又はシステムが情報及びデータを保護する度合い。

一言で言ってしまえば「防御力」に相当する.
副特性は以下の5つなのだが,
最初に言い訳しておくと,解釈にすごく自信が無い.

(1) 機密性
定義は以下のとおり.

製品又はシステムが,アクセスすることを認められたデータだけにアクセスすることができることを確実にする度合い。

この特性は2つの観点を意識する必要がある.
すなわち,
「アクセスしちゃダメな人はアクセスできないこと」
だけではなく
「アクセスして良い人はちゃんとアクセスできること」
が求められる.
前者だけ意識するならば,それこそ通信ケーブルを引っこ抜いて
隔離しちゃえば良いだけの話なのである.

(2) インテグリティ
定義は以下のとおり.

コンピュータプログラム又はデータに権限をもたないでアクセスすること又は修正することを,システム,製品又は構成要素が防止する度合い。

機密性との違いがイマイチ良くわかないのだが,
どうやらこちらは,より「攻撃」を意識した特性,らしい.
不正アクセスに対する防御力の度合いを示すもの,かな?

(3) 否認防止性
定義は以下のとおり.

事象又は行為が後になって否認されることがないように,行為又は事象が引き起こされたことを証明することができる度合い。

銀行の通帳を見てみると,
いつ誰がどこでお金を引き落としたという事実が明確に記録されている.
システムにとっての「通帳」とは,DBのトランザクションデータであったり,
システム基盤上のログデータに相当する.
雑なシステム開発では,これらの証跡が滅茶苦茶に実装されていたりする.
そうすると否認防止性が低いと判定されるわけだ.

(4) 責任追跡性
定義は以下のとおり.

実体の行為がその実体に一意的に追跡可能である度合い。

否認防止性と似通っているところがあるが,
こちらは主語,すなわち
「じゃあ,誰がその事実を引き起こしたか」
に着目した特性と言える.

(5) 真正性
定義は以下のとおり.

ある主体又は資源の同一性が主張したとおりであることを証明できる度合い。

例えば今まさに,はてなブログのシステムは
俺を「NK5」本人と見なして,記事の執筆権限を与えている.
これは
・このユーザがNK5のパスワードを知っていること
・またそのパスワードはNK5以外の者は知らない(はずである)こと
という論理に基づいている.
さらに真正性の高いシステムだと,ワンタイムパスワードを用いたり
あるいは指紋認証などを用いる場合もあるだろう.
ただし,そうしたシステムは得てして使用性を損ねるので
実装者のバランス感覚が求められるという点に注意が必要だ.

以上,次の記事も今日中に書く予定.