エンジニア支援

ソフトウェア開発とは?開発までの主な流れ

「ソフトウェア開発」という言葉を聞くと「ちょっと難しそう」という疑問を抱く方も多いのではないでしょうか。
ここではソフトウェア開発を検討する企業担当者の方に向けて、ソフトウェア開発の意味や種類、開発の流れ、システム開発との違い、外注先の選び方などを解説しています。

ソフトウェア開発とは

種類 意味
ソフトウェア コンピューター上で動作するプログラム、目に見えないもの
ハードウェア コンピューターを構成する機器、目に見える物理的なもの

そもそもソフトウェアとは、「コンピューター上で動作するプログラム」を指す言葉です。表計算ソフトの草分け的存在である「Excel」、「Word」など、世界的に使用されるソフトウェアは数多く存在します。分かりやすく言えば、この「ソフトウェアを設計開発してリリースする」のが、ソフトウェア開発なのです。ほかにも、アプリケーションやゲームソフト、OS(オペレーティングシステム)の開発なども、広義で言えばソフトウェアに開発に該当します。

このソフトウェアに対し、サーバーやディスプレイ、プリンターといった機器のことをハードウェアと呼びます。それぞれの違いとして「目に見えないものがソフトウェア」、「目に見える物理的な存在がハードウェア」という認識で覚えても良いでしょう。違いを理解しておけば、開発におけるコミュニケーションの齟齬も発生しにくくなります。ちなみに、ソフトウェアとハードウェアを体系的に組み合わせ、使用できる状態にしたものを「システム」と総称します。

ソフトウェア開発の種類は?

ソフトウェア開発は「開発するもの」に応じて、以下の3種類に分けられます。具体的な開発方法を学ぶ前に、基礎知識の理解を深めるため、それぞれの特徴を覚えておきましょう。

●Webシステムソフトウェア

Webシステムソフトウェアとは、その名の通り、Webブラウザ上で動くソフトウェアのことです。代表例として、Googleがリリースするメールサービスの「G-Mail」や、データ共有システムとして知られる「Dropbox」などが該当します。パソコンやスマートフォンなどの影響を受けず、インターネット環境があれば利用できる手軽さが、Webシステムソフトウェアの魅力です。ネット上で動かす特徴がある分、開発には通信技術に精通したエンジニアが必要となることもあります。

●アプリケーションソフトウェア

アプリケーションソフトウェアとは、特定目的に応じてプログラムを作成したソフトウェアを指します。表計算や画像編集、メール、プレゼンテーションソフトなど、ユーザーが行いたい作業をスムーズに実行するために特化されたソフトウェアです。特定の機能だけを搭載したソフトウェアのほか、複数の機能を組み合わせて構成されたソフトウェアなども多く、規模に応じて開発期間や費用が変化しやすくなっています。

●組み込みシステム

組み込みシステムは、スマートフォンや家電、ロボット、機械に組み込まれたコンピューターシステムのことです。Webシステムソフトウェアやアプリケーションソフトウェアのように、用途に合わせて機能を使い分けるというよりは、ひとつの機器の機能に特化したシステムを組み込むことを言います。例えば、洗濯機に「洗濯機能」と「乾燥機能」をつけるといったイメージです。機器を制御するという特性上、組み込みシステムの開発にはハードウェアに精通したエンジニアが欠かせません。

ソフトウェア開発に関わる職業

ソフトウェア開発に関わる職業と聞くと、エンジニアやプログラマーなどを思い浮かべる方も少なくありませんが、実際は「営業担当者」なども開発に携わります。これは、製品としてリリースされるまでのすべてのプロセスが「ソフトウェア開発」に含まれるためです。以下では、各関係者が行う具体的な業務を紹介します。

●エンジニア

ソフトウェア開発に携わるエンジニアは、「ソフトウェアエンジニア」とも呼ばれます。ソフトウェアエンジニアの仕事は、PCやスマートフォンで動くアプリケーションの開発方針を決めることです。自動車や家電に使用されているソフトウェアの開発にもソフトウェアエンジニアが関わっています。

一般的に「エンジニア」というとシステムエンジニア(SE)を思い浮かべる方も少なくありませんが、システムエンジニアとソフトウェアエンジニアでは関係する工程が厳密には異なります。端的に言えば、システムエンジニアは「システム全体の要件定義や設計を行うこと」が多くなっています。ソフトウェアエンジニアよりも、上流の工程を作業するのがシステムエンジニアなのです。

●プログラマー

プログラマーの主な仕事は、ソフトウェアのプログラミングをすることです。仕様通りにソフトウェアが動くよう、様々なプログラミング言語やフレームワークを使って、ソフトウェアを完成させます。エンジニアがソフトウェアの設計部分を担うのに対し、実際の開発を担うのがプログラマーなのです。

とはいえ、企業によっては「ソフトウェアエンジニアがプログラミングを担う」というケースも少なくありません。反対に、プログラマーがソフトウェアの開発方針を決める場合も多く、エンジニアとプログラマーの担当領域は曖昧となっています。以上の点を踏まえれば、「プログラマーはプログラミングスキルを持っている人」という認識でも良いでしょう。

●営業

ソフトウェア開発において、営業担当者が関わるのは「受託開発」や「パッケージ営業」の段階です。

受託開発では、営業担当が依頼者に「どんなソフトウェアが必要なのか」をヒアリングした上で、エンジニアやプログラマーが開発を行います。いわば、受託開発における営業とは「依頼者とエンジニアたちとの間を繋ぐ存在」です。開発工程に関する専門的な知識と、それを噛み砕いて依頼者に説明するスキルが求められます。

受託開発に対してパッケージ営業は、パッケージソフトを売るための営業を行います。こちらの方が一般的な「営業職」のイメージに近いかもしれません。自社商材の性能や魅力をしっかりと把握して顧客に伝えるという「営業スキル」が求められます。

ソフトウェア開発における「マーケティング」とは

関わる職業からも分かる通り、ソフトウェア開発はプログラミングの知識を活かして組み立てる工学的な面と、ユーザーのニーズを考慮しながら製品としてのデザインや販路を考えるマーケティング的な面があります。

工学的な側面はエンジニアやプログラマーが、マーケティング的な側面は営業担当者(またはマーケッター)が担当するのが一般的です。両方の知識や経験を兼ね揃えた人材が「プロダクトマネージャー」、「プロジェクトマネージャー」として開発全体を取り仕切るケースもあります。

ソフトウェア開発で起こりがちなのが工学面の担当者とマーケティング面の担当者との間のコミュニケーションの食い違いです。お互いの仕事の内容に対する無理解からトラブルが生じ、開発全体の流れがストップしてしまうこともあります。このようなケースを防ぐためには、プロジェクト全体をマネジメントの観点から推進してくれるマネージャーが必要となるのです。

関連記事

TOP