たとえるなら

このサイトのマスコット、帽子をかぶった青い小鳥のルートンが旗を振っている

川の流れそのものです。上流で決めた水の流れは、そのまま下流に届きます。上流で水が濁れば下流も濁るように、最初の要件定義や設計での間違いは、後の開発やテストにそのまま流れ込んで大きな影響を与えます。

要件定義 設計 開発 テスト
川の流れのように工程が進む。前半の要件定義・設計が上流工程、後半の開発・テストが下流工程。

もう少しくわしく

システム開発は大きく、「何を作るか決める(要件定義)」「どう作るか決める(設計)」「実際に作る(開発)」「正しく動くか確かめる(テスト)」という流れで進みます。この流れを川にたとえ、前半の要件定義・設計を上流工程、後半の開発・テストを下流工程と呼びます。

それぞれの工程で何をするのかを見てみましょう。要件定義では「誰が何のために使い、何ができればよいか」をお客さまと決めます。設計では、それを実現するための画面・データの持ち方・処理の流れに落としこみます。開発ではプログラムを書き、テストでは決めたとおりに動くかを確かめます。現場によっては設計を基本設計と詳細設計に分け、前者までを上流と呼ぶこともあります。

いちばん混同されやすいのが元請け・下請けという契約上の関係です。上流・下流は作業の順番を指す言葉で、会社の立場を表すものではありません。元請けの会社が下流の開発まで自社で担うこともあり、下請けの立場で上流の設計から入ることもあります。「上流工程を担当する」と「元請けである」はまったく別のことなので、混ぜて考えないようにしてください。

この呼び方は、工程を上から下へ順番に進めるウォーターフォール開発と深く結びついています。実務では工程ごとに成果物と承認がひもづいており、要件定義書をお客さまに確認してもらって合意が取れてから設計に進み、設計書をレビューしてから開発が始まります。前の工程を締めてから次に進むこのやり方は、途中で方針が揺れないようにするための仕組みです。

恐れられているのが手戻りです。上流での決め忘れや読み違いが開発やテストの段階で表に出ると、設計からやり直しになって工数もスケジュールも大きく膨らみます。もうひとつの失敗は、上流の文書が現場に届いていないこと。分厚い設計書ができても、実際に作る人が読んでいなければ意味がありません。書いたら伝わったことにしてしまうのが落とし穴です。

新人は下流の工程から入ることが多いですが、そこにこそ大事な役割があります。設計書を読んで「ここはどう動くのが正しいのですか」と質問することです。作る人が気づく抜けは、上流の担当者には見えていません。指摘は否定ではなく、手戻りを防ぐ協力です。遠慮して自分の解釈で埋めてしまうほうが、あとで大きな問題になります。

注意したいのは、上流・下流は偉さの上下ではないということです。日本のIT業界では経験を積むと上流を担当する慣習があり、求人でも「上流工程から携われます」が魅力として書かれがちですが、開発やテストにも高い専門性があります。また、短いサイクルで要件から確認までを繰り返すアジャイル型の現場では、この言い方自体があまり使われません。

現場での使われ方

「この案件は上流から入れますよ」

求人や営業でよく聞く言い回しです。プログラムを書くだけでなく、要件定義や設計といった決めごとの段階から参加できる、という意味で使われます。

「上流でのミスが下流で発覚して、手戻りが発生した」

設計段階の間違いがテスト段階で見つかり、前の工程からやり直しになった状況です。直す範囲が広がるため、開発現場でもっとも避けたい展開です。

「そこは上流で決まっている話なので、勝手に変えないでください」

お客さまと合意済みの決めごとなので、作る側の判断で動かしてはいけないという注意です。変えたい場合は仕様変更として相談する筋になります。

「下流のことも分かる人に設計してほしいよね」

実際に作る側の苦労を知らない設計は、現実的でない指示になりがちだという指摘です。両方の工程を経験した人が重宝される理由でもあります。

よくある質問

上流工程のほうが偉いのですか?

いいえ、川の位置になぞらえて工程の順序を表した言葉で、偉さの上下ではありません。日本では上流担当が経験者の役割とされる傾向はありますが、開発もテストも専門性の高い仕事です。どの工程が欠けてもシステムは完成しないので、上下ではなく役割の違いとして受け取ってください。

上流工程には具体的にどんな作業が含まれますか?

一般には、お客さまの要望を聞き取る要件定義と、それを実現する形にまとめる設計までが上流です。ただし区切り方は現場によって違い、設計を基本設計と詳細設計に分けて前者までを上流と呼ぶ会社もあります。案件に入るときは、どこまでを上流と呼んでいるのかを確認すると話がずれません。

上流工程と元請けは同じ意味ですか?

違います。上流工程は作業の順番を、元請けは契約上の立場を指す言葉です。元請けの会社が開発まで自社で担うこともあり、下請けの立場で設計から関わることもあります。「上流を担当する」と「元請けである」は別のことなので、求人や提案書を読むときは分けて考えてください。

アジャイル開発にも上流・下流はありますか?

アジャイル開発では短いサイクルで要件・設計・開発・確認を繰り返すため、工程を一方通行の川にたとえるこの言葉はあまり使われません。主にウォーターフォール型の現場で使われる言い方です。ただし「先に決める作業」と「作る作業」自体は、どちらの進め方にも存在します。

下流工程から上流工程に移るにはどうすればいいですか?

多くの現場では、開発やテストを経験したうえで設計の一部を任され、少しずつ範囲を広げていく形になります。近道として有効なのは、設計書を読んで疑問点を挙げること、打ち合わせの議事録を書くことです。どちらも上流の考え方に触れられる仕事なので、機会があれば引き受けてみてください。

関連用語

関連する記事

エンジニア職種図鑑

この言葉を使って働く人たちの仕事を、7つの職種で

ITの学び方ガイド

もっと知りたくなったら。教材の選び方を3ステップで