上流工程とは|ウォーターフォール型システム開発の土台となる工程を解説!

上流工程とは|ウォーターフォール型システム開発の土台となる工程を解説!

上流工程とはなにか?システム開発プロジェクトに携わったばかりの担当者であれば、頻繁に耳にする上流工程という用語がなにを意味するのか?わからないかもしれません。そんな方に向け、意味・該当する開発工程から重要性まで、ウォーターフォール型システム開発における「上流工程」の全体像を解説していきます。

なお、システム開発会社の探し方・選び方がわからない!という方はシステム幹事にお気軽にご相談ください。貴社の目的・予算にあった最適な会社を厳選してご紹介します。相談料・会社紹介料などは無料です。

【無料】システム開発会社を紹介してもらう

目次
  1. 1. 上流工程とは
    1. 1-1. ウォーターフォール型システム開発とは
  2. 2. 上流工程に含まれる4つの開発工程
    1. 2-1. 企画 / 要求定義
    2. 2-2. 要件定義
    3. 2-3. 基本設計(外部設計)
    4. 2-4. 詳細設計(内部設計)
  3. 3. 上流工程と下流工程の関係
  4. 4. ウォーターフォール開発における上流工程の重要性
    1. 4-1. 綿密な上流工程の実施で得られるメリット
    2. 4-2. ウォーターフォール開発のリスク
    3. 4-3. ウォーターフォール開発に適したプロジェクト
  5. 5. プロジェクトごとに適切なシステム開発手法は異なる
    1. 5-1. アジャイル
    2. 5-2. プロトタイプ
    3. 5-3. スパイラル
    4. 5-4. システム開発開発手法それぞれの特徴
  6. 6. 【まとめ】ウォーターフォール開発の土台となる上流工程を解説しました

上流工程とは

上流工程とは、企画から完成まで、いくつかに分類できるシステム開発工程のうち、開発初期段階に該当する複数工程をまとめた総称です。具体的には、企画から設計まで、実際の開発(プログラミング)に取り掛かる前の「どのようなシステムを開発するかを明確化する」工程を上流工程といいます。

ただし、上流工程という言葉は、主に「ウォーターフォール型システム開発」で使われる用語です。「企画」「設計」工程があっても、ウォーターフォール型以外の開発手法では、上流工程という用語は使われません。


ウォーターフォール型システム開発とは

ウォーターフォール(Waterfall)とは、滝や落水を意味する英単語のこと。文字通り、水が上流から下流に流れるように、システムが完成するまでの工程を順序立てて進めていく開発手法を「ウォーターフォール型システム開発」といいます。

つまり、上流工程とは「上流から下流へ」という開発プロセスを持つウォーターフォール型ならではの用語。一般的には「企画 / 要求定義」「要件定義」「基本設計」「詳細設計」という4つの工程をまとめて「上流工程」と呼びます。

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

ウォーターフォール型システム開発の特徴は、上流となる開発工程を100%完了させてから、次の工程に取り掛かること。原則として、下流から上流への手戻り、逆戻りは想定されていません。

ウォーターフォール型システム開発については以下の記事もあわせてご覧ください。

関連記事:ウォーターフォール開発とは?開発工程・メリット・向いているプロジェクトも解説

【無料】システム開発会社を紹介してもらう

上流工程に含まれる4つの開発工程

それでは、上流工程では具体的にどのようなことをするのか?4つの開発工程「企画 / 要求定義」「要件定義」「基本設計」「詳細設計」それぞれの内容を簡単に解説しておきましょう。


企画 / 要求定義

ウォーターフォール型システム開発のなかでも、もっとも上流に位置付けられる工程が「企画 / 要求定義」です。企画とは、どのような目的で、どのようなシステムを開発するのかを企画すること。要求定義とは、企画したシステムの目的を達成するため、システムに求められる要素(ニーズ・要求)を定義することです。

具体的には、あるべき理想の姿(To-Be)を実現するシステムを企画し、現状の課題(As-Is)とのギャップを埋めるために必要な要求を定義する工程です。たとえば「50名が同時アクセスし、0.5秒以内に検索結果を返せること」など、システムに求める要求を1つずつ具現化していく作業。最終的な成果物としての「要求定義書」へまとめていきます。

このことからもわかるように、企画 / 要求定義は「システムを開発する当事者の責任」で実施されるべき工程です。ただし、現場の課題と理想の姿はわかっていても、ギャップを埋める要求を言語化できない場合があることも事実。こうしたケースでは、外部のシステム開発会社の協力を仰ぐ、または要求定義書の代行作成を依頼する場合もあります。

要求定義については以下の記事もあわせてご覧ください。

関連記事:システム開発における要求定義の重要性|要件定義との違いや要求定義の実態・改善ポイントを解説

要件定義

「要件定義」とは、システムに求める要求を「どのように実現するのか」を定義する工程のこと。具体的には、要求定義書のニーズを実現するため、実装する機能、技術、ソフトウェア / ハードウェアなど、システムに必要な要素を明確化していきます。要件定義工程で明確化する主な要素は以下の通り。

システム要件

要求定義をもとに、予算・技術面を考慮しながら

