ソフトウェアの品質について

最近、ソフトウェアの品質について考えることがあったので、考えたことをまとめて置こうと思います。

すでに似たような考え方でこういうのがあるよ、などありましたら教えてほしいです。

その他、フィードバック、感想、意見(肯定、反対どちらでも)など、積極的に欲しいと思っています。

 

品質とは?

製品やソフトウェアの品質についての定義は様々あります。
そもそも「品質」とはとても意味が広い用語です。
品質については定義されたものをすべて書き出したらきりが無いですが、ASTER標準テキストなどによくまとめられています。
「品質を上げたい」というのはよく聞く言葉ですが、どういった「品質」を上げたいのかはちゃんとディスカッションしたほうが良いかなと思います。
(ちゃんとした返答が返ってくることは正直少ないかなと思いますが・・・。)

ここでは品質をモデルとして定義しているものを紹介したいと思います。
よく取り上げられるのが、ISO/IEC 25000、狩野モデル、そして最近だと、DORAの調査などがあるかなと思います。

ISO/IEC 25000

まず、ソフトウェアの品質として有名なのがISO/IEC 25000(SQuaRE)シリーズだと思います。

これには、「製品品質モデル」、「データ品質モデル」、「利用時の品質モデル」というのが定義されています。

引用
つながる世界のソフトウェア品質ガイド

これは「品質」というものを分類して、定義しているものになります。
このモデル自体はそれ以上でもそれ以外でもありませんが、誤った使い方がされていることも多々あると思います。

品質特性モデルをすべて網羅されていれば高品質というわけでもありませんので、どういった品質が自分たちの製品に重要なのかは自分たちで考える必要があります。

ステークホルダーと会話するときに、これらの品質モデルを使って会話すると共通認識を持って会話することができると思います。

狩野モデル

狩野モデルは、顧客満足度に影響を与える製品やサービスの品質要素を分類したものです。

引用
狩野モデル-品質とは

この図はユーザによってどういう影響を与えるかを示しています。
この図では示されていないのですが、「無関心品質」「逆品質」などもあります。

DORAの調査

DORA(現Google)の調査として、LeanとDevOpsの科学(Accelarate)の書籍等で示されたFour Keysと呼ばれる概念です。

引用
ソフトウェアデリバリーパフォーマンスに関する考察(前編) - State of DevOps 2022では何が示されたのか

昨年の調査結果ではクラスタ分析の結果が、今まで4区分だったものが3区分になりました。

ただ、LeanとDevOpsの科学(Accelarate)の本で紹介されたものが4区分だったので、まだメジャーなのは4区分の方だと思います。

個人店には、これらはサービス提供品質というようなものになるのかなぁと思っています。

今後、他の品質モデルに組み込まれたり、追加されることもあるのかもしれません。

モダンな品質とか?

最近のソフトウェアでは、当たり前のようにアップデートすることが可能になってきたので、より早くサービス/機能を提供することが求められる様になってきていると思います。

また、開発者としても、小さな機能を短期間で開発していった方が色々と作業が楽というのがあります。

仮に、品質を1次元と表現した場合、以下のようになります。

アップデート周期が少ない場合

アップデート周期が多い場合

当たり前と思われるかもしれませんが、アップデートを高頻度で実施している場合、ちゃんと品質が右肩上がりになっていることが重要になります。

気を付けていないと、知らずしらずのうちに、アップデートしているのに品質が変わってなかったり、品質が下がっていることもあるかなと思います。

では、この場合の「品質」とは何になるのでしょうか?

色々意見はあると思いますが、個人的に一番重要となるのは「魅力度」なのかなと思います。
ユーザに取って製品、サービスへの魅力度が上がっているのかが重要になってくると思っています。
小さなバグ修正を行っていても、それしか行っていないのであれば、この魅力度はなかなか上がっていかないということがあるかと思います。

魅力度が上がっているかどうかは、新しい機能を提供するときに仮説を立て、「どういった人にどういった価値を届けたいのか」、「どういったコンテキストの人にどういった価値を届けたいのか」ということをしっかり定義し、リリース後にその結果としてどうなっているのかをウォッチする必要があると思っています。

魅力度が下がっていないことの確認は、バグをちゃんとBTSで管理されているのであれば既存バグの数を確認することで確認できるかと思います。
その他にもクレーム数の増加などをウォッチすることで確認できると思います。

余談ですが、最近メインバンクとして使っていた銀行が手数料無料のサービスをやめて、他のアプリを使えば手数料は無料にするよ、というサービスをしていました。
新しいサービスを活用して欲しいのはわかりますが、ユーザとして魅力度が上がっているかは微妙だと思っています・・・。
また、ゲームのアップデートでバランス調整のために、使ったキャラクターを弱くするという方針だけとってしまうと、魅力度はトータルとしては下がるのかなぁと思っています。そのキャラクターを気に入って使っていた人はゲームからは離れるかもしれません。弱くするよりも、弱かったキャラクターを強くするほうが、ユーザにとっては魅力的に見えるということもあるのかなぁと思っています。

最後にこの魅力度ってどうやって評価するの?ということなのですが、一番近いのはNPSなのかなぁと思っています。

www.nttcoms.com

こういった指標を取っていくことが、今後はより重要になってくるのかなぁと思っています。
指標を取る仕組みがない場合は、指標をどう取るかの仕組みを作ることも重要だと思っています。
(指標が適切ではない場合、代替指標は何で、どう取得するかを設計する必要があるかもしれません。)