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

更新日:2021年04月05日 発注カテゴリ: Webシステム開発
システム開発の工程・流れ|ウォーターフォールとアジャイル?適切な開発モデルを選ぶには?

システム開発にはどんな工程がある?リリースまでの流れは?経験のないまま、システム開発を任された企業担当者であれば知りたいはずであり、同時に非常に重要なことでもあります。なぜなら、システム開発には工程・手法の異なる複数の開発モデルがあり、担当者が重要な役割を担う開発工程があるからです。理想のシステムを開発・構築するためにも、開発モデルの違いを含めた、システム開発の工程・流れを把握しておくことが重要。そこで本記事では、ウォーターフォール型、アジャイル型という異なる開発モデルの違いを主軸に、システム開発の工程・流れを徹底解説!自社のシステム開発に適切なのはどちらか?開発モデルを選ぶヒントも紹介していきます。

システム開発の工程・流れとは?

システム開発とは、業務の効率化やサービスのローンチなど、課題解決・目的達成に向けたコンピューターシステムを開発・構築すること。これを実現するには、どのようなコンピューターシステムを開発するのかという企画段階から、リリースして運用するまで、さまざまなプロセス・流れを経る必要があります。このプロセス・流れをシステム開発の「工程」と呼びます。一般的なシステム開発のおおまかな工程は以下の通り。

工程 概要 工程の担当者
要件定義 目的・ニーズをもとに開発するシステムの必要な要件を策定 企業担当者、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 運用テスト
Webシステム開発を一括見積もりで発注先を楽に探す
比較ビズへ掲載しませんか?

Webシステム開発の案件一覧

Webシステム開発のお見積り案件の一覧です。このような案件に対応したい場合は「資料請求フォーム」よりお問い合わせください。

一括見積もりで発注業務がラクラク!

  • 無料一括見積もりで募集開始
  • 複数の業者・専門家から提案が入る
  • ピッタリの一社を見つけよう

不透明な見積もりを可視化できる「比較ビズ」

比較ビズは「お仕事を依頼したい人と受けたい人を繋ぐ」ビジネスマッチングサービスです。
日本最大級の掲載企業・発注会員数を誇り、今年で運営15年目となります。
比較ビズでは失敗できない発注業務を全力で支援します。

日々の営業活動で
こんなお悩みはありませんか?

営業活動でよくある悩み

そのお悩み比較ビズが解決します!

詳しくはこちら
お電話での見積もりはこちら

一括見積もりで発注先を探す