ソフトウェアの品質とは

日本では、ソフトウェアの品質管理について、現場のみならず管理職並びに経営陣もしっかり考えているのだろうか。
今週の日経ビジネスを読んだら、日本のソフトウェアの品質管理が危機を迎えているという特集が載っていた。その特集では、携帯電話と自動車の組み込みソフトウェアの分野について挙げられていた。ソフトウェアのバグによって、携帯電話が回収になったり、自動車がリコールされたりする事件が相次いでおり、ソフトウェアの品質管理や会社のブランドイメージや費用の損失という意味で死活問題になってきているということだった。その中で、手探りながらもトヨタはソフトウェアの統合的な品質管理部門を社内に設けたり、社員をインドに派遣し、体系的なソフトウェアの品質管理手法を学ばせたりしているとのことだった。恥ずかしながら、この特集でCMMIという言葉を初めて知った(実際には、id:toge:20050422で見たのが最初だが)。
実際、携帯電話の開発に携わっている友人の話を聞くと、そのソフトウェア規模はすさまじい。それに加えて、携帯の新機種の出るスピードが早まり、新機能を追加する頻度も多くなっているので誰も手をつけられない所もあるようだ。スパゲティコードという言葉があるが、その言葉が生まれた時代のぐちゃぐちゃのコードとは比べ物にならないほど、複雑さは増大しているに違いない。
携帯電話の足元にも及ばないが、今の会社の部署でもチームで組んで作っているソフトウェアがある。歴史も古く、開発メンバーも入れ替わって3世代目くらいに突入している状況である。唯一、最初からかかわっていた人がそろそろ抜けそうだということで、何か方策を考えなくてはなぁと思い悩んでいるわけであるが、こういう話ってどこの企業でもある話だろう。
ソフトウェアの品質管理をしようと思った時に、今までは精神論で乗り切って来たことも多々あると思われる(それがデスマーチという言葉を生み出したわけだが)。実際、精神論でどうにかなる部分もあると思うが、それ以前にやり方や工夫するべき場所があるんじゃないかなと感じることがある。例を挙げると、デバッグツールの使い方の教育をしっかりするべきなんじゃないか。今までは現場レベルで伝授するのが普通であるが、きっちり教育カリキュラムの施策として組み込むべきなんじゃないかなと思う。ここで言いたいことは、本当に現場レベルでやっていたことを体系づけてしっかりとカリキュラムとして定義づけすることで、現場の負担が減るのではないかということである。この点で、バリバリの現場の技術者じゃなくても、管理職の人がソフトウェア品質管理に貢献できる部分はあるのではないかと思うのだ。
はっきりいって、ソフトウェアの品質管理はクリエイティブではなく、つまらない部類の仕事に入ると思う。更に、日経ビジネスでも指摘されていたことだが、日本では「バグゼロの幻想」があり「バグはつぶして当たり前」という意識がある。バグをつぶすことに多大な労力を費やすことも多いが、バグつぶしはやって当たり前なので、新機能を追加するといったことよりは評価されないことも多い(と思う)。
実際、ソフトウェアの品質が向上したかどうかを評価しようと思ったら、そのための労力がかかる。たとえば、最近はエクストリームプログラミング(XP)などで、リファクタリングという言葉が流行りであるが、リファクタリングを行っても新機能はなんら追加されることなく、プログラムを使っている側からすれば何の変化もない。しかも、テスト項目をきっちり設定していないとリファクタリングによる新たなバグの追加なども起こり得るので、ソフトウェアの品質向上の施策が必ずしも品質向上に結びつかないことも多々あるという難しい問題である。それに対して明確に品質が向上したということを評価するためには、普段からバグ件数に対して集計を行ったり評価を行ったりという工数が余計にかかる。そのような余計と思える工数のために投資をして、人件費をかけて万全の体制で臨む必要がある。このような余計な工数に対して、現在の人員だけで対応しようとするのは本末転倒であり、余計にソフトウェアの品質向上にかけるための時間がなくなり品質は悪くなっていく。このような問題に対して新たに金をかける覚悟が経営陣にはあるのか。
経営陣が、「最近、うちのソフトウェアがバグ多いって文句いわれること多いな〜」という感覚のみで、「ソフトウェアの品質管理をちゃんとやってね」と社員に注文をつけ、社員の意識向上のみでソフトウェアの品質向上を狙おうと思っても無理である。技術出身で経営に携わっている人は、そのような精神論でソフトウェアの品質管理を乗り切ってきた時代の人達であることは想像に難くないが、今のソフトウェア規模では精神論だけで乗り切るのは難しい。当然、現場レベルではソフトウェア品質向上のための施策を考えることは重要であるが、その取り組みをきっちり評価する気概が上の人達にはあるだろうか。