システム開発は、製造・完成までに様々なプロセスがあります。
基本設計も、そのプロセスの中の1つです。
基本設計とは、要件定義に基づいたシステムの全体像や概要をまとめて形にすることで、外部設計とも言います。
要件定義の内容は、システムの目的・機能の導入効果や方法・工程・予算などです。
この時点ではプログラムの形がないため、全体を視点に入れた様々な状況を、想定しなければなりません。
今回は、システム開発の基本設計についてご紹介させて頂きます。
基本設計とは
基本設計では、コンテンツに必要な要素を整理し、システムの根幹となる部分を設計します。
要件定義をもとに作成するため、全体像を把握することで、各機能がどのように作用するのかを考えて組み立てる必要があります。
機能とは、システム処理・保存・拡張性・故障対策などがあり、他にも関連する項目は多岐にわたるでしょう。
そのため、エンジニアにはシステム開発・ソフトウエアのスキルに加え、高い意識や判断力、説得力が必要です。
また、基本設計はシステムオーナーとプログラマの中間に位置しているため、認識のズレを解消し、トラブルを防ぐ役割もあります。
基本設計のつくり方
基本設計は、事前に決定した内容に沿って完成品を想定しながら、広い視野を持って作業を行います。
ここでは、一般的に作成される成果物の一例をご紹介します。
業務フロー
業務フローは各部署の業務内容を想定し、その流れを図式で表します。
機能一覧は実装する機能を具体的な数字で表しており、エンジニアが作業内容や設計の進捗状況など、全体の情報を共有し把握できます。
その点データフロー図は、システムにおけるデータの流れを書くことで、視覚的に捉えるため認識確認に有効です。
業務フローは、変更などが発生した際も検討資料として役立ち、効率的に作業を進めるために必要な資料です。
画面レイアウト
画面レイアウトは、ユーザーが操作する画面について、業務プロセスの視点から検討します。
そして、要件定義で定めた内容をもとにサイトの要素や、機能・情報・各コンテンツのレイアウトなどを決めていきます。
例えば、画面設計では操作画面のレイアウトや表示項目について、設計を行います。
また、表示項目や操作方法、画面遷移などの動きを説明したものが画面設計書です。
企業やサイトの印象は、どのような画面にするかで大きく変わるため、非常に重要な部分といえるでしょう。
帳票設計
受注伝票や入金伝票などの出力場所、業務上の用途などを整理するための資料です。
他にも売上高などの集計値といった帳票に表示する項目、編集ルールなどを定義します。
事前に大体の整理は行われていますが、この段階ではイメージを具体的かつ明確にしなければなりません。
帳票出力項目では、項目内容を一覧表示し、帳票編集定義に複雑な項目を記します。
しかし、この時点では決定版がつくれないため、常に完成を想定して考える必要があります。
バッチ設計
システムでは、画面や帳票以外に、バッチ処理があります。
一連の処理を自動的に実行するバッチ処理は、プログラムに欠かせないものです。
バッチ設計では、バッチ処理フロー、バッチ処理定義などの設計を行います。
入力・処理機能・出力を整理した資料は、バッチ処理の流れを示しますが、異常終了した際の対策も検討しなければなりません。
そのため、プログラムの実行順序やタイミング、障害の発生から復旧まで、広い視点を持って分かりやすく分割・組合せを行っていきます。
テーブル定義
テーブル定義は、データベース種類ごとの単位、テーブルの構造を定義したものです。
どのような種類のデータベースを使用するか、データの保存方法などの詳細情報を定義します。
また、主要データを一覧表にまとめ、実現に向けてどのような項目があり、どのように使うのかという関係性も含めます。
他にも、ER図などの各テーブルの作成・参照・更新を整理した資料も必要です。
大きな情報システムでは、全体で数百以上のテーブルが作成される場合もあるのです。
システム構成図
システム構成図は、システムがどのように構成されているのか、分かりやすく示した図です。
ここでは、インフラに必要とされる要件を予測し、対応策を決定・発注するシステム構成図や運用設計書をつくります。
システムは、アプリケーションの領域とインフラストラクチャの領域でつくられており、システムを動かすにはどちらも欠かせません。
そのため、要件定義を根底に各領域の担当者がハードウエアやネットワークの構成を、様々な角度からアプローチしているのです。
基本設計に必要な視点
基本設計の内容は、その後のプロセスに大きく影響するため、全体像を把握して全関係者としての意識や視点を持つ、という感覚が大切です。
また、基本設計は要件定義と整合性が取れていなければトラブルになります。
しかし、具体的な形がない段階では、手戻りがあることを前提に設計しなければなりません。
基本設計は、プロジェクトに関連するすべての人の意向を踏まえ、全体を矛盾なく取りまとめるエンジニアのスキル・実力・経験が求められます。
そして、実現可能な設計かつ代替手段を備え、システムオーナーが分かりやすいものを提示することが求められます。
まとめ
システム開発における、基本設計についてご紹介しました。
基本設計は、エンジニアがシステムオーナーやベンダーの間に立つことで、理想を実現させる重要な工程です。
システムを開発する際は、幅広い知識を持っていると高品質なシステムをつくり上げることができるでしょう。