要件定義と基本設計はなにが違う?実施すべき内容と進め方のポイントを解説
初めて上流工程に挑戦する若手エンジニアに向けて、要件定義と基本設計の違い、それぞれの進め方のポイントを詳しく解説します。
初めて上流工程に挑戦する若手エンジニアに向けて、要件定義と基本設計の違い、それぞれの進め方のポイントを詳しく解説します。
知識・情報
2023/02/27 UP
- 技術
上流工程を任されたい…けれどどこから勉強すればいいのか分からないと悩みを持つ人は多いでしょう。基本設計と詳細設計の違いであればわかるとしても、要件定義となると、普段、詳細設計やプログラミングしか行っていないエンジニアには、何をしている部分なのかがわかりづらいかもしれません。
この記事では初めて上流工程に挑戦する若手エンジニアに向けて、要件定義と基本設計の違い、それぞれの進め方のポイントを詳しく解説します。
要件定義と基本設計について
要件定義はクライアントからの要求を元に実装する機能や性能を決めていきます。対して基本設計は実際にシステムを動かす部分の仕様を決定する工程です。各プロセスで実施すべき内容について、具体例を挙げながら詳しく解説します。
要件定義は実装機能の明確化
クライアントからの提示される要望・要求から、システムで実装すべき内容をドキュメント化する工程です。
例えば、以下のような流れで実施するのが一般的です。
1.クライアントから要求内容をヒアリングする
2.要求を噛み砕き、細分化することで実装すべき内容を洗い出す
3.必要な機能、性能などを書き起こす
4.クライアントとレビューを実施し、承認を得る
要件定義では必要に応じてクライアントと業務フローやシナリオ、ユースケース図などを作成します。
※ユースケース図の例
クライアントは全員がIT知識・スキルを有するわけではないので、これらはクライアントと開発者の共通理解を深めるための補助ツールです。システムでなにができるのかを視覚的に理解できるので、効率よく話し合いを進めることができます。
基本設計はシステム仕様の明確化
基本設計は開発すべきシステムを画面(UI)・出力ファイル、裏側の処理など機能単位で分割し、それぞれの機能がどのようなものか、なにをする機能なのか、機能同士はどう繋がるのか決める工程です。概要設計とよばれることもあります。
例えば、ある画面の設計をする場合は、以下のようなポイントを明らかにしていきます。
・この画面ではなにをするのか
・どのような情報を表示するするか(テキストや画像、ボタンなど)
・表示するデータはなにか
・各表示項目のレイアウト、サイズはどうするか
・画面はどのように遷移させるか
・入力後のチェックは必要か、どのようなチェックを入れるか
ただし、アジャイル開発などの開発プロセスを導入している場合はスピード感を重視するために、設計書を作らず「動くものを作りながら詳細を詰めていく」ケースもあります。あらかじめ現場の開発方針やルールを確認することも重要です。
一般的には以下のような成果物を作成します。
・機能一覧
・ネットワーク構成図
・テーブル定義
・ER図
・画面レイアウト
・帳票レイアウト
※ER図のサンプル
また、基本設計以降は詳細設計、製造、試験と開発工程が進みますが、基本設計での成果物をインプットとしてプロジェクトが進行します。一般的にクライアントとはシステムの完成イメージをすり合わせる最後のチャンスなので、お互いに納得の上で開発が進められるようにレビューを重ねることが重要です。
要件定義と基本設計の違い
特に小規模プロジェクトでは基本設計と要件定義はお互いの境界が不明瞭となることもあります。それぞれの工程を一緒くたに実施する場合でも、全く異なる実施内容・目的をもつ開発工程であり、不備なく作業を進めるには各工程を確実に実施することが不可欠です。
ここからは3つの観点に着目し、各工程の違いを解説します。
違い1:整理の対象
特にウォーターフォール型の開発プロジェクトでは、要件定義、基本設計、詳細設計と分割された工程を順番に実施していきます。各工程は前の工程の作業結果(アウトプット)を受けて開発を進める関係性にあるため、整理の対象は前工程の成果物です。工程を飛び越えた資料を扱ったり、全く別のところから参考資料を持ってきてはいけません。
要件定義の整理対象はクライアントからの要求事項です。要求事項一覧、システム企画書・提案書、既存の業務フローなどから整理を進めます。対して、基本設計は要件定義工程のアウトプット資料一式が整理対象です。要件定義書、業務・機能一覧、非機能要件一覧などが該当します。
違い2:目的
2つ目の違いは各工程の実施目的にあります。要件定義はクライアントからの要求を満たすためになにを作ればいいのか、どんな機能・画面、性能があれば良いのか(WHAT)を明確にするのが目的です。システムがどんな役割を果たせばいいのか、何を期待されているのかを、クライアントと十分に話し合い開発内容を合意します。
対して、基本設計は要件をシステム的に実現するために、どう実装したらいいのか(HOW)を深堀りするのが目的になります。どのようなふるまいが必要になるのか、画面にはどのような項目・チェックが必要かなど具体化していく作業です。
違い3:コミュニケーション
やり取りをする相手の違いも挙げられます。要件定義ではクライアントとのコミュニケーションが中心となります。開発メンバーと会話をすることもありますが、一部の有識者に限られます。基本的にはクライアントとのやり取りを通して作業を進めます。
対して基本設計ではクライアントとのコミュニケーションだけでなく、開発チームメンバーとの会話が必要です。設計以降は開発メンバーを増員することも多く、開発メンバーと打ち合わせを重ねながら作業を進めていきます。外部システムとのインターフェース連携があれば、外部システムの開発担当者とのコミュニケーションも発生します。
失敗しない要件定義・基本設計のコツ
要件定義や基本設計など上流工程での作業不備は工期の遅れや、開発コストの増大、運用後のシステムトラブルなど多くの課題・リスクを生み出します。課題の発覚が遅くなればなるほど、刈り取るためのリソース(ヒト・モノ・カネ)が大きくなるため、製造や試験など後続工程で問題を発生させないためにも着実に実施することが大切です。
ここからは、実際に作業を始める前に押さえておきたい進め方のコツやポイントを解説します。
要件定義のコツ
要件定義はクライアントと開発メンバーの間でいかに認識を一致させるかがポイントになります。クライアントの意図を的確に汲み取り、自分の考えを伝えるためにはテキストや口頭だけでは不十分です。特に入力画面や出力画面など、文章化しづらい部分は図解表現を使いながら整理するとイメージしやすくなります。
また、5W2Hが明確になるようにして整理を進めるのもポイントです。
5W2H | 内容 |
---|---|
What | なにを実現したいのか |
Why | なぜシステム化が必要なのか、背景・目的はなにか |
Where | どこまで開発が必要か、開発範囲・スコープはどこか |
Who | システムは誰が利用するのか |
How | どのように実現するのか |
When | システム化の期限やスケジュール感はあるか |
How Much | どのくらいの予算が必要になるのか、投資予算はどれくらいか |
要件定義での不備(抜け、モレ、あいまいなど)を無くし成果物の品質を上げることができるので、特に若手エンジニアの方は意識して実践するようにしましょう。
基本設計のコツ
一般的には要件定義を少人数のメンバーでこなし、設計工程から一気に要員数を増やして開発を進めます。そのため、途中で増員されたメンバーとの間で情報格差・ズレを生まないようにすることが大切です。全てのメンバーが共通理解をもって作業にあたれるよう、結論に至った経緯を含めて前工程の内容を丁寧に落とし込むことが重要です。
また、全体像を意識することも大切です。担当する一部の機能・画面だけに注目するのではなく隣接する機能間の繋がりや使い勝手に違和感がないかなど視野を広げて検討します。
最後に、一通り設計工程が完了したら利用者の立場で作業内容を見返してみてみましょう。使いにくいところはないか、こういう機能・画面にしたら業務がしやすいのでは?と問題点・改善点がないか再点検することも大切です。クライアントも含めてウォークスルー型式でレビューを実施すると、矛盾点を見つけやすくなります。
要件定義と設計の違いを理解してプロジェクトを進めよう
若手ITエンジニアの一般的なキャリアパスとして下流工程から上流工程にステップアップするため、最初は戸惑いも多くハードルが高いと感じる方も多いでしょう。しかし、どちらも開発工程において要となるプロセスです。
本稿を参考に要件定義と基本設計の違いを理解し、エンジニアとしてのキャリアパスに役立てていただけると幸いです。