2009年6月30日火曜日

システムの作り直しを避けたければ

前回、システム導入が失敗する理由について少し触れました。下請けとして開発している場合、納品を済ませると、現場からのフィードバックを受けないまま次の開発へと移っていくことが多いため、独りよがりになり、なかなか成長できないことを理由の一つに挙げました。今回は、これとは別の問題を紹介します.


プログラミングできない人の設計

システム開発は、設計とプログラミングからなります。システムの全体を構想するのが設計で、それを実際にプログラムコードで書き上げていくのがプログラミングです。

ず設計から始まりますが、設計者は、過去にプログラミング経験があったとしても、今は現役のプログラマーではないというケースがよくあります。その結果、机上の空論的な設計となり、実際の開発で生ずる問題や危険性を認識できていない事態がよく発生します。

イメージしやすいよう建築現場で例えてみましょう。配管工事を行い、図面に沿って排水用パイプを設置するとします。図面を描くのが、上記の設計者の役割です

さて、排水用パイプと並べて電線も通すことになっており、図面上では、両者は問題なく並べられるはずでした。しかし、排水用パイプのつなぎ目に採用した新開発のパーツが、従来のものより太いため、図面通りに施行したところ、パイプのつなぎ目が太くなった分、電線を通せなくなってしまったのです。

要するに、昔の知識だけの設計では、現場で通用しないことがあるわけです。

設計変更が必要なら作り直しと思え

そして、一度開発を終えたら、後から設計を変更するのはとても大変な作業となりがちです。それだけ追加費用も高くつきます。ひどい場合、すべて作り直しになることもありますから、設計という工程はとても重要です。
例えば3階建てのビルを建てた後、やっぱり15回建てに変更したいといっても、単純に上階を継ぎ足すわけにはいきません。それだけの重さに耐え得る設計になっていない可能性があるからです。最悪の場合、ビル全体を取り壊して一から、ということもあり得ます。

「現在の業務では一つの倉庫しかないから」という理由で、一倉庫に限定して設計された在庫管理システムをたまに見かけますが、「ビジネスが拡張して複数の倉庫管理が必要になったらどうするつもりなのだろう?」と思ってしまいます。おそらく作り直しに近い変更が必要になるでしょう。


設計力が寿命を決める

拡張性を見据えた設計になっているかどうかで、そのシステムの成否や寿命が決まると言っても過言ではありません。
私は以前、格安航空券を取り扱う旅行代理店のウェブシステムを構築したことがあります。おそらく過去に最も、設計について頭を悩ませた仕事でした。というのも、各航空会社の格安航空券料金の仕様は、統一されていないだけでなく、かなり頻繁に根本から変更されることが多かったからです。

今は、オンラインで航空券予約までできる旅行代理店のサイトが増え、非常に便利になりました。しかし目玉の格安航空券は、通常の航空券と異なり、各航空会社からリアルタイムで提供される航空券データとは別枠であるため、全て網羅するには、結局、手作業でデータを入力する必要があります。そのため各社とも、この部分はかなり苦戦しているようです。

実際に聞いた話ですが、ある会社で何十万ドルもかけて開発を試みたシステムが、格安航空券料金の度重なる仕様変更についていけず、結局お蔵入りになったのだとか。

私の構築したシステムが6~7年経った今も現役でいられるのは、もちろん、優秀な現場の方にうまく使っていただいているからです。しかし、設計時に考え抜いていなければ、おそらく2~3年の寿命で終わっていたと思います。

0 件のコメント:

コメントを投稿