システム開発の工程とは?流れや費用など、プロが役立つ知識を網羅して解説!
「開発工程」とは、効率よくシステム開発を進めるために作られた開発手順のことです。
開発工程には、「要件定義」「基本設計」「詳細設計」「プログラミング」「単体テスト」「結合テスト」「総合テスト」「リリース」「運用保守」の9つがあります。基本的にシステム開発は複数名のチーム体制で行っており、これらのシステム開発の工程を分担しています。
本記事では、システム開発の各工程の作業内容や、チーム体制、開発手法の種類についての基礎知識を解説します。
また、システム開発の外注をお考えの方向けに、外注費用や外注先の見つけ方・選び方、そしておすすめのシステム開発会社についてもまとめています。 初めてシステム開発の外注をご検討されている方や、エンジニア就職をお考えの方の参考になれば幸いです。
システム開発の工程と、覚えておきたい略語
品質の高いシステムを効率よく開発するために、システム開発の工程には決まった型ができています。システムを作る目的や必要な機能を考える「要件定義」から始まり、要件を実現するための設計書を作成し⇒設計書をもとに製造⇒正常に動くかテスト⇒クライアントに納品、といった一連の流れで進んでいきます。
また、要件や設計を考える工程を「上流工程」、実際に設計書に従ってシステムを作ってテストする工程を「下流工程」と言います。
本章では、それぞれの工程でどのような作業が行われているのかを、上流工程から下流工程の順で解説したいと思います。
その前に、「そもそもシステム開発って何?」「具体的に何を作るの?」と疑問に思われている方は、下記関連記事で全体像を分かりやすく解説していますので、そちらをご覧ください。
1.要件定義
※略語:RD(requirement definition)
まずシステム開発の最初となる工程は、要件定義です。
要件定義は、新たに作るシステムの内容を決めていく、システム開発の基盤となる重要な工程です。システムを作る目的や、求める機能や性能、納期、必要な人員等々を決めていきます。
要件定義のフェーズでは、おおまかに分けて「機能要件」と「非機能要件」の2つを決めます。
機能要件
機能要件とは、システムを開発するにあたって、顧客が必要としている機能です。ECサイトで例えるなら、「商品検索をすると商品の一覧が出る」や、「カートに入れるを押すと商品がカートの中に入る」などにあたります。
非機能要件
非機能要件とは、機能要件で定義されている機能以外の要件全てです。同じくECサイトで例えるなら、「商品を検索された際に3秒以内に検索結果を出す」、「システムがダウンしてしまった際には、3時間以内に復旧する」などがこれにあたります。
2.基本設計 / 外部設計(BD)
※略語:BD(Basic Design)
要件定義が終わると、次の工程は基本設計です。
基本設計(外部設計)では、要件定義で定義されたシステムの機能を基に、利用者(ユーザー)視点で必要な機能の一覧化と、それぞれの機能の細かい仕様の決定などをクライアントと擦り合わせながら行っていきます。設計のクオリティがそのまま使い勝手に直結することもあるので注意が必要です。
(例)
・この画面で表示する情報(洋服の写真と価格の一覧を表示する)
・各表示項目の数やレイアウト、サイズ
・画面の遷移の仕方(洋服の写真をクリックすると商品詳細のページへ飛ぶ)
3.詳細設計 / 内部設計(ED)
※略語:ED(External Design)
基本設計の次の工程は、詳細設計(内部設計)です。詳細設計では、基本設計(外部設計)で定義されたシステムの機能を実現するために、具体的なプログラムやデータ構造を設計します。
基本設計がクライアントや利用者視点の設計であるのに対し、詳細設計はエンジニア視点で設計を行います。どのようなプログラマーが開発にあたっても、一定の品質を保てるように設計を行うことが重要です。
(例)
・各機能に必要な処理
・システム同士の関係性
・どのようなデータをインプット、あるいはアウトプットするのか
・システムが稼働を始めてから終了するまでの動作を順番どおりに記載
4.プログラミング
設計が終わると、次の工程はプログラミングです。
プログラミングでは、詳細設計(内部設計)を基に実際にコンピュータに指示を出していきます。指示を出すと言っても人間の言葉が通じるわけではありませんので、コンピュータが理解できる「プログラミング言語」を用いて指示を出します。作るシステムの種類によって必要なプログラミング言語が異なるため、エンジニアが言語を使い分けてプログラミングを行います。
5.単体テスト
プログラミングが終わると、次は単体テストの工程に入ります。
単体テストとは、機能単位(ユニット)で個々の機能を正しく果たしているかどうかを検証するテストです。後に解説する結合テストや総合テストよりも、システムの問題点が特定しやすいというメリットがあります。
例えば、「ログインボタンを押すと指定の画面が表示されるかテストする」がこれに該当します。
6.結合テスト
単体テストが終わると、次は結合テストの工程に入ります。
結合テストとは、¥複数の機能を組み合わせて正常に動作するかをテストします。システム内の機能連携がしっかりできているかを確認するために行います。
例えば、「購入する」機能と、「外部の決済システムにクレジットカードの照会をする」機能が上手く連携できるかなどがこれに該当します。
7.総合テスト
最後のテスト工程は、総合テストです。
総合テストは、非機能を含んだシステム全体をテストします。リリースされた状態と同じ環境でテストを行い、要件定義で決めた要件を満たしているのかを確認できたり、ハードウェア関係 の不具合もここで発見できたりします。
ECサイトで言えば、「服を選ぶ」⇒「購入する」⇒「決済する」といった、利用者の一連の流れを再現し、システム全体が正常に動作するかを試します。
8.リリース / システム移行
これが「リリース」です。リリースすると「開発」は終了になります。
9.保守・運用
(例/運用)
・運用の改善、マニュアル化
・システム稼働状況の監視
・サーバーの起動や停止
・データのバックアップ
・ソフトウェアのバージョンアップ
・セキュリティ対策
(例/保守)
・システム障害の原因究明及び復旧作業
・ハードウェア障害時の機器のリプレース
・不具合を解消したプログラムやシステムの導入
開発手法の種類
本章では、この4つの開発手法についてメリットとデメリットを交えて解説していきます。
1.ウォーターフォール型開発
| メリット | ・要件定義を終えた段階で、 開発期間や必要な人員などの、システム開発全体における計画が立てられる ・システムの品質が高い |
|---|---|
| デメリット | ・仕様の変更がしにくいため、 クライアントの声を聞いて微調整しながらのシステムを開発はできない |
| 相性のいい プロジェクト | ・ATMなど金融関係のシステム開発 ・規模の大きいシステム開発 ・家電や自動車に搭載する組み込みシステムの開発 |
ウォーターフォール型開発は、一番初めにどのようなシステムを作りたいか、要件定義を入念に決めてから開発する手法で、システムの品質を担保しやすいという特徴があります。そのため、小さなミスや障害でも致命傷となるシステム(金融関係のシステムや規模の大きいシステム)に、この開発手法が使われることが多いです。
ただし、何らかの理由で手戻りが発生してしまった場合、特に要件定義や設計などの上流工程に問題があった場合に、開発期間や開発コストが大きく増えるのがデメリットです。
2.アジャイル型開発
| メリット | ・システム開発を進める過程で柔軟に仕様変更に対応できる ・早い段階でシステム利用者(ユーザー)のフィードバックをもらえ、 システムのユーザビリティが向上する |
|---|---|
| デメリット | ・仕様変更が多いとシステム開発期間が延びる ・その分コストも嵩張る ・機能ごとでシステム開発をするため、全体の方向性がブレやすい |
| 相性のいい プロジェクト | ・システムの要件が曖昧、または決められない ・Web関連サービスやSNSアプリ、ゲームのように、 システムに頻繁に新機能が追加されたり市場の流行り廃りが早いサービス ・DXのように、いち早くシステムの導入が必要で、 現場の様子を見ながらシステムのブラッシュアップをしたい |
アジャイル(agile)は「素早い」「俊敏な」といった意味を持ち、その名の通り、優先度の高い機能から開発を進めて、機能ごとにテストしリリースできます。ユーザーにいち早く利用してもらうことで、ユーザーの声を活かして迅速に修正を行ったり、次の機能の開発の参考にできたりします。
よって、このアジャイル型開発の工程の進め方は、技術や仕組み、流行などが、日々目まぐるしく変化する産業に向いています。また、ゲームのように一度リリースしたら終わりではなく、新機能が随時追加されるようなサービス・システムにも向いています。
3.スパイラル型開発
| メリット | ・システム開発を進める過程で柔軟に仕様変更に対応できる ・クライアントと認識を擦り合わせながらシステム開発ができる |
|---|---|
| デメリット | ・複数回レビューを挟むので、システム開発の期間が長期化する ・仕様変更が多いとシステム開発期間が延びる ・その分コストも嵩張る |
| 相性のいい プロジェクト | ・AIなどの最新技術を導入する場合や、 前例のないシステムを作る場合 ・発注者の知見がなく、導入したいシステム像が明確でない場合 ・高いコストを払ってでも高い品質のシステムを作りたい場合 |
システム全体を機能ごとに分割し、その機能単位で「設計」⇒「開発」⇒「テスト」⇒「レビュー(発注者が確認)」を行います。
1つ目の機能が完成したら、2つ目の機能とくっつけて(移行)、また2つ目の「設計」⇒「開発」⇒「テスト」⇒「レビュー(発注者が確認)」を行います。これを3つ目、4つ目と繰り返していきます。各機能ごとにクライアントからのレビューを挟み、改善を重ねて品質要件を満たしてからシステムをリリースすることができます。
4.プロトタイプ型開発
| メリット | ・システム開発の初期段階で、 発注者とシステム開発側の認識のズレを修正できる |
|---|---|
| デメリット | ・本番と別に試作品を作るためシステム開発の期間が長くなる ・その分コストも嵩張る |
| 相性のいい プロジェクト | ・AIなどの最新技術を導入する場合や、 前例のないシステムを作る場合 ・発注者の知見がなく、導入したいシステム像が明確でない場合 |
先ほど解説したウォーターフォール型開発は、途中で仕様変更が発生したり要件定義が不十分で認識にずれが生じたりした場合、手戻りにかなりの工数がかかってしまいました。そのウォーターフォール型開発の欠点を改良するために考案されたのが、認識のずれを最小限に防ぐこのプロトタイプ型開発です。
システムのイメージが分かりづらい場合、つまり前例のない新しいシステムを作るような場合や、発注者側がまだ理想のシステムのイメージを頭に描けていない場合にピッタリです。具体的なシステムをイメージしながらシステム開発を進められます。
試作品で認識の擦り合わせができたら、ウォーターフォール型開発に戻ってシステム開発を進めます。
システム開発のチーム体制と役割
本章では、システム開発がどのようなチーム体制で行われているのかを解説していきたいと思います。
1.PDM(プロダクトマネージャー)
基本的に自社サービスを作る際に必要なポジションになります。
ミッションはプロダクト(サービスや商品)を完成させることではなく、企業利益と顧客満足度を最大化することにあります。そのため、企業戦略の立案や事業計画の策定、顧客要求の分析などを行います。
2.PM(プロジェクトマネージャー)
開発プロジェクトの計画立案やスケジュール管理、リソースの配分など、開発プロジェクト全体の管理を行います。経営層や外部のステークホルダーとの関係の管理もPMの役割です。
3.PMO(プロジェクトマネジメントオフィス)
人材育成や品質管理、進捗状況の把握、コスト管理などを担当し、プロジェクトを成功に導くためにPMを支援します。
4.PL(プロジェクトリーダー)
PMがプロジェクト全体を管理するのに対して、PLは担当領域のチームの、技術的な指導や取りまとめを行います。また、チームメンバーをまとめ、他の業務チームやプロジェクト全体と連携する役割を担っています。
5.SE(システムエンジニア)
クライアントと打ち合わせをして必要な機能を洗い出し、予算に応じてどのようなシステムを作るか要件を決め、基本設計書や詳細設計書を作成します。また、実際にシステムが完成しクライアントに納品された後は、クライアントに対してアフターフォローが必要です。
企業によってはSEがPGを兼任していることもあります。
6.PG(プログラマー)
SEが上流工程を担当するのに対し、PGは下流工程を担当します。
システム開発を外注するときに予め確認しておきたいこと
開発会社の実績や得意分野を確認する
実績がない開発会社でもシステムを作ること自体は可能です。しかし、実績がある開発会社の方が業界理解があります。理想の機能を1から全部説明しなくても意図を汲み取ってくれるなど、コミュニケーションが円滑であったり、システムの完成度が高い可能性があります。
開発費用の相場を確認しておく
なぜなら、ざっくりとしたシステム開発の費用相場は下図のとおりですが、費用はシステムの種類や規模、必要な機能の数、開発難易度によって大きく違ってくるためです。複数社を比較して安すぎたり高すぎたりする開発会社は候補から外すか、その費用になった理由を聞くようにしてください。
また、そもそも開発費用がどのように決まっているのかを知識として知っておくといいでしょう。下記記事に詳しくまとめておりますので参考にしてください。
初めての方でも安心!おすすめのシステム開発会社5選
本章では、初心者の方でも安心して依頼できる、サポートが手厚い開発会社を5社を抜粋しました。5社とも幅広い種類の開発を行っていますが、それぞれ強みが違いますので、分かりやすく解説します。
あなたが作りたいシステムはどの開発会社と相性がいいのかを確認してみてください。
株式会社SALTO
| 会社名 | 株式会社SALTO |
|---|---|
| URL | https://salto.site/ |
| 設立 | 2015年9月 |
| 本社所在地 | 東京都新宿区新宿2-8-6 KDX新宿286ビル 7階 |
| 従業員数 | 204名 |
また、ベトナム拠点でオフショア開発も行っているため、開発費用を通常の国内開発より安く抑えたい方はぜひご相談ください。

