「ソフトウェア品質保証の考え方と実際」の内容考察①
noteを再開する理由
めっちゃ久しぶりにnote書きます。たどってみたら3年以上ぶりです。
せっかくなのでこの後マガジンか何かにまとめてシリーズ化するつもりです。
今回改めてnoteを書き始める理由は、
発表とかするときに、ちゃんと過去に議論されていることは引用する、といった基本的なムーブができていない。それを解消したい
ということです。過去の名著等を読み漁って自分の糧にして、今後自分の資料作りに活かしたいな、という不純な動機です。それと同時に、同じような悩みを持っている人もいると思うので、まぁなんかこのシリーズを見ればそれっぽいことが書いてあったり、ヒントになることがありそう、と思って読みに来る、といったことに使われればな、とも思っています。
どこまで続くかわからないですが、モチベーションがあるうちにちょこちょこ書いていこうと思います。
あ、あとこれも不純な動機ですが、書き溜めていくことでどっかで何かの形にできればいいなーとか思ったりしています。だから今回はちょっと真面目に書くシリーズです。
「ソフトウェア品質保証の考え方と実際」
ということで本編ですが、本日対象にする本は、ソフトウェア品質保証の考え方と実際: オープン化時代に向けての体系的アプローチ(保田 勝通 著)です。いわゆる名著と呼ばれる本ですね。その中から、今回のシリーズの目的に合う、今後使えそうな記述を引用し、考察を付けていきます。
品質の定義
品質とは、ユーザの要求(ニーズ、使用目的)を満足させるために製品(含むサービス)の持つべき特性である
本書籍は1995年に初版が発行されています。よってその当時に発行されていた規格や書籍の参照がされていますが、つまりは、ということで上記の品質の定義をしています。この記述はとても明快でわかりやすいと思います。ポイントは、(ユーザの要求に向いた)製品のパラメータ、という点だと思います。品質は製品に内在するものであり、それが発揮された結果としてユーザの満足が得らえる、という関係性です。意外と忘れがちなのでことあるごとに思い出そうと思います。
ジェームズ・マーチンの定義:『システムが本稼働するとき、どこまで真のビジネス(ユーザ)ニーズに合っているかということ。』
こちらも品質の定義として引用されている記述です。本質を捉えている定義だと考えます。よく言われることですがソフトウェアは開発している最中は全く価値発揮をせず(顧客を満足させず)、市場に出て初めて価値が出ます。さらに、ここではビジネスニーズは時間経過で変化するため、(企画段階や開発中ではなく)本稼働の時のビジネスニーズがどうであるかに依存する、ということを言っています。引用元のジェームズ・マーチンの書籍は1994年発行であるため、30年も前の書籍ではありますが、2024年現在でも古びていない定義だと思います。
品質保証の定義
消費者の要求する品質が十分に満たされていることを保証するために、生産者が行う体系的活動
こちらはJISからの引用ですね。体系的活動というところがポイントだと思います。テストはQuality Assuranceの一部なのか、Quality Controlの一部なのか、という点が自分自身でも正直はっきり理解できていないところがあったのですが、ハードウェアに照らして考えると理解しやすいと最近気づきました。ハードウェアの製造工程において基準を満たしているかの検査がQCで、基準を満たすハードウェアを高い確率で作るための工程の改善がQA、というのはわかりやすいと思います。これをソフトウェアに置き換えて考えると、QC相当になるのが、開発において仕様を満たしているかをテストすることであり、QAが開発のプロセス自体を見直すことに当たるのだ、ということです。つまりテストの出力はQAにも使われますが、テストの比重はQC側にある、ということです。ハードウェアの製造工程をイメージすることで、やっと腹落ちした、という話でした。
まとめ
こんなかんじで、自分がいいなーと思った記述を自分の解釈を付けて投稿していこうと思います。ほぼ自分のためのメモみたいなものなのですが、もし記述内容におかしいことがあったり、議論ポイントがあったりしたらぜひコメントお待ちしています。