皆さん。
あなたの仕事は何ですかと家族や親戚の方などに聞かれたときに、どのように応えていますか。
私が社内人になったころは、今の業界は「ソフトウェアハウス(ソフトハウスとは、ソフトウェアパッケージの開発やソフトウェアの受託開発を主要業務としている企業のこと)」と言われていました。コンピュータなるものすら知らない人もいた時代です。
親戚のおばさんにどんな会社に就職したのと聞かれ「ソフトウェアハウス」って答えると、「ウェア」というキーワードから連想したのか、「洋服なんかを作る会社?」と聞かれ、自分の仕事を説明するのに苦慮したことを思い出します。
いまはエスアイヤー(SIer:SIする会社のこと)と言われます。SIとはシステムインテグレーションのことで、システムインテグレーションとは、システムを構築する際に、ユーザーの業務を把握・分析し、ユーザーの課題を解決するようなシステムの企画、構築、運用サポートなどの業務をすべて請け負うこと言われています。まさに、弊社はこれに当たります。
ソフトウェアハウスと言われた時代もエスアイヤーと言われる今の共通の課題は提供するシステムの品質に関する問題です。言語や開発ツールの進歩、開発技術の進歩などからプログラムの品質は向上しました。しかし、いわゆるバグは存在します。
「人はミスをする動物」です。その意味では人のやる仕事いえ「プログラムバグは仕方ない」とも言えますが、本当にこの考えは正しいでしょうか。
ここでソフトウェアに対するハードウェアを作る製造業の品質管理も考えてみたいと思います。つまり、製造業も人が物を作っています。その意味ではミスは存在します。製造業における品質管理はこのミスとの戦いの歴史と言えます。製造業とエスアイヤーの品質に関する違いを考えてみましょう。
●品質問題が発生した場合の被害の大きさの違い
自動車のリコール。食品の自主的回収。医薬品も同様です。
つまり、製造業が一度「不良品を含む可能性」のある製品を市場に出してしまうと大変なコスト(回収費用・賠償費用・対策費用など)が掛かります。それに比べて、ソフトウェアの場合は回収ではなく改修により対応する場合が一般的です。被害の大きさはその製品の価格や影響台数により異なりますが、システムの導入費を全額賠償しない限り、製造業のようにはなりません。その意味では、厳しさがことなる気がします。厳しさが少ない分、危機感も少ないと言えるのではないでしょうか。
●品質管理の考え方
作るものの品質を高めることは重要です。ここで品質とは製造品質(これ以外の品質については次号以降で書きます)です。製造品質とは作るものの品質で言い換えれば「プログラミング品質」です。設計書が正しく記述されているにも関わらず不具合が生じたというケースです。製造業においても同様で、工程で作っている過程でのミス(作業ミスなど)するケースです。
このミスを製造業ではどのように防ごうとしているかご存知ですか。製造業には「工程に品質は作り込む」という考え方があります。どういうことかというと、ミスが人の不注意などで生じます。作業中に生じる「うっかりミス(ポカともいう)」です。この「うっかり」を「仕組み」で防ぐことに力を入れています。この仕組みのことを「ポカヨケ」といいます。
また、このポカヨケを更に進化させ、万が一不良が出ても後工程に流さない仕組みがあります。この仕組みのことを「自働化(にんべんがついているのは自動化+不良発見時の自動停止機能)」といいます。
医薬品メーカの品質管理部門で行われている製品試験は、工程で作り込むというものとは別に、作り込まれているはずの品質をダブルチェック的な観点で実施されるものだと言えます。つまり、品質管理ではなく品質保証的な考え方によるもので、品質向上を目的した活動ではありません。強いて言えば、自働化の「不良発見」をオフラインでやるようなものです。
これに対して我々の仕事における品質管理はどうでしょうか。
開発ツールがするチェック(構文チェックなど)は「ポカヨケ」です。しかし、これではバグの発生は全く防げません。これを防ごうと実施しているのは各種「レビュー」という行為です。
レビューとは「システム開発において、工程ごとに成果物の品質を検証する会議。レビューの方法には、開発に携わった者を集めて検証を行うウォークスルー、責任のある第三者が検証を行うインスペクションなどがある。(ASCII.jpデジタル用語辞典より)」と言われています。
レビューは実施しないよりはした方がいいのですが、やり方、やる人、やるタイミングなどでそのせいかは大きく異なります。
用語の定義にあるように「成果物」について実施するのは医薬品の品質管理的な考え方に近いと言えます。本来の品質はものづくりと同じで「工程で作り込む」ものと考えます。つまり、プログラミング作業の途中でうっかりミスを防ぐ方法です。次号にこの方法について持論を書きます。
「人はミスをする動物」だと考えれば、ミスを犯すのを仕組みで如何に防ぐか。つまり、ミスを探すレビューではなく、ミスをしない仕組み作りことこそが、我々が考えるべき姿だと思います。
プログラムでミスをした人は、褒められるべきです。
なぜって。
品質の作り込みの仕組みの問題を顕在化させた功労者なのだからです。

Follow me!