システム開発を行う際、設計はスムーズかつ正確な開発を実現するために必要不可欠なものとなっています。しかし、実際に詳細設計とは何なのか、詳細設計の成果物は何になるのかを明確に説明できる方はそう多くはないのではないでしょうか。
そこで本記事では、システム開発における詳細設計について、詳細設計書を作成するポイントや成果物まで徹底解説いたします。
詳細設計とは
詳細設計とは、基本設計の後に行うことが一般的なものであり、基本設計を元に、実際のプログラミングについて細かく策定することになります。仮に詳細設計を行わずに基本設計のみでシステム開発を進めてしまうとシステム開発の半ばになった時に搭載したい機能の実装ができなかったり、そもそも実装したい機能が曖昧であることからクライアントの要求定義を満たしているかわからなかったりと様々な弊害が出てくるため、システム開発には欠かせない工程の1つと言えるでしょう。
詳細設計と基本設計の違い
よく混同してしまう詳細設計と基本設計ですが、大きな違いはクライアントに見せるか見せないかと言えます。基本設計はクライアントにもわかるように対外的な設計となりますが、詳細設計では開発者がわかるような専門的な設計となるため、この違いを意識して作成する必要があります。
詳細設計書を作成する際のポイント
詳細設計書を作成する際には、押さえておかなければならないポイントがいくつかあります。詳細設計書自体がプロジェクトの成功に関わると言っても過言ではないためです。詳細設計書を作成する際のポイントとしては、次の通りです。
- 目次及び見出しを作成する
- 難しい言葉及び造語は使用しない
- 1文はなるべく短くかつ主語は前に持ってくる
- 曖昧な表現はしない
- 見やすさを意識する
- 表記揺れがないか注意する
目次及び見出しを作成する
詳細設計書を作成する際には、目次と見出しをきちんと作成しましょう。本文と統一感を出しつつ、フォントのサイズを変更したり、見出しに階層をつけて複数管理する場合には、見出しと見出しの間に余白を付けることで管理したりすると見やすくなるのでおすすめです。
難しい言葉及び造語は使用しない
あたり前のことですが、誰が読んだとしてもわかりやすく理解できるように、難しい言葉、あるいは造語は使用しないように心がけることも大切です。
1文はなるべく短くかつ主語は前に持ってくる
長文や回りくどい言い回しを多用してしまうと読み手にストレスを与えてしまうことになってしまうので、1文はなるべく簡潔かつ短くし、さらにわかりやすいように主語を前に持ってくるように意識します。
曖昧な表現はしない
曖昧な言い回しや表現も読み手に意図しない誤解を与えてしまう可能性があるため、明確にストレートに表現しましょう。
見やすさを意識する
とにかく読み手のことを考え、誰が見ても見やすい、読みやすいと感じる詳細設計書を作成しましょう。文字だけでなく必要に応じて図及び表の活用をしたり、フォントを統一したり、インデントを調整したり、時には文字にカラーをつけたりとシンプルでありながらも読みやすい工夫を行うことが大切です。
表記揺れがないか注意する
例えば「Web」や「ウェブ」、「インターフェース」や「インターフェイス」など、1つの詳細設計書において1つの言葉を表記揺れしないようにしましょう。
詳細設計書の成果物
詳細設計書の成果物としては、様々なものがありますが、代表的なものとしては次のものが挙げられます。
- パッケージ図
- ユースケース図
- コミュニケーション図
- ステートマシン図
- アクティビティ図
- シーケンス図
- 画面一覧
- 画面遷移図
- 画面設計書
- ER図
- CRUD図
- 項目定義書
- システム構成図
- クラス図
- コンポーネント図
- オブジェクト図
- モジュール構造図
- アクティビティ図
- フローチャート
- IPO(処理機能記述)
パッケージ図
パッケージ図とは、UML(統一モデリング言語)で規定されたダイアグラムの1つであり、クラス図などの各モデル要素がどのように分類されているのか、パッケージ(グループ分け)されているのかを表現するものを指します。具体的にはタブ付きの長方形で1つのパッケージを表現することで、パッケージ名及びパッケージに所属する各モデル要素を記述します。さらに、パッケージ間の汎化及ぼい依存関係についてはパッケージ間を破線の矢印で結んで表現します。
ユースケース図
ユースケース図とは、システムがどのように機能するのかや外部環境を表す図です。エンドユーザー視点からシステムを見ることができるだけでなく、システム外部及び内部との境界をはっきりさせることもできます。具体的には、ユースケースというアクションのシーケンスを横長の楕円で表現し、アクターという線で描いた人型で表現し、さらにユースケースとアクターの関連は実線で表現します。
コミュニケーション図
コミュニケーション図は、オブジェクト間の関連により重きを置いた図であることから、相互作用ではなくシーケンス内のメッセージを通じてオブジェクトが関連付けられ接続する様を記述する図のことを指します。
ステートマシン図
ステートマシン図とは、ある時点においてオブジェクトのステータスを格納する任意のデバイスであり、ステータスの変更及び受信する入力データに基づいて他のアクションを引き起こすことができる図のことです。大抵の場合、初期状態を表す塗りつぶしの円から始まって最終状態を表す二重円で終わるようになっています。
アクティビティ図
アクティビティ図とは、連続する実行の遷移のことであり、一連の手続きを表現するための図であり、実体の生業の流れを描写することになります。具体的には、黒丸で表現される初期ノード、二重丸で表現される最終ノードなど、様々なルールのもとで記述されます。
シーケンス図
シーケンス図とは、システム概要をはじめ仕様や処理の流れを記載した図のことです。クラス及びオブジェクト間のやり取りを時間軸に沿って一定の書式に則って記載することになります。UML(統一モデリング言語)の1つです。
画面一覧
画面一覧では、その名の通りブラウザに表示する画面一覧を定義します。画面の全体像を把握するために便利です。
画面遷移図
画面遷移図とは、画面間における相互関係を理解するための図となっています。実際に作成する際には、手書きでラフにまとめるパターンとツールで綺麗に作成するパターンがありますが、大抵の場合は初期段階では手書きで簡易なものを作成しておいて、共有する際にツールを用いて清書することが多いです。
画面設計書
画面設計書とは、画面レイアウトのことであり、システム構築において、どのような画面が表示されるべきかを表したものです。具体的には画面のどの位置にどのような動作を行う部品を配置するのかを明確にするために作成されます。
ER図
ER図とは、データベースが必要となるシステム設計では欠かすことができない図であり、ER図がないとデータベースを構築することができません。ER図は10種類近くに分類することができ、各エンジニアや会社の好みによって使い分けられています。
CRUD図
CRUD図とは、あらゆるデータを扱うシステムをソフトウェアを設計する際、どの機能やモジュールがなんのデータを作成(C)したり、読み出し(R)たり、更新(U)したり、削除(D)したりするのかを表すものです。
項目定義書
項目定義書とは、入出力関係や入力項目など、画面や帳票イメージとは対となる設計情報を指すものです。
システム構成図
システム構成図とは、システム構成を明確に表示できる図のことです。AWSをはじめAzure、GCP構成の理解を明確にできるだけでなく、需要なネットワーク構成が素早く可視化することができます。
クラス図
クラス図とは、UML(統一モデリング言語)の1つであり、システムを構成するクラス及び関係を表現する図のことで、各クラスが保持しているプロパティやメソッドを表現することにも役立ちます。
コンポーネント図
コンポーネント図とは、UML(統一モデリング言語)の1つであり、システムを構成する要素間の関係を表した図のことです。具体的には、それぞれのコンポーネントは矩形で表現し、内部に機能の名前とコンポーネントであるcomponentというステレオタイプを記載したり、矩形の内部を何段かに区切ることで外部に提供するprovided interfaceや要求するrequired interfaceなどの付加情報を記載したりします。また、依存関係については、各依存先に向けて波線の矢印で表現したりなど、作成には様々なルールが定められています。
オブジェクト図
オブジェクト図とは、UML(統一モデリング言語)の1つであり、実際登場する具体的なオブジェクト及びそれらの間の関係を示した図のことです。具体的には長方形で示され、内部にオブジェクト名が記入されることになり、オブジェクト名には下線が引かれることになるなど、細かなルールが設定されています。
モジュール構造図
モジュール構造図とは、システムを構成するモジュールがどのように分割されていて、さらにどのような処理を行うかを示した図のことです。具体的にモジュールの構造を図形及び矢印を用いて表現することによって、システムを構成するモジュール構造が視覚的に理解できるという特徴があります。
アクティビティ図
アクティビティ図とは、UML(統一モデリング言語)の1種であり、システム実行の流れ及び条件分岐を図で示したものです。ある特定の作業開始から終了までの機能について、実行される順序通りに記述することになります。アクティビティ図を作成しておくことで、クライアントの仕事内容を具体的に理解しやすくなるため、クライアントが真に求めるシステムを正確に実装することが可能です。
フローチャート
フローチャートとは、システムにおける工程及びプロセスの各ステップやアルゴリズムなどを長方形をはじめひし方や楕円型などの記号で表示し、流れの方向を矢印で繋げて視覚的に表した図のことを言います。
IPO(処理機能記述)
IPO(処理機能記述)とは、システムの機能やビジネスロジックの処理内容を入力(Input)、処理(Process)、出力(Output)で表現した図のことです。つまり、出力データを作成するために入力データをどのように処理するかを把握するための図式であり、複数の処理をまとめて行う処理方式などの際に活用されます。
まとめ
システム開発における詳細設計について、詳細設計書を作成するポイントや成果物まで徹底解説いたしました。詳細設計では細かな部分まで開発者全員が共有できるようにしなければならず、神経を使ってわかりやすく明確な成果物を作成しなければなりませんが、逆にきちんとした詳細設計ができていると、クライアントが求める理想のシステムを開発することができるとも言えます。
細かすぎてどうしても簡略化したいという気持ちになってしまうかと思いますが、手を抜かず明確かつわかりやすい詳細設計書を作成するように心がけましょう。