motozono.com
ゾノドットコム


PMBOKが教えない成功の法則(日経BP社)(2017/10)

 

要件定義実践のポイント

 

要件定義のヒアリングリスト427

 

要件定義 トラブルの予防と対策136

 

ソフトウェア開発66の名著と4059のヒント

 

プロジェクトマネジャー1年目の教科書

 

プロジェクトマネジャー2年目の教科書

 

ネクストプロジェクトマネジメント

 

プロフェッショナルのための名言・金言・格言・箴言集

 

スケジュールの遅れを回復する方法

 

 

要求定義の肝

発注者のためのプロジェクト管理

  • 日経コンピュータ(日経BP)の2009年7月8日号に寄稿した「発注者のプロジェクト管理」の元原稿です。

アーキテクトの仕事〜立ち上げ・要件定義

  • システム開発ジャーナル(毎日コミュニケーションズ)の創刊号に寄稿した「アーキテクトの仕事〜立ち上げ・要件定義」の元原稿です。

著書

 

発注者のためのプロジェクト管理

なぜ今、「発注側のプロジェクト管理」なのか

工事進行基準の適用が始まった。システム開発における数々のグレーゾーンを排除するために、ベンダにはこれまで以上に高いプロジェクト管理能力が求められることになる。この影響は当然、発注側にも及ぶ。役割分担や要件のグレーゾーンの扱い、仕様変更の扱いなど、これまで発注側の「ごり押し」で通ってきた要求が、(良いか悪いかは別として)簡単には通らなくなってくる可能性が高い。発注側としても、この状況に対応するために、問題定義や要件の明確化およびステークホルダーの調整など、総合的な"上流"の能力を高めていかなければならない。

さて、困難な要件定義が完了したとしよう(※要件定義自体が難題ではあるが、今回のテーマからは外れる)。ここで発注側の仕事は終わりだろうか。あとは進行基準があるのだから、それに則ってベンダがきっちりと仕事を進めてくれるのを待っているだけでよいのだろうか。残念ながら否である。アウトプットや"進行基準"が固められたからといって、建設業界のように「あとはお任せ」にはならない。システム開発における不確実性は、ビル建設の場合とは比べ物にならないくらい高い。ルールができたからといって、もともと困難な作業が簡単になるわけではないのである。

確かにルールが明確になっていれば、計画から逸脱した場合、あるいは仮にプロジェクトが失敗した場合でも、「契約違反」としてベンダを責めることはできる。しかしそこに意味はない。発注側にとっては、システム開発の成功だけが重要なのである。

進行基準の適用はベンダのマネジメント能力を向上させ、プロジェクトの成功率を高めてくれると期待できるかもしれない。しかし「期待」の上にあぐらをかくわけにはいかない。発注側はこれまで通りに、ベンダ管理を実施していかなければならない。否、これまで以上にプロジェクトの状況(=ベンダの開発状況)に注意を払い、問題があれば積極的に改善要望をあげ、その実施状況や効果を注視していくべきである。その理由は以下の通りである。

  • ベンダのパワーが進行基準の適用に割かれることによって、"成果物作成のための実質的な作業"やその管理が手薄になる可能性がある。
  • 進行基準の適用にプレッシャーを感じての"にわか勉強のプロジェクト管理"によって、かえって現場が混乱する可能性がある。
  • ベンダの意思決定の判断基準において、「進行基準の遵守」が「顧客満足度」よりも(実質的に)上になる可能性がある。

ベンダへのリクエストが不発に終わるパターン

発注側によるプロジェクト管理(=ベンダへの詳細リクエスト)の最終的な目的は、もちろんシステム開発を成功に導くことにある。スケジュール、スコープ、品質、コストといった各種のプロジェクト目標を、当初の計画通りに達成することである。そのために、発注側が現場の状況、そしてプロジェクト管理の状況を詳細に把握することによって、ベンダが気づかなかった問題の芽を発注側の視点で発見し、ベンダに対して早期の対策立案をリクエストしていくようなアクションを推進していくべきである。

しかし発注側にとって、これを実現するのは口で言うほど簡単なことではない。一般にそれはベンダ側マネジャーの縄張りに踏み込むものであり、契約で明確に謳われていない限り、発注側からはなかなか口を出しにくい領域である。改善の要請どころか、それ以前の実態の把握ですらままならない場合も多い。たとえ実態を把握して改善要望を出したとしても、それが受け入れられるかどうかはベンダ次第である。さらに、対応策が出てきたとしても、それが本当に効果のあるものかどうかは別問題である。

以下、具体的な事例を見てみることにする。

1.現場の開発実態を把握することの困難さ

まずは、ベンダにリクエストを出そうにも、それ以前の状況把握からままならないという状態である。

【事例】

定例会は週に一回開かれていた。ベンダからは作業概況、課題、対策、それに今後の予定といったところが報告されてくる。しかし発注側としてはこの内容に不安を抱いていた。報告を聞く限り、プロジェクトには何の問題もないように思えるのだが、それを疑わせるような事実の断片が見え隠れしていたのである。

例えば、プロジェクト計画書の出来である。ページ数はそこそこあるものの、その内容はほとんどが一般論であり、「今回のプロジェクトだからこそ」といった独自の記述はほとんどなかった。概して粗い内容である。定例会で配布される報告資料も同様に粗い内容であり、先週とほとんど記述が変わらない箇所も多い。課題があっても、その対策の欄には具体的な記述はなかった。

