「システム開発の要件定義がよくわからない」
「重要な工程だとは理解しているが、どのように進めていいのかわからない」
「そもそも何のために実施するのか」
こういった疑問や悩みをお持ちの方に向けて、システム開発の要件定義をわかりやすく解説します。
システム開発全体における要件定義の位置づけ、重要なプロセスである理由、具体的な費用の算出方法もご紹介します。
要件定義の進め方や押さえるべきポイントを理解していただけます。要件定義を基本から学びたい方は、ぜひ参考にしてみてください。
島添 彰
合同会社Solashi Japan 代表取締役。サントリーにて社内向けシステムの開発・運用に携わる。Yper株式会社を創業し、CTO・CPOとしてプロダクトの立ち上げ・グロースに従事。
システム開発の要件定義とは
要件定義とは、開発するシステムに必要となる機能や性能、セキュリティ要件を洗い出し、実装する内容を決めることです。
システム開発の初期段階でおこなわれ、期待する成果物を得るために不可欠なステップです。
まずは要件定義の基本を理解するために、以下のポイントを見てみましょう。
- 要件定義の位置づけ
- 要件定義の内容
- 要件定義書は誰が作る?
要件定義の位置づけ
以下は、システム開発を外注する際の、全体像をフロー別にまとめた表です。
開発工程 | 概要 | 主体 |
1. 企画 | 開発目的とシステムの内容を企画する | 発注会社 |
2. 要求定義 | システム利用者の要求を収集して整理する | 発注会社 |
3. 要件定義 | 要求を実現するための要件を洗い出し、要件定義書を作成する | 発注会社 (開発会社へ依頼可能) |
4. 設計 | 要件定義をもとに、システムを設計する | 開発会社 |
5. 製造 | システムを製造する | 開発会社 |
6. テスト | テストを実施し、品質に問題ないかチェックする | 発注会社・開発会社 |
7. 運用・保守 | リリース後、運用・保守に移行する | 発注会社または開発会社 |
要件定義は、企画と要求定義の内容を踏まえておこないます。
システム開発の初期段階で実施するため、後戻りのきかないウォーターフォール開発では後工程に大きな影響を与えます。
開発中の混乱やトラブルを避けるためにも、正確な要件定義書の作成が重要です。
要件定義の内容
要件定義で定める内容は、業務視点とシステム・ソフトウェア視点に大きく分けられます。
- 業務視点…解決すべき課題や開発目的、これらに対応した業務要件の定義
- システム・ソフトウェア視点…業務要件を実現するシステムの全体構成、機能/非機能要件の定義
業務要件や機能/非機能要件は、後ほど説明します。
要件定義では、上記に加えて組織体制や予算、スケジュールなども決定します。最終的に、これらをまとめた要件定義書を作成します。
要件定義書は誰が作る?
要件定義書は、基本的に発注会社が作成します。要件定義書があれば、システム開発会社への依頼をスムーズに進められます。
しかし、要件定義書を作成するノウハウやスキルが自社にないこともあるでしょう。そういった場合には、開発会社に委託することも可能です。
ただし、開発会社に任せるとしても、自社で可能なところまでは作成するようにし、できるだけ要望を反映させましょう。
後々のトラブルを避けるためにも、開発会社に業務を丸投げしないことが重要です。
システム開発の要件定義と要求定義の違い
要件定義も要求定義も、開発初期におこなわれる重要な工程であることに変わりはありません。しかし、両者には明確な違いがあります。
先述の通り、要件定義はシステムを作り動かすために必要なものを洗い出すプロセスです。一方、要求定義はシステムに求めるものを洗い出すプロセスを指します。
順序としては、まず要求定義でユーザーや関係者からの要望を収集し、整理します。その後、要件定義で要求達成に必要となる機能や性能、操作性、品質などを定義します。
要件定義が重要な理由
要件定義は、システム開発の工程の中でも特に重要であるとされています。その理由は以下の通りです。
- 契約の枠組みとなるため
- プロジェクト全体で共通認識を得られるため
それぞれ解説します。
契約の枠組みとなるため
システム開発会社との契約では、要件定義で作成した要件定義書をもとに契約内容が固められます。
契約に反映される具体的な項目としては、開発対象の範囲、機能、品質などです。また、開発に必要な工期も、要件定義の内容をもとに見積もります。
このステップにより、発注会社と開発会社の合意形成がおこなわれ、システム開発を進める際の重要な役割を果たします。
要件定義は契約の枠組みとなり、プロジェクトの成否に直結する重要なステップです。
プロジェクト全体で共通認識を得られるため
プロジェクト全体で共通認識を得られることも、要件定義が重要な理由の一つです。
システムは、形のある商品とは異なり無形サービスです。何もない状態では発注会社のアイデアや要求が開発会社に伝わりません。
そこで、要件定義によりシステム開発の基盤を作ることで、求めるシステムの構想をプロジェクト関係者全員と共有します。
また、要件定義書として文書化することで、発注会社と開発会社間での齟齬をなくし、必要な情報を適切に共有できます。
要件定義を依頼する場合にかかる費用
要件定義を依頼する場合にかかる費用は、一般的に以下の計算式で算出されます。
要件定義費用 = 人件費(人月/人日単価) × 作業に要する月数/日数 |
実際には事前に予定していた作業日数と前後する可能性があります。そのため、作業前に明確な費用を算出するのは難しく、大まかな想定のみに留まることが多いでしょう。
アサインする技術者のレベルが高いほど人件費の単価は上がり、システムの仕様が複雑なほど作業日数が増えます。かかる費用も、その分高くなります。
システム開発の要件定義の進め方
システム開発の要件定義の進め方を解説します。全体の流れを把握して、適切な方法で要件定義を進めましょう。
解決すべき課題と開発目的を明確にする
まずは、システム開発で解決すべき課題と開発目的を明確にしましょう。
開発するシステムを何のために作るのか、どのような課題解決のために開発するのかを明確化します。
あわせて、プロジェクトが目指すべき方向性を関係者に共有します。これにより、開発途中で本来の目的から大きく外れることを防ぎます。
また、開発方法によっては途中で内容を調整したり、変更したりする場合もあります。そういったケースでも、事前に共有された目標が、意思決定や合意形成に役立ちます。
業務要件を定義する
業務要件とは、システム化する業務の流れを明確化したものです。
業務の詳細な手順やルール、担当者、タスク、データ管理を整理し、システム化する範囲と業務全体のフローを明らかにします。
業務要件の定義により、システムが実際の業務に対してどのように貢献するのかを具現化できます。
システム全体の構成を作成する
システム化の範囲が決まれば、システム全体の構成を作成します。
後続の機能/非機能要件定義を進めることで、より正確で無駄のない全体像を描けます。システム構成要素を洗い出し、役割や関係性を詰めておきましょう。
システムを構成する要素は、以下の4種類に大きく分けられます。
- ハードウェア…コンピューター、サーバー、プリンターなど
- ソフトウェア…OS、アプリケーション、プログラミング言語など
- ネットワーク…インターネット、LAN、WANなど
- データ…プログラム、設定ファイルなど
システム構成要素が漏れていると、要件外の見積もりとして計上されるため注意が必要です。特にハードウェアに不足があると、大きな出費となる可能性もあります。
すべての構成要素が網羅されているか十分に確認して、要件定義漏れを防ぎましょう。
機能要件を定義する
業務要件をもとに、機能要件を定義します。機能要件とは、開発するシステムで、必ず搭載すべき最低限の機能を定めたものです。
具体的な内容は下記のようなものが挙げられます。
- システムの処理内容
- データの種類
要件を定めた上で、実現性の低い内容や、ビジネス上のインパクトに乏しい内容が含まれていないか確認しましょう。
改善点が見つかった場合は、よりよいシステムを開発するため調整をおこないます。自社での解決が難しければ、開発会社に相談することで代替案を出してもらえるかもしれません。
非機能要件を定義する
続いて、非機能要件を定義します。非機能要件とは、機能要件で定めた事柄以外を定めたものです。
具体的には、ユーザビリティ、拡張性、セキュリティ、性能など、さまざまな項目が含まれます。
副次的な項目も多く含まれるため、考え得るすべての非機能要件を盛り込むと、予算をオーバーする恐れがあります。
非機能要件は、どこまでを含むのか適切に判断することが重要です。
組織体制を決める
システム全体の構成、および機能要件と非機能要件をもとに、組織体制を決定します。
これらのシステム要件からは、開発に要する概ねの労働量・技術力を予測できます。プロジェクトメンバーを何名アサインするか、どのレベルの技術者が担当するかの内容も、要件定義の段階で詰めておきましょう。
また、誰が窓口になるのか、どういったコミュニケーション方法をとるかなども決定しておくと、後工程がスムーズに進められます。
予算とスケジュールを作成する
ここまでのステップを踏むことで、予算とスケジュールの見積もりに必要な項目が揃います。
まずはシステム要件と組織体制をもとに、必要な作業工数とスケジュールを算出します。その上で、調達するハードウェアの費用や開発にかかる人件費を算出し、予算を設定します。
スケジュールは、この段階では大枠を定めたラフ案の作成程度で問題ないでしょう。要件定義が完了した段階で、見積もりとあわせて詳細を詰めていきます。
要件定義書を作成する
最後に、各ステップで定めた要件を一覧化した「要件定義書」を作成します。要件定義書は、誰が読んでもシステム開発の概要がわかる状態になっていることが理想です。
1〜7の項目をそれぞれ設定したあと、各項目を深掘りした内容を記載して、1つのデータや冊子にまとめます。
要件定義書の品質は、プロジェクトの成否を大きく左右する可能性があります。できる限り正確な内容で作成することを心がけましょう。
要件定義を進める3つのポイント
最後に、要件定義を進める3つのポイントをご紹介します。いずれもシステム開発をスムーズに進めるための重要事項であり、要件定義の段階で押さえておくべき内容です。
- 役割分担を明確にする
- 曖昧な定義を避ける
- 余裕のあるスケジュールで進める
それぞれを詳しく解説していきます。
役割分担を明確にする
要件定義では、発注会社と開発会社が役割を決め、協力しながら進める必要があります。
自社で要件定義をおこなう場合、具体的な組織体制やスケジュール、予算などは開発会社と擦り合わせをしましょう。
システム開発会社へ要件定義を依頼する場合も、課題と開発目的の部分は自社で固めます。また、業務要件は、自社のユーザーから意見を収集しなければなりません。
発注会社と開発会社がそれぞれの役割を適切にこなせるよう、おこなうべきタスクや担当者を明確化しておきましょう。
曖昧な定義を避ける
曖昧な定義は、開発中のトラブルにつながります。
要件定義は、設計・製造工程に移行する前に発注会社が直接関われる重要なプロセスです。自社の意向を漏れなく反映させるようにしましょう。
定義が曖昧なまま開発がスタートすると、優秀な技術者をアサインしても、期待する成果や納品物を得られない可能性があります。また、開発途中にプロジェクトのゴールや方針がぶれる恐れもあります。
こういった事態を避けるために、曖昧な項目があればしっかりすり合わせをおこなうことが大切です。
余裕のあるスケジュールで進める
要件定義で定めるスケジュールには、余裕を持たせることが重要です。リリースを急ぐあまり現実的ではない納期で開発を進めても、かえって納期遅延やトラブルが発生しやすくなります。
予定通りに進めるために、必要な工数を確認しながら適切な日数を確保しましょう。
また、開発後もこまめに進捗状況を確認して、必要に応じてスケジュールを更新したり、調整したりすることが大切です。
システム開発の要件定義はSolashiまで
本記事では、システム開発の要件定義をテーマに解説しました。要件定義の進め方をまとめると、以下の通りです。
1. 解決すべき課題と開発目的を明確にする 2. 業務要件を定義する 3. システム全体の構成を作成する 4. 機能要件を定義する 5. 非機能要件を定義する 6. 組織体制を決める 7. 予算とスケジュールを作成する 8. 要件定義書を作成する |
この流れに沿って要件定義をおこないますが、自社に要件定義のノウハウがない場合は外注する必要があります。
要件定義は開発初期段階での重要なプロセスであるため、適切な開発会社へ依頼することが重要です。
失敗しない要件定義なら「Solashi Co., Ltd」にお任せください。コストを抑えながら、高品質なクオリティのシステム開発が可能です。
弊社には、事業立ち上げやスタートアップ案件を担った経験のある日本人PMが複数名在籍しています。初めて海外へシステム開発を外注する場合も、安心してご依頼いただけます。
ブロックチェーンやAI等の先端技術に精通したエンジニアも多く、BtoBからBtoCまで、さまざまな分野に対応可能です。ご興味のある方は、お気軽に「Solashi Co., Ltd」までご相談ください。
島添 彰
合同会社Solashi Japan代表。1989年4月生まれ、福岡県出身。大阪府立大学大学院情報数理科学専攻修了。2014年サントリーホールディングスのIT機能をもつ「サントリーシステムテクノロジー株式会社」に入社。自動販売機の配送管理や効率化、販売管理システムの開発から運用、導入まで広く担当する。2017年にYper株式会社を創業、同社のCTO・CPOに就任。アプリ連動型の置き配バッグ「OKIPPA(オキッパ)」の立ち上げ・プロダクトのグロースに携わる。東洋経済社の名物企画「すごいベンチャー100」、Forbes誌による「Forbes 30 Under 30 Asia 2019」に選出される。