システム開発におけるウォーターフォールとアジャイルの工程|開発方法の選び方

最終更新日:2023年04月13日
株式会社GeNEE
監修者
代表取締役 日向野卓也
システム開発におけるウォーターフォールとアジャイルの工程|開発方法の選び方
この記事で解決できるお悩み
  • システム開発にはどのような工程があるの?
  • 自社に最適なシステム開発方法がわからない
  • 各開発方法のメリット・デメリットとは?

システム開発は、各開発モデルの工程にタスクを当てはめて進めていく必要があります。各モデルにはメリット・デメリットがあり、会社の規模や開発するシステムの規模によっても異なるため、違いを理解することが大切です。

この記事では、システム開発の進め方に疑問を持つ事業担当者に向けて、システム開発の工程や代表的な開発モデルを解説しています。記事を読み終わった頃には、自社に最適な開発方法や、失敗しないシステム開発のポイントがわかるでしょう。

Webシステム開発にお困りではありませんか?

もしも今現在、

  • どの開発会社に依頼したらいいかわからない
  • マッチングサイトを作りたい
  • 定期的なメンテナンスやアップデートをお願いしたい

全国に何万もあるシステム開発会社から、ピッタリの一社を見つけるのは大変です。比較ビズではシステム開発会社の登録に力を入れており、価格重視、デザイン重視、技術重視など、様々な特徴を持った会社から一括で見積もりが貰えます。まずはお気軽にご相談ください。

掲載企業から一覧で比較して探す

システム開発の工程と各フェーズの担当者とは

ビジネスイメージ

システム開発とは、業務の効率化やサービスのローンチなど、課題解決・目的達成に向けたコンピューターシステムを開発・構築することです。

システム開発では、企画段階からリリースして運用するまで、さまざまな工程を経る必要があります。一般的なシステム開発の工程は以下のとおりです。

工程 概要 工程の担当者
要件定義 クライアントの目的・ニーズをもとに、開発するシステム要件を策定する ・クライアント
・ベンダー
・PM(プロジェクトマネージャー)
・SE(システムエンジニア)
・PL(プロジェクトリーダー)
設計 要件定義にもとづき、開発するシステムの設計図を作成する ・ベンダー
・PM
・SE
・PL
開発・実装 設計図にもとづき、プログラミング・実装する ・SE
・PG(プログラマー)
・PL
テスト 開発・実装されたシステムを、不具合がないか、リリースして問題ない品質かどうかチェックする ・PG
・SE
・PL
リリース・運用・保守 開発したシステムを本番環境へリリース、継続した運用・保守をおこなう ・クライアント
・運用や保守エンジニア
・SE

※工程の担当者は開発会社や開発するシステムの規模によって異なります。

システム開発には、工程・手法の異なる複数の開発モデルがあります。しかし、要件定義からリリースまでの上記の工程はどの開発モデルでもある程度共通しているため、おさえておきましょう。

「システム開発」と「システム構築」に明確な違いはない

システム開発のほかに「システム構築」という言葉がありますが、明確な使い分けや違いはない場合が多いです。

「構築」には既存のシステムを組み立てる意味合いが含まれているため、人によってはテスト工程以降のシステムを組み立てる作業を構築と呼ぶ場合もあります。

システム開発では担当者ごとに使用する言葉の意味が若干異なり、認識相違により大きなトラブルにつながるケースも少なくありません。社内で使用されている言葉の意味が担当者ごとに異なっていないかを、よく確認しておくことが大切です。

システム開発における各モデルを紹介

ビジネス 歯車

システム開発には複数のモデルがあり、それぞれ開発の進め方が異なります。企業によっては独自の開発手法で進める場合もありますが、いずれかのモデルに当てはめて開発を進めるのが一般的です。ここでは主な開発モデルを4つ紹介します。

  • ウォーターフォール型
  • アジャイル型
  • プロトタイプ型
  • スパイラル型

下記で詳しく解説します。

ウォーターフォール型

システム開発モデルのなかでも代表的な手法として、ウォーターフォール型があります。文字どおり「水が上流から下流に流れる」ように、決められた工程を順番に遂行するシステム開発モデルです。