マネジャーの質疑応答も不安を抱かせる要素の一つだった。どんな質問にもよどみなくもっともらしい答が返ってくるのだが、結論は皆一様であり、「問題はない」というものであった。つまり、悪いニュースがベンダから報告されることが皆無なのである。

現場からは、様々な課題や今後の懸念といった話が少しずつ漏れ伝わってきていた。ところがベンダのマネジャーにその話を向けてみても、「問題ありません」とかわされてしまうだけである。現場の担当者が神経質なだけなのか、マネジャーが現場の状況を掴んでいないのか、掴んだ上でひた隠しにしているのか、わからない状況であった。

2.ベンダに改善要望を受け入れてもらうことの困難さ

次に、状況を把握して改善要望を出したとしても、それがなかなか受け入れられないという状態である。

【事例】

報告資料の記述が「薄い」件については何度か改善要望を出しているものの、ベンダ側の動きは鈍いままであった。「どこがダメなのか」「ダメならば具体的な書き方を指示してくれ」とまで言ってくる。要するに発注側の要望をすんなり受け入れる気がないのである。また、受け入れられたと思っても、約束がすっぽかされるのは日常茶飯事であった。ようやく対応してくれたと思ったのもつかの間、しばらくすると元に戻っていることもしばしばであった。

問題を指摘し、問題認識を共有し、改善要望を出しても、なかなか効果的な策が提案されることはなかった。こちらから策を提案しても、そのデメリットばかりが指摘されて、すぐに却下されてしまう。かといってベンダから代案が出てくるわけでもなかった。

発注側はマネジャーの交代を望んでいたが、請負契約の下では、それをベンダに要請することはできない。「プロジェクトの状況が悪い」ということをしつこくベンダの上層部に伝えて、それとなく交代を匂わせることができるだけである。しかしベンダの上層部も、更なる内政干渉を恐れてか、「状況が悪い」という事実でさえも「リカバリ可能」ということで、なかなか認めたがらなかった。

3.改善策によって事態が改善することの困難さ

そして最後に、ようやく出てきた改善策も役に立たないという状態である。

【事例】

プロジェクトに改善の必要性があることをようやくベンダにも認めてもらった。しかしここからが一苦労であった。ベンダからは解決策がなかなか出てこないのである。ようやく出てきたと思ったら、真剣に考えられていないことがすぐに分かるような安易な策ばかりである。

まず、どのプロジェクトでも通用するような一般論の策である。遅延の発生という課題に対しては、「追加資源の投入」あるいは「タスクの並行実施」といった策である。きちんと詳細まで具体化され、本当に実行に移されるならば有効な策となるのだが、具体的なリソースやスケジュールの計画には全く踏み込むことなく、一般論をかざされただけで終わってしまう。

そして「頑張って回復します」という精神論の策である。「残業にてリカバリ」や「休日出勤でリカバリ」といった策である。しかし、これらの策が何ら根本的な課題解決になっていないことは自明である。原因には何ら言及していないのである。やがて同じような課題が再発することは容易に想像できる。

次に、コインの裏返し的な策である。「人が不足している」から「人を投入する」、「品質が悪い」から「品質向上策を打つ」といった「言葉遊び」のような策である。実質的には何も言っていないに等しい。

発注側はベンダの策に疑問を抱きながらも、「これで解決します」と断言されると、それ以上踏み込むことはできなかった。当然、プロジェクトの状況は一向に改善されることはなかった。

ベンダへのリクエストに立ちふさがる2つのハードル

こうした状況に対応するためには、本来であれば、発注側として、以下のようなリクエストを出す必要がある。

  • 現状の正しい情報を引き出すために、「曖昧な回答ができないような詳細まで踏み込んだリクエスト」を出す。
  • 改善策の策定に動かすために、「改善の必要性を受け入れざるを得ないような事実を根拠とするリクエスト」を出す。
  • 策の有効性を高めるために、「改善策の因果関係のロジックを追求するリクエスト」を出す。

ところがいざ実際にこのようなリクエストを投げようとすると、発注側には大きなハードルが立ちはだかる。契約の壁と、発注側スキルの欠如という壁である。

1.契約の壁

契約の壁とは、請負契約の壁を意味する。システム開発における一般的な契約形態である請負契約では、契約に特段の記述がない限り、原則としてプロジェクトの途中でベンダの作業に口出しすることはできない。最終成果物に対してモノを言うことはできるが、その作成過程や中間成果物には口を出すことはできない。定めがない限り、進捗の報告でさえ義務ではない。

とは言うものの、システム開発ではこの解釈は曖昧になっている。契約書に明確な記述がなかったとしても、定例会で発注側がベンダの作業の進捗状況を確認するのは普通の姿である。中間成果物の品質評価を要求することもある。契約にはなかった報告書を作成させることもある。多い少ないはあるが、こうした口出し自体は暗黙の了解になっていると言えるだろう。しかし、法的にはこれらのリクエストには根拠がない。ベンダは断ろうと思えば堂々と断ることができる。

発注側がベンダ作業のブラックボックスにリクエストを出そうとしても、契約を盾に拒否される可能性がある。これが第一のハードルである。

2.発注側スキルの欠如

