見出し画像

システム開発の要件定義と基本設計の流れ

自分の整理のためにまとめる。

システム開発を成功させるにはビジネス側(依頼側)とエンジニア側が、同じゴールを見ることが必要。Whyなぜやるのか、Whatなにをやるのか、Howどうやるのかを明確化することが大事。そのために必要なのが、要件定義と基本設計。

要件定義と基本設計の作成には以下のフェーズがある。

  1. 要望フェーズ

  2. 要求フェーズ

  3. 検討フェーズ

  4. 提案フェーズ

1.要望フェーズ(Needs Phase)

誰がやるか:ビジネス側(クライアント)
やること:システムに対する初期の要望やビジョンをまとめる。目的、現状の問題点、ゴール、現状とゴールのギャップ、期待される成果などを示す。

業務フロー

既存業務があれば業務フロー図も作成する。作り方は「アクティビティ図 業務フロー」で検索。

2.要求フェーズ(Requirements Phase)

誰がやるか:プロジェクトマネージャー、ビジネス側(クライアント)、エンジニア
やること:ビジネス側(クライアント)と話しながら、要望を具体的な要求事項に変換。機能要件、非機能要件、制約条件の特定。

機能一覧

すべてそうだけど、要求があって、検討があって、最終決定がある。だから機能一覧のシートにも、「要求フェーズ」「検討フェーズ」「最終決定」の列をつくっておいてブラッシュアップしていく前提で。
技術的実現可能性およびコストやスケジュール感を鑑みて、現実的なソリューションにしたり、フェーズに分けたりなどを検討する。

業務フロー

要望フェーズで作成した既存業務の業務フローが、本システムを導入することでどう変わるのかをまとめる。業務の変化を可視化することで、要件を明確化し、関係者との合意を形成できる。(要望フェーズでもやろうと思ったらできるかも)

クライアントワークの場合、このフェーズまでやってスケジュールとコストの見積りを出すことが多い所感。機能一覧だけで見積もりが難しければ機能設計やデータ設計もする時もあるのかも。
まぁこのフェーズで出す見積もりってほんと概算の概算だからズレることが多くなるのは必至。ここで概算だしておいて、提案フェーズで最終見積りし直すのが健全だとは思う。

3.検討フェーズ(Deliberation Phase)

誰がやるか:プロジェクトマネージャー、エンジニア
やること:要求を基にして、可能なソリューションの選択肢、技術的実現可能性の検討。
作るアウトプットは、画面遷移図、画面設計、機能設計、データ設計など。

画面設計

画面設計(UI/UX)を最初に考えておくと、ビジネス側の明確化できていなかったところや考慮漏れがクリアになる。作った後での修正が少なくなる。
作り方は、登場するオブジェクトとユーザーのタスクを洗い出す。
オブジェクト指向かタスク指向かを決めて、画面遷移図に洗い出したオブジェクトとタスクを当てはめてる。

機能設計

画面設計で作成した画面別の動的な箇所を洗い出す。と同時にどのようなテーブルが必要か(主にデータの取得)も洗い出す。
次に、ユーザー操作を洗い出す。ユーザー操作によるデータの取得元、保存先はどのテーブルか?
上記で洗い出した内容とテーブルの関係をシートに一覧化する。
必要な列は 「対象ページ」「処理内容」「トリガー」「必要なデータ/取得元」「データの渡し先」。

データ設計

機能設計で洗い出したテーブル構造の設計。ER図も作成する。
テーブルはマスタか、トランザクションかを大別する。

最後に、機能設計で作成した「ユーザー処理」、「裏側の処理」と、データ設計で作成した「テーブル」を画面遷移図に当てはめていくと、システムのデータの流れがよりわかりやすくなる。

4.提案フェーズ(Proposal Phase)

誰がやるか:プロジェクトマネージャー
やること:最終的なシステム設計案を提案。提案は、要求を満たすソリューションの詳細、スケジュール、コスト見積もりを含む。

ここまでやって精緻なスケジュールとコストの見積もりが出せる。

以上。

この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?