何のために作るのか?
2008年01月30日 23:28
ある業務のシステム化を始めるにあたり、いきなりプログラミングから始まりません。というか、始められません。いきなり例え話から始まりますが、図書館や大学なんかの書物管理のシステムを作るとします。本にIDタグかなんかをつけて誰がいつ本を借りて、いつに返却予定とか管理するものです。
このプロジェクトを始めるときに、一番最初にやらなければいけないことはなんでしょう?
お金の見積り?どんなプログラミング用語で作るか?
いやいや、システムを納品する図書館や大学側の意見を聞くことです。これを「要件」(ようけん)と一般的に呼ばれます。
システムを使うお客さんの意見を聞かずして、納品する(システムを相手に使ってもらう)なんてことはできないですよね。ましてや、意見を聞く私たちと、システムを使う図書館の方の業務知識などに少し違いがあります。「うちらの間(業界)では当たり前」のことが、システムを作っていく上で落とし穴になるときがあるのです。
こういった意見をまず、聞いてまとめます。これを要件定義というのですが、これをまとめるには、お客さんの業務を理解し、なんのためにシステムを作るのか?ということを理解しなければいけませんね。この図書館のシステムの場合、本のISDN番号(本につけられている特有の番号)を図書館の管理人さんが紙媒体の台帳で管理しているため、記入ミスや記入漏れ、読み取れない文字が出てくるため、バーコード管理しようとか。こんな感じ。
要件を決める工程を「上流肯定」なんて読んだりしますけど、工程が下に行けば行くほど「何のために必要か」ってことを理解せずに作っているときが多いです。特に海外の安価な人材を使う場合、ここの要件定義や次の工程の基本設計(システムの設計書)が非常に肝心になってきます。
「作られたものを決められた方法で、ただ作る」ということは簡単です。
しかし、「何のために作っているか」ということをよく考えて欲しいなぁと思う今日この頃。
なんでこんな話しになったかってのは、うちで外部に作ってもらってる、ある小さなプロジェクトがあるんですけど、まさにこれ。伝えたことしかやってくんない。
自分の考えが他力本願なのはわかってるんだけど、少しは助けてーと言いたくなったので。


コメント
■この記事へのコメント
とても大事なことだと思います。
作業内容や責任を分割するメリットもありますが、全体が1つになって、血流のように情報が流れたら劇的な変化があると考えています。
Zeeta
http://mm3991.qp.land.to/
Posted by タンジ | 2008年02月02日 14:17
はじめまして?
私も同感です。
SEもプログラマも現場を知らなさ過ぎるし、
自分が何のためにシステム開発をやっているかという
ことを見失いがちですね。
お客様が使ってくれること、喜んでくれることが目的だって
いうことを忘れ、開発することが目的になってしまいがちです。
気をつけたいです。
Posted by ジャッキー | 2008年02月06日 1:43