そもそも発注側は、自前でのシステム開発を(戦略として)放棄したからこそ、請負契約でベンダに依頼している場合がほとんどである。しかしシステム開発スキルの欠如は、ベンダに対するリクエストの質にも影響する。見当外れのリクエストは、単に現場の負荷を重くするだけに終わってしまう。

例えば、進捗報告であるタスクの遅延が報告されたとする。ここで「遅延回復してください」というリクエストは正しいものではあるが、当たり前すぎてプロジェクトにプラスの影響を与えるまでにはいかない。リクエストは、「そうでなければ動かなかったであろうベンダを動かす」ものでなければならない。プロジェクトにプラスの影響を与えるものでなければならない。では、どんなリクエストであれば、ベンダを動かすことができるのだろうか。それを考えるのは、スキルが欠如している発注側にとっては克服が難しいハードルである。

発注側に現場のスキルが欠如しているために、ベンダに対して質の高いリクエストをすることができない。これが第二のハードルである。

ハードルを越えるための基本方針

1.契約の壁を乗り越えるための方針

契約の壁を乗り越えることはできない。ただしシステム開発においては、「請負契約であってもある程度の干渉は認める」という暗黙の了解が双方に存在している。実はベンダにとっても、発注側の干渉は検収時のリスクが低下するというメリットがあるのである。ただし、それが暗黙の了解に依存する以上、そこには双方の納得感や説得力というものが必要になってくる(※あるいは力関係が大きなウェイトを占めることになる)。

どのような根拠や裏付けがあれば、発注側のリクエストに対してベンダも納得し、協力してくれるのだろうか。もちろん、契約書に明記しておくことである。しかし、契約時点では具体的な作業内容もベンダのスキルも見えていないことが多い。そこで有用な“ツール”となるのが各種の計画書である。契約の縛りによって強権的にリクエストを発するのが困難な場合でも、計画書に書いてもらえばそのリクエストも(しぶしぶかもしれないが)呑んでもらえる可能性は非常に高くなる。計画書に中間報告会の実施が記してもらえば、契約書にその記述がなくても、中間成果物を確認し、その内容にリクエストを出すことも可能になる。

計画書の承認とは、後々のリクエストを可能とするための"仕組み作り"の重要な機会なのである。内容をベンダ任せにしていてはいけないし、安易に承認してもいけない。妥協なく仕上げるべき仕事である。プロジェクトの成否がここで決まるくらいの意気込みでコトに当たるべきである。

【事例】

開発が始まったばかりだというのに、発注側とベンダの関係は冷え切っていた。本開発に先だって実施された準備フェーズにおいて、様々な問題が発生し、それが深刻な相互不信を招いていたのだ。

双方が「約束が違う」と感じている。双方が疑心暗鬼の状態に陥っている。かくしてベンダはきっちりとスコープ固めに走り、そして大げさに言えば、それ以外のことは何もするつもりがなかった。発注側が品質に疑問をもって、中間成果物を確認させてもらおうとしても、請負契約を盾に断るような状態であった。

本来であれば今後の展開を心配して、発注側のマネジャーには相当なプレッシャーがかかる事態だが、このマネジャーは落ち着いていた。実はプロジェクト計画書を承認するにあたって、発注側として押さえるべきところをきっちりと押さえていたのだ。発注側として必要な成果物の機能要件や非機能要件が、要件定義書の詳細な記述如何によって左右されることのないように、大レベルの記述で「要件を定義」していたのである。

計画書の記述に関しては、発注側の要求に対してベンダも多少の抵抗はしたはずである。しかしどこまでの重要性の認識をもって抵抗したであろうか。一方、発注側のマネジャーはここがプロジェクトの勝負どころということを知っていた。そして妥協せず、発注側の意向をプロジェクト計画書に反映させた。この時点で、勝負ありであった。

2.発注側スキル欠如を乗り越えるための方針

ベンダに任せっきりにしていたために問題の発覚が遅れ、結果として失敗プロジェクトに陥ってしまう。こうした事態を防ぐために、発注側からの不断の監視とリクエストが必要である。ではどのようなリクエストをすればプロジェクトの危機を未然に防ぐことができるのだろうか。スキルのない発注側はここで途方に暮れてしまうかもしれない。設計書を見せてもらっても、ソースコードを見せてもらっても、手も足も出ない。確かにこのレベルでベンダにリクエストを出そうとするのであれば、スキルを持っていないと難しい。しかし実は、そこまでのスキルを持っていなくても、持っている場合と同等に近い「結果」を残すことは可能なのである。

質問するだけでいいのだ。極論を言ってしまえば、たとえベンダからの回答を理解できなくてもよい。更に、回答を理解できないことをベンダが知っていても構わない。回答を文書の形でもらうだけでいいのだ。

あなたは部下に対して情報処理試験の合格を命じなければならないとする。このとき、あなたは試験の概要さえ知らなくてもよい。勉強の計画を提出させればよい。計画の具体的な中身が理解できなくても構わない。あとは「日々、勉強の進捗記録をつけること」「あとで記録を提出すること」命じておけばよい。たまに状況を確認するだけでよい。たまに質問をしてみるのもよい。質問をしてみて、部下がきちんと解答できるかどうかを確認してもよい。この場合もあなたは問題を詳しく知っている必要はない。部下の解答の正誤を評価する必要もない。「いつでもその解答を評価することができるぞ」という雰囲気を匂わせておくだけでよい。あるいはそれさえも必要ないかもしれない。

