背景
昨年から会社でWeb開発の手法を学んできましたが、開発技術面がある程度理解できてきたので、設計面での勉強を開始しました(開始させられました)。
Udemy「【入門】システム要件定義と基本設計」を視聴して、理解したことをアウトプットしていこうと思います。
Udemyの講義はこちら
https://www.udemy.com/course/digisaku_requirements_definition_and_system_design/
要件定義・基本設計の必要性
- 上流工程の目的
システム開発の上流工程である要件定義や基本設計は、ユーザー・PM・SE・PGが目的を共通認識とすることが目的です。 - 要件定義のゴール
要件定義は、ビジネス側がエンジニア側に「どんなシステムを作りたいか」を伝えることで、何を解決したいのか、だれがいつ何のためにシステムを使うのかを明確にすることが重要です。
要件定義はビジネス側が何をしたいかを伝えるものなのでエンジニア側への丸投げはNGです。
また、要望をすべてそのまま伝えるのではなく本当に必要な要望をまとめたり矛盾を解消してから伝えるのもPMの役割になります。 - 基本設計のゴール
一方基本設計では要件定義とは反対に、「どんなシステムを作るか」をエンジニア側がビジネス側に伝えます。
画面遷移図などが含まれます。
失敗
要件定義や基本設計の失敗は関係者同士の目的意識のずれが原因であることが多く、エンジニア側とビジネス側で「良いシステム」の基準が違うことが原因です。
エンジニア側「メンテナンス性」や「バグの少なさ」を求めるのに対し、ビジネス側は「ちゃんと使えること」「使いやすさ」を求めてきます。
お互いが求めることが違うと理解して設計を行いましょう。
失敗を避けるためにビジネス側は要件もれが無いように基本設計を確認し、エンジニア側は要件以外にも目を向け、画面や機能をビジネス側に確認してもらうことが重要です。
この時点でずれに気づくことができなかった場合、後半の工程に膨大なコストをかけることになります。
そのため、要件定義や基本設計段階でのミスを防ぐことが大切です。
上流工程に必要なこと
上流工程に必要なのは、ビズネス側とエンジニア側の共通目的を形成することです。
共通目的は、Why、What、Howの2W1Hで表すことができます。
ビジネス側が洗い出す困っている点、目指すゴール、現状とゴールのギャップがWhyに、
業務フロー、機能、システムの使用感がWhatに、
画面設計、機能設計、データ設計がHowになります。
さいごに
要件定義や基本設計を良いものにするには結局関係者同士のコミュニケーションが最重要です。
関係者同士が共通認識を持ち共通目的を形成することで、システム開発を成功に導けます。