炎上なんて嫌だ!みんなが幸せになれる品質が高いソフトウェアの作り方 〜見えない品質を可視化して改善する方法〜 1章 ソフトウェア開発の品質ってなに?おいしいの?

1章 ソフトウェア開発の品質ってなに?おいしいの?

この記事は見えないソフトウェア品質で困っているPMや情報システム部の方々に向けてどうやってソフトウェア品質を可視化し、品質向上施策を打つか?その方法を書いています。

事業会社の新規サービスをバグゼロでリリースしたり、資本金9,000万円・従業員数80名の開発会社(SIer)で品質保証部を立ち上げて、炎上を食い止めたりした経験を基にしています。

一生懸命仕事しているのになかなか報われないエンジニアを応援したいと思います。

読んで欲しい方(きっと悩んでいる方)

・日々悩んでいるPM(プロジェクトマネージャ)

・PMを目指している

・システム会社に発注をしている情報システム部

・安定しないシステムに不信感を持つ経営者

そもそもお前は誰だ?

※ 興味のない方は飛ばしてください

私は亀井亮介と申します!

山形大学工学部情報工学化を留年しつつ卒業後にIT業界に入りました。

大学時代はPerlを使っていました。

ブラックな環境でUNIXサーバに囲まれながらテストする日々からエンジニアとしてのキャリアがスタートさせ、ブラックから抜け出した後はJavaのプログラマ(バージョン1.4!)をしたり、要件定義・設計のサポートをしたり…

その後、家庭の事情で、引越しすることになり、引越し先でIT企業がなく、2年ほど製造業にいました。

その後、沖縄に移住しウェブプログラマ(PHP)に復帰し、5年ほど務めた後フリーランスのエンジニアになりました。

フリーランスになってからはプレイングPMとして要件定義・設計・実装・テストまでマネジメント+実作業したり、炎上案件の火消しをしたりしました。

積立投資の先駆けとなったインヴァスト証券のマネーハッチの開発に携わり、PM兼プログラマーとしてリリース後数ヶ月バグなしを実現しました!

(当時プロダクトオーナーから名前出していいよと合意したので記載しています。もし、状況変わったら取り下げます。)

その後、キャリアアップを目的にIT組織マネジメントしたいと思い、開発会社に入りました。

そこでこの3年ほど、資本金9,000万円、従業員80名ほどの開発会社で、常時15件前後ほどプロジェクトが回っている状態の品質保証部を立ち上げと品質向上試作立案と遂行をおこなっていました。

その経験を活かしこの記事を書いています。

プライベートでは3人の子供の父であり、曲作りやガンプラ作り、プロレス・総合格闘技・キックボクシング観戦(ネット課金が…笑)を楽しみながら過ごしてます!

こんな経験ありませんか?ソフトウェアあるある!

新しいソフトウェア、長年利用してきたソフトウェで次のようなことはありませんか?

品質・定量化.002

「炎上した!デスマーチに突入!社畜だ!祭りだ!(うぅ…泣)」

「受入れ試験をしたら不具合が多く使えない!リリースは一週間…どうしよう」

「要求と違う!こんな機能いらないし、なんでこんなに使いにくんだろ…」

「遅い!イライラする!仕事にならない!」

「セキュリティホールが見つかった?見積りとったら何この値段…稟議通らない」

「よし!会員数が増えてきたから次の対策を…そんなにお金と時間がかかるの」

「長年このシステムを使ってきたけど、だんだんボロが出てきて使いにくい」

「開発会社・開発チームが何やっているかわからない」

「厳しいリリース判定会議しているのにリリース後にバグが出る…現場は疲弊しているからこれ以上基準を厳しくできない…」

「開発部門と営業部門の対立が絶えない」

これは全て品質が悪いといえます。

品質っておいしいの?

品質というと嫌なことがあって渋々対応するイメージですが、品質を向上させるといいこともたくさんあります。

品質・定量化.003

一般的には、品質をあげる=コストがかかり、納期も遅れがちとなりますが、ソフトウェア開発においては中長期的にコストが下がり、開発がやりやすくなるので納期も守れます。それどころかスピード感を持って対応ができます。

品質・定量化.004

顧客に対しても、使いやすく効率的なソフトウェアを提供することで、顧客の売上向上、コスト削減、業務効率化などビジネス価値を提供できます。

かつ、適正なコストで納期も守れて、ニーズに素早く対応できれば顧客が喜びます。

また、個人の観点だと定時で帰れます。大事なので繰り返します「定時で帰れます!」

開発視点で品質が良い状態の効果を掘り下げます。

「炎上がないから精神衛生がいい」

「不具合が少ないから業務量が減る」

「使いやすいから、利用部門や利用者からの問い合わせが少ない」

「サクサク動くから仕事が効率的!」

「セキュリティホールもないからリスクが少ない」

「追加・開発がしやすいから計画通り!」

「長年使っているけど快適だ!」

「開発会社・開発チームが何をしているかよくわかる」

「リリース判定は儀式ではなく、建設的な議論を部門を跨いでできて、リスクや効果を共有し協力体制を築ける」

上記のような状態になれば、顧客は喜ぶし、会社・組織の利益が向上し、よりホワイト企業に近づき、個人としては早く帰れたり、会社の利益が上がれば給料が上がります。

品質は見えない

顧客や上司が「品質を上げろ!」「品質をどうにかして!」といいますが、具体的に品質をどのようにしてあげれば良いのでしょうか?

品質・定量化.005

ソフトウェア開発において「QCD」という言葉があります。下記3つの頭文字です。

Q クオリティ(品質)

C コスト(費用)

D デリバリー(納期)

このうち、コスト(費用)はお金ですし、デリバリー(納期)は日付なので何もしなくても数字で表現されており、定量化されていますが、クオリティ(品質)だけは見えません。ゆえに捉えどころがなく品質を上げようとすると何をしていいかわからなくなります。

品質特性(ISO/IEC25010)

そもそも品質とはなんなのでしょうか?

「品質とは?」と尋ねると「テスト」と答える方が多いですが、下記も品質が悪い状態といえます。

「追加・改修をしたいけど見積りしたら高いし、遅い」

「仕様通りだけど使いにくい」

「セキュリティホールがあり攻撃されると個人情報が取られる可能性が高い」

「サーバが落ちて利用できない時がある」

「他システムと連携できない」

「トラブルが発生した時に対応が遅い」

「他のシステムに移行するのが大変」

国際規格のISO 25010に品質特性が定義されています。書籍や様々なサイトに小難しく説明がありますが、ここでは噛み砕いて説明します。

使用性

利用者の使いやすさ。いい換えるとUI/UX。

機能適合性

実装された機能が、どのくらい顧客ニーズを満たしているか

セキュリティ

情報が保護されているか

性能効率性

資源を有効活用し性能が発揮されているか

互換性

他製品や他システムと相互利用しやすいか

信頼性

24時間365日いつでもどこでも使えるか

保守性

低コストで追加開発・改修ができるか

何かあったときにすぐに対応できるか

移植性

他のサーバやクラウドへ移行しやすさ

ISO25010の品質特性をみると、テストだけが品質ではないことがわかります。

じゃあどうしたら品質って上げられるの?

品質・定量化.006

「品質とは何か?」ということがわかりましたが、言葉だけを並べても具体的にどうしたらいいかはわかりません。

コストや納期のように品質を「見える」ようにするのがこの本の目的です!

何を可視化するを2章に書き、どうやって可視化するを3章に書きます!

2章

3章


この記事が気に入ったらサポートをしてみませんか?