単純に言ってしまえばこういうことである。個々の詳細を知っている必要はなく、何を質問するか、何を依頼するか、何を確認するか、それさえ知っていればよいのである。これは個別の業務、個別の技術に依存しないプロジェクトマネジメントの知識である。たとえ自身に現場のスキルがなくても、こういったマネジメントの知識を活用することによって、相手が保有するスキルを相手に使わせることができるのである(※ただし実際の活用にあたっては、シチュエーション別の体系化が欠かせない。後項参照)。

ベンダを動かすには質問が一番である。ポイントを突いた質問であればベンダも回答せざるを得ない。「よい」質問であれば、回答するためにはベンダに何らかの作業が発生する。発注側の狙いは、まさにその作業をベンダにしてもらうことである。依頼してその作業をしてもらうよりも、質問をしてその作業をしてもらうほうが、余程受け入れられる可能性が高くなる。

発注側の"ベンダ管理"のレベル
方法
特徴
実施すべきアクションや従うべきプロセスを、ベンダに具体的に指示して、その実施状況をモニタリングする。 発注側が持つスキルや情報がベンダよりも高い場合に効果的である。ただし指示が誤っていると、逆効果あるいは単なる時間の無駄となる。
実施すべきアクションや従うべきプロセスを、ベンダから提示してもらい、発注側で評価の後、実施にGOサインを出す。 発注側が持つスキルや情報がベンダよりも高い場合に効果的である。ただし評価が誤っていると、逆効果あるいは単なる時間の無駄となる。
ベンダからの提案や報告に対して詳細な質問を投げることによって、ベンダ自身の気づきを促す。 ベンダの専門性の効果的な活用を促進することができる。ただし無闇な質問はベンダのオーバーヘッドを高める可能性がある。
ベンダに対して期待する成果物の姿だけを伝える。 丸投げに近い状態であり、発注側の負担は少ない。ただし「蓋を開けてびっくり」となるリスクを抱えることになる。

【事例】

ベンダ側のマネジャーのほとんどは"メインフレーマー"で、長年ベンダ主導でプロジェクトを進めてきた経験しか持たない人ばかりであった。当然、発注側から詳細なリクエストや管理といったものを受けてきた経験はほとんどない。報告内容もスパンも粒度もアジェンダも全てがベンダ主導であった。一方、そんなベンダに引きずられて、発注側もそれが当たり前の状態だと思っていた。

こうした状況でベンダに対して詳細なリクエストをし始めたところ、当然のごとく抵抗に遭うことになった。その場ではしぶしぶ肯定的な返事をしておきながら、実際のアクションは何も起こさない。目に見える問題が生じているにもかかわらず、「問題が生じていないのに、なぜ今のやり方ではダメなのか」と疑問を呈する。

厳しい環境ではあったが、事実を提示し、ロジックを固めながら、ベンダへのリクエストを辛抱強く続けていったところ、少しずつではあるがベンダの姿勢に変化が見られ始めた。理屈の通った詳細なリクエストが、ベンダにとって当たり前の姿になってきたのである。ベンダの行動にも、徐々に変化が表れてきた。報告の粒度や、質問に対する回答の質も改善されてくる。リクエストが実際にプロジェクトに貢献するものだということがわかってくると、各種の提案も受け入れられるようになってくる。

こうした変化は、当然成果物の品質にも反映される。現場を知らない発注側にとっては、ベンダから提出されるドキュメントは、状況を判断するためのほとんど唯一の手段であるが、この品質向上は当然ベンダに対する評価の変化につながっていった。相互の誤解なども生じにくくなり、当初は険悪だったユーザとベンダの関係さえも徐々に改善されていった。

システム開発のスキルが欠如しているというハードルは、プロジェクトマネジメントの知識によって十分に乗り越えられるのである。ではそれはどのような知識だろうか。以下、ベンダへのリクエストの具体例を見てみることにする。

ベンダを動かす"詳細リクエスト"の具体例

以下に紹介する詳細リクエストの具体例は、数多くのプロジェクト管理の教科書の知見と、筆者の現場の経験をインプットとして、シチュエーション別に体系化したものの一部である。紙面の都合上、限られた内容になっているが、イメージを感じ取っていただけたらと思う。決してシステム開発スキルに依存するものではない。

まずは「そのタスクで初めての遅延」か、それとも「先週に引き続いての遅延」かによって対応が分かれる。前者の場合は、まずは報告の信頼性を確認した後で、原因の確認が最初の仕事となる。後者の場合、つまり以前から報告されていた遅延が今回も解消されていない場合は、更にそれが縮小傾向にあるのか拡大傾向にあるのかによって、対応は分かれる。縮小傾向にあるならば、静観していてもよいかもしれない。拡大傾向にあるならば、その原因を確認するために、プロジェクトの「様々な側面」に対して、ベンダに詳細な質問をする必要があるかもしれない。

さて、ここでは「そのタスク初めての遅延発生の場合」だけを例として取り上げることにする。発注側の対応は、以下の図のようなステップとなる。もちろんこれが唯一の正解というわけではなく、あくまでもリクエストのシナリオの一例である。どのようなステップになるかは、プロジェクト管理の一般的な知識を"マニュアル"へと落とし込む際の、その「落とし込み方」次第である。順番が変わることもあるし、並列で実施されることもあるし、別のステップが入ってくることもある。

