ravelll の日記

よしなに

"品質" ってなんだろう?

このエントリは pepabo Advent Calendar 2016 の23日目のエントリです。

前日のエントリは @Asuforceペパボのエンジニア研修を通しての成長体験 でした。

彼がアルバイト入社していたとき僕がメンターについていたこともあって、エントリを読んで子の成長を見る親のような気持ちになりました。

さて今日はソフトウェアの品質についての話です。ところで僕に子供はいないですし既婚者でもないです。

"品質" ってなんだ?

我々ソフトウェアエンジニアを始めシステムの提供者はみな、提供するシステムの品質を高めたいと思っていることでしょう。しかしながら、"では品質とは何なのか" と尋ねられたとき、答えに窮する人も少なくないのではと思います。品質の不理解は、提供者にとっては高い品質で提供しているシステムが利用者には低い品質とみなされる、といった不幸な認識のズレに繋がることが考えられます。

ここで、品質について何らかの分類モデルがあれば、システムの機能を分類した上でそれぞれをカバーするに適当なチームを構成したりタスクを割り当てたりすることができそうです。そこで今回は、ISO/IEC 25010:2011 で規格化されている "製品品質モデル" を紹介しようと思います。

ISO/IEC 25010:2011 の製品品質モデル

この国際規格では、システムの品質を "システムが様々な利害関係者の明示的ニーズ及び暗黙のニーズを満足している度合い" とし、8つの品質特性、更に各品質特性における副特性に分類しています。

以下の表に品質モデルの品質特性とその説明、属する副特性をまとめます。副特性の説明までまとめると長くなるので省略しています。各特性の説明についてはこちらより引用しています。

1. 機能適合性

明示された状況下で使用するとき,明示的ニーズ及び暗黙のニーズを満足させる機能を,製品又はシステムが提供する度合い。

  • 副特性: 機能完全性、機能正確性、機能適切性

2. 性能効率性

明記された状態(条件)で使用する資源の量に関係する性能の度合い。

  • 副特性: 時間効率性、資源効率性、容量満足性

3. 互換性

同じハードウェア環境又はソフトウェア環境を共有する間,製品,システム又は構成要素が他の製品,システム又は構成要素の情報を交換することができる度合い,及び/又はその要求された機能を実行することができる度合い。

  • 副特性: 共存性、相互運用性

4. 使用性

明示された利用状況において,有効性,効率性及び満足性をもって明示された目標を達成するために,明示された利用者が製品又はシステムを利用することができる度合い。

  • 副特性: 適切度認識性、習得性、運用操作性、ユーザエラー防止性、ユーザインタフェース快美性、アクセシビリティ

5. 信頼性

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

  • 副特性: 成熟性、可用性、障害許容性(耐故障性)、回復性

6. セキュリティ

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

  • 副特性: 気密性、インテグリティ、否認防止性、責任追跡性、真正性

7. 保守性

意図した保守者によって,製品又はシステムが修正することができる有効性及び効率性の度合い。

  • 副特性: モジュール性、再利用性、解析性、修正性、試験性

8. 移植性

一つのハードウェア,ソフトウェア又は他の運用環境若しくは利用環境からその他の環境に,システム,製品又は構成要素を移すことができる有効性及び効率性の度合い。

  • 副特性: 適応性、設置性、置換性

特性の多様さを見ると、単一の職種でシステム全体の品質を担保することが如何に難しく、エンジニア、デザイナー、ディレクターなど複数の職種が各々の責任範囲を認識し協力しあうことが品質の向上には欠かせないと分かります。

また、セキュリティのように、チームの単位ではなく会社全体の規模で取り組む必要がある品質特性もあることが分かりますね。

まとめ

このエントリではシステムの品質とは何か、というテーマで ISO/IEC 25010:2011 の製品品質モデルを紹介しました。

明日の担当は @udzura さんです。楽しみですね!!!