ITシステム開発の要件定義は、システムやソフトウェアの開発の工程で最初に行われる作業です。適切な要件定義ができなければ、ベンダー側はどのようなシステムを開発したらよいのかわからず、開発作業が進みません。あるいは、ユーザー側が思い描いていたとおりのシステムにならず、トラブルが発生することもあります。システム開発を成功させるためには、システム開発を依頼するユーザー企業が要件定義に積極的にかかわることが重要です。
ここでは、システム開発を考えているユーザー企業の担当者に向けて、要件定義の進め方や、何を決めればよいのかについてわかりやすく説明します。
システム開発の要件定義とは
要件定義(RD:requirements definition)とは、システム開発の最初の作業です。システム開発を企画するユーザー企業とシステム開発をするITベンダーの間で、システムに期待する役割や効果を明確にすることを目的とします。
要件定義の内容は、独立行政法人情報処理推進機構によるガイドライン(共通フレーム)で規定されています。現在の最新版は以下の「共通フレーム2013」です。
SEC BOOKS 共通フレーム2013:IPA 独立行政法人 情報処理推進機構
要求定義と要件定義の違い
要件定義と似た言葉に、要求定義があります。双方には次のような違いがありますが、実際は、このふたつをまとめて「要件定義」といわれることも多いです。
- 要求定義
システムを開発する目的、システムに期待する役割や効果など、ユーザーの希望やシステム開発の企画をまとめることです。この段階でのユーザーの希望をまとめたものを「要求仕様書」といいます。 - 要件定義
要求定義を満たす機能や仕様(システム要件)をまとめることです。要求定義のあとに行われ、成果物として「要件定義書」を作成します。要件定義書はシステムエンジニア(SE)やエンジニアを含めた関係者一同で共有され、システム開発のガイドラインとなります。
システム開発の要件定義の目的
前述のように、要件定義の目的は、ユーザー企業とITベンダーの間で、システムに期待する役割や効果を明確にすることです。言い換えると、ユーザーとベンダーが、開発するシステムについて同じものをイメージできるようにすることです。
そのため、要件定義の過程で次のような内容を明確にし、ユーザーとベンダーが認識をすり合わせて共有します。
- なぜシステム開発を行うのか
- どのようなシステムが必要なのか
- どんな機能が必要なのか
ベンダーにとっては、システム開発の要件定義は業務でよく行うことです。しかし、ユーザーにとっては初めてのことも少なくありません。要求仕様書や要件定義書の見本があれば、ユーザーも理解しやすいため、話を進めやすくなります。
なぜ要件定義が必要なのか
要件定義ができていなければ、ユーザーとベンダーとの間で認識のズレがあっても気づけません。その結果、次のような問題が発生する可能性があります。
- ベンダーがどのようなシステムをつくったらよいのかわからない
- ユーザーとベンダーそれぞれが想定する機能や仕様が異なり、最終的にトラブルになる
- プログラム作成中に、細かい部分をユーザーに確認しなくてはならない
- 作業戻りが多く、開発スケジュールを守れない
- 時間と工数がかかるので開発コストが増加する
- システム開発の目的や目標があいまいになることで、システムの効果を測定できない
以上のようなことを回避し、ユーザーの希望どおりのシステム開発を可能にするためには、要件定義が必要です。要件定義の段階でシステムの機能や仕様を詳細に決定して、ユーザーとベンダーで共有することが重要なポイントとなります。
なお要件定義は、新規開発のときだけではなく、システム改修やリプレースの場合も必要です。
要件定義の費用感
要件定義はプログラム作業に入る前のプロセスですが、見積書を確認すると、この作業にも大きな費用が発生することがわかるでしょう。
開発するシステムにより費用は変わってきますが、要件定義の月単価は後工程よりも高額になることも少なくありません。要件定義は上流工程にあたり、専門知識や開発に対する経験が必要であり、プロジェクトマネジャーやディレクターなど役職者がかかわるためです。月単価数10万円から100万円程度になることもあります。
ただし、通常は要件定義のプロセスのみで費用を請求されることはなく、プロジェクト全体のコストに含まれています。
システム開発の要件定義に必要な項目
要件定義で規定される項目は、業務要件、システム要件、機能要件、非機能要件の4種類に分けられます。
- 業務要件
現状の業務内容と業務フローを洗い出し、問題点を分析して、改善するための要件を規定します。業務要件をベースにして、システム導入で課題や問題点を解決した新しい業務フローを決定します。ここで作成された新しい業務フローが、システム導入後の目標です。 - システム要件
システムに関する項目です。新しい業務フローを実現するためには、どのようなシステムが必要なのかを、エンジニアの側から考えます。次のような項目を決定します。- システムの概要(どのような機能が必要なのか)
- システムを導入する目的(システムに求めている効果)
- システム導入後の業務フロー(システム導入前と比べてどう変化したか)
- 機能要件
システム要件を満たす機能、つまりユーザーが求めるシステムを実現するための機能を規定します。システムが何をどのように処理しているのか、データやシステムの種類や構造などを明確にすることです。ただし、開発予算によってはすべての機能を満たすことができず、調整する場合もあります。 - 非機能要件
ユーザーにとって「高い性能があればうれしいが、メインとして求める機能ではない」要件です。システムの性能や効率性、セキュリティ対策、保守・運用サービスなどがこれにあたります。ユーザーの満足度向上に大きく影響する項目で、機能要件と同じように綿密な打ち合わせが必要です。
システム開発の要件定義の進め方
要件定義の進め方と、注意すべきポイントを説明します。
基本的な流れ
要件定義は、次の5つのプロセスで決定します。
- 要件定義の計画作成
要件定義をどのように進めるかを決めます。システム導入を決定してベンダーを選定したら、ベンダーが要件定義のスケジュールや制作体制をまとめた計画書を作成します。 - ヒアリング
ユーザーの希望を聞き、業務要件を決定します。システム開発の目的や目標、現在の業務フロー、ユーザーの現状や要望、課題などをヒアリングします。ヒアリングを行うことで業務要件が明確になり、課題を洗い出してまとめることが可能です。ヒアリングを繰り返し、その結果を整理することで、ユーザーのイメージするシステムや、システム導入後の業務フローをベンダーが共有できます。 - 要求の分析
ヒアリングで発見した課題や要求を細分化して分析します。課題や要求をシステムで解決する方法を考えて、システムに必要な機能が決まれば、システム要件と機能要件、非機能要件を大まかにリスト化します。
要件定義のなかでももっとも重要なプロセスであり、この作業が不十分な場合、作業範囲が決定できなかったり、ユーザーとベンダーの意識のズレの原因になったりします。ただし、すべての課題や要求がシステム化で解決できるわけではありません。システム化で対応できない課題を切り分けることも必要です。また、予算やスケジュールの都合で、課題や要求のすべてに対応できないこともあるため、今回のシステム化で対応する範囲も決定します。 - 要件の整理
要件の詳細を決定します。整理した業務要件をもとに、リスト化したシステム要件、機能要件、非機能要件をより具体的な項目に細分化・分析し、整理します。
機能や仕様だけでなく、システムのインターフェイスやレイアウト、帳票、遷移図、性能、信頼性、拡張性、セキュリティ、運用管理体制などの詳細を決定する作業です。 - 要件定義書の作成
整理した要件をもとにして、全体で共有するドキュメントである要件定義書を作成します。要件定義書には、以後のシステム開発スケジュールやシステム導入後のロードマップ、必要な人員、見積もりなども記載します。
要件定義を行ううえで注意すべきこと
要件定義書を作成するときには、次のような点に注意が必要です。
- 具体的に細かく
要件定義書の記述は、できるかぎり「具体的に」「詳細に」が基本です。解釈の余地は後工程の修正やトラブルにつながるため、要望や要件、機能や仕様など、あいまいな部分は残さないよう、できるだけ具体的な数字をあげて記述します。 - 必須要件と希望要件を切り分ける
要求仕様書の内容がすべて盛り込めるとはかぎりません。予算、納期、既存のほかのシステムとの連携などで、実装できなくなる要件がいくつかあるものです。そのため、必須の要件、必須ではない要件をはっきりさせておきましょう。最終的に仕様を決定しやすくなります。
今回の開発で実装できなかった要望は、次回アップデート時に実装することを考え、申し送りを残しておくとよいでしょう。
要件定義はシステム開発の最初の段階で最重要ポイント
要件定義は、システム開発を成功させるための非常に大切な部分です。要件定義がしっかりしていないと、どのようなシステムを開発するのかわからなくなってしまい、希望したシステムにはならないおそれがあります。要件定義の段階で、ユーザーとベンダーがしっかりコミュニケーションをとることが重要です。
要件定義がきちんとできていれば、システム開発全体がスムーズに進み、システム開発の効果を大きくできます。そのためにはユーザーも積極的に要件定義に参加する必要があるでしょう。
サイバーウェーブの「VALUE KIT」は、必要な機能の部品を組み合わせてシステムを開発できます。具体的にシステムのパーツや全体像をイメージできるため、システム開発の専門家ではないユーザーでも、ベンダーとのコミュニケーションがとりやすい利点があります。また、カスタマイズ性や拡張性も十分で、運用しながらの細かな改善や機能追加も可能です。詳細にご興味がありましたら、お気軽にお問合せからご連絡ください。