目的
システム開発のV字モデルを学んで、要件定義書から基本設計書ができるのは分かったけど、いざ現場にでると実は様々な種類があって、自分の目的(仕事)を達成する為に「何を見ればいいのか?」が分からず時間が掛かってしまった経験があります。
・基本設計とは、どういうものなのかをざっくり把握し
・プログラミングをする時にどの基本設計書を見ればいいのか分かるようになり
・最後は自分で基本設計ができるようになる
ために基本設計についてまとめてみました。現場経験の少ない方にも役に立つ思います。
基本設計とは
情報システムを作る工程の一つで、情報システム全体を機能単位に分割して
・それぞれの機能がどういうものか
・どういうことができるものか
・機能同士がどうつながるのか
を決めていく作業のことです。
入力→処理→結果の一連の「流れ」を重視し、処理の詳細までは踏み込ません。(初めまして、詳細設計参照→https://qiita.com/mikimaromomose/items/3c6e0f675331d48f5a64)
何を決めるのか
・情報システムの画面や帳票、バッチ処理などの作るべき機能を全て洗い出す
・それぞれの機能が、どういうことをする機能か明確にする
・機能の間の関係性、特に入出力するデータを明確にして、情報システム全体で業務をどう行うか決める
・情報システムで持つデータを、どういう形式・項目として扱うか決める
・連携先の既存情報システムとどんなデータをやり取りするかを決める
・どんなハードウェアやミドルウェアを組み合わせれば、要件が実現できるか考える
二つの観点
外向けの設計
お客様が理解できるところ/UIユーザーインターフェース
例えば画面のデザインや画面間の遷移、出力される帳票のレイアウト、関連する情報システムとのデータのやり取り、そして情報システムを使った業務の流れです。ですから、情報システムが形になった後、お客様がこういうように使えるようになるはずだ、というものでもあります。
内向けの設計
内から眺めたものとは、情報システムの作られ方に関係するものです。お客様が使う画面の裏には、画面を表示するためのプログラムやデータを保存するデータベース、そしてシステムとしてそれらがどう組み合わさるかという、いわゆる「アーキテクチャ」があります。基本設計はそれを決めるものでもあります。
誰向けのアウトプットか
基本設計は、要件定義の内容を情報システムの言葉に置き換えたものであり、どういう情報システムになるかを決めるものです。ですので、お客様が出来上がる情報システムを確認するためにも使いますし、エンジニアがどういうシステム構成にするかを明確にするものでもあるのです。
主なアウトプット
方式設計(アーキテクチャ設計)
「何を使って」
ハードウェア、ソフトウェア構成など
使用言語、プラットフォームの指定
「どのような工程で」
開発体制
開発スケジュール
「どのようなシステムを」
製造するのかを順番に設計するイメージ
機能設計(アプリケーション設計)
システムをモジュール単位に分割し、各モジュールの外部仕様を設計する。
・画面遷移図
・画面レイアウト(UI)設計図
・シナリオ
・ビジネス・ロジック
・機能一覧表
・データベース設計
・ER図
・テーブル定義書
その他、基本設計で作成される設計書
・性能/信頼性設計
・セキュリティ設計
・移行設計
・運用設計
まとめ
良い基本設計をするには、プログラミングの知識だけでなく、システム全体の知識、業務知識など幅広い知識が必要だということです。プログラミングをしている時にも自分が作っている機能はどこから値を受け、どこへ出力し、それらの値はどんな意味を持っているのか?を意識すれば、顧客の業務の理解も深まりますし、自分に何が足りないからプログラミングが出来ないのかも分かるようになってきます。何が足りないのか分かり、それぞれの基本設計には何が書かれているか分かれば、みるべき設計書も見えてくるはずです。