上流工程 【上流プロセス】 上流フェーズ
概要
上流工程(上流プロセス)とは、情報システムやソフトウェアの開発において、要件定義や設計など、構想や計画を行う工程のこと。システム化計画など開発が始まる前の意思決定過程も含める場合と、これらを「超上流工程」など別に考える場合がある。ウォーターフォールモデルなどの古典的なシステム開発手順では、要件定義、設計、製造、試験などの各工程を時系列的に順番に一つずつ完了させながら進める。これを川の流れになぞらえ、前半部分を上流工程、後半部分を下流工程と呼ぶ。
上流工程では利用者側と開発者側が協力し、システムに対する要求分析や要件定義を行う。要件に基づいてシステムやソフトウェアの基本設計や詳細設計などを行い、納品物の仕様や構成、設計の詳細を確定させる。場合によっては前段階のシステム化計画・構想などを含める場合もある。
日本の大規模なシステム開発案件の多くは、上流工程をシステムインテグレータ(SIer)企業などのシステムエンジニアが行い、その発注により下請け企業のプログラマやテスターなどが下流工程を分担して実施するという流れで行われることが多い。
2000年代以降には、従来の漸進型(インクリメンタル型)の開発工程とは異なり、設計、実装、テストのサイクルを何度も繰り返して徐々に完成度を上げていく反復型(イテレーティブ型/スパイラル型)の開発手法も広まっており、その場合は上流・下流という区分はあまり使われない。
(2019.1.24更新)