具体的には「要件定義」「設計」「開発・実装」「テスト」「リリース・運用・保守」を順番に進めます。ウォーターフォール型は、基本的に前の工程に戻ることは想定されていません。

各工程を並行に進めることはなく、1つの工程が完了・検証されてから次の工程に移るのがウォーターフォール型の特徴です。日本ではもっとも多く採用されているシステム開発モデルとして知られています。

アジャイル型

ウォーターフォール型と並ぶ代表的なシステム開発モデルに、アジャイル型があります。「要件定義」「設計」「開発・実装」「リリース」の工程を、機能ごとの小さい単位で繰り返しながら開発するシステム開発モデルです。

ウォーターフォール型が「システム全体」を見越して開発を進めるのに対し「俊敏」と訳されるアジャイル型では、機能単位でリリースするのが特徴です。修正や変更が生じることを前提に、柔軟に開発できるモデルといえるでしょう。

アジャイル型では、要件定義からリリースまでの開発工程の1単位を「イテレーション」と呼びます。

プロトタイプ型

プロトタイプとは「試作品」を意味し、開発の初期段階でプロトタイプを作成する開発モデルのことです。はじめに試作品を作成することで、目に見える指針ができるため、担当者間での認識ズレ防止につながります。

プロトタイプ作成後の工程は、ウォーターフォール型と同様です。大きい開発の場合はプロトタイプを作成するだけでも工数や時間がかかるため、小さい規模のシステムを開発する際に向いているモデルといえるでしょう。

スパイラル型

システムを各機能(サブシステム)に分割し、サブシステムごとに設計、開発、テストを繰り返す開発モデルのことを、スパイラル型といいます。1サブシステムごとにプロトタイプを作成し、クライアントからフィードバックをもらって次のサブシステムに移るのが特徴です。

サブシステムごとに計画が進むため、途中で仕様変更があった場合でも柔軟に対応できるのがメリットです。一方で、各プロトタイプの作成に工数がかかるため、サブシステムが多い開発ではコストが高くなるデメリットがあります。

ウォータフォール型システム開発の工程

本記事ではシステム開発モデルのなかでも代表的な「ウォーターフォール型」と「アジャイル型」に絞って詳しい開発工程を紹介します。
ウォーターフォール型の主な手順は、以下のとおりです。

  1. 要件定義
  2. 基本設計(外部設計)
  3. 詳細設計(内部設計)
  4. プログラミング(開発・実装)
  5. 単体テスト
  6. 結合テスト
  7. システムテスト
  8. 運用テスト
  9. リリース
  10. 運用・保守

1. 要件定義

ウォーターフォール型システム開発で最上流の工程にあたる「要件定義」フェーズは、どのようなシステムを開発するのかを決定する根幹作業です。クライアントの目的・ニーズに応じて、必要な機能やハードウェアを含む環境、運用方法などを細かく策定します。

要件定義があいまいな場合や内容に漏れがあった場合は以降のすべての開発工程に支障をきたすため、すり合わせることが重要です。クライアントとシステム開発側の間で認識のズレが生じないよう、円滑なコミュニケーションを意識する必要があります。

システム開発するうえでの現状課題の洗い出しや、解決するためにあわせて開発しなければならない機能などをまとめましょう。

2. 基本設計(外部設計)

ウォーターフォール型の2つ目の工程では、要件定義書を元にシステムの大枠を設計する「基本設計」フェーズに移ります。

インターフェース・レイアウトなどのユーザーの目に見える部分を中心に、実装する機能、ハードウェア、セキュリティなどの機能面を決定する工程です。外側の大枠を固める作業であることから「外部設計」と呼ばれる場合もあります。

最終的な納期や開発コストを決定する段階でもあるため、クライアントとの認識の食い違いが起きないようしっかりすり合わせることが大切です。クライアントが設計書を理解できるよう、専門用語は極力使用せず、噛み砕いた表現で作成する必要があります。

3. 詳細設計(内部設計)

