ソフトウェア(英: Software)とは、コンピュータシステム上で何らかの作業を行うプログラム群、プロシージャ群、それらに関する文書を指す用語である[1]。物理的装置であるハードウェアと対比させて言うときに使う。プログラムとほぼ同義だが範囲は更に広い。ソフトとも呼ばれる。
ソフトウェアには、ワープロソフトのように生産的な仕事を行うためのアプリケーションソフトウェア、アプリケーションソフトウェアに必要なサービスを提供するハードウェアとのインタフェースとなるオペレーティングシステムのようなシステムソフトウェア、分散システムを制御・管理するミドルウェアなどがある。
目次
1 語用論
2 コンピュータハードウェアとの関係
3 分類
4 プログラムとライブラリ
5 階層
6 ソフトウェア作成
7 操作(演算)
8 品質と信頼性
9 ライセンス
10 特許
11 ユーザーの倫理と権利
12 関連項目
13 脚注
14 外部リンク
//
日本では、ハードウェアと対比する用法が転じ、映像や音楽等のコンテンツ(映画、ドラマなどの作品をビデオテープやDVDなどの記録メディアに収録したもの)もソフトウェアと呼ぶ。類似の用法は欧米にもある[2]。
ある機能をもつソフトウェアに対して、「ソフトウェア」という言葉が接頭辞・形容詞的に用いられることがある。エンコードをするソフトウェアを「ソフトウェアエンコーダ」、DVDを再生するソフトウェアを「ソフトウェアDVDプレーヤー」と呼ぶことがある。情報を処理する際に、当該情報専門の単体のハードウェアで処理されるか、汎用コンピュータ(PC等)用のソフトウェアで処理されるかを区別するためである。
詳細はハードウェアを参照
ソフトウェアは、物理的なハードウェアと対比した言葉であり、LSIなどの電子回路そのものは、コンピュータに処理をさせる手順を記述していても、物理的な物であるのでソフトウェアとは呼ばない。ハードウェアでありソフトウェアでもある中間的な存在として、ファームウェアがある。コンピュータにおいて、ソフトウェアはRAMにロードされ、CPUで実行される。最も低いレベルでは、ソフトウェアは特定のプロセッサに固有の機械語で構成されている。機械語はプロセッサへの命令となる2進数の値から構成されていて、それによってコンピュータの状態を次々と変化させる。従ってソフトウェアは、コンピュータハードウェアの状態を変化させる命令列である。通常、機械語よりも人間が使いやすい高級言語で書かれる。高級言語はコンパイラかインタプリタによって機械語のコードに変換される。他にも機械語とほぼ一対一に対応したアセンブリ言語があり、アセンブリ言語で書かれたソフトウェアはアセンブラによって機械語に変換される。
ほとんどのコンピュータはオペレーティングシステムと呼ばれる特別なソフトウェアプログラムでリアルタイムに機械が制御される。ソフトウェアの他の形態にはプログラム言語のアセンブラおよびコンパイラ、企業および家庭向けアプリケーションソフトウェア(分類を参照)がある。
1957年にJohn W. Tukeyがこの意味で「ソフトウェア」という用語を最初に使用した[3]。情報工学およびソフトウェア工学では、ソフトウェアはコンピュータシステム、プログラム、データにより処理される情報全般やあらゆる「機械装置以外のもの」を示す。記憶装置に異なる命令群を読み込んで計算を制御する概念は階差機関の一部としてチャールズ・バベッジが考案した。