システム設計とソフトウェア設計について
システム設計とは
システム(System)とは
システムとは、「相互に影響を及ぼしあう複数の要素が集まり、ひとつの統一体を構成している組織や体系」のことです。
それ自身がシステムでありながら、同時に他のシステムの一部(サブシステム)である場合もあります。
システムという言葉は極めて一般性の高い概念であるため、文脈に応じて様々な意味となるので注意が必要です。
IT・ソフトウェア分野における“システム”とは
IT・ソフトウェア分野におけるシステムとは、ビジネス目標やステークホルダ要件を達成するために構成された、ハードウェア、ソフトウェア、ネットワーク、サービス、データなどの要素の全体構成を指します。
特にIT関連分野のシステムであることを強調する場合には、情報システム(informational system)、ITシステム、コンピュータシステムなどと呼びます。
情報システムは、狭義ではハードウェアやソフトウェアおよび周辺要素を意味しますが、広義では人員や組織、操作手順や規則体系、文書類などを含んだシステムを取り扱うための仕組みを全体を意味します。
システムとソフトウェアの関係
システムは、ソフトウェア、ハードウェア、サービス、手作業から構成されて機能を実現します。
ソフトウェアはソフトウェアコンポーネントから構成され、その最小単位はソフトウェアユニットです。
システム設計(System Design)とは
システム設計とは、システム要件を実現するために必要な構成品目を識別して、システム設計書を作成することです。
システム開発では、まずユーザ要件からシステム要件を洗い出す「システム要件定義」を実施します。
次に、システム要件をハードウェア、ソフトウェア、サービス、手作業に機能分割を行います。
そして、それぞれの機能に対して「システム方式設計」を実施し、ハードウェア構成、ソフトウェア構成、システム処理方式、手作業範囲の定義などを決定します。
これらの決定を文書化して、システム設計書を作成します。
ソフトウェア設計とは
ソフトウェア設計とは
ソフトウェア設計とは、システムがソフトウェアに求める要件を明確にして、ソフトウェアに実装する機能を定義し、具体的な仕様と構造を決めることです。
設計工程を完了することによって、成果物として「ソフトウェア設計書」を作成します。
一般的には、システム要件を詳細化していき、ソフトウェアとしての要件定義、方針設計(基本設計)、詳細設計と細分化して、より詳細な設計を検討していきます。
(ソフトウェアの開発方法論は多種多様であり、実際の設計手順や成果物の定義はそれぞれ異なるので注意は必要です。)
また、ソフトウェア設計は、検証プロセスや妥当性確認プロセスのための根拠にもなります。
ソフトウェア設計書は、ソフトウェアが正しく作成されたこと(ソフトウェア検証・ソフトウェア適格性確認)を確認するためのテスト仕様になります。
ソフトウェア設計の階層と分類
ソフトウェア設計は、システム設計におけるソフトウェア領域を対象とした設計のことです。
ハードウェアやネットワークなどのインフラ設計とソフトウェア設計を合わせることでシステム全体の設計を構成します。
さらに、ソフトウェア設計は、例えばアプリケーション設計やデータベース設計など、階層分割することができます。
ソフトウェアを役割と責任に応じて複数の論理的な水平階層に構造化することで、効率的な設計を可能にします。
(なお、これは階層化アーキテクチャという最も一般的に使われるソフトウェアアーキテクチャの考え方です。 )
※開発内容によって、ファームウェア・システムソフトウェア(デバイスドライバやカーネルなど)・OS(基本ソフトウェア)がソフトウェア設計の範囲に入ることあります。
ソフトウェアアーキテクチャについて
ソフトウェアアーキテクチャとは、ソフトウェアの全体構造を定義した全体設計図のことです。
アーキテクチャを決めることは、ソフトウェアの構造や設計を決定して、ソフトウェアの品質や拡張性、保守性、セキュリティ性などに大きな影響を与えます。
詳細は下記を確認ください。