ウォーターフォール型の3つ目の工程は、実際にプログラミングできる段階までに落とし込んだ指示書として、設計図を作成する「詳細設計」フェーズです。基本設計がクライアント向けであるのに対し、詳細設計は開発会社内部のエンジニア・プログラマー向けに作成します。

具体的な作業は、各機能の仕様書、プログラミングのルール、データフロー図など、実装における専門資料の作成などです。作成にはシステムに関する専門知識が必要であるため、システム開発会社の作業が中心となります。

4. プログラミング(開発・実装)

ウォーターフォール型の4つ目の工程は、システムを開発・実装するための「プログラミング」のフェーズです。詳細設計書を元に、システム開発会社のエンジニア・プログラマーがプログラミングをおこないます。

詳細設計で分割された機能(モジュール)ごとに、チームで作業にあたるケースもあれば、1つのチームがモジュールを順番に開発するケースもあります。

5. 単体テスト

ウォーターフォール型の5つ目の工程は、モジュール単体ごとに問題なく動作するか、要件定義を満たしているかをテストする「単体テスト」フェーズです。

エンジニア・プログラマーが担当する場合や、選任のテスターが担当する場合もあります。テスト結果をフィードバックしながら、不具合の修正作業もこの工程でおこないます。

6. 結合テスト

ウォーターフォール型の6つ目の工程は、単体テストの完了したモジュールを複数結合した「サブシステム」をテストする「結合テスト」フェーズです。結合したサブシステムに不具合がないか、モジュール同士が正常に連携できるかを確認します。

サブシステム内部の結合テストはもちろん、サブシステム外との連携をチェックする外部結合テストの実施も重要です。

7. システムテスト

ウォーターフォール型の7つ目の工程は、システム全体の動作を総合的にテストする「システムテスト」フェーズです。すべてのプログラムが問題なく動作するかを確認します。

要件定義を満たしているか、アクセスが集中したときの耐久性・処理速度は問題ないかなど、あらゆる側面を考慮に入れてテストすることが大切です。

8. 運用テスト

ウォーターフォール型の8つ目の工程は、最終的なテストを実施する「運用テスト」フェーズです。リリースして問題ない品質かどうかを確認する段階であり、ユーザー側で使用する環境にシステムを移行してテストを実施します。

要件を満たしているか、操作性・機能性に問題はないかを、ユーザー(クライアント)の視点に立って確認することが重要です。運用テストでは、実際にシステムを使用するユーザー(クライアント)が参加します。

9. リリース

ウォーターフォール型の9つ目の工程では、完成したシステムをリリースします。はじめてシステム開発する企業・組織であれば、完成したシステムを本番環境へリリースして完了です。

旧システムからのリプレイス・再構築であれば「移行作業」が必要となります。一気に旧システムから切り替える「一斉移行」のほか、徐々に新しいシステムに切り替える「順次移行」があります。

10. 運用・保守

リリースされたシステムは安定的に稼働させていかなければならないため、システムを利用している間は運用・保守が必要です。具体的には、以下の2つの業務にわかれています。

  • システムがダウンしないように、トラブル対応・メンテナンスする保守業務
  • 不具合の改修やシステムのアップデートに関連する運用業務

一般的には、開発を担当したシステム開発会社が担う、もしくはメンテナンス専門会社にアウトソーシングするケースが多いです。しかし、クライアントも運用・保守に携わる必要があります。業務を停止させないためにも、綿密なコミュニケーションを心がけることが重要です。

アジャイル型システム開発の工程

アジャイル型は綿密なコミュニケーション、連携、協調が重要となるのが特徴であり、ウォーターフォール型とは開発手法も大きく異なります。アジャイル型の主な開発工程は以下のとおりです。

  1. リリース計画の策定
  2. システム計画の分割
  3. イテレーションの実行・反復

以降でひとつずつ詳しく解説します。

1. リリース計画の策定

アジャイル型システム開発の最初の工程は、開発するシステムの概要となるおおまかな仕様・要求仕様を決定する「リリース計画の策定」フェーズです。

アジャイル型システム開発では、修正や変更が生じることを前提に進めることが最大の特徴です。開発工程のなかで生じる仕様変更や改修に柔軟に対応するため、ウォーターフォール型のように最初から要件定義を綿密に決定することはありません。

