システム開発で品質が重要な7つの理由


システム開発というものは、とりあえず動くものができればそれで良いというものではありません。仕様通りに動いていればいいじゃんという人がいたらそれは大きな間違いです。システム開発では仕様通りに動作することはもちろんのこと、システムの品質が重要です。

ではシステム開発においてなぜ品質が重要かと言うと、初期構築時に仕様通りに正しく動作していたとしても、そこに問題がないとは限らないからです。品質が劣悪なために後々になってから深刻な問題を引き起こすケースがあります。

システムを利用する側からすると、システムのリリース直後には品質の善し悪しがわかりにくいものです。少しの間システムを利用した後で劣悪な品質が発覚することもあります。劣悪な品質は後になって問題が明るみに出てくる時限爆弾のようなものだと弊社のエンジニアが言っていました。

だからこそ開発業者の選定は重要です。今までも開発業者の選び方については何度かブログにまとめてきました。

システム開発会社の選び方

システム開発を発注するなら自社開発の会社がお勧めな理由

システム開発のプロジェクトを進める時には品質についてしっかり考えていくことも重要なポイントです。もちろん費用対効果は考慮する必要はありますが、料金だけでの単純比較など論外です。

本日はシステム開発でなぜ品質が重要であるのか、その理由についてまとめてみました。

システム保守のコストが高くなる

システムの品質が低いとシステム保守のコストが高くなります。プログラムのソースコードの品質が低いと既存のソースコードの解析や修正に時間がかかるからです。

経験豊富なエンジニアの方であれば一度は遭遇したことがあると思いますが、プログラムのソースコードがぐちゃぐちゃの状態で、後からエンジニアが解析や修正するのに非常に苦労する状態となっていることがあります。このようなプログラムはスパゲティプログラムとか、スパゲティコードとか呼ばれています。

仕様変更が発生したり障害が発生して改修の必要が出てきたりした時に、プログラムソースコードの品質が高く、解析や修正が用意な状態となっている場合には、対応するために必要な時間は最小で済みます。

しかしソースコードが複雑怪奇なスパゲティ状態となっていた場合には、表から見た時には同じ対応だったとしても、それにかかる必要な時間は何倍にも膨れ上がってしまう場合があります。

システム開発やシステムの保守にかかるコストというのは、基本的にそのほとんどが人件費となりますので、対応にかかる時間が多くなればなるほど料金も膨れ上がっていきます。

システムの品質が低いとこのように余計なコストがかかってしまいます。逆にシステムの品質が高いと保守にかかるコストは最小で済みます。

システム障害が発生しやすくなる

システムの品質が低いとシステム障害が発生しやすくなります。これは初期開発時に検出しきれなかった障害が後々になって表面化するだけではなく、システムの改修時に新たなバグが入り込みやすくなってしまうからです。

試験に時間をかければかけるほど潜んでいた障害を検出して品質を向上させることができますが、システム開発において障害を完全にゼロにするためには無限に時間が必要になります。ゴンペルツ曲線というものがあります。

ゴンペルツ曲線

ゴンペルツ曲線

時間をかければ障害が検出されて品質は向上します。ただしある時期まではかけた時間に対して劇的に障害数を減少させることが可能ですが、一定期間経過するとそれ以上は試験に同じだけの時間を使ったとしても、障害数の減少はどんどん緩やかなものとなります。

この図を見たらわかる通り、システム障害をゼロにすることは不可能です。たまに「絶対に障害は1件も出すな」という無茶を言う人がいますが、そのためには無限に時間を使う必要があるのでそんなことは論理的に無理なのです。

バグを0件にすることは不可能ですが、システムの品質を向上させることで潜在バグの数を少なくすることは可能です。逆にシステムの品質が低い状態だと、いつまで経っても潜在バグが多く潜んでいる状態となってシステムは不安定な状態となります。

またシステム保守で仕様変更や障害対応を行った際にも、新たな潜在バグが潜む可能性があります。その時にも当然のことながら、品質が高い方が新たな潜在バグが潜む可能性は低くなります。

パフォーマンス劣化が生じやすい

システムの品質が低いとパフォーマンス劣化が生じやすくなります。パフォーマンスの問題は初期構築時には発覚しないことも多々あります。また発覚してもシステムの品質が低いと改善が非常に困難な場合があります。

システムでパフォーマンス問題が生じやすいのはデータベース関連の処理です。とりあえずデータを登録できる、必要なデータを検索することもできるという状態にはなっていても、データ件数が増えてきた時に一気に処理速度が低下するような作りとなっていることがあります。

プログラムの中でデータベースにアクセスする処理はSQLと呼ばれるもので記述されることが多いのですが、パフォーマンス劣化の問題が発生するようなシステムではたいていこのSQLが複雑でメンテナンス困難な書かれ方をしていることが多いです。

またそもそものデータベース設計がまともに成されていない場合もあり、パフォーマンス劣化を解消しようとするとデータベースの作りを大きく見直す必要が出てきて、そうするとそれに伴ってシステム全体のプログラムの作りも見直さなければならなくなります。

パフォーマンス劣化の内容にも、データの登録や更新をしようとすると異様に処理速度が遅くなる場合や、ある特定の条件で検索すると異様に処理速度が遅くなる場合など、内容は様々です。

セキュリティ上の問題が発生する

システムの品質が低いとセキュリティ上の問題が発生することがあります。セキュリティ上の問題は発覚した時には情報漏えいなどの深刻な問題を引き起こす場合があります。

セキュリティの問題としては例えば、悪意を持った人間がある特殊な操作を行うことによって、データベースの情報を不正に引き出したり、データベースの中身を破壊してしまったりすることができてしまうことがあります。

