N112_nayandahyoujyou_TP_V-2

どこの世界にも完全主義の人がいます。システム開発の世界も例外ではなく、リリース(出荷)したプログラムやシステムの品質が悪いことを許せない人がいます。また、作業に失敗した人を犯人扱いして公開の場につるし上げるような行為をする人もいます。

しかし、システム開発において100%完ぺきのでき具合を求めることは良くありません。そのようにしていれば、相手も自分も必ず失敗してしまいます。

ここでは、システム開発で100%完ぺきを求めることはなぜいけないのかについてお話ししていきます。ここで述べる内容を理解することにより、ビジネスでシステム開発を行う場合の品質についての考え方が身に付きます。

100%バグがないソフトウェアは存在しない

システム開発の工程では、システムの機能を充実するとともに障害(バグ)の管理を行います。人によっては、障害を含んだままソフトウェアをリリース(出荷)するなどもってのほかであり、障害を全部つぶしてからリリースすべきという考え方をします。

また「障害はすべて悪」との考えを持つ人もいて、そのような人は障害が発覚してから何日も修正されないでいることなどありえないという考えになります。

しかし、システムが停止してしまったり回復不能な状態に陥るような不具合は別として、一般の障害について過剰に反応するのは良くありません100%バグがないソフトウェアは、存在しないといっていいでしょう。

仮にアプリのプログラムに誤りがなくても、結果としてアプリに不具合が出ることがあります。例えば、アプリが動作するOS(コンピューターの基本動作を処理する基本ソフト)に不具合があり、それに引きずられてアプリが問題を起こすことがあります。

また、他のシステムと接続したときにそのシステムの不正処理が引き金となってアプリが問題を起こすこともあります。

こうしたアプリの問題は、一度リリースされて実際に使われるまでなかなか発覚しないのです。このような問題をリリース前に検出するには膨大なコストがかかります。

問題発生を予防することは大切なことですが、その前に予防コストがかかりすぎてビジネスが継続できなくなるのです。これが、システムに100%完ぺきを求めてはいけない理由です。

作業ミスがないことを保証することは難しい

先の例ではアプリの障害を挙げましたが、システム構築の作業でも同じことが言えます。システム構築の作業は作業手順書にしたがって進めていきますが、その途中において作業ミスや誤解があったり手順書に抜けや漏れがないことを保証することは困難です。作業ミスの発生確率は、作業者の心理状態にも依存するでしょう。

もし、システム構築時の作業ミスによってシステムが3ヶ月後に停止するような不具合が混入したとしましょう。そのような不具合を起こさないためには、システム構築の工程すべてについて作業ミスがないことを保証しなければなりません。

不具合が起きたことや作業に誤りがあったことを糾弾する人は、作業ミスや誤解がないことを保証するにはどれだけの作業見直しが必要かを考えていません。そのような状況で問題の再発防止策を次々と手を打っていけば、構築よりもその後の確認作業が増えてリリースまでのリードタイム(製造に要する期間)が長くなっていきます。そして、やはりビジネスの継続が困難になるのです。

システムにはバグや作業不備が内在しているという前提にもとづき、手を打つ

これまでに述べた内容から、システムには何らかのバグや作業不備が含まれている可能性が高いと考える方が現実的であると言えます。そのような状況では、定期的なシステムの監視によってトラブルの予防策を講じるのが有効です。何も、システム構築時に完ぺきなものを求める必要はないのです

そして、システムの不具合だけでなく運用で発生した機能要望についても、稼働後に改善していくことを考えていくようにしましょう。

このように、システム開発で100%完ぺきのでき具合を求めるのは難しいことです。アプリの障害や作業ミスは、本来あってはならず起こってしまったらその責は問われるべきです。しかし、常に完ぺきを追及するということをしていてはビジネスが成り立たず、過剰な完全主義は危険であるという認識を持つべきであるといえます。