品質について改めて整理①

システム開発で大事なことは?


と聞かれたとき、見る角度や立場から様々な意見があると思いますが、間違いなく必要なものの1つは


「品質」


であるというのは間違いないと思います。


他にも「コスト」「納期」とありますが、お互い影響したり、トレードオフの関係だったりする。



■品質とは?

JIS規格によれば6つの品質特性と27の品質副特性


1 機能性 

   合目的性,正確性,相互運用性,セキュリティ,

2 信頼性

    成熟度,障害許容性,回復性

3 使用性

    理解性,習得性,運用性,魅力性

4 効率性

    時間効率性,資源効率性

5 保守性

    解析性,変更性,安定性,試験

6 移植性

    環境適応性,設置性,共存性,置換性


※それぞれの意味は割と言葉通りの意味。



■品質の良いシステムとは?


ちゃんとお客さんの要望通りの機能が全て盛り込まれてて、

業務が絶対滞らないレベルでシステムが稼働し続けて、

お客さんが操作しやすくて、

裏ではマシンの性能を効率良く引き出していて、

システムの保守や移行が可能な限りスムーズに行えるシステム。


裏返すと


■品質の悪いシステムとは?


お客さんの要望通りの機能になっていなくて、

すぐシステムが停止したり、意図しない動作をして、

お客さんが使い方を理解しにくくて

マシンの性能通りの性能(レスポンスなど)が満たされていなくて、

システムの保守や移行が行うのが大変なシステム。


■品質は100%実現しなくてはいけない?


そもそも人によって認識が違ったりするので100%の判断が難しい。

また品質100%のシステムを実現するのは、いくら開発関係者が優れていても、コストや納期の制約などもあり難しいことが多いので、

・品質をどこまで高めるか

・品質のどの部分を高めるか

はシステムの特徴や特性を見て判断する。


1つの指標として4段階の信頼性要求水準

・人命に影響、甚大な経済損失

・社会的影響が極めて大きい

・社会的影響が限定される

・社会的影響がほとんどない

などがある。


開発技術やマシンの性能、利用者数、世の中の求める基準などは時代とともに目まぐるしく変化しているので、その時代に応じた見極めが必要。



■品質が悪いとどうなるか?


発覚するのが

本番稼動前であれば、追加のコストが発生したり、スケジュールの遅延が発生したり、

本番稼動後であれば、システム利用者/利用会社の業務などに支障をきたし、損害が発生したりする。



■品質の向上のためにどう取り組むか?


品質が悪い=不具合がある


という前提で考えると


1そもそも不具合を作らない。

2不具合を見逃さない。なるべく早く見つける。


方法としては


1予防活動

2検知活動


の2つを開発の各工程(要件定義 基本設計 詳細設計 プログラミング テスト)において行う。


続きはまた改めて


参考サイト:

高信頼化ソフトウェアのための開発手法ガイドブック

https://www.ipa.go.jp/files/000005144.pdf