外部設計とは?
まず、システム設計においては要件定義を行います。要件定義とは、クライアントの要望を聞き取り、必要な機能や実現したい業務フローなどを要件定義書にまとめることです。外部設計では、この要件定義書をもとに操作画面や操作方法などのインタフェースを設計します。外部設計は基本設計や概要設計といわれる場合もあります。ユーザーが直接関わる部分の設計であるため、ユーザビリティを優先しなければなりません。
システムの方式や機能を決定する
具体的には、外部設計書、画面・帳票・インターフェースなどの各種仕様書を作成して、システムの方式や機能を決定していきます。作業を大きく分類すると「方式設計」「機能設計」「それ以外の設計」の3項目です。
まず方式設計では、システムの全体像、ハードウェアやソフトウェアの実装方針、プラットフォームなど実行環境を決定します。アーキテクチャ設計とも呼ばれるのはそのためで、どのようなプログラミング言語を使って開発するかなどの方針もここで決めます。
次に機能設計では、システムを機能によって分け、それぞれのモジュールで利用するデータベースの設計などを行います。システム内で行われるデータ処理の仕様を決定し、画面のレイアウトや操作感などユーザーインタフェースを設計するのもこのフェーズです。
最後に、それ以外の設計では、方式設計と機能設計で立てた計画を達成するための業務方針を決定します。具体的には、納期・運用ルール・開発費用の設定などです。またセキュリティ設計も必要です。
内部設計とは?
外部設計で決めた仕様を実現するために、内部設計ではユーザーから見えない内部機能を設計していきます。簡単にいうと、「プログラミングなど具体的な実装を行える状態にもっていくこと」です。データ処理や初期値の定義など、システム内部における重要な機能を決めます。なお、内部設計の後工程に詳細設計がありますが、同じ括りになるケースもあります。
システム内部の機能やデータの詳細を決定する
機能仕様書やデータフロー図、データベース物理設計書などを作成して、システム内部の機能やデータの詳細を決定します。内部設計は「機能分割」「物理データ設計」「入出力の詳細設計」の3つのフェーズに分けて考えるのが一般的です。
機能分割ではシステムをいくつかの機能に分け、それぞれのモジュールで実装する内容や、機能間でのデータ処理のフローを設計します。データの流れを明確にすると、バグを避けるとともに効率的な実装プランを立てられるでしょう。この段階のポイントは、プログラミングやメンテナンスがしやすくなるように設計することです。
物理データ設計では、システム内部におけるファイルやデータ処理の部分を設計します。データの流れをイメージしながら行うのがポイントといえるでしょう。
入出力の詳細設計では、外部設計で具体化したインターフェース部分の詳細な設計を行います。具体的には、初期値の定義や表示メッセージ、入力データのチェック方法、エラー処理などです。
外部設計と内部設計の違いは?
外部設計と内部設計の決定的な違いは、誰のニーズを解決するかです。以下で、詳しい内容を見ていきましょう。
外部設計はクライアントの意見を重視して作成される
外部設計では、ユーザーが直接触れる部分を設計します。そのため、ユーザーの使いやすさを重視し、クライアントの意見をもとに作成されるのが特徴です。見やすい画面レイアウトなどを考え、顧客のチェックを受けながら進めていくのが基本です。クライアントの要望を実現するにあたって、ハードウェアの構成やスケジュール・コストの管理も行います。
内部設計は開発メンバーの意見を重視して作成される
内部設計では、ユーザーの目に触れない部分を設計します。システム内部のデータ処理や、プログラミングをするための内部構造などを決定するので、開発メンバーの意見が取り入れられます。外部設計で決めた仕様を実装できていれば、システム内部の仕様に関してクライアントからチェックを受けることはほとんどありません。
外部設計と内部設計の違いを押さえて適切に開発しよう
外部設計では、要件定義で決めたシステムの概要や機能をもとに、画面レイアウトなどのインターフェースを設計します。ユーザーにとって、いかに使いやすいかが重視されます。
内部設計は、外部設計を実現するための詳細を設計します。ユーザーの目には触れないため、開発メンバーにとってわかりやすいことが重要です。それぞれの特徴と違いを理解して、システム開発を行いましょう。
なお、開発効率を上げるために開発ツールの導入を検討するのもおすすめです。開発基盤や、複数のプログラム間でデータのやり取りをするAPI、単体テストや結合テストを行うツールなどが提供されています。以下のページから人気の製品を確認できるので、ぜひご覧ください。