ソフトウェアの品質を高め、効率よく開発するためには、きちんとした設計が欠かせません。ソフトウェア開発において設計工程は大変重要であり、設計工程を疎かにすると、後工程で大きな手戻りが発生することになります。
今回はソフトウェア設計で押さえるべきポイントや設計書の書き方について解説します。
ソフトウェア設計とは
要件定義書をもとに、ソフトウェアの仕様を決める
ソフトウェア開発は「要件定義」を最初に行い、「設計」⇒「開発」⇒「テスト」の工程を経てリリースされます。ソフトウェア開発手法として、これらの工程を1つ1つ確実に進める「ウォーターフォール」と、「設計」⇒「開発」⇒「テスト」を短期間に何度も繰り返す「アジャイル」がありますが、どちらの開発手法も「設計」は必ず実施します。
設計工程は、前工程の要件定義で決められた内容を基に、開発するソフトウェアの仕様を決める大事な工程です。要件定義では、クライアントが抱える課題や実現したい内容をヒアリングし、これから開発するソフトウェアに必要な機能を明確にします。この結果を受け、設計では機能を実装するための具体的な仕様を決めていきます。
設計は「基本設計」「詳細設計」がある
ソフトウェア設計には大きく「基本設計(外部設計)」と「詳細設計(内部設計)」に分かれます。基本設計は業務フローや画面レイアウト、帳票レイアウトなど、ユーザーの目に見える部分や、機能同士の関連を決めていきます。詳細設計は、ユーザーの目には直接触れない部分、例えば機能ごとの処理フローや画面・帳票で処理される処理項目を決めていきます。流れとしては、基本設計を決めた後に詳細設計へと進みます。
基本設計は、要件定義で明確にした機能を全て網羅し、要件を満たすように設計していかなければなりません。基本設計で設計した内容は基本設計書としてアウトプットします。詳細設計では基本設計書をインプットに、内容を網羅して実現できるように詳細を決めていき、詳細設計書としてアウトプットします。
後工程では詳細設計書の内容をもとに実際に開発していきます。そのため、設計書に誤りがあると後工程に影響しますし、漏れがあるとクライアントの要件を満たすことができません。
設計書の書き方
それでは基本設計・詳細設計では具体的に何を設計し、設計書に残せばよいか解説していきます。
基本設計書の書き方
基本設計では、ソフトウェア全体の概要を把握でき、かつユーザーから見える部分を設計していきます。以降は、設計すべき項目と作成する成果物をあわせて解説していきます。
ソフトウェア全体概要
・業務フロー図
ユーザーが実際に行っている業務の流れを記載します。このフローの中で、開発するソフトウェアの機能およびカバーする業務範囲を明確にします。
・機能一覧
ソフトウェアで実装する機能を一覧で記載します。要件定義で明確にした機能がすべて網羅されていなければなりません。また、不要な機能が含まれていないかの確認も重要です。
・データフロー図(DFD)
ソフトウェアで扱うデータの流れを図示します。どの機能でどのデータが扱われるのかがわかります。
・ソフトウェア構成図
ソフトウェア全体の構成を記載します。データベースや外部システムを利用する場合は、それらを含めた形で表します。
画面仕様
・画面レイアウト
画面仕様は、各画面の共通部分の仕様を定義します。たとえばタイトルバーやメニューバー、ダイアログの仕様、画面の構成などです。個別の画面設計は詳細設計で行います。画面イメージを記載し、分かりやすく記載します。
帳票仕様
・帳票レイアウト
帳票に表示されるレイアウトを図で表します。帳票テンプレートの種類ごとに仕様を決めていきます。PDFなどのファイルで出力する場合は、その仕様も定義します。
データ設計
・テーブル定義
データベースを使用する際は、各テーブル定義を決める必要があります。項目名やデータ型を明確にします。各テーブル間で制約やリレーションがある場合は、ER図もあわせて作成が必要です。
以上の内容をまとめたものを「基本設計書」として作成します。書き方としては、まず全体概要で要件定義に基づいた機能を網羅していることを確認でき、次に各機能を実現するための画面や帳票の仕様を決め開発の手順がわかるようにします。きちんと内容が記載された設計書であれば、高い品質のソフトウェアを開発できます。
詳細設計書の書き方
詳細設計では、基本設計で定義した内容をもとに、機能ごとの内部構造を定義していきます。基本設計では、機能ごとに対象データのインプットおよびアウトプットが決められているため、詳細設計でどのようにデータを加工し実現するか、といった内容になります。詳細設計書では、以下の内容を盛り込みます。
・機能ごとの処理フロー(フローチャート、アクティビティ図)
・画面の項目説明
・画面遷移図
・帳票の項目説明
・使用するテーブル項目
なお、実際に行う処理内容を記載する際は、処理の形式や使用するプログラミング言語によって異なります。Javaなどオブジェクト指向言語であればクラス図を用いますが、C言語やCOBOLではモジュール構造図で表す場合もあります。
・クラス図
引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ」
・モジュール構造図
引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ」
また、バッチ処理ではIPO(INPUT-PROCESS-OUTPUT)で記述することが多いです。以下は、IPOで記載された設計書の例です。状況に応じて、わかりやすい図法で記載しましょう。
引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ」
まとめ
本記事では、ソフトウェア設計について解説しました。クライアントからの要件を満たすためには、要件に基づき具体的かつ漏れなく機能を設計して確実に設計書に記載することが大切です。
設計書に記載する際に注意しておくべきことは、人によって理解が異なるあいまいな書き方をしないことです。設計した人と開発する人が異なる場合は、設計書に書かれた内容の認識齟齬が生まれると、不具合を作る原因になります。設計書を効率よく作成したいとお考えの人は、ツールの導入をご検討ください。
- カテゴリ:
- キーワード: