要求(定義)と要件(定義)
システム開発時に混在して使われる二つの言葉ですが、それはシステムを開発する立場によって定義が異なります。
本記事では、2つの言葉の定義を、事例を交えて述べてみたいと思います。
要求と要件のことばの定義
要求並びに要件に関する複数の書籍の定義に、自分なりの経験を加味すると、下記のように定義できます。
要求はシステムを依頼する側がほしい特性
要件はシステムを開発する側とシステムを依頼する側が合意した特性
です。
特性とは、システムに実装される機能(処理のロジックや画面およびデータなど)と非機能(性能や耐久性など)を合わせたものです。
要求と要件に定義という言葉をつけると、要求を決める、要件を決める、という意味になります。
言い換えると、
「要求」には求めるという漢字が含まれるように、
システムを必要としている人たちが描くシステムに求めること
「要件」はシステムをつくる人たちが、
求められることを満たすようにシステムで実現可能なこと
です。
なお、要求と要件については多数の書籍が発刊されており、これら書籍ごとに要求と要件が使い分けられたり、一緒に語られたりしています。
つまり、共通認識としての定義が浸透していないことが分かります。
では、具体的な事例をみてみましょう。
要求と要件の具体的な事例
要求と要件の具体的な違いを、在庫管理システムの事例を使って説明します。
生産企画部門が在庫管理システムに対して求めることから考えてみます。生産企画部門は「仕掛品の在庫数を把握し、明日の生産計画を調整したい」という願望をもっています。
生産企画部門の要求
生産企画部門が在庫管理システムで実現したい要求は、
「国内に分散した各工場の仕掛品在庫をリアルタイムにみたい」
と定義しましょう。
仮に在庫管理システムが存在しない場合、各工場の仕掛品を工場事務員が数を数えて紙に書き生産企画部門にFAXを送るか、生産企画部門が電話で個別に工場に聞き回ることになります。
在庫管理システムが存在せず手作業で仕掛品在庫を把握しようとすると、あまりに多くの時間がかかり、時間の割には正確な情報を集めることができず非効率です。
そこで、システムを開発し、データの正確性や即時性を求めます。
生産企画部門が即時性を求める理由は前述のとおりで、仕掛品在庫の状況をリアルタイムで把握して、翌日の生産計画を調整をするため。
仕掛品の在庫数が見える化されることで、例えば優先順位の高い受注が入ってきたときに生産計画の組み換えが即時に可能となります。
”仕事(ビジネス)をより良くするためにシステムに求める”ということで、ビジネス要求とも言われます。
生産企画部門の要求を満たすシステムの要件とは
上記の要求を実現するための要件は複数考えられます。要件を出すためにまずは論点を挙げてみます。
ビジネス観点の論点
- 国内工場とはすべての工場を対象にするか
原料加工から包装、出荷までが一連の工場もあり、仕掛品在庫のない工場もある。該当の工場は除外してよいか。 - 仕掛品とはすべての商品を対象とするのか
多品種をつくっているので、完成までのリードタイムが1週間ある商品から0.25日までの商品がある。リードタイムが長い商品の仕掛品だけを対象にするのか。あるいは仕掛りが発生する全商品か。 - リアルタイムとはタイムラグ無しを求めているか
工場によっては、仕掛品数の報告が紙のものを30分に一回システムへインプットしている。最大30分のラグが発生することがわかっている。タイムラグ無しを求める場合はシステムの開発とともに、データ収集業務を改善する必要がある。 - 仕掛品の在庫がみられるのは生産企画部門だけか。営業部門も参照したいか。
システム観点の論点
- 在庫はひとつの画面ですべての仕掛品を見たいか
商品数が多く、ひとつの画面で見る場合、ページングか追加読み込みの実装を検討する。 - 在庫をどのように絞り込みたいか
工場名、日付、商品名、稼働ライン名ほか。 - 画面上で参照したい項目はなにか
仕掛品名、在庫数、商品名(ひとつの仕掛品につき複数あり)。仕掛品の製造日やロットは別の詳細画面でみられるようにすればよいか。 - 各工場からの在庫数の転送方法をどうするか
工場によっては仕掛品をオフコンで管理しているため、接続方式を検討しなければいけない。 - 仕掛品の在庫データは過去の履歴をどこまで保持するか
- 生産企画部門はブラウザで在庫がみられればよいか
Webベースのアプリケーションにするか否か。 - システムの稼働時間はどうするか
24時間か、夜間に保守等の目的で止められるか。
業務を遂行する人の観点によって、より多くの論点が挙げられます。
上記の論点に対する答えをワークショップなどの議論で導き出し、要求部門である生産企画部門と合意していきます。
合意された特性を要件といい、要件を合意するためのワークショップを要件定義と呼びます。
システムは万能ではなく、人もまた万能ではありません。
それぞれの事情があり、事情を制約として認識しつつ、実現可能なことを探求する作業が要件定義です。
要求定義・要件定義を学べる本
最後に、要求定義および要件定義を学ぶときに有益な書籍を紹介しておきたい。とくに設計に関わる方は、カールウィーガーズの名著である「ソフトウェア要求」を読んでおきたいところです。