ソフトウェアシステムとは、コンピュータシステム(ハードウェアとソフトウェアの組み合わせ)の一部を構成するソフトウェアを基盤とする、相互通信可能なコンポーネントのシステムです。ソフトウェアシステムは、「複数の独立したプログラム、これらのプログラムの設定に使用される設定ファイル、システムの構造を記述したシステムドキュメント、そしてシステムの使用方法を解説したユーザードキュメントから構成されます」[1] 。
ソフトウェアシステムは、コンピュータプログラムやソフトウェアとは異なります。コンピュータプログラムは通常、特定のタスクを実行する一連の命令(ソースコードまたはオブジェクトコード)ですが、ソフトウェアシステムは、仕様、テスト結果、エンドユーザー向けドキュメント、保守記録など、より多くの要素を含む包括的な概念です。[2]
ソフトウェアシステムという用語は、ソフトウェア工学の文脈におけるシステム理論アプローチの適用に関連して使用されることがあります。ソフトウェアシステムは、複数の独立したコンピュータプログラムと、関連する設定ファイル、ドキュメントなどで構成され、それらは連携して動作します。[1]この概念は、ソフトウェアの主要な構成要素とそれらの相互作用に焦点を当てているため、大規模で複雑なソフトウェアの研究で使用されます。また、ソフトウェアアーキテクチャの分野にも関連しています。
ソフトウェアシステムは、特にソフトウェア工学、そして一般的にシステム工学に関心を持つグループにとって、活発な研究分野です。 [3] 『 Journal of Systems and Software』 (エルゼビア社発行)などの学術誌がこの分野を専門としています。[4]
ACMソフトウェアシステム賞は、「概念への貢献、商業的受容、またはその両方に反映され、永続的な影響を与えたシステムを開発した」個人または組織を表彰する年次賞です。[5]この賞は1983年からACM( Association for Computing Machinery )によって授与されており、賞金はIBMがスポンサーとなっています。
ソフトウェアシステムの主なカテゴリには、アプリケーションソフトウェア開発、プログラミングソフトウェア、システムソフトウェアが含まれますが、区別が難しい場合もあります。ソフトウェアシステムの例としては、オペレーティングシステム、コンピュータ予約システム、航空管制システム、軍事指揮統制システム、通信ネットワーク、コンテンツ管理システム、データベース管理システム、エキスパートシステム、組み込みシステムなどが挙げられます。