ソフトウェア設計とは?設計のポイントや設計書の書き方を解説

 2022.02.02  株式会社システムインテグレータ

ソフトウェアの品質を高め、効率よく開発するためには、きちんとした設計が欠かせません。ソフトウェア開発において設計工程は大変重要であり、設計工程を疎かにすると、後工程で大きな手戻りが発生することになります。

今回はソフトウェア設計で押さえるべきポイントや設計書の書き方について解説します。

ソフトウェア設計とは

 要件定義書をもとに、ソフトウェアの仕様を決める

ソフトウェア開発は「要件定義」を最初に行い、「設計」⇒「開発」⇒「テスト」の工程を経てリリースされます。ソフトウェア開発手法として、これらの工程を1つ1つ確実に進める「ウォーターフォール」と、「設計」⇒「開発」⇒「テスト」を短期間に何度も繰り返す「アジャイル」がありますが、どちらの開発手法も「設計」は必ず実施します。

設計工程は、前工程の要件定義で決められた内容を基に、開発するソフトウェアの仕様を決める大事な工程です。要件定義では、クライアントが抱える課題や実現したい内容をヒアリングし、これから開発するソフトウェアに必要な機能を明確にします。この結果を受け、設計では機能を実装するための具体的な仕様を決めていきます。

設計は「基本設計」「詳細設計」がある

ソフトウェア設計には大きく「基本設計(外部設計)」と「詳細設計(内部設計)」に分かれます。基本設計は業務フローや画面レイアウト、帳票レイアウトなど、ユーザーの目に見える部分や、機能同士の関連を決めていきます。詳細設計は、ユーザーの目には直接触れない部分、例えば機能ごとの処理フローや画面・帳票で処理される処理項目を決めていきます。流れとしては、基本設計を決めた後に詳細設計へと進みます。

基本設計は、要件定義で明確にした機能を全て網羅し、要件を満たすように設計していかなければなりません。基本設計で設計した内容は基本設計書としてアウトプットします。詳細設計では基本設計書をインプットに、内容を網羅して実現できるように詳細を決めていき、詳細設計書としてアウトプットします。

後工程では詳細設計書の内容をもとに実際に開発していきます。そのため、設計書に誤りがあると後工程に影響しますし、漏れがあるとクライアントの要件を満たすことができません。

設計書の書き方

それでは基本設計・詳細設計では具体的に何を設計し、設計書に残せばよいか解説していきます。

基本設計書の書き方

基本設計では、ソフトウェア全体の概要を把握でき、かつユーザーから見える部分を設計していきます。以降は、設計すべき項目と作成する成果物をあわせて解説していきます。

ソフトウェア全体概要

・業務フロー図

ユーザーが実際に行っている業務の流れを記載します。このフローの中で、開発するソフトウェアの機能およびカバーする業務範囲を明確にします。

・機能一覧

ソフトウェアで実装する機能を一覧で記載します。要件定義で明確にした機能がすべて網羅されていなければなりません。また、不要な機能が含まれていないかの確認も重要です。

・データフロー図(DFD)

ソフトウェアで扱うデータの流れを図示します。どの機能でどのデータが扱われるのかがわかります。

・ソフトウェア構成図

ソフトウェア全体の構成を記載します。データベースや外部システムを利用する場合は、それらを含めた形で表します。

新規CTA
新規CTA

画面仕様

・画面レイアウト

画面仕様は、各画面の共通部分の仕様を定義します。たとえばタイトルバーやメニューバー、ダイアログの仕様、画面の構成などです。個別の画面設計は詳細設計で行います。画面イメージを記載し、分かりやすく記載します。

帳票仕様

・帳票レイアウト

帳票に表示されるレイアウトを図で表します。帳票テンプレートの種類ごとに仕様を決めていきます。PDFなどのファイルで出力する場合は、その仕様も定義します。

データ設計

テーブル定義

データベースを使用する際は、各テーブル定義を決める必要があります。項目名やデータ型を明確にします。各テーブル間で制約やリレーションがある場合は、ER図もあわせて作成が必要です。