リリース計画の策定を細かく実施することで開発スピードが向上するため、より柔軟に対応できます。要件定義をおこなわないからといって、リリース計画の策定を怠ることのないよう注意が必要です。

2. システム計画の分割

策定されたシステム計画をもとに、システム全体を構成する機能を分割して優先順位を決め、開発順序を決定するフェーズです。機能を分割する基準となるのが「開発期間はどの程度かかるのか」です。具体的には、1週間〜4週間で開発できる単位に機能を分割することが多いです。

3. イテレーションの実行・反復

分割したシステムの機能ごとに「要件定義」「設計」「開発」「テスト」「リリース」を進めるフェーズです。機能ごとにイテレーションを実行・反復することにより、システム全体が徐々に開発されていきます。

イテレーションが完了するごとに、検証・修正が繰り返されるのがアジャイル開発の特徴です。クライアントと連携しながら、さらに機能を追加するのか、開発を完了させるのかなどを、都度判断します。

アジャイル開発の流れやメリットなどを知りたい方は、以下の記事でより詳しく解説しているため参考にしてみてください。

ウォーターフォール型を採用するメリット・デメリット

pixta_86760395_M

システム開発モデルにはそれぞれメリットとデメリットがあります。自社に向いている開発手法を選定するには、各メリットやデメリットを把握することが大切です。

ウォーターフォール型のメリット

ウォーターフォール型のメリットは次の3つがあります。

  • 工程全体がシンプルでわかりやすい
  • スケジュールの策定・進捗管理がしやすい
  • 大規模システムや大人数でのプロジェクトに対応しやすい

下記で詳しく解説します。

工程全体がシンプルでわかりやすい

ウォーターフォール型のメリットの1つ目は、上流工程(要件定義)から下流工程(保守・運用)まで順に進める工程がシンプルでわかりやすいことです。1つの工程が完了・検証されてから次の工程に移り、基本的に後戻りはしません。

最初の要件定義でどのようなシステムを開発するかを細かく決めるため、最終目的もわかりやすく、全員が共通認識を持って進められます。システム開発初心者でも理解しやすいため、未経験者をシステム部門に配属する可能性がある場合にもおすすめの開発モデルといえるでしょう。

スケジュールの策定・進捗管理がしやすい

ウォーターフォール型のメリット2つ目は、スケジュールの策定・進捗管理がしやすいことです。同じ工程を繰り返さないため、納期が決まれば工程ごとにスケジュールを立てやすいでしょう。

開発着手後も、今どこの段回まで進んでいるのか、どこで遅れが出ているのかの状況が把握しやすいです。工程ごとにタスクがあらかじめ決まっているため、無理のない範囲で人員配置できるのもメリットといえます。

大規模システムや大人数でのプロジェクトに対応しやすい

ウォーターフォール型のメリットの3つ目は、大規模システムや大人数でのプロジェクトに対応しやすいことです。システム開発の規模が大きくなるほど人員も必要となるため、あらかじめスケジュールが決定しているウォーターフォールモデルであれば対応しやすいでしょう。

決められたスケジュールどおり進められるため、段階ごとに綿密に品質を担保できるところが大規模開発に向いています。日本でもっともメジャーな開発手法のため、ほとんどの開発会社で対応してもらえることもメリットです。

ウォーターフォール型のデメリット

ウォーターフォール型のデメリットは次の2つです。

  • 要件定義からリリースまでに長期間を要する
  • 工程が進んでからの修正・変更に対応しづらい

下記で詳しく解説します。

要件定義からリリースまでに長期間を要する

ウォーターフォール型のデメリット1つ目は、要件定義からリリースまでに長期間を要することです。同じ期間で複数の工程を同時に進めることはなく、ひとつずつ工程を綿密に進めるため、一般的には半年〜1年ほどの開発期間を要するといわれています。

要件定義から順を追って開発を進めるため、担当者ごとに待ち時間が発生することもデメリットです。要件定義中はPGの作業が発生しない、プログラミング期間は他の担当者は動けないなど、空き時間が発生することを想定して人員配置する必要があります。