開発オクトパス
株式会社ASTINA
| 会社名 | 株式会社ASTINA |
|---|---|
| URL | https://www.astina.co/ |
| 設立 | 2017年3月 |
| 資本金 | 1,000万円 |
| 本社所在地 | 東京都墨田区緑3-17-8高島ビル |
| 従業員数 | 42名 |
IoT・AI・メカニクス・エレキのスペシャリストが在籍しており、ソフト・ハードの両面で対応できるのが強みです。
ハードとソフト、両方の性能を最大限に活かしたプロダクトを、アジャイルに開発することを強みとしています。
株式会社GeNEE
| 会社名 | 株式会社GeNEE |
|---|---|
| URL | https://genee.jp/ |
| 設立 | 2017年4月 |
| 本社所在地 | 東京都港区六本木一丁目4番5号森ビルアークヒルズサウスタワー |
| 従業員数 | 52名 |
CRMシステム(顧客管理)や、ERP(統合基幹業務システム)、予約管理システムの開発実績が特に豊富にあります。登録者数200万人弱のメガヒットアプリを開発した人材や、新規事業をゼロイチで立ち上げた人材などが在籍しているため、プロジェクトを成功に導くための企画提案、要件定義をサポートできます。
ウォーターフォール型開発とアジャイル型開発を取り入れており、お客様に合わせて最適な開発手法を採用しています。
株式会社PPFパートナーズ
| 会社名 | 株式会社PPFパートナーズ |
|---|---|
| URL | https://ppfpart.co.jp/company/ |
| 設立 | 2015年7月 |
| 本社所在地 | 大阪府大阪市北区天神橋1-7-17 イケガミノースハウス4階 |
| 従業員数 | 108名 |
様々な分野で自社プロジェクトの成功体験があるため、経営戦略立案からシステム構築、検証、バージョンアップまで、すべてに対応できるのが強みです。
アプテック株式会社
| 会社名 | アプテック株式会社 |
|---|---|
| URL | https://apteq.jp/# |
| 設立 | 2008年10月3日 |
| 本社所在地 | 横浜市港北区新横浜2-15-10 YS新横浜ビル 5F |
| 従業員数 | 25名 |
アプテック株式会社は、IT化に積極的に取り組む中小企業を応援するために設立された開発会社です。
Web制作・ウェブシステム開発に関する技術やノウハウを幅広く持っていることが、アプテックの強みです。Webサイトの制作や保守にあたっては、基本的なSEO対策も施してくれます。
他にも外注初挑戦の方におすすめの会社を書き記事にまとめていますので、ぜひチェックしてみてください。
"
>
Loading
まとめ
開発工程には要件定義から設計までの上流工程と、プログラミング(製造)やテストなどの下流工程があります。
また、これらの工程の進め方については4つに分類できます。
上流工程から下流工程まで一気に開発工程を進める「ウォーターフォール型開発」から、試作品を作る「プロトタイプ型開発」、機能ごとにレビューを挟む「スパイラル型開発」、機能ごとにリリースまでする「アジャイル開発」と、多くの開発手法があります。
システム開発の外注をご検討中の方は、自社の作りたいシステムはどの工程の進め方が効率的で且つ費用対効果がいいのかなどを、予め確認しておくといいでしょう。

この記事の著者
中島 彩
株式会社SALTOに営業職として入社後、WEBマーケティング職にキャリアチェンジ。コンテンツディレクター業務からライティング業務まで一貫して対応。自社のシステム開発のノウハウを取り入れた記事を執筆中。



