システム開発の工程・流れ|ウォーターフォールとアジャイル?適切な開発モデルを選ぶには?

- システム開発について
- ウォーターフォール型システム開発について
- アジャイル型システム開発について
システム開発にはどんな工程がある?リリースまでの流れは?経験のないまま、システム開発を任された企業担当者であれば知りたいはずであり、同時に非常に重要なことでもあります。なぜなら、システム開発には工程・手法の異なる複数の開発モデルがあり、担当者が重要な役割を担う開発工程があるからです。
そこで本記事では、ウォーターフォール型、アジャイル型という異なる開発モデルの違いを主軸に、システム開発の工程・流れを徹底解説!自社のシステム開発に適切なのはどちらか?開発モデルを選ぶヒントも紹介していきます。
システム開発の工程・流れとは?
システム開発とは、業務の効率化やサービスのローンチなど、課題解決・目的達成に向けたコンピューターシステムを開発・構築すること。これを実現するには、どのようなコンピューターシステムを開発するのかという企画段階から、リリースして運用するまで、さまざまなプロセス・流れを経る必要があります。このプロセス・流れをシステム開発の「工程」と呼びます。一般的なシステム開発のおおまかな工程は以下の通り。
工程 | 概要 | 工程の担当者 |
---|---|---|
要件定義 | 目的・ニーズをもとに開発するシステムの必要な要件を策定 | 企業担当者、PM(プロジェクトマネージャー) |
設計 | 要件定義を元に開発するシステムの設計図を作成 | 企業担当者、PM、SE(システムエンジニア) |
開発・実装 | 設計図を元にプログラミング | SE、PG(プログラマー) |
テスト | 開発・実装されたシステムの不具合をチェック | PG |
リリース・運用・保守 | 開発したシステムをローンチ、継続した運用・保守 | 企業担当者、運用・保守エンジニア |
システム開発には、工程・手法の異なる複数の開発モデルがありますが、それぞれの開発モデルの工程には共通点も少なくありません。要件定義からリリースまでの流れは、どの開発モデルでもある程度共通しているといえるでしょう。
ウォーターフォール・アジャイルという開発モデル
システム開発における複数の開発モデルとは、大きく「ウォーターフォール型」「アジャイル型」の2つに分類できます。XP(エクストリームプログラミング)型、スクラム型といった開発モデルもありますが、これは開発手法の異なるアジャイル型といえる開発モデル。本記事では、ウォーターフォール型、アジャイル型に絞って解説していきます。
ウォーターフォール型システム開発とは?
ウォーターフォール型システム開発とは、文字通り「水が上流から下流に流れる」ように、決められた工程を最初から最後まで、順番に遂行していくシステム開発モデルです。
表に記載した「要件定義」「設計」「開発・実装」「テスト」「リリース・運用・保守」を順番に、かつ一つひとつの工程が完了・検証されてから、次の工程に移るのがウォーターフォール型の特徴。基本的に、前の工程に戻ることは想定されていません。日本ではもっとも多く採用されているシステム開発モデルだといえるでしょう。
アジャイル型システム開発とは?
アジャイル型システム開発とは、開発するシステムを機能ごとに細かく分割し、「要件定義」「設計」「開発・実装」「リリース」の工程を繰り返しながら、一つひとつの機能を開発していくシステム開発モデルです。
ウォーターフォール型が「システム全体」を見越して開発を進めるのに対し、言葉の意味通り「俊敏」に機能単位でリリースしていくのがアジャイル型の特徴。修正や変更が生じることを前提に、柔軟に開発していける開発モデルだといえるでしょう。アジャイル型では、機能の開発工程の1単位を「イテレーション」と呼びます。
ウォータフォール型システム開発の工程
それでは、それぞれのシステム開発モデルの工程をもう少し詳しく見ていきましょう。まずはウォーターフォール型です。要件定義からリリース・運用・保守までの工程・流れは表の通りですが、実際には各工程がもう少し細分化されています。
以下が主な手順です。詳しく解説していきましょう。
- 要件定義
- 基本設計(外部設計)
- 詳細設計(内部設計)
- プログラミング(開発・実装)
- 単体テスト
- 結合テスト
- システムテスト
- 運用テスト
- リリース
- 運用・保守
1.要件定義
ウォーターフォール型システム開発で「もっとも上流」の工程にあたるのが、開発するシステムに必要な要件を定義して書面化する「要件定義」フェーズです。具体的には、開発するシステムの目的・ニーズに応じて、必要な機能やハードウェアを含む環境、運用方法などを策定していきます。参加する企業担当者、システム開発会社側のPMを含め、認識のズレが生じないよう、円滑なコミュニケーションが重要になる工程です。
そのためには、要件定義の工程以前、システム開発会社を選定する前から、しっかりした準備を整えておくことが重要。自社がシステム開発する目的・ゴールとともに、現状の課題を洗い出し、解決するために必要な機能をまとめておくことが肝心です。その際に重要な役割を果たすのが企業担当者。システム開発会社を選定する前から、仕事が始まっていると考えておくべきです。
2.基本設計(外部設計)
ウォーターフォール型の次の工程は、要件定義書を元に、主にユーザー(クライアント)の視点に立ってシステムの大枠を設計していく「基本設計」フェーズに移ります。インターフェース・レイアウトなどの目に見える部分を中心に、実装する機能、ハードウェア、セキュリティなどの機能面を決定。そのため、外部設計と呼ばれる場合もあります。
最終的な納期や開発コストを決定していく段階でもあるため、基本設計の工程でも企業担当者の役割は重要。基本的に工程の後戻りができないウォーターフォール型では、認識の食い違いが起きないよう、企業担当者が積極的に参加したい工程でもあります。
3.詳細設計(内部設計)
システムの大枠を決定した基本設計書を元に、具体的なプログラミングの指示書ともいえる設計図を作成する工程「詳細設計」フェーズに移ります。基本設計がクライアント向けであるのに対し、開発会社内部のエンジニア・プログラマー向けの設計図である詳細設計は「外部設計」と呼ばれる場合も。
システムに実装する機能を分割したうえで、機能仕様書、プログラミングのルール、データフロー図など、それぞれに関連する専門資料を作成していきます。この工程からは、システム開発会社の作業が中心になります。
4.プログラミング(開発・実装)
詳細設計書を元に、システム開発会社のエンジニア・プログラマーが、システムに機能を実装して開発・構築していく工程「プログラミング(開発・実装)」フェーズに移ります。詳細設計で分割された機能(モジュール)ごとに、チームで作業にあたるケースもあれば、ひとつのチームがモジュールを順番に開発していくケースもあります。
5.単体テスト
プログラミングの完了したモジュール単体ごとに、問題なく動作するか?要件定義を満たしているか?テストしてチェックする工程「単体テスト」フェーズに移ります。エンジニア・プログラマーが担当する場合があるほか、選任のテスターが担当する場合も。テスト結果をフィードバックしながら、不具合の修正作業もこの工程で行います。
6.結合テスト
単体テストの完了したモジュールを複数結合した「サブシステム」を組み上げ、結合したサブシステムに不具合がないか?モジュール同士が正常に連携できるか?テストしてチェックする「結合テスト」フェーズに移ります。サブシステム内部の結合テストはもちろん、サブシステム外との連携をチェックする外部結合テストも実施されます。
7.システムテスト
サブシステムの結合に問題ないことが確認できた段階で、システム全体の動作を総合的にテストしてチェックする工程「システムテスト」フェーズに移ります。すべてのプログラムが問題なく動作するかはもちろん、要件定義を満たしているか?アクセスが集中したときの耐久性・処理速度は問題ないか?など、あらゆる側面を考慮に入れた総合的なテストが実施されます。
8.運用テスト
開発の完了したシステムが、テスト環境下で問題なく動作することが確認できた段階で、実際にシステムを運用する環境に移行したうえで、最終的なテスト・チェックを実施する工程「運用テスト」フェーズに移ります。
システムを実際に利用するユーザー(クライアント)の視点に立ち、要件を満たしているかどうかはもちろん、操作性・機能性に関しても最終的なチェックを行います。この工程では、企業担当者を中心にユーザー側が参加する「ユーザーテスト」が実施されるケースがほとんどだといえるでしょう。
9.リリース
完成したシステムをリリースして運用していく工程。はじめてシステム開発する企業・組織であれば、完成したシステムを公開・運用していくだけですが、旧システムからのリプレイス・再構築であれば「移行作業」が必要。一気に旧システムから切り替える「一斉移行」のほか、徐々に新しいシステムに切り替えていく「順次移行」などの方法があります。
10.運用・保守
リリース・運用開始されたシステムは、安定的に稼働させていかなければなりません。この工程が「運用・保守」フェーズです。具体的には、システムダウンが発生しないように、トラブル対応・メンテナンスする「保守業務」、不具合の改修やシステムのアップデートに関連する「運用業務」が必要。
一般的には、開発を依頼したシステム開発会社、もしくはメンテナンス専門会社にアウトソーシングするケースが多くなりますが、任せきりにできるわけではありません。ここでも重要な役割を果たすのが企業担当者。業務が停止してしまわないためにも、綿密なコミュニケーションを心がける必要があります。
アジャイル型システム開発の工程
ウォーターフォール型と比較対象にされることが多い、アジャイル型システム開発の具体的な工程とは?ウォーターフォール型でも企業担当者は重要な役割を果たしますが、さらに綿密なコミュニケーション、連携、協調が必要になるのがアジャイル型の特徴です。
以下が主な手順です。詳しく解説していきましょう。
- リリース計画の策定
- システム計画の分割
- イテレーションの実行・反復
1.リリース計画の策定
アジャイル型システム開発の最初の工程は、開発するシステムの概要である「おおまかな」仕様・要求仕様を決定する「リリース計画の策定」フェーズです。アジャイル型システム開発では、修正や変更が生じることを前提にすることが最大の特徴。開発工程のなかで生じる仕様変更や改修に柔軟に対応するため、最初から要件・仕様を決め込んでいくようなことはありません。
2.システム計画の分割
策定されたシステム計画をもとに、システム全体を構成する機能を分割し、それぞれの重要度を考慮に入れつつ、開発に着手する順番を決定していく工程です。どのように機能を分割するか?ポイントとなるのは「開発期間」であることが一般的。具体的には、1週間〜4週間程度で開発でき単位に機能を分割することがほとんどだといえるでしょう。
3.イテレーションの実行・反復
分割したシステムの機能ごとに、「要件定義」「設計」「開発」「テスト」「リリース」していく工程です。上述したように、機能ごとに実行される開発工程単位は「イテレーション」と呼ばれ、機能ごとにイテレーションを実行・反復していくことによって、システム全体が徐々に開発されていきます。
イテレーションが完了するごとに、検証・修正が繰り返され、企業担当者とシステム開発会社が連携しながら、さらに機能を追加していくのか?開発を完了させるのか?都度、判断していく形になります。
アジャイル開発の流れ、メリットなど詳しく知りたい方は以下の記事でより詳しく解説しているので参考にしてみて下さい。
システム開発モデル別のメリット・デメリット
要件定義からリリース・運用・保守まで、基本的な工程は共通してはいるものの、ウォーターフォール型、アジャイル型は手法も細かな工程も異なることがわかります。それでは、それぞれの開発モデルにはそのようなメリット・デメリットがあるのか?自社システム開発時に、どちらの開発モデルを採用すべきなのかを判断するうえでも、把握しておくことが重要です。
ウォーターフォール型システム開発のメリット・デメリット
メリット
ウォーターフォール型システム開発では、ひとつの工程が完了・検証されてから次の工程に移ります。基本的に工程の後戻りは行われません。このため、工程全体がシンプルでわかりやすく、スケジュールの策定・進捗管理をしやすい、多人数でのプロジェクトに対応しやすいメリットがあります。日本でもっともメジャーな開発手法のため、ほとんどのシステム開発会社が対応できるのもメリットだといえるでしょう。
デメリット
一方、システム全体を計画したうえで開発に着手するウォーターフォール型は、納期が長くなりがち、工程が進んでからの修正・変更に対応しづらいというデメリットがあります。特に開発工程に取りかかってからの後戻りは、要件定義のやり直しにつながり、納期が大幅に遅れてしまうのはもちろん、余分なコストが発生する可能性があります。
アジャイル型システム開発のメリット・デメリット
メリット
アジャイル型システム開発では、分割された機能単位で「俊敏に」開発が進められるため、仕様変更・修正に柔軟に対応できることが特徴。このため、重要な機能から優先的に素早くシステムをリリースできる、迅速な事業展開ができるメリットがあります。ウォーターフォール型よりも綿密にコミュニケーション・協調できるため、理想のシステムを構築しやすいのも大きなメリット。
デメリット
一方、システム全体の厳密な開発計画を立てないアジャイル型では、スケジュール管理・開発作業全体の管理が困難というデメリットがあります。目的意識をもってシステムの計画を立てないと、必要以上に仕様変更・修正が発生し、納期が伸びてしまうことも。対応できるシステム開発会社がまだまだ少ないのも現在の課題です。
プロジェクトに応じた開発モデルの使い分けが重要
ここまでの解説でおわかりのように、ウォーターフォール型、アジャイル型のシステム開発モデルは、どちらが優れている、劣っているというわけではありません。それぞれの特徴やメリット・デメリットを把握し、システム開発プロジェクトの性格に応じて選定することが重要。そのためには、それぞれの開発モデルがどのようなプロジェクトに向いているのか?把握する必要があります。
ウォーターフォール型に向いているシステム開発プロジェクト
ウォーターフォール型システム開発は、要件やニーズが確定していて納期に余裕がある、システム全体で活用してこそ効果を発揮する、大規模システム開発プロジェクトに最適です。たとえば、従来から活用しているシステムのリプレイス・再構築、あるいは課題が明確な業務の効率化などが挙げられるでしょう。
アジャイル型に向いているシステム開発プロジェクト
アジャイル型システム開発は、必要な機能から素早く順次開発・リリースできるため、スピーディーな展開が求められる「新規事業」に活用するシステムの開発に最適です。たとえば、顧客の反応を見ながら機能追加を繰り返す、BtoC向けサービスなどには、アジャイル型が最適だといえるでしょう。一方、要件やニーズが確定しているプロジェクトには向かない面も。これはウォーターフォール型が新規事業に向かいないのと対照的です。
重要度の高まるアジャイル型システム開発
それぞれの開発モデルごとに、特徴や向いているプロジェクトは異なりますが、近年ではアジャイル型システム開発への注目が高まる傾向にあります。これは市場のグローバル化が加速していること、ビジネスにおけるインターネット・Webの比重が高まっていることが要因として考えられます。
つまり、しっかりと全体を計画したうえでシステム開発に取りかかっていたのでは、急激に変化する時代の流れに対応できなくなっているのです。必要な機能から迅速にリリースできる、アジャイル型システム開発モデルに興味を示す企業が増えているのは、当然のことだといえるでしょう。
アジャイル開発モデルに対応するシステム開発会社を探すには?
一方、本文でも解説したように、アジャイル型に対応できるシステム開発会社は、まだまだ多くないのが現実。アジャイル型に興味はあるものの、対応できるシステム開発会社をどのように探せばいいのか?悩んでいる企業担当者も少なくないかもしれません。インターネットで探すにしても、システム開発会社の実力を見極めるのは簡単ではないでしょう。
そんなとき「比較ビズ」なら、必要事項を入力する2分程度の手間で、優良なシステム開発会社をスピーディーに探せます。複数の会社に無料で相談できるのもポイント。システム開発会社の選定に迷うようなことがあれば、是非利用してみてください。
備考:覚えるとコミュニケーションがスムーズになる開発現場の略語
最後に、備考として「覚えておくとコミュニケーションがスムーズになる開発現場の略語」を紹介しておきましょう。システム開発の工程で、企業担当者は重要な役割を果たさなければなりません。必須ではありませんが、開発現場で飛び交う略語を覚えておいて損になることはありません。
略語 | 本来の英語 | 意味 |
---|---|---|
SP | System Planning | 企画 |
SA | System Analyze | 要求分析 |
RD | Requirements Definition | 要求定義 |
UI | User Interface | ユーザーインターフェース |
BD | Basic Design | 基本設計 |
SS | System Structure Design | 構造設計 |
FD | Function Design | 機能設計 |
DD | Detail Design | 詳細設計 |
M | Manufucture | 製造 |
UT | Unit Test | 単体テスト |
CD | Coding | コーディング |
PG | Programing | プログラミング |
IT | Integration Test | 結合テスト |
ST | System Test | システムテスト |
OT | Operation Test | 運用テスト |
自社にぴったりのシステム開発会社を探すには?
システム開発会社選びでお困りなら「比較ビズ」が解決します!
- 費用相場がわからず不安...
- 発注先選びを失敗したくない…
- 忙しくて探す時間がない...
今年で運営17年目の「比較ビズ」は、仕事を”依頼したい人”と”請けたい人”を繋ぐマッチングサービスです。これまでWEBシステム、スマホアプリ、業務システムの開発など多くのご相談を頂き1万社以上もの企業様の発注をサポートしてまいりました。
まずは下記のボタンより、お気軽にご相談ください。