ただし、上記の抽象度のリクエストでは「本当に」スキルが欠如している担当者が、ベンダに対して具体的で効果的な質問をしていくのは難しいだろう。そのような組織では、ステップごとに更に詳細な「質問することリスト」や「確認することリスト」を作成しておく必要がある。

「報告の信頼性を確認する」ステップであれば、

  • 何月何日時点での進捗か?
  • 誰がいつどのようにして獲得した情報か?
  • 報告スパンが1週間単位なのに、急に5日遅延などということになっていないか?

といった質問/確認項目が考えられる。「報告の信頼性を確認する」ためには、「どのような質問をベンダに投げるべきか」「どのような事を確認すべきか」を考え、「質問すべきこと」「確認すべきこと」をリストアップしていく。「ネタ」に困ったら、巷に数多く存在しているプロジェクト管理の参考書からヒントを得るのである。

「遅延の原因を確認する」ステップであれば、

  • 遅延の直接の原因は何か?
  • 遅延の根本の原因は何か?
  • 遅延にはどんなステークホルダーが絡んでいるのか?

といった質問/確認項目が考えられる。

「原因を分析する」ステップであれば、

  • ベンダの原因分析の信頼性はどのように判断すべきか?
  • 根本原因と直接原因の因果関係は正しいと思われるか?
  • 要条件と十分条件と寄与条件の錯誤はないか?
  • 原因分析は一般論レベルで止まっていないか?

といった項目が考えられる。この項目は質問/確認のためのものというよりも、発注側が自ら考察し、判断すべきものかもしれない。

上記の例では、「原因を分析する」ステップの後は3つのステップを並行して実施することになっている。もちろんこれも唯一の正解ではない。組織やマネジャーの考え方や好みによって分類の仕方も項目も違ってくるだろう。あくまでもサンプルであり、一つの例にすぎないが、それぞれのステップでの質問/確認項目は以下の図のようになる。当然、項目の追加や修正の余地は十分に残っている。更に一階層、二階層、レベルを下げて詳細化することもできる。

おわりに

ルールの変更は現場に影響を及ぼす。工事進行基準がどのような変化を現場に及ぼすことになるのかは予測の域を出ないが、発注側としては常に最悪の状況を想定して対策を打っておく必要がある。「発注側のプロジェクト管理」とは、「これはベンダの仕事だ」などと役割に拘泥することなく、「最良の結果を得るためにできること」を発注側自ら積極的に考えていくためのものである。そしてベンダに対する"詳細リクエスト"はその具体案である。リクエストの多くはベンダにしてみれば「言われなくてもやっています」というものかもしれない。しかしそこにあえて詳細な確認を入れていくことによって、プロジェクト目標の達成が確実なものになる。紙面の都合上、十分な説明ができたかどうか不安が残るところであるが、エッセンスだけでも掴んで頂けたらと思う。

 

アーキテクトの仕事〜立ち上げ・要件定義

はじめに

ITをめぐる技術革新は、システム開発のみならずビジネス環境にも大きな影響を与えています。ITをいかに活用するかがビジネス戦略における重要な課題になってくると、システムに期待される要件も複雑化・高度化していき、それはシステム開発をさらに難しいものにしています。複雑化するシステム開発に対応するために、個々の作業が次第に専門化していくのは必然の流れですが、それは様々な側面で個別最適化を進めてしまうリスクを伴うものです。

ITアーキテクトの役割は、この個別最適化のリスクを回避しつつ、複雑なビジネス要件を実際のシステムに落とし込むまでの先導役あるいは橋渡し役を務めることにあります。その参画は概ね、ユーザや経営コンサルタントによって経営課題が分析され、ITとの接点が見え始めたところから始まると言ってよいでしょう。

ITアーキテクトがなすべき最初の仕事は、IT全体戦略を策定あるいは理解し、当該システムの目的と意義を明確にすることです。何のためにシステムが必要とされているのかを明確にした上で、業務およびシステムのアーキテクチャを設計していく上での前提条件となる要求を抽出し、整理することです。では、プロジェクトの上流工程におけるITアーキテクトの仕事について見ていくことにします。

IT活用目的の明確化

1.IT活用目的の絞り込み

ひと昔前であればコンピュータ導入の目的と言えば省力化であり業務効率化でした。しかしメインフレームオンリーの時代からC/S、Webシステムへと新しいアーキテクチャの登場と合わせるように、コンピュータの使用目的も多岐にわたるようになってきました。

会社が蓄積している大量のデータをいかにビジネスに役立てていくかという情報活用支援や、経営層による企業の舵取りをサポートするための意思決定支援、新たな事業やサービスを生み出すための付加価値創造支援や、業務プロセス標準化のための支援、従業員の能力開発支援など、その目的は様々です。

IT活用の可能性が広がるにつれて、その目的を明確に定めることは難しくなります。往々にして要件は過剰になりますが、そのリスクは皆さんもよくご承知のことでしょう。プロジェクトは困難を極め、ようやく稼働にこぎつけたシステムも期待はずれという結果になりがちです。このような事態に陥らないためにも、ITアーキテクトは早期にステークホルダーを巻き込み、IT活用の目的を明確にし、その認識を共有していく必要があります。

