ソフトウェア開発を依頼する場合、まずは見積りを出してもらうことが一般的です。しかし、ソフトウェア開発の見積りにおいてチェックすべきポイントや、項目の意味がよくわからない方も多くいるでしょう。
この記事では、ソフトウェア開発ではどのような項目に費用がかかるのか、見積りの算出方法やチェックしたいポイントと併せてご説明します。
見積書を出してもらったところで、そもそも何のための費用が書かれているのかを把握していなければ、適切な金額なのか判断できません。
ソフトウェア開発では、おもに以下のような項目に費用がかかります。
ソフトウェア開発における要件定義とは、エンジニア・プログラマーなどの課題・目的を明確にする作業です。
一方で要求定義とは、開発に関する専門知識を持っていない人(事業担当者など)が、ソフトウェアにどのような機能を開発したいのかを技術者に伝える作業。「○○の課題を解決するために、□□のような機能を実装したい」というように、ソフトウェアに求める具体的な要求内容を定義する工程といえます。
一般的に、要件定義・要求定義には数日かかります。
関連記事:要件定義と要求定義の違いとは?それぞれの考え方や定義書に記載すべき項目
設計は、要件定義で決めた内容に合わせて、ソフトウェアの中身を具体的に設計していく作業です。
設計には、大きく分けて以下の2種類があります。
・基本設計(機能一覧・データの入出力などの設計)
・詳細設計(サーバー・データベースなどに設計)
これらは、内容によってさらに外部設計・内部設計に分類されます。
外部設計は、デザインや外観など、いわゆるUI(ユーザーインターフェース)に関する設計です。UIは、ユーザーが利便性や魅力を直接感じる部分です。最終的なユーザー側の使用感を重視するためにも、UIのデザイン費用はある程度確保しておいたほうが、満足度の高いソフトウェアが開発できるでしょう。
一方で内部設計は、ソフトウェア内部の機能の設計で、プログラマーやエンジニアなどの専門の技術者が主体となって行なわれます。
なお、要件定義・要求定義と同じように、設計にも数日は必要です。
上記の設計書にしたがって、実際にプログラミングを行なう作業です。
なお、開発にはフロントエンド開発とバックエンド開発の2種類があります。
フロントエンド開発とは、ユーザーの目に見える部分の開発のことです。実際にユーザーがクリックする部分や外観など、視覚的な情報の開発を行ないます。
一方バックエンド開発とは、ユーザーに見えない部分の開発のことです。ソフトウェアの内部処理や、特定の機能を付けるためのプログラミングなど、実質的な開発を行ないます。
なお、要件定義~設計の工程を経て、ご契約から実際に開発を開始するまでは概ね10日~規模により20日程度要する場合もあります。開発自体の工数は開発規模によっても変動しますが、MVP開発を例にとると、平均2~3ヵ月ほどかかります。
開発したソフトウェアが設計書どおりに動くか、動作にトラブルがないかなどをテストする作業です。テストは、規模により2週間~1ヵ月程度要します。
不具合が見つかればその都度修正し、問題がなくなれば正式にリリース(納品)されます。
具体的には、「ソフトウェアを使う人の要求をどれくらいの満足させられるか」の観点で様々な角度からテストを行います。
・機能適合性:満足度
・互換性:他システムとの共有度合い
・移植性:他のハードウェアへの移植できる度合い
・保守性:効率的に修正ができるか
・信頼性:正確に実行できる度合い
様々な負荷をかけたり、レスポンスの速さなどを通じてテストを行なっていきます。時間としての工数がかかるので、ソフトウェアが複雑になるほど費用も高くなります。
ソフトウェアが完成し、実際に導入する際には多くの初期設定が必要です。さらに、使い方をレクチャーしたり、マニュアルを準備したりと、スムーズにソフトウェアを運用できるようにサポートする導入支援を行なうこともあります。
このように、ソフトウェアの導入時には導入・導入支援費用が必要になります。
ソフトウェアを開発・運用するにあたって、ハードウェアやサーバーなどの機材を購入する場合もあります。
例えば、ソフトウェア開発用のPCが不足していれば、リースや購入などで準備する必要があるでしょう。また、Web上で動かすソフトウェアであれば、WebサーバーやWebアプリケーションサーバーが必要です。
開発会社に打ち合わせに来てもらう場合などは、交通費が見積りに含まれることもあります。
スケジュール・進捗管理などに関して、費用が発生することもあります。
開発が終わってからも、アップデートや修正などを随時行なうための保守・運用費用が発生します。
保守・運用では「日々、システムを動かしながら改修や修理を行う作業」です。いくらソフトウェアを開発しても、それが常時動くような状態にしておかないといけません。
そのためには、システムを「監視」することが重要です。監視を通じて、バグの改修やデータベースの整備をはじめ、サーバー機器の保守を行います。
また、いつトラブルが起きても対処できるように手順書やマニュアルを作るといった個とも行います。
なお、年間でかかる保守運用費用は、開発費用の15%程度が相場といわれています。300万円で完成したソフトウェアであれば、年間45万円が必要になる計算です。
当然プロジェクトによって違いはありますが、およそ開発費用の10%~20%程度と思っておくとよいでしょう。
関連記事:プロダクト開発とは?プロセスや流れ・フレームワークを解説
ソフトウェア開発で見積りを算出するには、さまざまな方法があります。ここでは、代表的な4つの算出方法について見ていきましょう。
類推見積(トップダウン)は、過去の似たようなケースの開発事例を参考にして、工数や各項目の金額などを算出する方法です。
共通点が多いプロジェクトを参考にするので、「見積額と実際にかかる費用に大きな差が生じにくいこと」「スピーディーに見積りを出せること」などがメリットです。
一方、初めてのパターンのソフトウェアを開発する場合など、過去に同じような開発事例がなければそもそも使えないことがデメリットといえます。
係数モデル(パラメトリック見積)は、要件定義や設計などの開発に必要な作業を数値化し、特定の数式に当てはめて費用を算出する方法です。
例えば、過去の開発実績から「〇〇の機能を1つ実装するのに必要なコストが□□円」と分かっていれば、「今回は〇〇と同じような機能を5つ実装するから、□□×5円が必要」と計算できます。
今まで蓄積されたデータから算出する点は類推見積と同様ですが、係数モデルでは機械的に計算を行なうため、より精度の高い見積りが可能です。ただし、参考にできるサンプル数が少ないと、正確な計算ができないデメリットがあります。
ボトムアップ(工数積み上げ)は、開発するソフトウェアの完成形を想定し、必要な構成要素を洗い出し、工数の計算を行なう方法です。必要な作業と工数を確認しながら計算するので、見積りの精度を高めることができます。
しかし、高精度である一方、作業範囲が広すぎる・工数が多すぎるなど、開発規模が大きいプロジェクトには適していません。
プライスツーウィン法は、予算に合わせた作業の見積を行なう方法です。「この金額ならこのような開発ができる」というように、予算と開発内容がイメージしやすく、限られた予算で開発を進めたい場合などには有効でしょう。
ただし、あくまで予算内でできることしか見積りには含まれないため、多少の妥協点が出てきたり、後々追加したい機能が見つかったときには別途予算が必要になります。
なお、最低限の予算で開発を進めたい場合、必要な機能のみを実装しながら開発するMVP開発という手法がおすすめです。MVP開発については、以下の記事で詳しく説明しているので、ぜひご覧ください。
関連記事:MVP開発とは?目的と新規事業立ち上げで必要な3つの理由と開発成功のポイント
ソフトウェア開発の見積書を見る際には、項目と金額をただ確認するだけではなく、
以下の点もチェックしましょう。
ソフトウェア開発には、要件定義・要求定義から、テスト・リリース、その後の保守・運用までさまざまな工程があります。プロジェクトによっては、作業範囲がテストまでだったり、リリースや保守・運用までだったりとバラつきがあります。
そのため、見積書を見るときには、依頼したい範囲と見積書の作業範囲が合致しているか確認しましょう。開発会社が請け負う部分を明確にすることで、責任範囲の共有もでき、後々のトラブルも防げます。
ソフトウェア開発では、設計やプログラミングなどの実質的な開発作業だけではなく、要件定義や事前調査などの作業も発生します。また、スケジュール管理や品質管理など、さまざまな管理工数も必要な工数として含まれます。
このような工数が適切に計算されているのか、不明瞭な工数の作業がないかなどは必ず確認しておきたいポイントです。
開発には、修正や変更がつきものです。大きなトラブルや変更が生じた場合、当初の予算のみで開発できるとは限りません。このような開発リスクが考慮されていれば、「トラブル対応費」や「修正費」のような項目が見積書に入っているはずです。
リスクにどのように対応するかが明確でない場合、具体的な修正対応に関して質問したほうがよいでしょう。
ソフトウェア開発では、請負契約・準委任契約のいずれかで契約することが一般的です。
・請負契約:ソフトウェア(仕事)の完成に対して報酬を支払う契約。
・準委任契約:成果完成型と履行割合型の2種類があり、それぞれ以下のとおり。
【成果完成型】:得られた成果(ソフトウェアの完成)に対して報酬を支払う
【履行割合型】:成果(ソフトウェアの完成)ではなく、契約内の適切な仕事に対して報酬を支払う
履行割合型の準委任契約の場合、開発を依頼していたソフトウェアが完成しなくても、仕事自体が実施されていれば費用が発生します。後々トラブルに発展しないよう、どのような契約内容になっているかも確認しておくことが重要です。
開発したい内容になっているか、予算を伝えている場合は予算内になっているか、希望する開発方法になっているかなど、要件・要求が反映されているかも確認しておきましょう。
完成形のイメージを正確に共有できていないなど、そもそも開発内容のすり合わせができていない状態で開発を進めても、修正・変更が生じるリスクが高まります。余計なコストやトラブルを発生させないためにも、見積りの段階で納得のいくものになっているかチェックが必要です。
なお、見積りを依頼する際には、その時点で開発したいソフトウェアの概要が決まっていると思います。どのような機能を実装したいのか、どのような課題を解決したいのかなど、ソフトウェアの詳細についてできるだけ詰めておくことで、開発会社も正確な見積りを出しやすくなるでしょう。
関連記事:新規事業立ち上げを成功させるには?フレームワークや手順を徹底解説
ソフトウェア開発には、要件定義・要求定義〜テスト・リリース、保守・運用などさまざまな工程があります。
見積書を見る際には、各工程の作業工数や範囲が明確か、開発リスクは考慮されているかなどに注意し、不明点がないかを十分確認してください。疑問に思う部分があれば、遠慮なく質問しましょう。
DeFactoryでは、ソフトウェア開発の立ち上げ支援・各フェーズのフレームワーク活用法もサポートしています。その他、アイデア着想、ユーザーヒアリング、テストマーケティング、アジャイル・MVP開発と、ソフトウェア開発における立ち上げ支援を全力サポートいたします。
また、経験豊富なエンジニアと事業開発経験者で、開発だけでなく事業設計から「一気通貫」した伴走します。
事業開発や立ち上げを検討しているご担当者様がいらっしゃいましたら、問い合わせページから資料請求や無料相談などお気軽にご連絡くださいませ。