前回の投稿で、システムを3つの要素 – ハードウェア・ソフトウェア・データ – に分解しました。
今回は、その一つ、ソフトウェアとは何かについて、詳解します。
ソフトウェアとは?
ソフトウェアとは、何らかの目的のために機能を実行するプログラム、です。
厳密な定義は、「実践ソフトウェアエンジニアリング」によると、以下のようになります。
1.実行されることによって必要な特性、機能、性能を提供する命令語群(コンピュータプログラム)
2.プログラムが適切に情報を扱うことを可能とするデータ構造
3.プログラムの操作や使用法を記述した情報
もっと平たく言うと、ソフトウェア=プログラムの塊、と言えるかと思います。
ソフトウェアの分類
ソフトウェアは、その目的に応じて、以下のように分類されます。
- アプリケーションソフトウェア: ユーザとのコミュニケーションが目的
例. MS-Word, Google Chrome, スマホアプリ, ゲームソフト, など - ミドルウェア: Web機能、アプリケーション機能、データベース機能、ジョブ運用など、ネットワーク上の他のサーバやクライアントとのコミュニケーションが目的
例. Apache HTTP Server, Tomcat, Oracle Database, JP1, など - システムソフトウェア(オペレーティングシステム/OS): ハードウェアの制御が目的
例. Windows, macOS, Android, RHEL, CentOS, など
一つ一つのコンピュータに、これらのソフトウェアがインストールされています。
例えば、自宅のパソコンだと、以下のような構成です。
アプリケーション: Safari, メール, メモ, マップなど多数
オペレーティングシステム: macOS Monterey
【例】システムとソフトウェアの使い分け
システム
前回の投稿では、システムを、「情報システムを構成するコンピュータネットワーク」と、表現しました。
また、「情報システムとは、社会、組織体または個人の活動を支える適切な情報を、収集し、加工し、伝達するための、人間活動を含む社会的な仕組みである。」と、あります。
例えば、以下のような個人のスマートデバイス、ホームネットワーク、企業ネットワーク、クラウドサービスが、インターネットを介して繋がっている場合、
社会レベルでは、これ全体で一つの情報システム、と言えます。
さらに、個人、家庭、企業、組織レベルで、サブシステムに分けられます。
ただし、個人や家庭で使用するコンピュータネットワークのことを、「〇〇システム」とは呼ぶことは、あまり一般的ではありません。
ソフトウェア
さらに、各システム上で、何らかのソフトウェアが必ず動いています。
例えば、ある個人が、iPhoneで、家庭用のルータからインターネットに接続し、YouTubeを視聴したとき
iPhoneは、システムソフトウェア(iOS)上で、アプリケーション(SafariやYouTubeアプリ)を実行して、YouTubeサービスからダウンロードした動画データを、再生します。
また、別のユーザが、Android端末(OS: Android)で、アプリケーション(Google Chrome)を起動し、ある企業のコーポレートサイトに、インターネットでアクセスしたとき
企業ネットワークのシステムは、VPNゲートウェイ、DNSサーバ、Webサーバ上のミドルウェアを実行して、外部のユーザにHTMLファイルを、送り返します。
ユーザ側から見ると、自身のAndroid端末のChromeに、ダウンロードしたコーポレートサイトのHTMLファイルが、表示されます。
さらにもう一つ、テレワークの例を見てみます。
まず、ホームネットワークにあるパソコン(OS: Windows)を起動し、アプリケーション(VPNクライアント)を実行します。
VPNクライアントは、勤務先のネットワークにあるVPNゲートウェイの認証を受けて、仮想デスクトップ環境に、アクセスします。
そうすると、仮想のデスクトップ画面の映像が、VPN(仮想専用線)接続に守られて、ホームネットワークのPC上に表示されて、あたかも勤務先にあるPCを直接操作しているように、遠隔操作できるようになります。
この遠隔操作によって、企業のプライベートネットワーク上の基幹系システム(顧客管理システムや購買管理システム、人事給与システムなど)にアクセスしたり、
あるいは、クラウドサービス(OneDriveやAWSなど)上に配置したファイルシステムや基幹系システムに、アクセスすることができます。
これらの基幹系システムでも、Web機能、アプリケーション機能、データベース機能などのミドルウェアが動いており、そのベースにOSがあります。
※上記のネットワーク図は、従来の境界型セキュリティを前提とした構成です。あくまで、一つの例として、ご理解ください。
まとめ
ソフトウェアとは、何らかの目的のために機能を実行するプログラムであり、その目的に応じて、アプリケーションソフトウェア・ミドルウェア・システムソフトウェアに、分けられます。