ポイントは目的を絞るということです。5つも6つもの目的を課せられたプロジェクトは、具体化・詳細化の工程で混乱を引き起こしかねません。確かに目的を絞るのは困難な仕事です。「とりあえず現時点ではそれも入れておけばいいじゃないか」「無理だとわかった時点で考えればいいじゃないか」という意見に抗するのは簡単ではありませんが、ここは最初の踏ん張りどころです。

絞り込みのヒントとしては、事業のライフサイクルの観点から目的を検討することです。ライフサイクルが異なる段階にある企業は、それぞれIT活用の目的が異なるものです。例えば事業創造段階であれば事業創造のためのシステムが必要です。成長段階であればベースの事業を拡大するための標準化や形式化が課題になりがちです。成熟段階であれば無駄なコストを削減し、効率化を図ることが求められます。再編段階では事業の統合などを想定したシステムが必要になるかもしれません。企業のそれぞれの段階にマッチした目的で推していくと、納得感が得られ、コンセンサスも得やすくなります。

2.コストと効果の評価

IT活用の目的が明確になったら、期待される効果が投資に見合うものかどうかを検討します。効率化・省力化のためのシステムであればこの判断は難しくはありません。しかし付加価値創造支援などのシステムでは、効果との因果関係を明らかにするのは困難です。それでも可能な限り、効果を数字で表すことを考えなければなりません。投資が回収できるかどうかは、数字でなければ判断できないからです。

次に考えるべきは投資の効率性です。同じ投資でも、他の分野への投資の方が高い効果が見込まれるならば、このプロジェクトへの投資の必然性は薄れてしまいます。投資が効果的であるだけでは不十分です。他の選択肢と比べても効果的であることが必要です。

最後に考えるべきは投資のリスクです。プロジェクトが計画通りに進まなかった場合、事業の存続までもが議題に上がるようであれば、開始には十分に慎重になるべきでしょう。既存業務や他のビジネスへの影響、さらに中長期的な将来の維持管理の負担を含めて総合的に検討すべきです。

全体最適化を目指したシステム作り

1.全体最適化の必要性

IT活用の目的が定まったら、全体最適化の方針でそれを達成していくことを考えます。上流工程における全体最適化とは、業務(IT活用目的)とシステム双方の最適化を意味しています。目指すところは、ITの活用によって業務のアウトプットの最大化を図ること、そしてそれと同時に、最も効率的なシステムの開発を実現することです。

業務における全体最適化についてですが、部門ごと業務ごとの個別最適化の弊害は指摘されて久しいものがあります。個々の業務がそれぞれ独自の効率化・省力化を追求するが故に、情報の連携やプロセスの統一化など、全体としての最適化が実現できていない状態です。

業務が個別最適化されている状況は、そのまま情報システムの構造に反映されています。全社で統一すべきポリシーが各部門で異なっていたり、全社で共有すべきデータが個々のシステムで個別に管理されています。複数のシステムで同じような業務をバラバラに処理しています。このような冗長なシステムを維持するための負担や、全体最適化されていれば得られるはずだった機会利益は、個別最適化のメリットを大きく上回っているものです。

2.全体最適化への仕組み作り

全体最適化を目指してプロジェクトを進めていくためには、当然ながら個別部門の協力が必要です。そのためには、情報の連携や共有化など、全体最適化をがもたらすメリットを部門の立場から説明することが必要です。また、中長期的なシステム化計画の中で、全体最適化の方針が明確に盛り込まれている必要もあります。

また、全体最適化への動きを妨げるような仕組みの排除も必要です。例えば、全体最適化を進めると個々の業務のサービスレベルが低下したり、現場に新たな負担を強いたりといった問題が発生するものです。こういった問題が部門の評価を下げてしまう仕組みがあるならば、現場では個別最適が最善の選択になってしまいます。評価体系の見直しなど、インセンティブの仕組みから再考しなければならないということです。これはITアーキテクトの手に余る仕事かもしれませんが、関係者への積極的な提言を考えるべきです。

要求フェーズの仕事

IT活用の目的を明確にし、全社的に全体最適化へのコンセンサスが得られ、そのための課題が見えてきたならば、いよいよ具体的な要求の抽出に入ります。これまでの考え方では、要求フェーズでは顧客の目的やニーズを明らかにすべきであって、実現手段には言及すべきではないというものが一般的でした。明らかにすべきはWhatであり、Howは以降のフェーズで考えるということです。これは、先に実現手段を検討することによって、そもそものシステムの目的やニーズが手段に引きずられてしまったり、他の有効な解決策を検討する余地がなくなってしまうというリスクがあるためです。

しかし様々なベンダーの製品を組み合わせてシステムを構築することが当たり前になってくると、「実現手段は後で」などと悠長なことは言えなくなってきました。組み合わせが自由であるだけに、選択には様々な考慮が必要です。業務の特性や求められる信頼性、具体的な運用計画、投資の許容範囲、全体最適というコンセプト、開発期間の更なる短縮、製品同士の相性、トラブル発生時の対応、中長期的なシステム化計画、など多岐にわたる検討が必要になります。つまりスタート時点から既にHowが重要なのです。

要求の獲得

1.要求獲得の方法

