ソフトウェアの分類と特徴【備忘録-基本情報技術者試験対策 #43】

基本情報技術者試験

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。

はじめに

さて今回は、基本情報技術者試験対策として、ソフトウェアの分類と特徴についてまとめたいと思います。

ソフトウェアと言えば皆さんOSを思い浮かべますかね??いわゆるWindowsとか、Macとかってやつです。ただ、今回お話する内容は少し異なり、ソフトウェア全般にどのような分類があり、それぞれどのような特徴を有しているかをまとめたいと思います。

※OSについては以下をチェック

Coming Soon・・・

まぁ簡単に言えば、ハードウェアの対になるものがソフトウェアってだけなんですが、しっかりとさらに細かい分類まで覚えておくようにしましょうね。

ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。

過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

最新版はこちらです。

少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。

ソフトウェアの分類

ソフトウェアは大きく、「システムソフトウェア」と「応用ソフトウェア」に分類されます。

そしてさらに細かく、「システムソフトウェア」は「基本ソフトウェア」と「ミドルウェア」に分類されます。

したがって、重要ワードとしては3つ、「基本ソフトウェア」、「ミドルウェア」、「応用ソフトウェア」

これらをしっかりと頭に入れておくようにしましょう。

基本ソフトウェア

基本ソフトウェア(英: Operating System, OS)は、コンピュータのハードウェアとユーザーが使用するアプリケーションソフトウェアの間を仲介する重要なソフトウェアです。OSは、コンピュータの基本的な操作を管理し、各種アプリケーションがスムーズに動作するように支援します。

まぁ単純に、ハードウェアとアプリケーション(応用ソフトウェア)のつなぎ役とだけ覚えておきましょう!

広い意味では、「基本ソフトウェア = OS」でOKです。

もう少し狭い範囲でとらえると、「基本ソフトウェアの中の制御プログラム = OS」にあたります。

まぁ頭の片隅に置いておく程度でOKです。

簡単にではありますが、どんなことをやっているかもまとめておきます。

  • プロセス管理:
    CPUの使用時間を割り当て、実行中のプロセスの管理を行う。マルチタスクを可能にし、複数のアプリケーションを同時に動作させる。
  • メモリ管理:
    主記憶装置(RAM)の使用状況を監視し、適切な割り当てを行う。仮想メモリを使用して、実際の物理メモリ以上の容量を扱えるようにする。
  • ファイルシステム管理:
    データの保存、検索、管理を行うためのファイルシステムを提供する。ディスク上のファイルやディレクトリの構造を管理する。
  • デバイス管理:
    入出力デバイス(キーボード、マウス、ディスプレイ、プリンターなど)の管理を行う。デバイスドライバを介して、ハードウェアとの通信を仲介する。
  • ユーザーインターフェース:
    GUI(グラフィカルユーザーインターフェース)やCLI(コマンドラインインターフェース)を提供し、ユーザーがコンピュータを操作しやすくする。

ミドルウェア

ミドルウェアは、オペレーティングシステム(OS)とアプリケーションソフトウェアの間に位置し、両者の通信を円滑にするソフトウェアです。これにより、異なるアプリケーションが共通のプラットフォームで動作し、システム全体の効率が向上します。

こちらは単純に、基本ソフトウェアとアプリケーション(応用ソフトウェア)のつなぎ役というわけですね。

多くのアプリケーション(応用ソフトウェア)が使うであろう機能だけど、基本ソフトウェアは持っていない機能・・・こんなところをミドルウェアが役目として提供しているわけです。

こちらも簡単にではありますが、どんなことをやっているかまとめておきます。

  • 通信管理:
    データベース管理システム(DBMS)やメッセージングシステムを用いて、アプリケーション間のデータ交換を管理します。リモートプロシージャコール(RPC)やメッセージキューを提供し、分散システム間の通信をサポート。
  • トランザクション管理:
    データの一貫性を保つため、トランザクション処理を管理。ACID特性(Atomicity, Consistency, Isolation, Durability)を保証し、信頼性の高いデータベース操作を実現。
  • セキュリティ管理:
    認証、認可、暗号化などのセキュリティ機能を提供。アクセス制御やデータ保護を行い、システムの安全性を確保。
  • アプリケーションサーバ:
    ウェブアプリケーションの実行環境を提供し、リクエストの処理やセッション管理を行う。例として、Apache TomcatやJBossなどが挙げられます。

応用ソフトウェア

応用ソフトウェア(アプリケーションソフトウェア、アプリケーション)は、特定のタスクや機能を実行するために設計されたソフトウェアです。これにより、ユーザーはコンピュータを使って特定の業務を効率的に行うことができます。基本ソフトウェア(オペレーティングシステム)上で動作し、日常的な業務から専門的な作業まで幅広い用途に対応します。

要するに「アプリ」です。ユーザーに一番近いところで動作するものですね。

どんなものがあるか・・・イメージつくとは思いますが簡単にまとめておきますね。

  • オフィスソフトウェア(Office 365):
    文書作成、表計算、プレゼンテーション作成などの業務をサポート。代表例:Microsoft Office、Google Workspace。
  • グラフィックソフトウェア:
    画像編集やデザイン、アニメーション作成に使用。代表例:Adobe Photoshop、CorelDRAW。
  • 会計ソフトウェア:
    財務管理や帳簿管理を行う。代表例:QuickBooks、弥生会計。
  • データベースソフトウェア:
    データの管理、検索、分析をサポート。代表例:Microsoft Access、Oracle Database。
  • コミュニケーションソフトウェア:
    メール、チャット、ビデオ会議などを通じてコミュニケーションを行う。代表例:Slack、Zoom。