システム化するもの / しないものを選別し、開発の方向性を定める

機能要件

構造、データ種類、処理手順、画面設計など、システムに必要な機能面を定義

非機能要件

可用性、拡張性、セキュリティなど、機能以外でシステムに求められる要件を定義

技術要件

言語、フレームワーク、データベースなど、開発に必要な技術要件を定義


この工程の成果物は「要件定義書」としてまとめられますが、システム開発を外注する場合は、受託側主導で作成されます。ただし、依頼側はなにもしなくていいわけではありません。自社の要求は反映されているか?外注先との認識のズレはないか?しっかりコミュニケーションしていくことが重要です。

要件定義については以下の記事もあわせてご覧ください。

関連記事:システム開発の要件定義とは?進め方や事例をわかりやすく解説

基本設計(外部設計)

「基本設計(Basic Design)」とは、要件定義書をもとに、開発するシステムの機能を「どのように実現するか」を明確化する工程のこと。画面設計 / 遷移など、外部から見たシステムがどのように動作するかを決定するため「外部設計」と呼ばれる場合もあります。基本設計工程では、主に以下のドキュメントを作成し、基本設計書としてまとめます。

 

作成するドキュメントの例

システム設計

ハードウェア / ソフトウェアを含むシステム / ネットワーク構成図など

画面設計

画面一覧、レイアウト図、遷移図、入出力項目など

帳票設計

帳票一覧、レイアウト図、帳票編集定義など

バッチ設計

バッチ処理一覧、処理フロー図、処理定義など

データベース設計

テーブルファイル一覧、ER図、CRUD図など

ファイル設計

ファイル一覧、レイアウト図など

外部インターフェース設計

外部インターフェース一覧、レイアウト図など

基本設計については以下の記事もあわせてご覧ください。

関連記事:システム開発の基本設計とは?その位置付け・重要性・発注者としての関わり方を解説

詳細設計(内部設計)

「詳細設計(Detail Design)」とは、基本設計書をもとに、開発するシステムの機能を「どうやって実現するか」内部仕様を明確化する工程のこと。ユーザーからは見えない内部仕様の詳細を決定する工程のため「内部設計」と呼ばれる場合もあります。詳細設計工程では、主に以下のドキュメントを作成し、詳細設計書としてまとめます。

 

作成するドキュメントの例

クラス図

システムを構成するクラスの関係を示す静的資料

モジュール構成図

各機能の処理に必要なモジュールを示す静的資料

アクティビティ図

操作 / 処理の流れを示した動的資料

シーケンス図

クラス / オブジェクト間のやりとりを時間軸で示した動的資料

IPO(処理機能記述)

バッチ処理などの入力 / 処理 / 出力の流れを示す動的資料

開発方針 / ルール

フレームワーク / ライブラリ / 言語 / 記述ルールなどの指示書

詳細設計については以下の記事もあわせてご覧ください。

関連記事:システム開発の詳細設計とは?プロジェクトの位置付け・役割をわかりやすく解説

【無料】システム開発会社を紹介してもらう

上流工程と下流工程の関係

上流工程の完了後、システム開発プロジェクトは、開発工程(プログラミング)を経て下流工程に進みます。具体的には、段階的に実施される「単体」「結合」「総合」「受入」の各テスト工程を総称したものが下流工程です。

ただし、下流工程は単なるテスト工程ではありません。たとえば、単体テストは「詳細設計で機能を分割したモジュールが、設計通りに動作するか」をテストする工程。つまり、詳細設計工程は「単体テストの設計書」を作成する工程でもあります。これを図式化したものが、以下の「V字モデル」です。

V字モデル

V字モデルが示すように、上流工程と下流工程は対の関係。上流の各工程は、下流の各テスト工程の設計書を作る役割もあるのです。

ウォーターフォール開発における上流工程の重要性

下流工程との関係を見てもわかるように、上流工程は「ウォーターフォール型システム開発プロジェクトの成否」に関わる重要な工程。なぜなら「前の工程を100%完了させてから次の工程に移る」ことが、ウォーターフォール開発の原則であり、特徴だからです。

綿密な上流工程の実施で得られるメリット

上流の各工程でやるべきことを徹底的に詰めることで、ウォーターフォール型ならではの特徴を活かした以下のようなメリットが得られます。

  • 計画通りにシステム開発プロジェクトを進められる
  • 企画通りのシステムを予算内で開発できる
  • 各工程の進捗を適切に管理できる

ウォーターフォール開発のリスク

一方、下流に流れた水が上流に戻ることがないのと同じように、ウォーターフォール型は工程の逆戻り・手戻りを想定していません。つまり、上流工程でのなんらかのつまづき、下流工程での修正は、以下のようなリスク要因となり得ます。

  • 前の工程への手戻り・修正によるスケジュール遅延
  • 工数が増えることによる予算超過

特に、下流工程に進んでからの仕様変更は、プロジェクトが迷走してしまう要因。企画側、開発側の認識にズレが生じないよう、要件定義の段階でしっかり方向性を定めておくことが重要です。

ウォーターフォール開発に適したプロジェクト