普通のシステム開発会社が普通に作ったシステムであれば、そのような問題は起きないように作られるのですが、たまに新人に毛が生えた程度の人間が作ったとしか思えないようなとんでもない作り方をしているシステムにお目にかかることがあります。

過去には特定の特殊操作をすることによって、データベース上に存在する全ての顧客情報を画面上に表示できてしまうような会員制ショッピングサイトを見たことがあります。セキュリティ対策の費用を提示したら高すぎると言われて失注になったのですが、あのサイトあの後どうなったのだろうか・・・。

他にもログインしない状態であってもURLを直打ちすると、ログイン後の画面と情報が見れてしまうという世にも珍しい業務システムも見たことがあります。ちなみにこちらは今はもうなくなってしまった某上場企業だった会社のシステムです。w

あとはシステムでは万が一何か起きた時でも、誰がどんな操作をしたのかとか、どこからアクセスされていたのかとか、そういう情報をログとして残して後から追跡できるようにしておくということも重要なのですが、こういうことがまともに行われていないシステムは結構あります。ログはあっても役に立たないログしか残っていないとか・・・。

こういうセキュリティ上の問題はシステムの品質が低いと起こり得てしまうのですが、表面的にはわかりにくくすぐには発覚しない性質のもので非常に厄介です。

ランニングコストが高くなる

システムの品質が低いとランニングコストが高くなります。これは既に見てきたシステムの保守性の低さが大きく影響するからです。

品質の高いシステムを構築しようと思った時には、システムの初期構築時には品質を高めるために相応のコストが必要になる場合があります。費用をかけずに品質の高いシステムを構築することはできません。

だからといって初期構築にかけるコストをケチって、安かろう悪かろうの業者に発注してしまうと、結局あとから余計な費用が必要となってしまい、結果としてランニングコストが割高になってしまいます。

これはシステムの保守会社を乗り換えた場合でも同じです。乗り換え先の保守会社がまともな会社であったとしても、依頼するシステムの品質が低い状態であれば、システム保守で解析や改修にかかる時間はどうしても多くなってしまいますので、結果としてコストが上がることは避けられません。

当然のことながらシステムは初期開発して終わりではなく、構築後は何年も長く運用していくことが想定されます。長い目で見た時にランニングコストを下げるためにも、品質を向上させるために必要な費用を惜しむべきではありません。

代わりのシステム保守業者を探すことが困難になる

システムの品質が低いと代わりのシステム保守業者を探すことも困難になります。

最初に初期構築してもらった開発会社の品質や対応が悪く、代わりのシステム開発会社を探して乗り換えるということはよくある話です。弊社でも年に何度かそういった相談が入ってきます。

その時にシステムの品質が高ければ保守メンテナンスすることも容易なので、システム保守の移行を受け入れてくれる開発会社は見つけやすくなります。

しかしシステムの品質が劣悪であればあるほど、そのシステムの保守を行うことの難易度は高くなっていきます。技術レベルが高くノウハウ豊富なシステム開発会社であっても、あまりにもシステムの品質が低い場合だと保守対応が不可能という判断を下されることもあります。

初期開発の依頼をしていた開発会社とうまくいかず、別の開発会社に保守の移行を行う場合でも、システムの品質によっては受け入れてもらえる開発会社の選択肢の数は変わってくるでしょう。

システムを作り直さなければならなくなる

システムの品質が低いと、最悪の場合はシステムを作り直さなければならなくなる場合もあります。そうするとせっかくかけた初期開発費用のほとんどが無駄になってしまうようなこともあります。

初期開発したシステムの品質があまりに劣悪なために、他の開発会社に乗り換えを検討される企業さんは少なくありません。その時に保守移行先として相談した開発会社から、システムのリニューアルを提案されることがあります。

せっかく作ったシステムなのにリニューアルの提案をされる理由としては、既にあげてきた理由が原因です。このまま品質の低いシステムを使い続けると障害発生、パフォーマンス劣化、セキュリティ上のリスクが生じてしまったり、ちょっとした改修を行うにも無駄な費用がかかってしまい、ランニングコストがかさんでしまうといったことが原因として考えられます。

しばらく使ってきたシステムをリニューアルするならともかく、問題山積みのためにまだカットオーバーすらできていないシステムをリニューアルしなければならないという笑えない話になってしまうこともあります。

その時に追加でリニューアル費用を捻出することができないということであれば、システムオープン中止という判断になる場合もあるかもしれませんが、どうしても業務上オープンさせなければならないシステムだった場合には、そういうわけにもいきません。

システムの品質があまりにも劣悪なために、本当にシステムを作り直さなければならない場合はあるのですが、単に開発会社の技術力が低すぎて現行システムの解析及び保守が行えないだけという場合もありますのでその点は要注意です。

また、本当は十分保守できる品質なのに、リニューアルした方が開発会社が儲かるからという理由でリニューアルを提案してくる悪徳な開発会社も中にはあるようなのでそれも要注意です。

簡単に開発会社の話を鵜呑みにせず、リニューアルの理由が十分納得できるだけの客観的な説明がなされているかどうかはよく見る必要があります。

まとめ

単にシステム開発では品質が重要と言われてもわかりにくいかもしれませんが、以上述べてきた説明の通り、システムの品質というものは非常に重要なものです。品質が悪くて良いことなど一つもありません。

既存システムの保守を別会社に移管する場合の注意点

もし他社さんで開発されたシステムの品質に疑問や不安を感じるけど、正直どう判断してよいかよくわからないという場合には、ぜひ一度弊社までご相談いただければと思います。

このエントリーに関連した記事はこちら