特に重要なのは「業務要件」と「システム要件」の区別だ。この二つの区別はプロジェクト運営上の責任と結び付けられることが多いので、区別の仕方によっては大きな混乱や行き違いが生じることもある。「ユーザ側」が業務要件を定義し、「システム側」がシステム要件定義を担当するといった役割分担を行う場合、この二つの要件の区別がそのまま両者の責任の境界になるためである。
さて、ではこの二つの間でどう線引きすればよいだろう。
ありがちなのは、ユーザから提示された要件を「業務要件」、開発側があげた要件を「システム要件」とする分け方だ。しかしここでは、まずは「ユーザ側」「システム側」といった責任分担の視点をいったん脇に置いて、要件の性格の違いに着目したい。以下のような分け方だ。
- 「業務要件」 … 人間が行うかEDP処理とするかは別にして、対象業務がなすべきことの定義。
- 「システム要件」… 「業務要件」をみたすために、EDP処理が行うべきことの定義。
見積業務を例にとると、これは見積依頼を受けて見積書を作る業務だから、業務要件には以下のような項目が含まれる。
- 業務のインプット … 見積依頼を受け付ける際にお客様から入手する情報の定義。
- 業務のアウトプット … 見積書に盛り込まれる情報の定義。
- 業務上のルール … 価格や見積有効期限の決定ルール、見積書提出前の承認ルール。
- 業務の頻度や、要求される処理量 … 一日に何通の見積書を作成できなければならないかなど。
- いずれも、業務要件を満たすための手段を記述するものである。
- 両者は相互依存している。すなわちどちらかがもう一方に先行して決まるものではない。
- 両者を切り分ける上では、業務要件を満たすことだけではなく、技術・コストといった要素も重要である。
と、このように書くと「当たり前だ」と思われるに違いない。自分でも書いていてそう思った。しかし、現実のプロジェクトではこれがうまく出来ていないことがなぜか多いのだ(私が関係してきたプロジェクトだけではないことを祈りたい)。主な原因が三つあるように思う。
ひとつめは、「業務要件」に「業務プロセス」も含めて理解していることである。そのために、業務要件を定義する際に業務プロセスも決めてしまう。業務プロセスが決まれば、必然的に(かつ暗黙のうちに)システム要件も決められてしまうことになる。私は、自分の経験や伝聞といった乏しい根拠に基づく見解であるが、このケースが実はかなりあるのではないかと疑っている。業務要件定義とシステム要件定義の分け方という、「入り口」で間違っているのだ。苦労するのは当然である。
ふたつめは、「業務要件」を定義することの難しさに起因する問題である。業務要件を定義するには、現行の業務プロセスが本来何のためにあるのか、何を達成すればその業務として十分と言えるのかを問いつくさなければならない。それに比べて、業務プロセスについては、現行業務のここをこう直すと言えば、それでも新業務プロセスの定義にはなる。言い換えれば業務プロセスより業務要件の方が、一段、抽象度が高いのである。したがって、担当者やプロジェクトチームが、こうした抽象化の作業に慣れていないと、本来の業務要件定義を敬遠してしまうだろう。
三つめは、役割分担に起因する問題である。業務要件定義「フェーズ」とシステム要件定義「フェーズ」に分けてプロジェクトを進めたとしよう。フェーズの切れ目が組織の切れ目になるのはよくあることだ。業務要件定義フェーズはユーザ部門が中心、システム要件定義フェーズは情報システム部門が中心になるとするなら、ユーザが情報システム部門に引き渡す「業務要件定義文書」に具体的な業務プロセスまで盛り込みたくなるのは自然だ。フェーズごとに協力会社が替わるなら、契約上の責任の問題がからみ、これに輪をかけることになる。
いずれにしても、情報システムでは何が簡単で何が難しいか十分な検討なくしてシステム要件が決められる結果になる。そのため開発が難しくコスト高なシステムになるリスクが高まる。
こうした問題に対処するには、フェーズ分割と契約の面、人と組織の面の両面からの対策が必要だろう。まずフェーズ分割と契約の面では、上記で問題視したような役割分担を抑制することに意を用いるべきだろう。要件定義を「業務」と「システム」に分けるのは上策とは言えないと私は思う。ベンダーとの契約にも注意が必要だ。
人と組織の問題はもっと難しい。まず、プロジェクトチームが「業務要件定義」に不慣れな場合、その補強策が必要だ。外部コンサルタントの活用も考慮する価値がある。
枠組みをいくらととのえても、業務サイドのメンバーと情報システムサイドのメンバーが密接に協働作業できなければ、やはりいつの間にか上述したような役割分担に戻ってしまう。人間、誰でも、自分の得意分野に留まっているほうが楽だからだ。しかし逆に、両者がお互いに尊重し、相手の得意分野に対しても「健全な素人」としての意見をお互いに言えるような関係を築くことができれば、素晴らしいプロジェクトとなると思う。これはメンバーひとりひとりのテーマであるとともに、プロジェクトリーダおよび関係部門の長の手腕の見せ所だろう。
とはいえ、そもそも「要件定義」とは何か、どういった論理構造を持っているのか、といった基本的なことがらについて共通な理解がなければ、さまざまな努力をしても焦点が定まらず、効率が悪いのではないか。ここで述べた要件の構造、すなわち業務要件・業務プロセス定義・システム要件の関係の話なども参考に、チームで「要件定義」のあり方について検討する機会を持つ、といったことも考慮に値するのではないか、と思う。
2005/6/19 加筆修正