ソフトウェア開発とは?携わる業種や運用までの流れを紹介!

ソフトウェア開発とは?携わる業種や運用までの流れを紹介!

ソフトウェア開発に興味があっても、具体的にどのようなものなのか知らなければ、実際の着手にはつながりません。ソフトウェア開発にはプログラミング以外にもさまざまな仕事、工程があります。ここではソフトウェア開発とはどのようなものか、携わる業種にはどのようなものがあるか、運用までにはどのような流れになっているのかなどを解説します。

ソフトウェア開発とは

ソフトウェアとは、コンピューター上で動くプログラムのことです。ソフトウェア開発ではこのソフトウェアを開発します。ソフトウェアと対比されるのは、ハードウェアです。ハードウェアとは物理的なコンピューターのことです。

ハードウェアが物理的なコンピューターであるのに対し、ソフトウェアはこの物理的なコンピューターの上で動くシステムになります。例えばパソコンで考えると、パソコン本体はハードウェア、パソコンの中にあるOSや、そのほかのアプリケーションなどはすべてソフトウェアです。

ソフトウェア開発における課題

ソフトウェア開発はハードウェア開発と違って、物理的にいろいろなものが必要なわけではありません。よく言われるように、パソコン一台あればソフトウェア開発を始められます。しかし、ソフトウェア開発にはいくつかの課題があります。

具体的には、「IT人材の不足」「プロジェクト管理の難しさ」「新しいビジネスの確立」といった課題です。前提として、IT人材は不足しています。ITエンジニアの数自体は多い印象があるかもしれませんが、それ以上に需要が大きいということです。

また求められる課題解決能力、技術力の水準を満たしていないエンジニアが多く、結果的に人材が不足しているという実態もあります。ITエンジニアの仕事は物理的な制約がない分、圧倒的にスキルの高い1人のエンジニアが、一般的なエンジニア100人分の仕事をするといったケースも少なくありません。

次に、ソフトウェア開発は物理的に作業が見えない分、プロジェクト管理が難しいという課題があります。例えば建築などは目に見えて建築物が完成していくので成果がわかりやすいでしょう。

しかしソフトウェア開発は、傍から見ればパソコンに向かってタイピングしているだけであり、「その人が今何の作業をどの程度進めているのか」という状況把握は難しい業務とも言えます。したがって管理者として、「従業員の作業状況を正確に把握してプロジェクトを管理する」ことの難しい分野なのです。

ソフトウェア開発における新しいビジネスの確立については、ITを活用してどのようなサービスを展開するのか、そのための技術をどのように集めるのか、といったことが課題です。今はどの業界でもIT技術を駆使したサービスを提供していて、需要に対しては飽和状態になっています。

新たなサービスへの潜在的なニーズは眠っていても、それが表面化していないので、「どのようなサービスを提供すれば収益につながるのか」という見極めは極めて難しいと言えるでしょう。

ソフトウェア開発の種類

ソフトウェア開発の種類として、「システムソフトウェア開発」「アプリケーション開発」「組み込み開発」が挙げられます。それぞれの内容について解説していきます。

システムソフトウェア開発

システムソフトウェア開発とは、Webブラウザ上で動くソフトウェアを開発することです。インターネット環境さえあれば手軽に利用できるという点にメリットがあります。システムソフトウェアという表現には幅があり、定義の仕方は人によって異なります。

なお、Webブラウザ上だけでなく端末内で動くシステムのことを、システムソフトウェアと呼ぶ場合もあります。しかし現在の業界内の状況として、システムソフトウェアと言えば「Webブラウザ上で動くソフトウェア」を指す場合が多いでしょう。

アプリケーション開発

アプリケーション開発とは、iOSやAndroid、特定目的に応じたプログラムを開発するソフトウェアのことです。ソフトウェアの規模によって、開発に必要な期間やコストが変化しやすいという特徴があります。

パソコンのWindowsやMacOSに特化したアプリケーションもありますが、現状としてはiOSやAndroidといったスマートフォンアプリに特化したアプリケーション開発の案件が主流です。パソコンで使用するシステムに関しては、「WebシステムとしてWebブラウザ上で使用するもの」「特定のOSに依存しないもの」が人気となっています。

組み込み開発

組み込み開発とは、スマートフォンや家電、ロボットなどに直接組み込むソフトウェアを開発することです。近年のAI・IoTの急成長により、需要が急上昇している分野と言えます。組み込み開発の対象は幅広く、昔から使われている家電やパチンコ台などにもソフトウェアが組み込まれています。

そのため業界自体は古くからありますが、現在はスマート家電などの影響で業界が再加熱しています。今後はWeb開発の技術などと垣根がなくなっていくことが予測されるので、元々組み込み開発にはあまり視野を向けていなかった人の注目も集めていくでしょう。

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