それでは、ウォーターフォール型のメリットを活かしつつ、リスクを最小化できるのは、どのようなシステム開発プロジェクトなのか?

  • システムの仕様・機能要件が明確なプロジェクト
  • クオリティの求められる大規模システム開発プロジェクト

仕様・機能要件が明確で、最初からシステムの完成形をイメージできているプロジェクトなら、修正・仕様変更というウォーターフォール型のリスクを回避可能。また、各工程で検証を繰り返すウォーターフォール型は、クオリティを担保しながら大規模なシステムを開発していくプロジェクトにも向いています。

プロジェクトごとに適切なシステム開発手法は異なる

ただし、システムに求められるニーズの多様化する現代では、ウォーターフォール型が必ずしも適切な開発手法だとはいえなくなりつつあります。たとえば、アイデアを素早く形にし、ユーザーニーズを反映させて進化するWebサービスなどは、ウォーターフォール型のメリットを活かせません。

つまり、システム開発手法ありきではなく、プロジェクトごとに適切な手法を選択することが重要。そのためには、ウォーターフォール型以外のシステム開発手法を知っておく必要があります。

アジャイル

アジャイル型とは、大まかに企画したシステムを細かな機能に分割し、優先度の高い順から「設計」「開発」「テスト」「リリース」を繰り返す開発手法のこと。設計からリリースまでのサイクルを「イテレーション」といい、リリースした機能を踏まえながらイテレーションを繰り返すことにより、システムの完成度を高めていきます。

イテレーションごとにレビューを繰り返すアジャイル型の場合、企画側と開発側の密なコミュニケーションが必須。アジャイル型には、開発手法の異なる「スクラム」「XP(エクストリームプログラミング)」などの種類があります。

プロトタイプ

プロトタイプ型とは、開発に取り掛かる前に試作品(プロトタイプ)を作成し、テスト・レビューを経たのち、本開発に取り掛かる開発手法のこと。開発工程はウォーターフォール型に準じるものの、設計以降のプロセスが「試作品の開発」>「テスト・レビュー」>「試作品の修正」>「本開発」となる点で異なります。

スパイラル

スパイラル型とは、企画したシステムをサブシステム(機能)に分解し、重要な機能から開発を進めていく手法のこと。各機能を「設計」「開発」「テスト」「レビュー」という1つのサイクルにまとめ、ループ線を描くようにサイクルを反復してシステムの完成を目指します。

アジャイル型と似ているように思えますが、機能単位でのリリースをしないことが大きな違い。ウォーターフォール型とアジャイル型のメリットを組み合わせたシステム開発手法です。

システム開発開発手法それぞれの特徴

 

メリット

デメリット

向いているプロジェクト

アジャイル型

・リリースまでの

 期間を短縮

・企画者のニーズを

 反映させやすい

・工程 / スケジュール

 管理が難しい

・プロジェクトの

 方向性がブレやすい

・仕様 / 機能要件の

固まっていないプロジェクト

・Webサービスや

 モバイルアプリなど

プロトタイプ型

・開発初期段階で

 不具合を発見できる

・本開発前に

 機能を追加しやすい

・開発コストが

 高騰しやすい

・開発期間が

 長期化しやすい

・これまでにない

 Webシステム /

 アプリの開発

・全体を管理しやすい

 小〜中規模プロジェクト

スパイラル型

・企画者のレビュー結果を

 反映させやすい

・クオリティーの高い

 プロダクトを開発できる

・スケジュール

 管理が困難

・開発コストが

 高騰しやすい

・クオリティ重視の

 大規模プロジェクト

・開発途中に仕様変更が

 発生する

 可能性のある

 プロジェクト


システム開発の手法については以下の記事もあわせてご覧ください。

関連記事:システム開発の手法4つの特徴・メリット・デメリットを解説

【まとめ】ウォーターフォール開発の土台となる上流工程を解説しました

上流工程とはなにか?システム開発プロジェクトに携わったばかりの担当者であれば、頻繁に耳にする上流工程という用語がなにを意味するのか?わからない。そんな方に向け、意味・該当する開発工程から重要性まで、ウォーターフォール型システム開発における「上流工程」の全体像を解説してきました。

ウォーターフォール型開発を成功させるポイントは、企画側 / 開発側で生じがちな認識のズレを上流工程で解消しておくことです。そのためには、企画側が上流工程に積極関与できる環境、および開発を任せるベンダーとの円滑なコミュニケーションが必須。これは、システム開発会社を選定する際のポイントにもなり得ます。

なお、システム開発会社の探し方・選び方がわからない!という方はシステム幹事にお気軽にご相談ください。貴社の目的・予算にあった最適な会社を厳選してご紹介します。相談料・会社紹介料などは無料です。

【無料】システム開発会社を紹介してもらう

最適なシステム開発会社を
プロが選定・紹介します!

  • 完全無料 完全無料
  • 無駄な営業電話が来ません 無駄な営業電話が
    来ません
  • 無駄な営業電話が来ません 毎月100件以上の
    相談実績

※ 気に入った会社が無ければ会う必要はありません。

お急ぎの方は
お電話ください

03-6457-3550

(24時間受付中)