ソフトウェア設計
ソフトウェア設計の概要
ソフトウェア設計とは
ソフトウェア設計とは、顧客がソフトウェアに求める要件をまとめて、ソフトウェアに実装する機能を定義し、具体的な仕様と構造を決めることです。
ソフトウェア設計では、成果物として「ソフトウェア設計書」を作成します。
ソフトウェア設計書を作成することで、開発チームは機能を把握して、完成形をイメージして、開発のための計画を立てることができます。
つまり、ソフトウェア設計とは、要件を制約(人、モノ、金、時間)の下で実現するための段取りを行うことです。
ソフトウェア設計と成果物について
ソフトウェア設計による成果物は、ソフトウェアに関与するステークホルダーに対して何らかの価値を提供するものとなります。
ユーザに対しては、ソフトウェアに期待される振る舞いを文書化して合意を取ることです。
開発者に対しては、開発するソフトウェアの仕様や方針、および開発期間や作業内容について合意を取ることです。
システム開発では、どのようなソフトウェア設計手法を採用するかによって、要件定義や設計の方針が異なってきます。
一般的に、ソフトウェア設計といわれる工程は「要件定義→基本設計→詳細設計」となります。
しかし、近年では開発方法論によって工程の境界は曖昧となっており、それぞれの工程での成果物も方法論によって異なります。
(例えば、アジャイル型開発プロセスでは内部設計・詳細設計を事前に完成させずに、製造を実施しながら同時に設計活動を行います。)
設計手法については、ソフトウェア開発方法論を参照ください。
要件定義
要件定義とは
要件定義とは、顧客の要求を分析し、必要となるソフトウェアの機能を洗い出し、「要件定義書」を作成することです。
ここでいう要件とは、顧客と開発者との間の契約であり、注文に対する合意事項です。
業務要件・システム要件・ソフトウェア要件などを決めて、発注側と開発側で何を作るか合意することが要件定義です。
要件定義の分析手法
- 機能要件と非機能要件について
- 要求分析
- 要件定義書
- 分割統治法(問題を分割して個々の問題を解決する。)
- ソフトウェアライフサイクル(JIS X 0160)
- ユーザーストーリーマッピング
- カスタマージャーニーマップ
- ドメインモデリング
基本設計(概要設計・外部設計)
基本設計とは
基本設計とは、顧客(ユーザ)が目に見えることができる、実際に利用する外側部分の設計することです。
- ソフトウェア全体の構成や機能などといったシステムの基本設計。
- 画面レイアウトや操作方法、データ出力などエンドユーザーから見える部分・操作する部分の外部インタフェース。
- 性能要件、セキュリティ、運用規定など。
- 開発スケジュール、開発費用、運用費用など。
基本設計の定義手法
詳細設計(内部設計)
詳細設計とは
詳細設計とは、基本設計の要件を詳細化し、製造(プログラミング)するための具体的な仕様を設計することです。
エンドユーザーの目には見えないソフトウェア機能の内側部分の設計やソフトウェアコンポーネント間の連携などを定義していきます。
方法論の違いにより、この工程のことを「内部設計」などとも呼びます。