ソフトウェア
別名:ソフトウエア
【英】software
ソフトウェアとは、情報システムを構成する要素で、プログラムのこと、あるいは、物理的な要素であるハードウェアを除いた無形の要素すべての総称である。
ソフトウェアは、多くの場合、コンピュータプログラムと同じ意味で用いられる。ハードウェアと対比する目的でソフトウェアの語が用いられ、プログラムに類する対象を広く含む。おおむね、ハードウェア装置との仲介を受け持つデバイスドライバ、アプリケーション用のAPIを通じてシステムの利用環境を提供するオペレーティングシステム(OS)、エンドユーザーが直接利用するアプリケーションソフトウェア、OSとアプリケーションソフトウェアの中間層で各種のユーティリティ的な機能を提供するミドルウェア、開発者が利用するユーティリティやツール類、などに分類することができる。
また、より広い意味で、ハードウェア以外の、情報システムを動かすために利用されるあらゆる無形の要素を指してソフトウェアと呼ぶ場合もある。この場合は特にソフトウェアのために用意された文書も含むことが多い。例としては、開発時に用いられる要求定義書、外部設計書、内部設計書、試験仕様書、試験結果報告書などから、利用時に用いられる操作マニュアルあるいはユーザーマニュアル、各種の設定説明書などがある。これらの文書は、プログラムの運用場面で実際に使っていく上で不可欠なものであり、また、プログラムのライフサイクルを見据えた時に、開発時の文書もまた必要であることから、ソフトウェア全体を構成する要素として認められるようになってきたものである。
プログラムとしてのソフトウェアは、規模の増大とともに、それをどのように構成・構築していくかということが重要な問題となってきている。プログラム言語のパラダイム論として、Smalltalkなどのオブジェクト指向、Prologなどの論理プログラミング、Haskelなどの関数型プログラミングなどの比較研究がある。アプリケーションのレベルで、ソフトウェアのパターンを論じる「デザインパターン」は、建築の分野にヒントを得て一定の地位を築いている。また、システム構築の確実性を確保する「形式手法」なども注目されている。大規模な業務システム分野では疎結合のコンポーネントを用いてモジュラーな開発を実現するSOA(サービス指向アーキテクチャ)が登場している。また、より設計レベルに重点を置き、実装工程をできるだけ自動化するモデルドリブンな開発手法も重要性を増している。
ソフトウェアに関する学問として、ソフトウェアサイエンスとソフトウェア工学を挙げることができる。ソフトウェアサイエンスは、プログラムの基礎を論ずるもので、数学基礎論や、コンパイラ理論、アルゴリズム論などの研究が行われている。ソフトウェア工学は、ソフトウェアの実用的な構築のためのノウハウを研究するもので、実用的なシステムの構築方法、各種の開発手法、生産性の研究、規模や工数の推定などが行われている。
プログラムの元となるテキストはソースコードと呼ばれる。GNUプロジェクトによって推進されている、ソースコードを全てオープンにし、全ての人がアクセスできることを保証しようという運動は、コンピュータ業界とプログラマに大きな影響を与えている。全てオープンとなっているソフトウェアはオープンソースソフトウェア(OSS)と呼ばれる。現在では、多くのOSSのプロジェクトが展開している。
|