ソフトウェア開発とはコンピューター上で動作するプログラムを顧客ニーズに合わせて開発することです。この記事ではソフトウェア開発の種類や一般的なプロセス、また課題などについて詳しく紹介していきます。
ソフトウェア開発とは?
ソフトウェア開発とは、コンピューターで動作するプログラムであり、WordやExcelなどのソフトウエアやYahoo! MailなどのWebシステムなどが挙げられます。システムやアプリなどもソフトウェアなどに含まれます。
パソコン本体やモニター、プリンターなどはハードウェアとよばれる機器です。ハードウェアとソフトウェアの開発では求められるスキルが異なります。
プログラミングとの違い
プログラミングとは、コンピューターに動きの指令をして自動的に動作をするようにすることです。プログラミング言語を活用してソースコードを作成します。ソフトウエア開発において、プログラミングは1つのプロセスです。
プログラミングをする場合は、依頼者と何度も打ち合わせをすることで仕様書や設計書を作成する必要があります。プログラミングは作成するだけでなく、ソフトウェアが設計書通り動作をするか確認しましょう。
システム開発の違い
ソフトウェア開発はシステムで動くアプリケーションが対象ですが、システム開発は仕組みが対象です。ソフトウェア開発はExcelやWord、gmailなどが対象であり開発をすることが目的です。
システムはスーパーのレジや銀行のATMなど仕組みそのものが対象です。しかし、ソフトウェア開発はシステム開発に含まれる場合もあります。
ソフトウェア開発の種類は3つ
ソフトウェア開発には次の3種類があります。
- Webシステムソフトウェア
- 組み込みシステム
- アプリケーションソフトウェア
1.Webシステムソフトウェア
Webシステムソフトウェアとは、ブラウザで利用できるソフトウェアです。例えば、データ共有できるDropboxやGoogleのメールサービスであるGmailなどが挙げられます。
パソコン以外にスマートフォンやタブレットでもインターネット環境があれば利用可能です。インターネット環境で利用できるサービスのため、エンジニアは通信技術に通信していることが求められます。
2.組み込みシステム
組み込みシステムとは、機械やロボット、家電、スマートフォンなどに組み込まれているシステムです。アプリケーションソフトウェアやWebシステムソフトウェアのようにそれぞれ目的に合わせた機能を搭載するのではなく、1つの機器の機能に必要なシステムを組み込んでいます。
例えば洗濯機であれば洗濯機能以外に乾燥機能を組み込むことです。このため、組み込みシステムに対応するためにはハードウェアの知識が求められます。
3.アプリケーションソフトウェア
アプリケーションソフトウェアとは、メールや表計算、画像編集などそれぞれ特定の目的を達成するためにプログラムを作成したソフトウェアです。ユーザーの目的を達成するために特化していることが必要です。
特定の機能のみを含んでいるアプリケーションソフトウェアの他、複数の機能を利用できる場合もあります。
ソフトウェア開発の手法は4つ
ソフトウェア開発には次の4つの手法があります。
- ウォーターフォール型
- アジャイル型
- プロトタイプ
- V字モデル
1.ウォーターフォール型
ウォーターフォール型とは、ソフトウェア開発におけるプロセスを分割することで時系列に沿ってそれぞれのプロセスを進めていくシステム開発のことをいいます。要件定義から設計、開発、テストとプロセスを進めて最終的に導入まで進めていくことが特徴です。
最初のプロセスである要件定義においてリソースや予算、スケジュールなどを設定することからプロジェクトの管理がしやすいソフトウェア開発手法です。
2.アジャイル型
アジャイル型とはソフトウェア開発のプロセスにおいて機能別に分割する方法で、必要度の高い機能から順番に計画からテストまでのプロセスを進める開発方法です。それぞれ案件にもよりますが、一般的に1〜4週間を目安に実装できる単位に分割します。
アジャイル型のメリットとして、それぞれの機能ごとに結果を確認しやすい点です。さらに、最初から要件や仕様を決めないため開発段階で修正がしやすい開発手法だといえるでしょう。
3.プロトタイプ
プロトタイプとは、ウォーターフォール型を改良したもので作品を前もって作成して依頼者に確認してもらう開発方法です。そのためプロセスとしては作品をまず作りテスト行い修正から本開発へと進みます。
プロトタイプ開発は試作品を基準として制作と修正を繰り返し行うことによってより依頼者の求めている開発ができます。そのため開発をする前に依頼者が欲しい機能を追加した場合でも対応可能です。
しかしプロトタイプ開発はまず試作品を作ることから開発期間が長くなる特徴があります。
4.V字モデル
V 字モデルとは厳密に言えば開発手法ではありません。しかし開発手法に関連してよく利用される言葉です。
ソフトウェアの開発プロセスにおいて、要件定義からリリースまでのプロセスとテスト全体的な相関をV字で表示します。V字モデルを確認することによって、どのプロセスにどのテストが行われているか把握しやすくなるのが特徴です。
ソフトウェア開発における流れは6ステップ
ソフトウェア開発は一般的に次のプロセスで進められます。
- 要件定義
- 仕様や全体像の設計
- 開発
- テスト
- 納品
- 保守・運用
ステップ1.要件定義
ソフトウェア開発においてまず行われるのが要件定義です。要件定義とはソフトウェア開発の目的や予算、必要な技術機能など開発において必要なことを明確に提示することです。
要件定義において必要な機能や変更してはいけない点などを関係者の間で共通の認識を持つことが重要です。関係者の間で要件定義を共有することによって、 ソフトウェア開発のゴールがぶれないメリットがあります。
ステップ2.仕様や全体像の設計
要件定義を完成すると次にソフトウェア全体像や仕様などを設計することが必要です。設計は必ず要件定義を基準とする必要があり、実際にどのようにソフトウェアを構築するかを決めていきます。
ソフトウェアの設計には基本設計と詳細設計の2種類があります。基本設計は誰が見てもわかるような設計書であり、詳細設計とはプログラマをはじめとしたスキルを持った人がわかる設定方法です。
基本設計には依頼者が確認する内容が含まれている必要があります。 具体的には昨日明確化したりプロセス工程をわかりやすくすることが必要です。詳細設計はソフトウェア内部のことが多く含まれており、内部仕様を詳細に定義することが一般的です。
ステップ3.開発
仕様書や設計書ができあがると開発に進みます。開発は設計書に基づいて進める必要があり、プログラマーがプログラミング言語を使って作り上げます。
開発が終わった段階でソフトウェアとして利用できるようになります。ソフトウェア開発を行う上で誰もがわかるような明確なソースコードで記述することが必要です。
ソフトウェア開発は開発して終わりではなく運用する必要があるため、運用者にも分かりやすいようなソースコードが求められます。
ステップ4.テスト
プログラミング開発が終了すると次に仕様書通りに動作するかを確認します。十分なテスト内容でなければリリースした後に不具合やエラーなどが発覚する場合があるのです。
ソフトウェアのテストには機能ごとにテストを行う単体テストや、複数の機能やシステムなどと連携させて検証する結合テスト、システム全体の動作を確認する総合テストなどがあります。
ステップ5.納品
テストを行い問題がない状態まで進められたら納品可能な状態となります。納品する際は全ての社員に納品をする心地をすることが必要です。
告知においてはソフトウェアのマニュアルを共有することが必要であり、場合によっては操作説明会をする必要があるでしょう。スマートフォンのアプリを納品する場合は、 Apple StoreやGoogle Playなどに申請をして審査に通過しなければいけません。
ステップ6.保守・運用
ソフトウェアは納品して終了とはならず、運用や保守作業が必要になります。依頼者がソフトウェアを運用していく上で安定して稼働させるために管理や関心をすることが必要です。さらに不具合があった場合は早急に復旧作業が求められます。
どれほどのテストを行ったとしても、ソフトウェアを運用する場合はトラブルが起こる可能性があります。 そのため起こり得るトラブルを想定して早急に対応できるような仕組みを作ることが重要です。
ソフトウェア開発における3つの課題
ソフトウェア開発において次の3つの課題が挙げられています。
- IT人材が不足している
- プロジェクト全体の動きの流れが予測しにくい
- 妥当な金額を把握しにくい
1.IT人材が不足している
日本ではソフトウェア開発に携われるようなIT人材が不足しています。さらに、少子高齢化社会や働き方改革の影響があり人材の採用が難しい状況です。
そのためそれぞれの企業において限られた人材リソースの中で、IT人材を育てる必要があります。もし社内で十分なIT人材の確保が難しい場合は、アウトソーシングをする方法もあります。
2.プロジェクト全体の動きの流れが予測しにくい
ソフトウェア開発はプロジェクト全体の流れが予測しにくい特徴があります。ソフトウェア開発はプログラマーやエンジニアなど様々な担当者が関わることが一般的です。
そのため、それぞれのプロセスにおいて進捗状況の確認が容易ではありません。さらに一部のプロセスを外注したり客先への派遣を行ったりするなど、一括してプロジェクト全体の動きをつかむことは難しいのが現状です。
3.妥当な金額を把握しにくい
ソフトウェア開発において妥当な金額を把握しにくく、予算面で困っているケースは少なくありません。ソフトウェア開発会社によって提示している料金が異なり、相場を把握しにくい特徴があります。
そのため複数のソフトウェア開発会社に見積もりを依頼することによって、相場を把握することが重要です。
ソフトウェア開発でよくある3つの質問
ソフトウェア開発においてよくある次の質問をまとめました。
- ソフトウェア開発に関わる職業はどのようなものがありますか?
- システム開発の外注にかかる費用相場を知りたいです
- ソフトウェア開発の外注先を選ぶ際のポイントはありますか?
質問1.ソフトウェア開発に関わる職業はどのようなものがありますか?
ソフトウェア関連に関わるのは主にシステムエンジニアやプログラマー、さらに営業担当者が挙げられます。システムエンジニアは、上流工程の設計を行うことが主な業務内容です。システムエンジニアの仕事はプロジェクト全体的な品質に関わるため重要な業務です。
プログラマーは、システムエンジニアが作った設計書や仕様書を基準として、プログラムを作成する下流工程を担当します。営業担当者は、ソフトウェアの依頼者とどのようなソフトウェアが目的であるのかをヒアリングして、エンジニアやプログラマーと共有することが主な業務です。
これらのようにソフトウェア開発はそれぞれの担当者が情報を共有することによって、顧客満足度を上げることが可能です。
質問2.システム開発の外注にかかる費用相場を知りたいです
システム開発はシステム内容や担当する開発会社によっても異なりますが、平均相場は233万円からといわれています。 システムにも様々な種類があり簡易顧客システムであれば15万円前後から、Webシステムであれば120万円からが相場となっており、複雑な業務システムであれば400万円以上必要な場合もあります。
質問3.ソフトウェア開発の外注先を選ぶ際のポイントはありますか?
ソフトウェア開発をアウトソーシングする場合は次の点を基準にすると良いでしょう。
- 必要としているソフトウェアと制作会社の得意分野が同じであるか
- 必要としているソフトウェアの制作実績があるか
- 複数の制作会社に見積もりを依頼する
ソフトウェア制作会社によってもそれぞれ得意分野が異なります。そのため必要としているソフトウェアの実績が十分であり脳波を持っている外注先を選ぶようにしましょう。
また、それぞれサービス内容や価格帯が異なるため必ず複数の制作会社に見積もりを依頼することをお勧めします。
まとめ
ソフトウェア開発とは、コンピューター上で利用できるプログラムを開発することです。依頼者のニーズに合わせて利用できるようなプログラムを開発してソフトウェア製品に落とし込むことが業務内容です。
ソフトウェア開発は要件定義から開発、リリースから運用、 保守作業まで幅広い業務が必要です。 そのため多くの担当者が携わっており、依頼者のニーズをそれぞれの担当者が共有していなければ顧客満足度が下がることになります。
システム開発を外注に依頼する場合は、自社が必要としているノウハウや経験を持った制作会社を選ぶようにしましょう。