ソフトウェア開発を外注したいが、ソフトウェアはどのように開発されているかわからず、開発会社との打ち合わせが不安という方も多いのではないでしょうか。本記事ではソフトウェア開発の基本的な工程や開発手法などについて解説します。
ソフトウェア開発における工程とは?
ソフトウェアとはパソコン内で動かすExcelやWordといったツールのことです。ソフトウェアのなかにはパソコンに最初から入っているものもありますが、外部から有料で購入してインストールするものも多くあります。
ソフトウェアには個人向けのものもありますが、法人向けのものを中心に開発・提供している企業も多くあります。
ソフトウェアを開発する際は、決められた工程に基づいて開発されることがほとんどです。中には開発に何年もの期間がかかるものもあり、工程に沿って順序良く行うことで、スケジュール通りに開発を進められるようにしているのです。
その工程については開発企業のみならず、開発を依頼する側も知っておくべきことです。開発工程の知識を学ぶことで、各工程での制作物が、発注側の要望通りに作られているかチェックできるためです。
発注側が各工程でチェックすることで、開発が丸投げ状態にならず、こちらの意見を反映させた高品質なソフトウェア開発が実現します。
ソフトウェア開発を行うまでの流れ
ソフトウェア開発の工程を解説します。まず、ソフトウェアの開発を行うまでの流れを解説します。ソフトウェア開発を行うまでは次のような流れです。
-
- 営業
- ヒアリング
- 提案
- 契約
システム開発には大きく自社開発と受託開発があります。自社開発は、自社で作りたいシステムを作り、他の企業やユーザーに販売する形態です。一方で受託開発は、顧客の要望に基づいて開発を行う形態です。ここでは、受託開発の工程について、詳しく解説していきます。
1.営業
受託開発の場合、まずは営業を行う必要があります。顧客に対して自社の強みや実績、技術力などをアピールし、契約を勝ち取れるよう営業します。
ソフトウェア業界の営業は、セールスエンジニアが担当する場合が多いです。セールスエンジニアは単なる営業職ではなく、技術的な観点から自社製品やソフトウェア開発に関する説明を行う職種です。
技術的な説明ができる人が営業した方が、相手の担当者から信頼感を得られ契約の獲得につながりやすいため、ソフトウェア開発会社にはセールスエンジニアという職種があるのです。
2.ヒアリング
営業活動を通してつながった、契約について前向きに考えてくれる企業とは打ち合わせを行います。打ち合わせでは、まずどんなソフトウェアが欲しいのかヒアリングを行う必要があります。
開発したいソフトウェアの種類や追加して欲しい機能、希望する開発予算・期間などをヒアリングし、こちらからも意見を出しながら開発のポイントについて洗い出し、ディスカッションしていきます。
ヒアリングはシステムエンジニアが担当することが多いです。
3.提案
顧客によっては、欲しいソフトウェアをイメージできていない場合もあります。むしろ、理想のソフトウェアをイメージできていない顧客が大半でしょう。開発の知識がない場合、どのような機能が必要かなどを具体的に話せないのは当然のことです。
この場合、開発企業側は「こういったものはどうでしょうか?」と提案を行います。顧客の話の内容から、本当に欲しいソフトウェアが何か推察する必要があります。
さらに、顧客がすでに使っているソフトウェアや競合他社が使っているソフトウェアの分析を行い、顧客にとって必要な機能は何なのか洗い出していきます。
お互いの認識にズレが発生しないよう、顧客との打ち合わせは何回か繰り返されます。新しく思いついたアイデアなどは、その都度顧客と共有するようにします。
4.契約
顧客との打ち合わせを繰り返し、開発企業はソフトウェア開発の企画案を提出します。また、見積書や契約書の作成も行います。
顧客がすべての書類に目を通し、契約内容などに問題がないことを確認したら、顧客と開発企業間で契約を結びます。
契約方法にはさまざまなものがあるのですが、請負契約を結ぶことが多いです。請負契約を結ぶ場合、依頼された制作物を納品した時点で報酬が支払われます。
ソフトウェア開発の基本工程
続いて、ソフトウェア開発の基本工程について解説します。ソフトウェア開発は次の6つのフローに沿って行われることが一般的です。
-
- 要件定義
- 設計
- 開発
- テスト
- 納品
- 運用・保守
このフローに沿って開発することで、手戻りをなくしたりバグを減らしたりするメリットがあります。1つ1つの開発工程について詳しく解説していきます。
1.要件定義
契約後は顧客の要望を元に、システムに必要な機能を洗い出し、明確に定義していきます。ソフトウェアにどのような機能が必要であり、それがどのほどの性能なのか、顧客とも話し合いつつ決めていきます。
要件定義は営業ではなくシステムエンジニアが担当します。
2.設計
続いて、要件定義書を元にソフトウェアの設計を行います。
まずソフトウェアの操作画面などの表側をどうするか決めます。その後、データベースと接続する部分や、データを整形する場面などソフトウェアの裏側の処理内容を決めていきます。
設計書はまずは大雑把に作り、徐々に詳細まで作り込んでいきます。最終的には各プログラムやモジュールの処理内容まで設計書にまとめていきます。
3.開発
続いて、設計書を元にプログラミング言語を使ってソフトウェア開発を行います。
開発ではソフトウェアの種類によって使われる言語が異なります。たとえば、WebシステムならPHPやPythonといった言語が使われることが多いです。
開発工程に入るとシステムエンジニアではなく、プログラマーがメインに稼働します。
4.テスト
続いて、完成したプログラムやソフトウェア全体のテストを行います。
まずはプログラムやモジュール単体でテストし、問題がないことを確かめます。続いて複数プログラムを合わせてテストし、プログラム同士の連携やデータ渡しが上手くいくことを確かめます。
最後はソフトウェア全体でテストを行い、設計通り動いているか、処理速度が遅いなど問題のある箇所はないか確認します。このテストで問題が発覚したり、バグが見つかったりすれば、問題箇所を特定しすぐに修正します。
5.納品
続いて、納品を行います。
納品前に顧客が運用テストを行う必要があります。顧客が自社の環境でソフトウェアを動かし、実際の入力データを活用して正常に動くかどうか確かめます。
運用テストを行い問題がなければ納品となり、報酬の支払いが発生します。
6.運用・保守
ソフトウェアは完成して終わりではなく、その後ソフトウェアの運用・保守が必要です。システムが正常稼働し続けるようメンテナンスを行ったり、トラブル時にプログラムを修正したりしなくてはいけません。
基本的にはソフトウェア開発会社は開発だけでなく運用・保守まで担当してくれます。ただし、運用・保守には別途料金がかかるうえに、どこまでが運用・保守のサポート範囲なのかも企業によって異なりますので、契約内容をよく確認しておくことが重要です。
※関連記事
システムの運用保守とは?外注する際のポイントについても解説
ソフトウェア開発の2種類の手法
ソフトウェア開発には大きく分けて2種類の手法があります。
-
- ウォーターフォール型
- アジャイル型
この2つは開発のやり方がまったく異なります。どちらを選択するかはソフトウェア開発会社の思想や開発するソフトとの相性によります。1つ1つの手法について詳しく解説していきます。
※関連記事
システムやアプリの開発手法とは?メリット・デメリットを解説!
1.ウォーターフォール型
ウォーターフォール型は要件定義から設計、開発、テストまで順番に行う手法であり、ソフトウェア開発において最も広く使われています。
各工程が完了する度に、この進め方で問題がないか、顧客に確認してもらうことも多いです。たとえば、設計の段階が終わったら設計書を顧客にも見せて、要望を満たしているかどうか確認してもらいます。
ウォーターフォール型のメリットは、開発を始める前に各工程の担当者を正確に割り振ることができる点です。また、納期に間に間に合わない場合、他の企業に外注する選択を取ることもできます。
納期に遅れてしまったり、予算をオーバーしてしまったりする可能性が低く、バランスの取れた開発手法と言えます。
ウォーターフォール型のデメリットは、各工程で問題がないことをじっくり確認する必要があるため、トータルの開発期間が長くなる点です。また、途中で仕様変更を行う場合、以前の工程からやり直しをしないといけない場合もあり、余計に時間がかかってしまいます。
仕様変更が少ない開発や大規模でスケジュール管理が重要な開発に向いていると言えます。
2.アジャイル型
アジャイル型は要件定義からテストまで何度も繰り返し、ソフトウェアの完成度を高めていく開発手法のことです。
テストが完了する度に、顧客にソフトウェアを確認してもらいます。顧客は完成途中のソフトウェアを実際に使いながら、「ここはもっとこうして欲しい」という要望を出します。開発企業は顧客からの要望を元に、再び要件定義から開発をやり直していきます。
アジャイル型は一見すると非効率な手法に思えますが、要件定義からテストまで短いスパンで行うため、ウォールフォール型よりも開発期間を短くできます。
また、顧客に実際にソフトウェアを使ってもらったうえで意見を募るため、顧客がより具体的な意見を出しやすくなるメリットがあります。
反面、アジャイル型は開発初期で予算やスケジュールを見積もりにくく、想定以上にコストがかかってしまう可能性もあるのがデメリットです。ただ、仕様変更に強い開発手法でもあるため、アジャイル型を採用する企業は最近増えてきています。
ソフトウェア開発を工程に沿って行う意味
そもそもなぜソフト開発は工程に沿って行うのでしょうか。その理由は次の3つに分けられます。
-
- チームの目的の統一化
- 作業効率の向上
- 顧客との連携を図るため
1つ1つの理由について詳しく解説していきます。
1.チームの目的の統一化
1つ目はチームの目的の統一化のためです。
ソフトウェア開発は基本的に1人では行わず、プロジェクトごとにチームを編成して行います。また、人材が足りない場合は、開発の一部を他の企業に外注する場合もあります。
チーム間で意思疎通を行うには、ある程度決められたフォーマットが用意されていた方が、認識が共通化されるため、齟齬が起こりにくく、余計な工数がかからないのです。
どの手順で開発するのかあらかじめ共有できていれば、次に何をやるべきなのかわかりやすくなり、全員が同じ方向へと向かうことができます。
2.作業効率の向上
2つ目は作業効率の向上のためです。
開発手順に沿って行うことで作業のやり直しを最小限に留めることができます。
たとえば、家を建設する場合を考えてみてください。家を建てる際に設定書を書きながら同時に組み立てていった場合、設計を変更するたびに組み立て方を変える必要が出てきます。
それを同様にシステム開発でもまずは設計を入念に行い、それから開発へと入っていくのが基本です。
3.顧客との連携を図るため
3つ目は顧客との連携を図るためです。
ソフトウェア開発を各工程に分けることで、各工程が終わるたびに顧客が介入することができます。要点定義や設計書作成などが終わるたびに、顧客が中身をチェックすることで、「要望通りのものになっているか」確かめることが可能になります。
このようにソフトウェア開発では、開発企業と顧客が連携するのが重要となります。
最後に
この記事で説明してきた内容をまとめると以下のとおりです。
-
- ソフトウェア開発を行うまでの流れ:営業⇒ヒアリング⇒提案⇒契約
- ソフトウェア開発の基本工程:要件定義⇒設計⇒開発⇒テスト⇒納品⇒運用・保守
- ソフトウェア開発を工程に沿って行う意味:チームの目的の統一化/作業効率の向上/顧客との連携を図るため
ソフトウェア開発を外注する場合、工程を知っておくことで開発会社と連携を取りやすくなるメリットがあります。
また、ソフトウェア開発を外注するなら豊富な実績を持つ開発企業を選定することも重要です。開発企業によって保有する技術や得意分野は異なるため、自社に合った開発企業を選ばないと、最適なソフトウェアを提供してくれない可能性もあります。
どの開発企業を選ぶべきか分からない場合、株式会社エイチビーラボにご相談ください。
株式会社エイチビーラボでは、ベトナムに特化したオフショア開発サービスを提供しております。お客様のニーズに沿ったソフトウェア開発には豊富な実績があります。ソフトウェア開発でお困りの方は、ぜひお気軽にお問い合わせください。ご相談から、開発、運用まで親身にサポートいたします。