ソフトウェア開発に関わる業種として、「エンジニア」「プログラマー」「営業」が挙げられます。それぞれの業種について詳しく解説していきます。

エンジニア

エンジニアは、ソフトウェア開発において主に設計を担う業種です。厳密にはプロジェクトごとに異なり、要件定義やプログラミングをエンジニアが行うケースも多々あります。定義としては「エンジニア業務としての中心は設計」と認識されていますが、実務上は臨機応変な業務対応を求められることも一般的です。

設計には基本設計と詳細設計の2つがあり、エンジニアはこのどちらも行う業種です。

基本設計はシステムの大枠で設計を記載していきます。詳細設計はプログラミングに近い形で、具体的な処理を記載していきます。

処理の内容は日本語で記載しますが、ソースコードを直接書き込む場合もあります。もちろん、エンジニアの作成する詳細設計が具体的であればあるほど、プログラマーがプログラミングを行う工程が楽になるでしょう。

プログラマー

プログラマーの主な担当工程は、プログラミングです。プログラミングはエンジニアが作成した設計書を元に行います。ただし、プログラマーが設計書を作成する場合もあるので注意しましょう。実際のプロジェクトではエンジニアとプログラマーの線引きがあいまいで、「明確な境界はない」といっても過言ではありません。

そのため、プログラマーが設計もまとめて担当するケースは多々あります。逆にいえば、エンジニアがプログラミングを行うケースも多いです。例えば、「プログラミングよりもさらに下流工程のテストに関してはテスターが担当する場合」「プログラマーがテストを行う場合」など、さまざまです。

このように、プログラマーには、「プログラミングにこだわりすぎず幅広く業務を行う意識」が重要です。

営業

IT業界にも営業職は存在し、受託開発営業、パッケージ営業、SES営業などの種類があります。

受託開発営業は、システムのニーズがありそうな企業に対して営業活動を行い、どのようなソフトウェアが必要なのかをヒアリングします。このヒアリングを行った上で自社のエンジニアと相談し、方針を決定した上で契約後、実際に開発プロジェクトを発足します。

パッケージ営業は、自社で開発したパッケージを販売するための営業です。そのため基本的には、顧客に対して必要なシステムをヒアリングして販売するのではなく、パッケージのメリットをアピールした上で販売する形になります。もちろん顧客企業の業務に合わせてある程度パッケージをカスタマイズした上で販売するようなことも可能なので、単にパッケージをそのまま売るだけというわけではありません。

SES営業は、SIerの開発現場に自社のエンジニアを派遣するための営業です。「単価はいくらか」「どれだけの人員・期間が必要なのか」などの交渉を行います。重要なポイントとしては、エンジニアの単価を高く交渉することや、エンジニアのスキルをアピールすることなどです。

ソフトウェア開発の手順

ソフトウェア開発の具体的な手順はプロジェクトによって異なりますが、大枠では以下のようになります。

要件定義→基本設計→詳細設計→プログラミング→単体テスト→結合テスト→総合テスト→運用テスト→リリース→運用・保守→改修・メンテナンス

まず要件定義ではシステム開発全体の概要を決定します。要件定義で全体の概要が決まったら、基本設計でより具体的な設計を行います。ただし基本設計の段階では具体的なロジックは決めません。具体的なロジックを記載するのは詳細設計の段階です。

詳細設計ではロジックの詳細や、場合によってはソースコードをべた書きします。詳細設計が細かく決まっていると、プログラミングの工程では比較的詳細設計通りに実装できます。

プログラミングが完了したら、処理ごとの単体テストと実施し、その後複数の処理をまとめて結合テストを実施します。結合テストで問題がないことを確認したら、総合テストでシステム全体を動かします。

総合テスト後に実際の運用を想定して運用テストを行い、テストをクリアしたら、いよいよリリースです。しかしリリースしたら終わりというわけではなく、運用・保守を行い、必要に応じて改修、メンテナンスを引き続き行います。

まとめ

ソフトウェア開発とは、ハードウェアの中で動くソフトウェアを開発することです。携わる業種は複数あり、運用までの流れの中で役割分担されています。一般的にプログラミングの工程が注目されますが、実はそれだけではなくいろいろな仕事をこなす必要もあるのです。

また、自社でソフトウェア開発を検討しているのであれば、株式会社フェンリルが提供する「アプリ開発支援 for Microsoft Azure」がおすすめです。クラウドネイティブな開発方法を、協働チームとの実践形式で身につけることができるでしょう。

RELATED POST関連記事


RECENT POST「アプリケーション開発・管理・運用」の最新記事


ソフトウェア開発とは?携わる業種や運用までの流れを紹介!

RANKING人気資料ランキング

RECENT POST 最新記事

RANKING人気記事ランキング

サイト掲載へのお問い合わせ