以上の内容をまとめたものを「基本設計書」として作成します。書き方としては、まず全体概要で要件定義に基づいた機能を網羅していることを確認でき、次に各機能を実現するための画面や帳票の仕様を決め開発の手順がわかるようにします。きちんと内容が記載された設計書であれば、高い品質のソフトウェアを開発できます。

詳細設計書の書き方

詳細設計では、基本設計で定義した内容をもとに、機能ごとの内部構造を定義していきます。基本設計では、機能ごとに対象データのインプットおよびアウトプットが決められているため、詳細設計でどのようにデータを加工し実現するか、といった内容になります。詳細設計書では、以下の内容を盛り込みます。

・機能ごとの処理フロー(フローチャート、アクティビティ図)

・画面の項目説明

・画面遷移図

・帳票の項目説明

・使用するテーブル項目

なお、実際に行う処理内容を記載する際は、処理の形式や使用するプログラミング言語によって異なります。Javaなどオブジェクト指向言語であればクラス図を用いますが、C言語やCOBOLではモジュール構造図で表す場合もあります。

 

・クラス図image1

引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ

 

・モジュール構造図image2

引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ

 

また、バッチ処理ではIPO(INPUT-PROCESS-OUTPUT)で記述することが多いです。以下は、IPOで記載された設計書の例です。状況に応じて、わかりやすい図法で記載しましょう。image3

引用:IPA「ソフトウェア開発技法実践的演習教育コンテンツ

設計に役立つツール「SI Object Browser Designer」

設計書は誰が見ても理解できるように作成することが重要です。作成した設計書は設計者、ユーザー、開発者それぞれで同じ理解でないといけません。誤った理解があると、ソフトウェアに不具合が発生したり、ユーザーの意図しない機能が作り込まれたりすることになるからです。

そのため、設計書はできる限りシンプルでわかりやすく記載しなければなりません。設計書は以前よりExcelやWordなどの文書で作成されることが一般的でした。しかし膨大な機能があるソフトウェアでは作成効率が悪く、設計書を作るだけで工数がかかります。

ここでは、設計工程に役立つツール「SI Object Browser Designer」をご紹介します。設計工程を効率よく行いたいと考えている人は、ぜひご検討ください。

図示によりシンプルでわかりやすく

ソフトウェア設計の解説にもあったように、フロー図や遷移図など設計書には多くの図を作成します。しかし、ExcelやWordは図を作成するには時間がかかります。SI Object Browser Designerは図を効率よく作成できるCADツールであるため、効率よく作成できます。

標準化による属人化の防止

ソフトウェアやシステムによって設計書のレイアウトや記載の仕方が異なるのでは、人によって理解が異なる場合や、作成する人が限られ属人化を生むことにもなりかねません。SI Object Browser Designerであれば専用の設計フォームで設計することで、属人化を防止できます。

設計書の管理の効率化

設計書を作成したらそれでおしまい、ではありません。仕様変更やリリース後の改修、機能追加により、設計書もあわせてメンテナンスし、きちんと管理することが必要です。そうなると変更管理なども実施しなければなりません。

SI Object Browser Designerであれば、設計情報を修正すると関連する項目も連動して修正され、修正漏れを防止できます。また、変更履歴もデータベースで管理され、後から確認することも可能です。

まとめ

本記事では、ソフトウェア設計について解説しました。クライアントからの要件を満たすためには、要件に基づき具体的かつ漏れなく機能を設計して確実に設計書に記載することが大切です。

設計書に記載する際に注意しておくべきことは、人によって理解が異なるあいまいな書き方をしないことです。設計した人と開発する人が異なる場合は、設計書に書かれた内容の認識齟齬が生まれると、不具合を作る原因になります。設計書を効率よく作成したいとお考えの人は、ツールの導入をご検討ください。

新規CTA

RECENT POST「コラム」の最新記事


コラム

非機能要件とは?具体的な項目や機能要件との違いをわかりやすく解説

コラム

ソフトウェア設計ミスを防止するには?5つの対策を解説

コラム

業務フローとは?書き方とわかりやすい業務フローのポイント

コラム

要件定義の成果物とは?内容や作成手順を解説

ソフトウェア設計とは?設計のポイントや設計書の書き方を解説
新規CTA
ブログ購読のお申込み

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事

ITだけCAD使ってない不思議

ITだけCAD使ってない不思議