こんにちは!
最近、課題解決の業務を行うことが多く、その際に設計等を見直すことが多々あるのですが、私自身設計に詳しくなく結構苦労しています。
なので、学ぼうと思います。まずは「要件定義設計」です。
下記の本を参考にしました。
要件定義とは
要件とは、作ってほしい人が作る人の間の合意事項のことです。
この依頼が漠然としたものだと双方困ってしまいます。これを明確に定めた形にすることを要件定義といいます。
まとめると、依頼した人が出来上がったものに対して、OKをいうために何がどうなればいいのかを明確に定めたもののことです。
要件定義の基本的な流れ
1. 要望
要望は、クライアントやステークホルダーからの初期の希望やアイデアです。この段階では、技術的な制約を考えずに、望むことを自由に出してもらいます。例えば、「アプリの使い勝手を改善してほしい」や「月次売上データをグラフで出力したい」といった内容です。
2. 要求
要求は、要望を取捨選択し、整理、構造化したものです。具体的には、「ユーザーが少ないクリックで購入できるようにしたい」といった内容になります。この段階で、要望を実現するための具体的な手段が検討されます。
3. 検討
検討では、要求をさらに詳細に分析し、実現可能性や費用対効果を評価します。例えば、グラフを画面に出力することが本当に必要か、他の手段(例えばCSV出力)で代替できないかを考えます。この段階で、技術的な制約やリスクも考慮します。
4. 提案
提案は、検討結果を基に、最適な解決策をクライアントやステークホルダーに提示する段階です。例えば、「月次売上をCSVで出力し、Excelでグラフを作成する」という具体的な方法を提案します。
5. 合意
合意は、提案内容に対してクライアントやステークホルダー全員が同意する段階です。ここで、最終的な要件が確定されます。例えば、「月次売上をCSVで出力する機能を開発する」という具体的な要件が合意されます。
定義すべき要件の内訳
要件とは、ゴールから逆算して考えることが大切です。
つまり、プログラマーがソフトウェアを完成させるために必要な情報を定義する必要があるのです。
基本的には下記のようなものが挙げられます。
・UI
・機能
・データ
要件定義の準備段階
1. 企画を確認する
まずは、プロジェクトの企画を確認します。これは、プロジェクトの目的や目標、期待される成果物を明確にする段階です。例えば、新しいアプリを開発する場合、そのアプリが解決する問題やターゲットユーザーを理解することが重要です。
2. 全体像を描く
次に、プロジェクトの全体像を描きます。これは、プロジェクトの範囲や主要な機能、ステークホルダーを把握することを意味します。例えば、アプリの主要な機能(ユーザー登録、商品検索、購入機能など)をリストアップし、それぞれの機能がどのように連携するかを考えます。
3. 大まかに区分けする
プロジェクトの全体像が見えたら、それを大まかに区分けします。これは、プロジェクトをいくつかの主要なフェーズやモジュールに分割することです。例えば、ユーザーインターフェース、バックエンド、データベースなどの主要な部分に分け、それぞれの部分で必要な作業をリストアップします。
4. 実装技術を決める
次に、各部分を実現するための実装技術を決定します。これは、使用するプログラミング言語、フレームワーク、ツールなどを選定する段階です。例えば、フロントエンドにはReact、バックエンドにはNode.js、データベースにはMongoDBを使用する、といった具体的な技術選定を行います。
5. 実装したいことを整理整頓する
最後に、実装したいことを整理整頓します。これは、各機能やモジュールの詳細な要件をリストアップし、優先順位をつけることです。例えば、ユーザー登録機能は最初に実装し、その後に商品検索機能を追加する、といった具体的な実装順序を決定します。
要件定義の助走段階
1. 利用者の行動シナリオを描く
利用者の行動シナリオは、ユーザーがシステムやサービスをどのように利用するかを具体的に描いたものです。これにより、ユーザーの視点からシステムの使い勝手や必要な機能を明確にすることができます。
ペルソナの作成
まず、典型的なユーザー像(ペルソナ)を設定します。例えば、年齢、職業、趣味などを具体的に描きます。
シナリオの作成
ペルソナがシステムを利用する具体的なシナリオを描きます。例えば、「ユーザーがログインして商品を検索し、購入するまでの流れ」を詳細に記述します。
シナリオの検証
実際のユーザー行動と照らし合わせて、シナリオが現実的かどうかを確認します。
2. 概念データモデルを作る
概念データモデルは、システムで扱うデータの構造を高レベルで表現したものです。これにより、データの関係性や重要なデータ項目を明確にすることができます。
主要なエンティティの特定
システムで扱う主要なデータ項目(エンティティ)を特定します。例えば、「ユーザー」、「商品」、「注文」などです。
エンティティ間の関係を定義
各エンティティ間の関係性を定義します。例えば、「ユーザーは複数の注文を持つ」や「注文は複数の商品を含む」といった関係です。
要件定義の離陸段階
1. UIを考える
UI(ユーザーインターフェース)は、ユーザーがシステムと直接やり取りする部分です。使いやすく、直感的なデザインが求められます。
ワイヤーフレームの作成
画面のレイアウトを簡単に描いたワイヤーフレームを作成します。これにより、各画面の構成や要素の配置を視覚的に確認できます。
ユーザビリティテスト
ワイヤーフレームを基に、ユーザビリティテストを行い、ユーザーがどのように画面を操作するかを確認します。フィードバックを基に改善を行います。
デザインの詳細化
ワイヤーフレームを基に、色やフォント、アイコンなどのデザイン要素を追加し、詳細なUIデザインを作成します。
2. 機能について考える
機能は、システムが提供する具体的な動作やサービスです。ユーザーのニーズに応じた機能を考えることが重要です。
機能リストの作成
必要な機能をリストアップします。例えば、ユーザー登録、ログイン、商品検索、購入などです。
優先順位の設定
各機能の重要度や実装の難易度を考慮し、優先順位を設定します。最も重要な機能から順に実装していきます。
詳細な仕様の作成
各機能の詳細な仕様を作成します。例えば、ユーザー登録機能では、入力項目やバリデーションルールを明確にします。
3. データについて考える
データは、システムが扱う情報のことです。データの構造や保存方法を考えることが重要です。
データモデルの作成
システムで扱うデータの構造を定義します。例えば、ユーザー、商品、注文などのエンティティとその関係性を図示します。
データベース設計
データモデルを基に、データベースの設計を行います。テーブルの構造やインデックスの設定などを行います。
データのセキュリティ
データの保存や通信におけるセキュリティ対策を考えます。例えば、パスワードのハッシュ化やSSL/TLSの使用などです。
4. 要件定義の仕上げ
要件定義の仕上げは、これまでに検討した内容を最終的にまとめる段階です。
ドキュメントの作成
要件定義書を作成し、全ての要件を文書化します。これには、機能要件、非機能要件、データモデル、UIデザインなどが含まれます。
レビューとフィードバック
要件定義書を関係者にレビューしてもらい、フィードバックを受け取ります。必要に応じて修正を行います。
最終合意
全ての関係者が要件定義書に同意し、最終的な合意を得ます。これにより、プロジェクトの進行が正式にスタートします。
ここまでです。
あくまで私が本を読んでのまとめとなりますので、他の読者と少し解釈が違うかもしれませんがそこはご容赦ください。間違っている場合は教えてください
読んでいただきありがとうございます。