PR

 基本設計以前の上流工程にかかわる機会がない方,自分には要求開発は関係ないと思っていませんか。要求開発はビジネスや業務に精通していないと難しいと考えている方いらっしゃいませんか。一見,実装系の開発プロジェクトからは縁遠いテーマに思える「要求開発」ですが,実は,そのアプローチやノウハウが役立つことがよくあります。

 私はSI企業で働くエンジニアです。残念ながら仕事で本格的な要求開発プロジェクトにかかわったことはありません。そんな私が要求開発アライアンスに参加して日頃感じているのは「システム開発も要求開発も基本的な部分は同じ」ということです。

 今回は私が要求開発を勉強しながら感じたシステム開発との共通点について,ご紹介しようと思います。

ゴールを明確にする

 要求開発には,「準備」「立案」「デザイン」「シフト」の四つのフェーズが存在し,各フェーズでPDCAを実践します。PDCAの「Plan」では,単に計画を立案するだけでなく,ゴールを明確にします。これは,要求開発の重要なコンセプトの一つです。例えば,要求開発方法論(Openthology)では,準備フェーズの最初に,まず要求開発プロジェクトのゴールを決めるよう定められています。

 システム開発においても「ゴールを明確にする」のは,当たり前のことのように思えます。しかし,実際のプロジェクトにおいて,いつの間にか,的外れな(本来向かうべき方向ではない)ゴールに向かって進んでいたり,時間切れといった理由で,明確にゴールを策定しないまま,見切り発車で開発を始めていたりするケースはよくあります。

 私が経験したプロジェクトの一つに,お客様側でも,開発を依頼するシステムの具体的なイメージが固まっておらず,期間と予算だけが決まっている状況でスタートしたものがありました。ベースとなる現状の業務もなかったため,こちらからいろいろと提案しながら進めていくことになりました。

 プロジェクトが進むにつれて,開発サイドからもお客様サイドからも案や要望が出て,徐々にシステムに要求する機能が具体的になっていったのはよかったのですが,要件として取り入れるための基準が無く,要件がどんどん膨らんでしまいました。

 さらに,困ったことに,できあがったシステムは,実際の業務ではあまり使われないイレギュラーな処理には対応できるものの,本来,最も重要な機能の使い勝手が悪いなど,実装後に多くの問題が顕在化してしまいました。

 これらの問題は,プロジェクトの早い段階で,そのシステムのスコープとゴールを明確にしていなかったことが原因だと私は考えます。明確な方針のもとに,「要求」に優先度を設定して対応していれば,このような事態にはならなかったのではないでしょうか。

 このプロジェクトではシステムの前提となる重要な要求が,プロジェクトの途中で変更されるという問題もありました。プロジェクトの早い段階で,ゴールを明確にしていても様々な要因でそれが変化することはあるでしょう。このような場合,要求開発では対処できないのでしょうか。

 実は,私自身,要求開発はプロセス(プロジェクトの進め方)が決まっており,後戻りしにくい,と感じていた時期がありました。環境や要因が変化しやすいビジネスに対応するには,アジャイル型開発といった柔軟な手法が有効との印象もありました。要求開発とアジャイルは相容れないのか,という疑問を持ちました。しかし,アライアンスの方にお話を聞くうち,そうではないと私も考えるようになりました。

 要求開発でゴールを明確にすることは,進むべき方向を固定するといった柔軟性のない手法ではなく,大枠で進むべき方向性を決めて,PDCAの「Check」でその妥当性を評価するという合理的な手法となっています。

 「Plan」では,ゴールを策定すると同時に,「Do」でゴール達成のために何をするのか(何を作成するのか)と,「Check」における評価基準と評価の方法を定義します。これにより,各フェーズの「Check」により,必要な見直しが可能となり,軌道修正が必要な場合は「Act」で実施します。

 PDCAをきちんとまわすことが重要なのは,どんな作業でも同じだと私は思います。

 例えば(システム開発の話ではないのですが),ある時,大量の発送を手作業で行うことがありました。まずは,できるところまでやってみるということで,やみくもに作業を始めてみました。しかし,どう考えても一日では作業を終えられないことがわかるだけで,ゴールが見えず,焦りやモチベーションの低下による作業の遅れが発生しました。

 そこで,発送を急ぐものを選別したうえで,何日で全体の作業を終えるか。そのために,どのような手順で作業を進め,その日のうちにどれだけの作業を実施すれば良いかを決めてみました。

 一日の終わりに,予定していた作業の進ちょくをチェックし,遅れている場合は,人を増やしたり,時間を延長するといった対応も実施しました。やるべきことが明確になることで,円滑に共同作業を進めることができました。システム開発の場合も同じだと思います。

 まずは,ゴールを明確にすること。そして,PDCAをきちんと実施すること。これが私が感じた要求開発にもシステム開発にも「大切なこと」の一つ目です。

 次回は,私がもう一つ大切だと思う「粒度を意識する」ということについて,Openthologyではどのように定められているかをご紹介したいと思います。

(柳本 芙友子=要求開発アライアンス 執行委員)