工程が進んでからの修正・変更に対応しづらい

ウォーターフォール型のデメリット2つ目は、工程が進んでからの修正・変更がしづらいことです。ウォーターフォール開発は上流から下流へ段階ごとに進むため、工程が進んだ段階で前の工程に手戻りすることはできません。

大きな変更や修正をおこなうとすべてのスケジュールがくるい、これまで進めてきた工程がすべて無駄になる可能性があります。手戻りできない分、追加で修正や開発が必要な機能は一旦見送り、次回の開発の際に要件として組み込むなどの対応が必要です。

要件定義のやり直しや、納期の大幅遅れによりクライアントに大きな迷惑がかかり、余分なコストが発生するリスクがあることを念頭においておきましょう。

アジャイル型を採用するメリット・デメリット

pixta_78202891_M

次にアジャイル型のメリット・デメリットを紹介します。ウォーターフォール型と比較することで、自社にはどちらの手法があっているかを確認しましょう。

アジャイル開発のメリット

アジャイル型のメリットには次の3つがあります。

  • 重要なシステムから段階的にリリースできる
  • 迅速な事業展開ができる
  • クライアントとの綿密なコミュニケーションがとりやすい

下記で詳しく解説します。

重要なシステムから段階的にリリースできる

アジャイル型のメリットの1つ目は、重要なシステムから段階的にリリースできることです。アジャイル開発は機能ごとに要件定義からリリースまでおこなうため、早くリリースしたい機能や重要な機能を優先してリリースできます。

全体の開発期間もウォーターフォール型と比較して短いため、早くリリースしたいシステムや機能がある場合はアジャイル開発が向いているでしょう。

迅速な事業展開ができる

アジャイル型のメリット2つ目は、迅速な事業展開ができることです。機能ごとに並行して開発を進めるためリリースまでがスピーディーであり、仕様の追加にも柔軟に対応できます。事業計画をすぐにシステムへ反映できるため、ビジネスがスムーズに進むでしょう。

クライアントとの綿密なコミュニケーションがとりやすい

アジャイル型のメリット3つ目として、クライアントとの綿密なコミュニケーションがとりやすいことが挙げられます。イテレーションごとにクライアントとのすり合わせがおこなわれるため、理想のシステムを構築しやすいです。

クライアントとのコミュニケーションにより開発途中で改善点が見つかれば、次回のイテレーションで反映できることもメリットといえるでしょう。

アジャイル開発のデメリット

アジャイル開発のデメリットには次の2つがあります。

  • スケジュールや工程全体の進捗管理が困難
  • 対応できるシステム開発会社が少ない

下記で詳しく解説します。

スケジュールや工程全体の進捗管理が困難

アジャイル型のデメリット1つ目は、スケジュールや工程全体の進捗管理が困難であることです。アジャイル型ではイテレーションごとにスケジュールを設定するため、プロジェクト全体のスケジュールや進捗状況を把握しにくい傾向にあります。

開発しながらシステムの内容を固めていくため、必要以上に仕様変更・修正が発生し、先の見通しが立ちにくいです。開発の方向性がブレてしまいがちである点も、スケジュールが立てにくい要因といえます。

対応できるシステム開発会社が少ない

アジャイル型のデメリット2つ目には、対応できるシステム開発会社が少ないことが挙げられます。日本ではウォーターフォール開発がまだ主流であるため、アジャイル開発を希望する場合はシステム開発会社の選択肢が限られるでしょう。

プロジェクトに応じた開発モデルの使い分けが重要

ビジネス_握手

ウォーターフォール型とアジャイル型のシステム開発モデルに優劣はありません。

それぞれの特徴やメリット・デメリットを把握し、システム開発プロジェクトの性格に応じて選定することが重要です。各モデルはどのようなプロジェクトに向いているのか、具体的に紹介します。

ウォーターフォール型に向いているシステム開発プロジェクト

ウォーターフォール型は、主に以下のシーンでの活用に向いています。

  • 要件やニーズが確定していて納期に余裕がある場合
  • 機能全体で活用してこそ効果を発揮するシステムを開発したい場合
  • 大規模システムを開発するプロジェクトの場合

