システム開発の契約書はここに注意!
これまで要件定義については何回かに渡って解説してきましたが、さらに踏み込んで、要件定義実践編として実際の要件定義に基づくリアルな内容をお伝えいたします。
今回は、要件定義における機能要件について解説します。
システム開発の要件定義における機能要件とはどんなもので、どのように定義するかご存知ですか?要件定義はシステム開発の基礎となる重要な工程です。その要件定義において、機能要件を明確に定義することでシステムの仕様、また開発の方向性が明確になります。
この投稿では、機能要件と非機能要件の基本概念、機能要件の定義方法、具体的な例として会員登録機能の要件を解説しています。実際の要件定義で機能要件を定義する際に、そのまま使えるレベルで説明しています。
- 要件定義を控えている
- 機能要件について知りたい
そんな方はぜひ最後までご覧ください。
※このコラムの内容は動画で公開しています。Youtube版はこちらをご覧ください。
なお、要件定義の概要については過去の投稿で解説しています。こちらも是非ご覧ください。
(→ 新規事業向けシステム開発要件定義の極意)
1.要件定義における機能要件と非機能要件とは
要件定義では、機能要件と非機能要件を定義します。
機能要件は、システムが何を行うかを定義するものです。システムやアプリの一つ一つの画面をイメージするといいでしょう。その画面を通じて、システムが提供する具体的なサービス・データの処理方法などが含まれます。たとえば、ユーザーがアカウントを作成するための機能や、商品の在庫を管理する機能などが機能要件に該当します。
ちなみに、あえて分かりやすくするため画面と述べましたが、機能には必ずしも画面があるわけではありません。画面がない機能も存在します。また、帳票もひとつの機能として考えます。
一方、非機能要件は、機能以外のシステムに対する要件を定義するものです。これはシステムの性能や信頼性・セキュリティ・使いやすさなど、機能要件を実現するための品質基準のようなものを示します。例えば、システムの応答速度やデータ保護のレベル、システムの可用性などが非機能要件に含まれます。
2.機能要件を会員登録を例に具体的に説明
さて、機能要件を具体的に行うとどうなるのでしょう?機能要件で記載する内容は次の通りです。
①機能概要:この機能はユーザーにとって、どのような役割を果たすのかを説明します。
②画面:入力・表示する項目の属性、エラーチェック
帳表:出力条件、印字する項目の属性
バッチ:動作タイミング、計算ロジック
などを記載します。
③補足事項:動作に対する条件等、補足事項を記載します。
では、誰もが一度は経験したことがあると思われる会員登録機能を例に具体的に説明します。
①機能概要
ユーザーは本機能にて氏名、メールアドレス、パスワードなどの基本属性を登録する。
登録時、利用規約とプライバシーポリシーへ同意されており、メールアドレスは有効性が確保されていること。
②会員登録で登録する情報は次の通りとする。
氏名 |
メールアドレス |
パスワード |
生年月日 |
電話番号 |
住所 |
性別 |
このサイトをどこで知りましたか |
この項目に対して必ず登録すべき項目か、そうでないかを定義します。さらに項目別の説明を追加します。
氏名(必須)・・・姓と名に分ける |
メールアドレス(必須)・・・有効な形式であること |
パスワード(必須)・・・8文字以上、英数字と特殊文字を含むこと |
生年月日(必須)・・・登録時点で18歳以上であること |
電話番号(必須)・・・ハイフンを含めずに入力する |
住所(必須)・・・郵便番号、都道府県、市区町村、番地、建物名に分けること |
性別(必須)・・・男、女、回答しない の3つから選択する |
このサイトをどこで知りましたか(任意)・・・以下の例を記載しておく。検索エンジン、ポスター、チラシ、親からの紹介、友人・知人からの紹介、その他 |
ここでひとつ補足します。機能概要にて「登録時、利用規約とプライバシーポリシーへ同意されており、メールアドレスは有効性が確保されていること。」と記載しました。
メールアドレスの有効性確認は、WEBサイトなどのユーザー登録・会員登録でよく見るユーザーインタフェースですが、この要件に対する実装方法は複数あり、次のような方法が考えられます。
- 最初にメールアドレスのみを入力して、メールを送信。送信されたメールをクリックして、それ以外の項目を入力する
- 全ての項目を登録して、最後に確認メールを送信し、メールに書かれているURLをクリックして登録を確定する
- 全ての項目を登録して、確認コードをメールで送信。確認コードを入力し、正しいコードが入力されたら登録が完了
このいずれかを指定すれば具体度が増しますが、知識として持っておいて開発者と相談して決めるのでもいいでしょう。
また利用規約とプライバシーポリシーへの同意は、登録完了ボタンの前にチェックボックスがあり、「同意する」にチェックしないと登録を完了できないというものです。これもまた、会員登録ではお決まりのものです。
言い換えると、お決まりのものですから、わざわざ定義せずとも開発者も言わずもがなで理解しているはずと考えたいところです。しかし、記載がないと揉める可能性はゼロではありませんので、ほんの一行定義しておいて損することはありません。
最終的にまとめるとこうなります。
なお会員登録であっても、サービスの内容によっても登録すべき項目は変わりますので、ご自身のサービスに合わせて内容を調整してください。
3.機能要件で定義する範囲
要件定義で定義する内容については、明確な決まりがあるわけではありません。開発ベンダーによっては、要件定義段階で上記の内容まで求められておらず、機能概要程度で終えることもあります。各項目の定義については設計フェーズで行うというところもあるでしょう。発注者のリテラシーに依存するところでもあります。
しかし、間違いなく言えることは要件定義で詳細に定義してあればあるほど、見積もりのブレと開発リスクは低くすることができます。
仮に前述の画面項目までを要件定義で定義しなくとも、明確にしなければ開発できないのですから、必ずいつか定義することになるのです。詳細な準備は発注者にとってメリットはありますが、一方で時間が必要となるというデメリットはあるので、そこは費用対効果を鑑みて決めてもいいでしょう。
まとめ
今回は「要件定義実践編」として、機能要件と非機能要件の基本概念、機能要件の定義方法、そして具体的な例として会員登録機能の要件を解説しました。
要件定義はシステム開発の基礎となる重要な工程であり、これがしっかりとできていないと、プロジェクト全体がうまく進まない可能性が高まります。
機能要件を明確に定義することで、システムの仕様がブレることなく、開発の方向性が明確になります。また、ユーザーの期待に応えるシステムを提供するためには、非機能要件も同様に重要ですので、こちらもまた改めて解説します。
今後システム開発を進める際には、本投稿にあるポイントを参考にして、しっかりと要件定義を行ってください。そしてシステム開発プロジェクトを成功に導いてください。