東京工業大学環境・社会理工学院卒業。慶應義塾大学大学院経営管理研究科修了。MBA(経営学修士)取得。国内最大手SIerの株式会社NTTデータで大手法人領域(大手流通企業、大手小売企業)の事業開発、事業企画等の業務に従事。米国スタンフォード大学への研修留学を経て、システム/モバイルアプリ開発会社の株式会社GeNEEを創業。

Webシステム開発の費用・相場に関連する記事
-
2023年01月27日Webシステム開発動画配信システムの構築方法・費用は?おすすめ開発会社・動画配信サービスも紹 …
-
2023年01月13日Webシステム開発Q&Aサイトの作り方・構築費用は?成功事例やビジネスモデルも解説
-
2023年01月10日Webシステム開発Webシステム開発の費用・料金相場と、システム開発会社への見積もり方法
-
2022年12月26日Webシステム開発システム改修にかかる費用相場を徹底解説!安く抑えるポイントは?
-
2022年12月07日Webシステム開発eラーニングシステムの料金相場を解説!おすすめのシステムも紹介
-
2022年11月01日Webシステム開発SES(エンジニア派遣)の料金相場をまとめてみた
Webシステム開発に関連する記事
-
2023年01月31日Webシステム開発業務の効率化を図るシステム化とは?メリット・注意点・手順を徹底解説!
-
2023年01月24日Webシステム開発オフショア開発はなぜ失敗する?失敗する原因・失敗例・成功のコツを解説!
-
2023年01月24日Webシステム開発ベンダーマネジメントとは?4つの役割と活用ポイントを徹底解説
-
2023年01月17日Webシステム開発システム運用・保守とは?業務内容・依頼先選びのポイントを徹底解説!
-
2023年01月12日Webシステム開発ホワイトボックステストとは?デメリット3つとテストの種類を解説
-
2023年01月10日Webシステム開発【システム開発】オープン系とは?汎用系・Web系との違いを解説!
システム開発会社に関連する記事
-
2023年01月31日Webシステム開発業務の効率化を図るシステム化とは?メリット・注意点・手順を徹底解説!
-
2023年01月31日システム開発会社PythonはWebアプリ開発に最適?基本・フレームワーク・ツールを解説!
-
2023年01月30日システム開発会社フリマアプリの作り方は2通り!【メルカリのようなアプリ】の開発手順や費用を …
-
2023年01月30日業務システム開発【中小企業・零細企業向け】文書管理システムおすすめ5選|選び方も解説
-
2023年01月30日業務システム開発オンプレミス型文書管理システムおすすめ5選|クラウド型とどっちがいい?
-
2023年01月30日業務システム開発ワークフローシステムは自作できる!3パターンの作り方や注意点を解説
システム開発のプロジェクトを成功させるためには、発注者と受注者が適時適切なタイミングでしっかりとコミュニケーションを取ることが重要になります。実際にシステム開発を行うのはシステム開発会社側の受注者になりますが、システムの完成形イメージを持つのはお客様側の発注者です。
お客様側がシステム開発会社側に誤った指示や伝達をしてしまうと、システムの完成形も変わってしまい、結果としてシステム開発のプロジェクトが失敗に近づいてしまいます。そのような事態に陥らないためにも、双方の意識合わせの時間や擦り合わせの時間がとても重要になるのです。
もし仮に方向性を誤った場合でもそれを放置することなく、すぐにコミュニケーションの場を設けるべきです。内容によってはプロジェクト期間が長引く可能性も十分に考えられますが、システム完成後に「イメージと違った。」、「もっとこうしたかった。」、というようなリスクを未然に防止することができるからです。