たとえば、従来から活用しているシステムのリプレイス・再構築、あるいは課題が明確な業務の効率化などが挙げられるでしょう。

アジャイル型に向いているシステム開発プロジェクト

アジャイル型は、主に以下のシーンでの活用に向いています。

  • スピーディーな展開が求められる新規事業に活用するシステムを開発する場合
  • 全体の要件が固まっていないシステムを開発する場合
  • クライアントの事業計画によって途中で仕様変更が起きる可能性がある場合

たとえば、顧客の反応を見ながら機能追加を繰り返すBtoC向けサービスには、アジャイル型が最適といえるでしょう。一方で、要件やニーズが確定しているプロジェクトには向かない傾向にあります。

重要度の高まるアジャイル型システム開発

開発モデルごとに特徴や向いているプロジェクトは異なりますが、近年ではアジャイル型システム開発への注目が高まっています。市場のグローバル化が加速していること、ビジネスにおけるインターネット・Webの比重が高まっていることが考えられる要因です。

ウォーターフォール型で全体を計画してからシステム開発に取りかかると、急激に変化する時代の流れへの対応が難しいといえます。

必要な機能から迅速にリリースできるアジャイル型に興味を示す企業が増えているのは必然であり、今後も需要が加速していくことでしょう。

備考:覚えるとコミュニケーションがスムーズになる開発現場の略語

最後に、備考として「覚えておくとコミュニケーションがスムーズになる開発現場の略語」を紹介します。システム開発の工程をスムーズに進めるために、開発現場で飛び交う略語を覚えておくといいでしょう。

略語 本来の英語 意味
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 運用テスト

まとめ

システム開発の工程にはさまざまな開発モデルがありますが、代表的な手法は「ウォーターフォール型」と「アジャイル型」です。どちらを選択するかは、各特徴やメリット・デメリットをおさえる必要があります。

本記事では、システム開発の主な工程や代表的な開発モデルなどを紹介しました。システム開発会社の選定でお困りの場合は『比較ビズ』に相談してみてはいかがでしょうか?

『比較ビズ』では、必要事項を入力する2分程度で、システム開発に対応できる業者を探せます。複数の業者に無料で相談できるのも嬉しいポイントのため、ぜひ利用してみてください。

監修者の一言

システム開発のプロジェクトを成功させるためには、発注者と受注者が適時適切なタイミングでしっかりとコミュニケーションを取ることが重要になります。実際にシステム開発を行うのはシステム開発会社側の受注者になりますが、システムの完成形イメージを持つのはお客様側の発注者です。

お客様側がシステム開発会社側に誤った指示や伝達をしてしまうと、システムの完成形も変わってしまい、結果としてシステム開発のプロジェクトが失敗に近づいてしまいます。そのような事態に陥らないためにも、双方の意識合わせの時間や擦り合わせの時間がとても重要になるのです。

もし仮に方向性を誤った場合でもそれを放置することなく、すぐにコミュニケーションの場を設けるべきです。内容によってはプロジェクト期間が長引く可能性も十分に考えられますが、システム完成後に「イメージと違った。」、「もっとこうしたかった。」、というようなリスクを未然に防止することができるからです。

株式会社GeNEE
代表取締役 日向野卓也
監修者

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

比較ビズ編集部
執筆者
比較ビズ編集部では、BtoB向けに様々な業種の発注に役立つ情報を発信。「発注先の選び方を知りたい」「外注する際の費用相場を知りたい」といった疑問を編集部のメンバーが分かりやすく解説しています。
Webシステム開発にお困りではありませんか?

もしも今現在、

  • どの開発会社に依頼したらいいかわからない
  • マッチングサイトを作りたい
  • 定期的なメンテナンスやアップデートをお願いしたい

全国に何万もあるシステム開発会社から、ピッタリの一社を見つけるのは大変です。比較ビズではシステム開発会社の登録に力を入れており、価格重視、デザイン重視、技術重視など、様々な特徴を持った会社から一括で見積もりが貰えます。まずはお気軽にご相談ください。

掲載企業から一覧で比較して探す