他システム連携やIT基盤の要件を固めていくためには、ITアーキテクチャにそれだけの技術的なバックボーンが要求されます。しかし業務が異なっても基本的な要求定義の作業の本質が変わらないのと同様、アプリケーション分野で蓄積された要求定義のノウハウは、テクニカルな領域においても有効です。

要求獲得の方法は以下のように様々です。業務やステークホルダーの特性に合わせて、適宜組み合わせながら進めていきます。

  • 資料収集
  • アンケート
  • インタビュー
  • 現場観察
  • FIT&GAP分析
  • 業務フロー分析
  • ユースケース分析、シナリオ分析
  • 会議
  • ブレーンストーミング
  • カード(KJ法)
  • プロトタイピング
  • 電子掲示板
  • 既存のシステムの分析

2.要求の分類

獲得されたばかりの要求は、テーマも粒度もまちまちです。事業の中長期計画を見据えた戦略的な要求もあり、個別システムの詳細機能に関する要求もあります。

システムコンセプトレベルの要求と、画面項目レベルの要求を同じ議題のテーブルに乗せたり、異なる事業の要求を個別最適の視点で扱ったりすると、混乱してどこから手をつけてよいのかわからなくなってしまいます。まずはこれらの要求を整理することから始めなければなりません。ここで重要なのは、一つの切り口だけでなく複数の観点から分類することです。

獲得した要求は分類し、整理し、型に当てはめてみます。ある要求がぴったりと型にはまっているにもかかわらず、同じような別の要求には型との「隙間」が見つかれば、それは要求漏れを意味しているのかもしれません。型からはみ出ているのであれば、過剰な要求を意味しているのかもしれません。あるいは型(コンセプトや基本方針)に問題があるのかもしれません。

要求を分類する際には、以下のような切り口が考えられます。要求が膨大な場合は更なる細分化を検討します。

  • コンセプト
    • 経営目標・・・ビジネス戦略に関する要求です。
    • 全体最適化計画・・・組織、業務プロセス、システムにおける全体最適化に関する要求です。
    • システム化計画(中長期)・・・グランドデザインやライフサイクル、ITアーキテクチャのポリシーに関する要求です。
    • システム化計画(短期)・・・スケジュールや投資可能額に関する要求です。

  • アプリケーション
    • ビジネスプロセス・・・業務の進め方や業務同士の連携に関する要求です。
    • 機能要求・・・システムが実行すべき処理、システムがなかった場合に人手で行うべき仕事に関する要求です。
    • 非機能要求・・・信頼性、使用性、効率性、保守性、移植性など品質に関する要求です。
    • 運用・監視・・・運用、監視の方法やコストに関する要求です。

  • インテグレーション、インフラストラクチャ
    • システム連携・・・業務面およびIT基盤面での、他システムとの連携に関する要求です。
    • IT基盤・・・ミドルウェア、ソフトウェアプロダクト、OS、ハードウェアなどに関する要求です。

要求の妥当性の確認

1.スコープ明確化の重要性

獲得されたばかりの要求にはステークホルダーの生の要望が反映されていますが、IT活用の目的に対して、曖昧であり、過剰であり、あるいは不足であり、相互矛盾が含まれ、構造化されていないのが普通です。アプリケーション要求であれば、これらの要求をコンピュータが理解できるような形に変換してあげなければなりません。IT基盤に関わる要求であれば、システム化計画との整合性を確認していかなければなりません。そしてどちらの要求も、全体最適化の視点から再構成していかなければなりません。

曖昧な輪郭を持つ要求に対して、どのような基準や根拠で境界線を引いていけばよいのでしょうか。境界線の引き方を決めること、そして実際に境界線を引いていくこと、境界線が引かれた要求を理解しやすい形に構造化していくこと、これが次フェーズに作業を引き渡すための要求分析の責務です。ここで、不要な要求は境界線を引いてスコープから除外しなければなりませんが、必要であるはずの要求が漏れていればスコープに追加しなければなりません。その作業を遂行する上で最も強力な根拠となるものが、IT活用の目的であり、全体最適化を中心とするプロジェクトのコンセプトです。

2.アプリケーション要求の最適化

獲得されたばかりの要求には、個別最適化された要求や個人的な要求が含まれているものです。こうした要求は当然のことながら境界線の外に出すか、全体最適の方向に修正されるべきものです。こうした要求を「どうせ一括で開発してもらうのだから一緒に入れておけばよい」という考え方もありますが、これはいただけません。

プロジェクトマネジメントの観点から考えると、先々必ず発生するであろう追加変更要求への対応が難しくなることが挙げられます。システムの目的という原理原則に従わない要求をスコープに含めることによって、「何を開発し、何を開発しないのか」という重要な方針を自ら捨てていることになります。

設計・製造の観点から考えると、目的外の要求を開発スコープに含めるという事は、本当に必要な要求に使用できるリソースが減ってしまうということです。重要性の薄い要求に対応するために、本来開発可能であったはずの機能が縮小されたり、可能であったはずの品質レベルをあきらめたり、といった事態が生じてしまいます。

ユーザの観点から考えると、システムの使い勝手に影響する可能性があります。システムの統一性が薄れ、単に「個人最適化」された機能の集まりになってしまうと、「この機能にできたことがなぜあの機能ではできないのか」「なぜこの機能とあの機能では操作方法が違うんだ」といったことになりかねません。

