システム開発を発注する流れとは?費用相場やポイントなど
公開日:2023.11.16 最終更新日:2023.11.16
近年、さまざまな企業がシステムを導入し、生産性を向上させ、業務を効率化させています。まったくシステムを使っていない企業はほとんどないでしょう。
そんなシステムですが、開発するためには費用や時間がかかります。複雑なシステムほどトラブルが起こりやすいもの。
問題なくシステム開発を成功させるためには、発注するときにいくつかのポイントを意識しなければいけません。そのひとつがシステムの基礎知識を身につけること。
そこで本記事では、システム開発の種類や開発の手法など、システム開発に関する情報をまとめて解説します。こういったことに詳しくない方にとっても分かりやすい内容にしているため、ぜひ最後まで読んでみてください。
システム開発とは
システム開発とは、その名の通り、生産性向上や業務効率化などを目的としてIT技術を駆使したシステムをつくることです。
どういったシステムをつくるか検討し、プログラミングをおこなってシステムをつくり、期待通りに動くかテストをして、システムを使い始めるという流れになります。
システムの種類
システムの種類はいくつかあります。代表的なものを4つ紹介しましょう。
- Webシステム
- 基幹システム
- 業務支援システム
- 組み込み・制御システム
Webシステムとは、ECサイトや予約システム、マッチングシステムなど、インターネットを通じてさまざまな情報を処理するシステムのこと。
なお、ECサイトとは、本来はイーコマース(電子商取引)をおこなうすべてのWebサイトを総称する言葉でしたが、一般的にはショッピングできるWebサイトを指すことが多くなってきました。
基幹システムとは、会計や人事、生産、販売など、企業が経営をおこなううえで必須の情報を管理するシステムのことです。この基幹システムが止まったり誤作動を起こしたりすると、事業の根幹をゆるがすことになってしまいます。
そして、業務支援システムとは、営業活動や顧客管理などを支援するシステムのことです。とくに、管理するのが複雑な顧客にかかわる部分を支援するシステムが多くなっています。
組み込み・制御系システムとは、自動車や家電製品、医療機器などを制御するために組み込むシステムのことです。たとえば、自動車ひとつとってみても、エンジンをかけたり止めたりして制御するシステムや、スピードの上げ下げを管理するシステムなど、多くのシステムが機能しています。
ほかにも、さまざまなシステムがありますが、すべてを理解するのは大変なため、ここでは、システム開発と言ってもたくさんの種類があるということを知ってもらえるとよいでしょう。
システム開発の手法
システム開発の手法は、以下のように大きく4つに分けることができます。
- ウォーターフォール
- アジャイル
- スパイラルモデル
- プロトタイピング
ただし、一般的なシステム開発で採用される、開発手法は「ウォーターフォール」と「アジャイ」の2つです。そこで、この2つに注目して、それぞれどのような開発の仕方をするのか解説します。
手法①ウォーターフォール
まず、ウォーターフォールは、とくに採用されることが多い開発手法で、上流工程から下流工程へという流れでシステム開発をおこないます。
「ウォーターフォール」とは日本語に訳すと「滝」を意味します。工程をいくつかに分け、川上から川下に向かって流れる滝のように、上流工程から下流工程へ順次移行していきます。
原則的には、前の工程に戻って修正することのないように次の工程に進んでいくのが特徴です。
この後の見出し「システム開発を発注する流れ」で詳しく解説しますが、顧客からどのようなシステムをつくるかヒアリングしてシステムの機能を決めていく「要求定義・要件定義」から始めます。
この要求定義・要件定義は、しっかり打ち合わせしないと、依頼主とシステム開発会社とのあいだで認識の祖語が生まれることもあります。そのため、念入りな打ち合わせが必要で、全体を通してやや時間がかかる開発手法だと認識するとよいでしょう。
手法②アジャイル
アジャイルは、システム完成までのスピードを重視する開発手法です。
ウォーターフォールと異なるところとしては、前の工程に戻ることを前提としているところが挙げられます。最近では、このアジャイル手法で、システム開発することも増えてきました。
「要件定義→設計→プログラミング→テスト」という開発工程を機能単位の小さいサイクルで繰り返すのが特徴です。優先順位の高い機能から順番に開発をおこなっていき、開発途中であれば、仕様変更にも対応しやすい開発手法だと言えるでしょう。
システム開発を発注する流れ
システム開発を発注する流れは、基本的に以下の通りです。
- RFP(提案依頼書)の作成
- オリエンテーション
- 複数社で見積もり
- 契約
- 要求定義・要件定義
- 基本設計・詳細設計
- プログラミング
- テスト
- 納品
それぞれどのようなことをするのか解説します。
流れ①RFP(提案依頼書)の作成
まずは、RFP(提案依頼書)を作成します。
RFP(提案依頼書)とは、システムの概要や目的、実現したいことなどをまとめた書類です。現状はこのような課題を抱えているが、こういったことを実現して、こうなりたいというのを整理します。
口頭で依頼すると、「言った・言っていない」という状況になってしまう恐れがあるため、書類にまとめて曖昧さをなるべく減らす努力をしましょう。
また、この書類を作成することで、複数のシステム開発会社に同じ条件で依頼することが可能になります。同じ条件で依頼すると、提案されたシステムの内容や開発費用を比較しやすいというメリットがあります。
流れ②オリエンテーション
次に、オリエンテーションをおこないます。
オリエンテーションとは、RFP(提案依頼書)を基にして、依頼主がシステム開発会社に説明する工程です。
書類を提示するだけでは伝わりにくいことがあり、システム開発会社側にとってみると質問したいことが出てくるはずです。
そういったあたりを明確にするために、オリエンテーションをおこないます。
流れ③複数社で見積もり
次に、複数のシステム開発会社に依頼して、見積もりを提示してもらいます。
その見積もりも参考にして、どのシステム開発会社に最終的に依頼するか決めます。この工程での注意点は、見積書に書かれている費用の安さだけでシステム開発会社を選ばないこと。
もちろん、あまりにも高すぎる見積もりは、予算オーバーとなるため、依頼できませんが、安いからよいというわけではありません。
どういった機能を持つシステムを開発してくれて、工程別に、何人のエンジニアが必要でいくらかかるか明確になっているところを選びましょう。
ほかのシステム開発会社と比べて、あまりにも安い見積もりを出されたら、なぜこんなに安いのか、しっかり見定めることが必要です。見積書には書かれていない追加費用が高確率で発生する恐れも潜んでいます。
流れ④契約
実際にシステム開発を発注するところを選んだら、契約を結びます。その際、契約書を交わしますが、内容は非常に複雑であることが多いでしょう。
しかし、内容をしっかり理解しないと、あとからトラブルが起こってしまうことも考えられます。
とくにポイントになるのが、「請負契約」と「準委任契約(SES)」です。内容と責任は以下のような違いがあります。
内容 | 責任 | |
請負契約 | 見積もり金額を支払う | システムの完成 |
準委任契約(SES) | 開発にかかった時間に対して支払う | 業務の遂行 |
たとえば、システムを開発する際の工程のひとつに「基本設計・詳細設計」がありますが、その工程までは、準委任契約を結ぶこともあります。
準委任契約は、開発にかかった時間に対して支払うため、基本設計・詳細設計の段階で「期待通りのシステムをつくれそうにないため、システム開発自体を中止にしたい」と依頼主が申し出ても、それまでの業務の遂行にかかった時間分に対しては費用を支払うことになります。
一般的には、基本設計・詳細設計以降は請負契約を結び、システム開発会社にシステムの完成責任を持ってもらいます。
システムによっては、多くの費用や時間がかかる一大プロジェクトになることもあるため、細かいところもしっかり理解して契約を結ぶのが重要です。
契約内容は、複雑ですが、よく理解しないまま契約を結んでしまうと、期待通りに動かないシステムが納品されて完成と言われてしまったり、予定よりも大幅に費用が膨らんだりしてしまう恐れもあります。
流れ⑤要求定義・要件定義
契約を結んだら、やっと本格的なシステム開発が始まります。まずは、要求定義・要件定義です。
この工程では、あらかじめ作成した、RFP(提案依頼書)を基にしてシステム開発会社が具体的にどのような機能を持ったシステムを開発するか、検討していきます。
厳密に言うと、「要求定義」は、どのような機能を求めているのか依頼主の要求を記すもので、「要件定義」は、要求定義で出た要求をシステム開発会社がどのようにシステムで実現するか資料に落とし込むことを指します。
ただし、実際のところは、要求定義と要件定義を分けておこなうのではなく、依頼主とシステム開発会社の両者が打ち合わせに主体的に参加して、認識のずれが生じないように詳細を確定させていきます。
システム開発会社が主導で、話が進んでいくとは思いますが、依頼主も「すべてをシステム開発会社に任せたらよい」という考え方ではなく、認識のずれが発生しやすいところは念入りに丁寧に伝える工夫が必要でしょう。
ここで主体的に行動しないと、大きなトラブルが発生する恐れがあります。大きなトラブル発生は、システム開発会社を疲弊させるだけでなく、依頼主の時間も奪うことになるでしょう。
流れ⑥基本設計・詳細設計
次は、設計工程に入ります。基本設計のあとに詳細設計という流れです。
基本設計とは、「外部設計」と呼ばれることもあり、表示する画面や操作方法など、ユーザーに向けた仕様(ユーザーインターフェース)を設計することです。システムの見やすさや使いやすさに影響を与えます。
対して、詳細設計とは、「内部設計」と呼ばれることもあり、システム内部の機能やデータの詳細などを設計することです。詳細設計は、プログラミングのしやすさや、稼働後のメンテナンスのしやすさに影響を与えます。
流れ⑦プログラミング
次は、プログラミングです。基本設計・詳細設計の工程で作成した設計書を基に、プログラミングをおこなっていきます。この工程で主力となるのは、プログラマーです。
流れ⑧テスト
プログラミングが完成したら、テストを実施して、期待通りにシステムが動くかチェックしていきます。
テストは、以下のとおり何種類かに区別できます。
- 単体テスト
- 結合テスト
- 総合テスト
- 運用テスト
まずは、プログラム単体が正しく動くかテストして、そのあと複数のプログラムを組み合わせたテスト、すべてのプログラムを組み合わせたテスト、と移行していきます。
最後におこなうテストが、運用テストです。まれに「受け入れテスト」や「承認テスト」などと呼ばれることもあり、システムが本番稼働したときに正常に機能するかチェックするためのテストです。
一般的には、依頼主が運用テストを実施します。依頼主自らがシステムを利用して、きちんと業務に適用しているかチェックします。
この運用テストでは、事前に渡された操作マニュアルとの整合性を確認することもあるでしょう。
流れ⑨納品
無事、運用テストをクリアできたら、システムが納品されます。スムーズにシステムを導入できるように、あらかじめ操作マニュアルを共有したり、操作方法を学習する研修会を開催したりしてもよいでしょう。
システム納品後に、問題が発生したら、システム開発会社に問い合わせます。システム開発会社が調査した結果、トラブル(バグ)だと判明したら、適宜修正をおこないます。
まったくトラブルが発生しないシステムはほとんどありません。明らかにシステム開発会社のミスであれば、無償で修正に対応してくれます。
なお、納品後は「保守・運用」と呼ばれる工程に移行します。安定的に継続してシステムを利用できるように、システムを監視したり定期的にアップデートしたりします。
保守・運用は、もちろん有償となりますので、契約を結ぶ際に保守・運用の費用についても確認しておきましょう。
システム開発の費用相場
システム開発の費用相場は、多岐にわたりますが、システムの種類別に目安を紹介しましょう。
- Webシステム:50〜500万円以上
- 基幹システム:10〜500万円以上
- 業務支援システム:4〜400万円以上
- 組み込み・制御システム:500万円程度
ただし、上記はあくまでも目安で、複雑なシステムであればあるほど費用は高額になります。
システム開発の費用の内訳は、8割が人件費です。プロジェクトに携わる、プロジェクトマネージャーやシステムエンジニア、プログラマーなどの人件費。
経験やスキルが豊富なプロジェクトマネージャーや上級システムエンジニアの単価は高く、費用がかさみますが、システム開発の重要なポイントはこういった方が深く関わらないといけません。
こちらも、あくまでの目安ですが、一例を挙げてみましょう。
エンジニアの経験やスキル | 1人1ヵ月当たりの単価 |
プロジェクトマネージャー | 70〜200万円 |
上級システムエンジニア | 120〜200万円 |
中級システムエンジニア | 100〜120万円 |
初級システムエンジニア | 80〜100万円 |
上級プログラマー | 60〜100万円 |
初級プログラマー | 40〜80万円 |
システム開発の関係者ごとの業務
続いて、システム開発の関係者ごとの業務について解説します。主な業務は以下のとおりです。
主な業務 | |
SE(システムエンジニア) | 要件定義・設計・プログラミングなど |
PG(プログラマー) | プログラミング・テストなど |
PM(プロジェクトマネージャー) | プロジェクト全体のマネジメント・依頼主との交渉など |
PMO(プロジェクトマネジメントオフィス) | プロジェクトマネジメントのサポート・コスト調整など |
それぞれ、さらに詳しく解説しましょう。
SE(システムエンジニア)
SE(システムエンジニア)は、システム開発において実質的に主力となる存在です。主な業務は、要件定義・設計・プログラミングなど。
とくに力を発揮するのが、基本設計と詳細設計です。それまでの工程では、システムの概要しか決まっていません。そこで、SEがシステムの機能を練ったり詳細を考えたりします。
SEは、まれにプログラミングも担当することがあります。たとえば、簡単なプログラミングの場合や、プログラマーが多忙で協力しなければいけない場合などです。
PG(プログラマー)
PG(プログラマー)は、その名のとおり、プログラミングやテストなどを主に担当します。主にSEが作成した設計書を基にプログラマーがプログラミングをおこないます。
設計書を作成する人とプログラミングをおこなう人は、別の人物であるほうが問題点を見つけやすいというメリットもあります。
また、テストも、PGが担当。とくに、1つのプログラムが正常に動作するかチェックする単体テストをおこないます。
PM(プロジェクトマネージャー)
PM(プロジェクトマネージャー)は、その名のとおり、プロジェクトのマネジメントが主な担当業務です。
システムの開発プロジェクトにて、多くの決定権を持っているポジションで、実際に設計書を作成したりプログラミングしたりするのではなく、プロジェクトに携わるメンバーの進行管理やトラブル対応などを重点的におこないます。
また、依頼主との交渉や打ち合わせ、相談をおこなうこともあるでしょう。
PMO(プロジェクトマネジメントオフィス)
PMO(プロジェクトマネジメントオフィス)は、あまり広く知られている職種ではありませんが、さまざまな視点からプロジェクトマネジメントをサポートする部門で、重要な役割を担っています。
システム開発の開始から完了までのディレクション業務を支える役割も持ち、「PMの補佐」とも言える立ち位置です。ただし、裏方的な役割のため、依頼主と会うことはほとんどないでしょう。
システム開発を発注する際のポイント
最後に、システム開発を発注する際の3つのポイントをお伝えします。
- 作りたいシステムを明確にする
- システムの基礎知識を身につける
- 開発手法のトレンドを理解する
それぞれについて詳しく解説しましょう。
ポイント①作りたいシステムを明確にする
まず、システムの概要や目的、実現したいことなどを整理して、作りたいシステムを明確にするようにしましょう。
作りたいシステムを一番理解しているはずの依頼主が主導となって、必要な機能を明確にしていかないといけません。
システム開発会社は、システム開発に関する知識や経験が豊富なため、「では、このようなことに困っていませんか」「こういう機能は必要ありませんか」などと深堀してくれますが、そもそも何を求められているのか分からない限りは、深堀するのが非常に難しいでしょう。
そのため、システムの概要や目的、実現したいことなどをまとめた書類である、RFP(提案依頼書)はしっかり作り込んでください。
ポイント②システムの基礎知識を身につける
また、システム開発会社の話を理解するために、システムの基礎知識を身につけておきましょう。
もちろん、システム開発会社は、なるべく専門用語を使わず、理解しやすいように話してくれるはずですが、基礎知識程度は身につけておいたほうがスムーズにコミュニケーションを図ることができます。
たとえば、本サイトでは、システム開発に関するさまざまな記事を紹介しているため、ぜひ参考にしてください。
ポイント③開発手法のトレンドを理解する
ほかには、開発手法のトレンドを理解しておくのもよいでしょう。前述したとおり、主な開発手法は、「ウォーターフォール」と「アジャイル」です。特徴やメリット・デメリットくらいは把握しておくとよいかもしれません。
システム開発を発注するときはきちんと準備しよう
本記事では、システム開発の種類や開発の手法など、システム開発に関する基本的な情報をまとめて解説しました。
システム開発を発注するうえで、ポイントになるのが、作りたいシステムを明確にするということです。
システム開発会社とスムーズにコミュニケーションを取り、トラブルなくシステム開発を進めるために重要なポイントです。
トラブルが発生すると、システム開発会社だけでなく、依頼主にも余計な時間がかかります。事前にトラブルを回避して、大きな問題を起こさないための意識づくりや工夫などが必要です
よりよい関係をつくれるシステム開発会社選びでは、当社「EMEAO!(エミーオ)」の利用も検討してみてください。コンシェルジュが希望や条件に合った複数の優良システム開発会社を選定して紹介します。円滑にシステム開発会社に発注できるようになるでしょう。
この記事を書いた人
編集部員 濵岸
編集部員の濵岸と申します。コンテンツ作成と取材を主に担当しております。身長が低いため学生時代は「お豆」と呼ばれていました!豆らしく、皆様の役に立つ記事を「マメに豆知識を!」の意識で作成します!どうぞよろしくお願いいたします!