さてさて、以上で「基本ソフトウェア」、「ミドルウェア」、「応用ソフトウェア」については理解できたかと思います。

ここからはさらに細かく、「基本ソフトウェア」を構成する3種のプログラムについてマスターしておきましょう!!

基本ソフトウェアを構成する3種のプログラム

「基本ソフトウェア」は大きく、「制御プログラム」、「言語処理プログラム(言語プロセッサ)」、「サービスプログラム」の3種のプログラムで構成されます。

それぞれ見ていきましょう!

制御プログラム

制御プログラムとは、コンピュータシステムの動作を管理・制御するためのプログラムです。特に、ハードウェアの動作を指示し、システム全体の効率的な運用を確保します。これは、オペレーティングシステム(OS)やファームウェアの一部として機能することが多く、システムの安定性やパフォーマンスに大きな影響を与えます。

一般的にこのプログラムのことを「カーネル(Kernel)」と呼びます。

カーネルにはさらに、機能を限定(メモリ管理やプロセス管理等)した「マイクロカーネル」と多くの機能を網羅した「モノリシックカーネル」に分類されます。

簡単に制御プログラムの役割も記載しておきます。

  • リソース管理:
    CPU、メモリ、ディスク、ネットワークなどのハードウェアリソースを効率的に管理し、各プログラムが必要なリソースを適切に割り当てられるようにします。
  • タスクスケジューリング:
    複数のプログラムやプロセスが同時に実行される環境において、各タスクの実行順序やタイミングを決定し、システム全体のパフォーマンスを最適化します。
  • デバイス管理:
    入出力デバイス(キーボード、マウス、プリンターなど)の動作を制御し、デバイスドライバを通じてハードウェアとソフトウェアのやり取りを調整します。
  • エラーハンドリング:
    システムエラーや異常状態を検出し、適切な対処を行うことで、システムの安定性を維持します。
  • インターフェース提供:
    ユーザーやアプリケーションがシステムリソースにアクセスするためのインターフェースを提供します。これには、APIやシステムコールが含まれます。

言語処理プログラム(言語プロセッサ)

言語処理プログラム(言語プロセッサ)とは、プログラミング言語で書かれたソースコードをコンピュータが実行可能な形式に変換するためのプログラムです。これには、コンパイラとインタプリタの2種類があり、それぞれ異なる方法でプログラムを実行します。

要はPythonとかJavaとかのコードを読み取るプログラムというわけです。

おまけ:コンパイラとインタプリタって??

コンパイラ:
コンパイラは、ソースコードを一度に全て機械語に翻訳し、実行可能なバイナリファイルを生成します。これにより、プログラムの実行速度が速くなるという利点があります。しかし、コンパイル時間が必要であり、プログラムの変更がある度に再コンパイルが必要です。

★インタプリタ:
インタプリタは、ソースコードを一行ずつ読み取り、その場で実行します。これにより、デバッグやテストが容易になりますが、実行速度はコンパイラに比べて遅くなります。代表的なインタプリタ言語にはPythonやJavaScriptがあります。

サービスプログラム

サービスプログラムとは、企業が提供するソフトウェアやITサービスを支援・管理するためのプログラムです。これには、サポートツール、管理ツール、モニタリングツールなどが含まれます。サービスプログラムは、エンドユーザーに対するサービスの品質向上や運用効率の改善に役立ちます。

まぁ補助的な役割を担うプログラムというわけですね。

最後に

さて今回は、基本情報技術者試験対策として、ソフトウェアの分類と特徴についてまとめました。

ソフトウェアといっても様々な分類や特徴を有しており、それぞれが関係しあってPCの中核的な役割を担っているということがよく分かりましたね。

しっかりとそれぞれの役割を理解し、テストで答えられるようにしておきましょう!

★基本ソフトウェア

ハードウェアと応用ソフトウェア(アプリケーション)を仲介するソフトウェア。基本ソフトウェア = OS。

■制御プログラム

コンピュータシステムの動作を管理・制御するためのプログラム。カーネルとも呼ばれる。

■言語処理プログラム(言語プロセッサ)

プログラミング言語で書かれたソースコードをコンピュータが実行可能な形式に変換するためのプログラム。

■サービスプログラム

企業が提供するソフトウェアやITサービスを支援・管理するためのプログラム。

★ミドルウェア

基本ソフトウェア(OS)と応用ソフトウェア(アプリケーション)の間に位置し、両者の通信を円滑にする。

★応用ソフトウェア

特定のタスクや機能を実行するために設計されたソフトウェア。要はアプリ。

前回まとめた記事も読んでもらえると嬉しいです!

基本情報以外の勉強記事も是非!

オススメ参考書 & Udemy講座

過去問編

兎にも角にも過去問を解かないことには始まりません。解いて解いて解きまくりましょう!

特に以下の参考書は問題数が多いのでオススメです。

この1冊だけ買って、とりあえず1周すれば合格がかなり近くなると思います!

科目A+B両方合わせて4セット収録されてるとかヤバすぎます・・・

知識網羅編

以下は知識網羅編として、講義系の参考書、動画をピックアップしています。

1からしっかりと学習し、知識を身に着けたい方はとてもオススメです。

過去問を解きまくり、不明点を参考書で補う。これが最高の勉強サイクルです~

私が勉強する際に使用していたオススメ参考書は以下です。

上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)

私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。

誰かに解説してもらった方が分かりやすい場合もありますからね~

画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!

コメント

タイトルとURLをコピーしました