こうした理由から、要求からは可能な限り不純物を取り除かなければなりません。ある要求をシステムの目的に照らし合わせたときに、直接的にあるいは間接的にでも、きちんと整合性が取れているのかどうかを確認することが重要です。

3.要求の妥当性の確認

さて、分類された要求は、「次の工程に引き渡す」に値するものかどうか、その妥当性を判断しなければなりません。品質が低い要求の集まりは、以降の工程の作業を、不必要に複雑かつ難解なものにしてしまいます。まずは下記の項目について分析を行います。要求の品質を向上させ、構造の理解が容易な、シンプルな要求群に仕上げることが肝要です。

整理が終わった要求は、システムの目的への貢献度や費用対効果、相対的な利益・不利益、リスクなどを考慮して優先順位付けを行います。これらの作業は各ステークホルダーを巻き込みながら行っていくことが大切です。

  • 要求の正確性
    • 獲得された要求および要求の記述が正確であり曖昧でないことを確認します。
    • 記述の曖昧さ・・・顧客の要求を曖昧さのない明確な日本語で正確に表現しているか。
    • 解釈の曖昧さ・・・要求の記述は複数の意味に解釈されることはないか。
    • 要求の曖昧さ・・・要求自体に曖昧さはないか。

  • 要求の一貫性
    • 相互に矛盾している要求がないこと、要求がIT活用目的やシステム化のコンセプトに対して整合性が取れていることを確認します。

  • 要求の最小性
    • IT活用目的やシステム化のコンセプトに不必要な要求が混入していないことを確認します。また、冗長な要求が存在しないことを確認します。

  • 要求の十分性
    • 設計が可能な程度にまで要求が詳細化されていることを確認します。

  • 要求の完全性
    • システム化の目的に対して必要な要求がすべて抽出されていることを確認します。

  • 要求のテスト可能性
    • 要求が現実的にテスト可能であることを確認します。

  • 要求の実現可能性
    • 要求が技術的に開発可能であることを確認します。スケジュールやコスト、リソースの面から検討します。

妥当性の確認までを完了した要求については、各ステークホルダーに再確認を依頼します。確認にあたっては、くれぐれも個別最適化された視点に陥らないように周知徹底しておきます。利用できる機会はすべて利用して、IT活用目的や全体最適化のコンセプトを、しつこいくらいに各ステークホルダーの頭にインプットしておくことです。

まとめ

システム開発の上流工程において、ITアーキテクトが関与すべき作業や意識すべき点について検討してきました。この工程におけるポイントは、目的を明確にすること、目的に対して全社的なコンセンサスを獲得すること、そしてこのポイントを外すことなく、技術的な視点からプロジェクトを引っ張っていくことです。

さて、次工程を想定した要求作業の心得は、「いかに分析・設計が容易となるプロジェクトの素地を整えておくか」です。あるべき姿を追いかけながらも、地に足がついた現実解への道筋を一歩一歩確立していくことによって、分析・設計作業への最適な環境を構築することができます。ロスの少ない効率的な引継ぎのためにも、この最適環境の構築を意識しながら作業を進めていくことを心がけましょう。

 

♪準備中
♪準備中
 
 
 
 
著書

 

要求定義のチェックポイント427(翔泳社)(2004/10/20)

 

要求定義のエクササイズ136(翔泳社)(2006/10/23)

 

要求定義実践のポイント(秀和システム)(2006/12/21)

 

顧客対応の掟と極意153(翔泳社)(2008/11/5)

 

雑誌寄稿
 

PM Magazine Vol.004(翔泳社)(2005/11/21)
「今すぐ使える要求定義のチェックポイント作成法」

 

開発の現場 Vol.006(翔泳社)(2006/10/12)
「要件定義“本番”に備える」

 

開発の現場 Vol.009(翔泳社)(2007/07/11)
「曖昧さを排除せよ→曖昧さを使いこなせ」

 

システム開発ジャーナル Vol.1(毎日コミュニケーションズ)(2007/11/29)
「アーキテクトの仕事〜立ち上げ・要件定義」

 

開発の現場 Vol.012(翔泳社)(2008/4/14)
「顧客との見積り交渉術」

 

日経コンピュータ 2009年7月8日号(日経BP社)(2009/7/8)
「発注者のプロジェクトマネジメント」

 

DB Magazine 2010年9月号(翔泳社)(2010/7/24)
「要求定義を上手に乗り切る顧客タイプ/シーン別の対処法」

 

WEB記事
 

ThinkIT
「プロジェクト管理基盤」整備のススメ〜対症療法に陥らないために〜
第1回:プロジェクト管理基盤とは何か (2007/08/10)
第2回:プロジェクト管理の前提条件 (2007/08/17)
第3回:顧客と上司を説得する方法 (2007/08/24)
第4回:個人のスキルの問題をどう解決するか (2007/08/30)

 

ITPro
プロマネを独りにさせない方法
システムの現場が求める「サポーター」(2008/06/02)
現場に入り込み、問題の芽を摘む (2008/06/09)
重要なのは目的意識と「人」への理解(2008/06/16)

 

EnterpriseZine
現場の「困った」を解決する!顧客対応の掟と極意
顧客から要求を迫られた時に知っておくべき対応の掟(2008/11/13)
顧客との話がいつまでも平行線の場合の対処法(2008/12/18)
顧客を怒らせてしまった場合の対応の掟(2009/1/13)