本ページでは、基本設計と詳細設計の違いを実例を交えながら解説します。
基本設計は、現場によって「外部設計」、詳細設計は「内部設計」とも呼ばれますが、本ページでは「基本設計」「詳細設計」の用語で統一します。
基本的には、呼び方が変わるだけなので深く考えなくてOK。前提として基本設計と詳細設計の区別は「現場によって多種多様である」ことをご理解いただければと思います。
システムエンジニアやプログラマーなどシステム開発に携わる方であれば絶対に知っておきたい重要事項です。是非最後までご覧ください。
基本設計と詳細設計の違い
結論から言うと、基本設計は「要件定義の結果(WHAT)を「HOW」に落とし込む」作業、詳細設計は、「「HOW」をプログラマー向けに詳細化する」することを目的とします。
エンジニアになり立ての方がよく勘違いしがちなのがこちら。
これは深く考えれば、近からずも遠からずな解釈かもしれませんが、この曖昧な定義では基本設計の詳細設計の違いが明確にはなります。(どこまで基本設計?どこから詳細設計?)
基本設計・詳細設計にそれぞれの役割があるからこそ、両者が別物として存在するわけであり、それぞれの作業の目的は違うのです。
詳細設計に必要な情報、プログラミングに必要な情報とは何でしょうか?
参考:Vモデル(V字モデル)
Vモデルとは、システム開発プロジェクトにおける開発工程とテスト工程の対応関係を表した1つのモデルです。下記の図は、Vモデルを一般的なイメージで表したものです。
Vモデルでは、V字の左側に「開発ステップ」を。右側に「テスト(検証)ステップ」を並べて表現します。色別に区分した開発ステップが、それぞれのテストと対応します。
ここで、ポイントとなるのが「前の工程のOUTPUT」が「次の工程のINPUT」になるということです。すなわち、「要件定義」の結果を基に「基本設計」が行われ、「基本設計」の結果を基に「詳細設計」が行われ、「詳細設計」をもとに「プログラミング」が行われていきます。
このことから、基本設計は「詳細設計ができるように」、詳細設計は「プログラミングができるように」するためのものであるとも表現できます。
基本設計:「WHAT」から「HOW」を導く
基本設計は、要件定義の結果(WHAT)を「HOW」に落とし込むプロセスです。
要件定義の結果「社員全員の安否確認システム」を作ることになった、というような場合。基本設計では、その「安否確認システム」をシステム的にどう実現するか(HOW)を決定していきます。
冒頭で補足した通り、基本設計は「外部設計」とも呼びます。つまり、システムを外から見たときのふるまいを明らかにするのが基本設計のゴールです。
また、基本設計はエンドユーザにとっては「機能の説明書」のような役割を果たします。したがって、基本設計書はエンドユーザ向けの分かりやすい表現が求められます。
詳細設計:「HOW」をプログラマー向けに詳細化する
詳細設計では、基本設計で明確化された「HOW」をさらにプログラマー向けに詳細化します。
プログラマー自身が、基本設計をもとに詳細設計を作成しつつプログラミングすることも可能ではあります。一方で、大規模なシステム開発の場合1個の機能に対して複数のプログラマーが存在することもしばしば。
そのようなときに、プログラマーが指標とする設計書が「詳細設計書」なのです。