システム設計の流れ
システム開発においては、プロジェクトを円滑に進めるために仕様書を作る機会が多くあります。
仕様書の書き方にはさまざまな方式がありますが、システム設計にはセオリーがあります。
まとめましたので参考にしてください。
システム設計 は、「要件定義」→「外部設計」→「内部設計」の順で行います。
一般的には、「外部設計」までが上流工程に含まれます。
「 要件定義」というのは、開発するシステムに必要な要件をまとめることです。
クライアントからの要望を踏まえて、必要な機能などを検討します。
「要件定義」で扱うのは、必ず保証しなければならない項目です。
「要件定義」は、「要件定義書」として文書化します。
そしてクライアントからの要件が出そろった段階で、「要件定義書」に従って「外部設計」を行います。
「外部設計」ではシステムの全体の構成を考えて、開発方針を決定していき、「内部設計」ではどのようなモジュールでシステムを構成するべきかを設計します。
外部設計の内容とは?
「外部設計」は、「BD」とも言われることがあります。
「BD」は、基本設計「Basic Design」の略です。
「要件定義書」をベースにして、主にクライアントから見える部分を「外部設計」段階で設計します。
「外部設計」は、主に「方式設計」「機能設計」「その他設計」の3つに分類されます。
- 「方式設計」
- 「機能設計」
- 「その他設計」
- 物理データ設計
- 入出力の詳細設計
■「方式設計」
「方式設計」は、別名「アーキテクチャ設計」 とも言われます。
何を使い、どのようにして、どんなシステムにするのかという基礎部分の設計です。
ハードウエアやソフトウエアの構成・使用言語やプラットフォームなど、全体的な開発方針を決めていきます。
どのような工程にするのかは、開発体制・開発スケジュール・管理ツールで設計します。
どのようなシステムにするかは、システム構成図の設計に落とし込みます。
システム構成図では、システムの範囲指定・システム運用方法・ネットワーク構成・連携システム・クラウド環境などを検討します。
■「機能設計」
システムをモジュール単位に分けて、外部仕様を設計していきます。
詳細な設計は「内部設計」で行うため、「外部設計」では行いません。
機能一覧・機能設計・業務フロー図などの「機能」について、 画面遷移図・画面一覧・UI設計図・流れや帳票イメージなどの「画面仕様」について、ER図・テーブル定義書・入出力関連図などの「データベース設計」などについて設計します。
■「その他設計」
クライアントの要望に対応するために必要なその他の設計や、業務運用に必要な内容を決めていきます。
例えば、セキュリティ設計・運用設計・テスト設計などになります。
内部設計の内容とは?
「内部設計」は「外部設計」をもとにして、実現に近づけるためのより具体的な設計を行います。
「内部設計」は、「物理データ設計」「入出力の詳細設計」などの、クライアントやユーザーから見えにくい内部の設計のことです。
「内部設計」は、別名で「詳細設計書」とも呼ばれています。
「内部設計」は機能ごとに、詳細に設計していきます。
そしてプロジェクトに関連する開発者やプログラマーが実装するために使えるように、ドキュメントを作成して共有されます。
「内部設計」の目次(構成)や内容は、業務ごとに異なりますが、開発者やプログラマーがプログラムを書く時に迷うことがないように詳細に記載します。
■物理データ設計
物理データ設計では、必要なハードウエアの確保やシステム内部のデータベース整理など、内部システムに関する設計を行います。
■入出力の詳細設計
入出力の詳細設計では外部設計で決めた内容を、どのように実装していくのか細かく設計します。
入出力に関するエラー表示方法や表示メッセージ、入力データチェックなどについてです。
仕様書作成に必要なスキルとは?
システム設計の仕様書を作成するのには、「クライアントの要件を把握できるスキル」や、「情報システムに関する技術的なスキル」が必要です。
クライアントの要件を把握できるスキルは、「要求分析」のスキルです。
「要求分析」というのは「要件定義」を行うために、クライアントからの要求を整理して明確化する、「要件定義」の前段階のことです。
この段階でのスキルが不足していると、クライアントと開発者の間で認識のずれが生じてしまい、後々大幅な修正につながってしまう場合があります。
そして情報システムに関する技術的なスキルが不足していると、「要件定義」「外部設計」や「内部設計」の段階で、適切な機能の選択や設計ができないため、納品後にクライアントからクレームが来る可能性が生じます。
さらにどちらかのスキル不足で機能追加を行うと、システム構成全体が統一感のないものになり、バグが大量発生する要因になります。
案件によっては訴訟にもなりかねないため、注意が必要です。
システム設計は、プロジェクト全体の基礎部分となる重要な工程です。
システム設計の重要性を認識して、スキルを磨いていく必要があるのです。
システム設計で失敗しないために注意すべきこと
上流工程のシステム設計で、失敗しないために重要なのはコミュニケーションです。
クライアントの社内間でのコミュニケーション、クライアントと受注者のコミュニケーション、システム開発の部署間のコミュニケーションなどが不足していると、結果的に希望と違うシステムになってしまいます。
上流工程で認識のずれがあると、下流工程での大幅な修正やスケジュールの遅延につながります。
お互いが常にコミュニケーションを取り合いながら、双方の仕事を理解しようとする姿勢が大切です。
それに加えてシステム設計者は、いろいろな業界のシステムを設計します。
ファッション業界や金融業界、不動産業界などさまざまです。
「要求分析」や「要件定義」をスムーズに行うためには、クライアントの要件を把握できるスキルが役に立ちます。
しかし仕事をより成功に近づけるためには、クライアントの業界について知ろうとする姿勢が必要です。
クライアントの業界についての知識があれば、要件も理解しやすくなりますし、こちらからの提案も可能になります。
結果的に、満足してもらえるシステム設計へとつながるのです。
(画像は写真ACより)