はじめに
いきなりですが、「要件定義」とは何でしょうか。2017年3月に情報処理推進機構 技術本部ソフトウェア高信頼化センター(IPA/SEC)が公開した「ユーザのための要件定義ガイド ~要求を明確にするための勘どころ~(要件定義ガイド)」によると、「要求とは、『~したい』と表現できる」とあります。
これに対して「要件定義」とは、新たなシステムを開発する際に、まず何を実現したいのか(要求)を明確にし、それを実現するためにはどのような機能が必要か(要件)を具体的に定義することです。システムやソフトウェアを作る前に「これができたら嬉しいよね」という「希望=要求」をもとに「それにはこんな機能が必要だよね」という要件を明確にする作業が「要件定義」なんですね。
こういう作業って身近にもありませんか? そうです、「家づくり」です。家一軒を建てるプロセスを想像してください。多くの人にとって「家」は大きな買い物です。ですから、なるべく多くの希望をかなえたい。「こんな設備が必要だよね」「こんな内装だったら嬉しいよね」という要件が湯水のごとく湧いてくるのは当然でしょう。
でもちょっと待ってください。その家に住む家族全員の希望を全てかなえた家づくりは、そうそうできません。希望の立地、間取り、洋風か日本家屋か……。そうした要件を一つずつ明確にして優先順位を付け、実現できることとできないことの折り合いを付ける必要があります。
もちろん、最大の課題は予算です。「金に糸目は付けない」で家を建てられるならよいのですが、そんな恵まれた人はそうそういない(はず)でしょう。予算とにらめっこしながら、「コレを付けるからアレを外せ」「ココを諦めたからコッチは譲れない」と口論になってしまうことも少なくありません。
では、何をすれば、何を決めれば、家族全員にとっての理想の家が建てられるのでしょうか。
実は、システム開発における要件定義は、どこに、どんな家を建てるかを決めるという「家を建てる際の最初のプロセス」と驚くほど似ています。というか、同じです。
家づくりのプロセスとシステム開発の要件定義
本連載では、「家を建てる際の最初のプロセス」を例に、「要件定義」とは何かを解説しつつ、要件定義決定のプロセスを紹介していきます。「要件定義」で直面する課題は、家を建てる過程で直面する課題と同じです。両者を紹介しつつ、要件定義の課題を解決する勘所と留意点を解説します。
本連載に登場するのは、調理器具製造会社に勤める千石君です。もうすぐ30歳になる千石君は、これまで事業部門で調理器具の企画と開発を手掛けていました。そして、事業部門での実績を買われ、新年度から業務拡大するネット通販サイト構築のチームリーダーに抜擢されました。4月からは情報システム部門に異動になり、ネット通販のサイトの「要件定義」を任されています。
実は千石君、私生活では結婚3年目を迎え、そろそろ一戸建ての購入を考えているのです。くしくも「要件定義」と「家を建てる」ことを同時並行で行う千石君。仕事もプライベートも充実しているものの、忙しい毎日です。