ソフトウェアは、コンピュータ上において何らかの処理を行うプログラム。
プログラミングされており、人間の特定の処理に応じて反応する、アプリケーションソフトウェアやOSなどのオペレーティングシステムが、ソフトウェアに分類されます。
ソフトウェアと一言で言っても、どのハードウェアに載せるか、どんな処理を担わせるのかでまったく別物を指します。
※本ページにはPRが含まれます。
目次
ハードウェアと対比で語られるソフトウェア
ソフトウェアの対義語に、ハードウェアがあります。ハードウェアは、ソフトウェアを納めるための容れ物。ハードウェアがないとソフトウェアを動かすことができないのです。ソフトウェアは、ハードウェア内の補助記憶装置の中に記録されており、ソフトウェアの実行時に補助記憶装置から主記憶装置で読み込まれます。そのCPUにおいて、データの移動やソフトウェアの計算などの処理を行われます。
ソフトウェアがコンピュータにとっての「心」や「脳」だとしたら、ハードウェアは「身体」を指すものでしょうか。
OSとアプリケーションソフトウェア
ソフトウェアの中でも重要な位置づけをされるのが、「オペレーションソフトウェア」です。オペレーションソフトウェアは、OSとも訳され、いわばコンピュータの「人格」です。もしくは「魂」とも言えるでしょう。
オペレーションシステムが入っていないと、コンピュータはコンピュータとしての役目を果たすことはできません。オペレーションシステムで有名なのは、かのWindowやMacがあたります。
OS以外のソフトは、「アプリケーションソフトウェア」と呼ばれます。アプリケーションソフトウェアは、オペレーションシステムソフトウェアと違い、もっと限定的な処理を命じられたソフトウェアです。
組み込みソフトウェア
私たちが普段利用している家電、または工場で稼働して働いているロボット、それらにもソフトウェアが入っています。
家電やロボットに入っているソフトウェアを、「組み込みソフトウェア」と呼ばれます。組み込みソフトウェアを作るエンジニアのことを、「組み込みソフトウェアエンジニア」と呼んだりします。
ソフトウェア開発の流れ
実際に、企業のソフトウェアが開発されて、客先に納品されるまでの流れを概要で見てみましょう。
SEが顧客の要望をヒアリング
まずは、SEがソフトウェア開発を発注した企業の要望を聞きます。どのようなソフトウェアがほしいのか。そのソフトウェアにはどんな機能がほしいのか。どんな人が使うのか。細かく要望を聞きます。この作業はとても重要であり、ここではSEに、要望を正しく効くヒアリングスキルが求められます。
プログラムの設計
SEがヒアリングした顧客の要望に沿って、ソフトウェア開発の設計を行います。この時「設計書」を作っておけば、その後の流れがスムーズになるだけでなく、後にバグが起きた時の修正にも役立ちます。
プログラマーが設計通りにプログラミング
設計が完了したなら、その設計に基づいてプログラマーがプログラミングを行います。開発するソフトウェアの種類、機能、規模などにより、使われるプログラミング言語の種類は変わります。
開発工程や、プログラミングに関わるエンジニアの人数なども差が出てきます。
デバッガーがバグの修正を行う
プログラミングが終わったら、次はソフトウェアのバグ取りです。デバッガーがまずバグがあるかどうかを確認、そしてバグを修正していきます。このデバッグ作業には終わりがなく、デバッグ機能が連日続くことで、担当者の作業が多くなり負担が重くなることがしばしばです。
納品
ソフトウェアが出来上がったら、そのソフトウェアを顧客に納品して終わり…、といきたいところですが、追加の要望が舞い込むことも。当然エンジニアは追加の要望にも応えなければなりません。
ソフトウェアの開発がエンジニアの醍醐味
プログラマーやシステムエンジニアが主に担っている仕事こそ、この「ソフトウェアの開発」です。
顧客の要望にかなったシステムのプログラミングなどの開発において、自分のスキルが活きている感覚があった時は、エンジニア冥利に尽きるというものではないでしょうか。
まとめ
ソフトウェアとは、コンピュータに内蔵する、コンピュータにとっての「人格」「心」のようなもの。
「身体」の役どころがハードウェアだったとしたら、そこに搭載するソフトウェアの重要度はわかってもらえるでしょうか。ソフトウェアが無いとコンピュータはコンピュータとしての役目を真っ当することができないのです。
どのように処理するか、どんな機能を載せるのか、それは開発に携わるエンジニアのスキルしだいでしょう。
ソフトウェアはコンピュータ以外にも搭載されており、家電、ロボット、サーバーなど、活躍の場は多岐に渡ります。