上流工程
システム開発の前半でやる工程だよ
考える作業だよ
主にシステムエンジニアさんのお仕事だよ
簡単に書くよ
上流工程(読:ジョウリュウコウテイ)とは
システム開発において前半でやることになる作業
であり
どんなものを作るか考える作業
です。
一般的には
お客さまからのヒアリング(要件定義)とか設計とか
を指している場合が多いと思います。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ウォーターフォール型」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ウォーターフォール型は、システム開発のやり方のひとつで「工程を1つずつ順番に終わらせていく やり方」です。
水が高いところから低いところに流れ落ちるように、最初の工程から最後の工程に向かって1つずつ順番に終わらせていきます。
ウォーターフォール型の開発では、全体の作業がいくつかの工程に分けられます。
一般的なのは
1.要件定義
2.基本設計
3.詳細設計
4.プログラム設計
5.プログラミング
6.単体試験
7.結合試験
8.総合試験
のような分け方でしょうか。
各工程の中身が分からない人は、それぞれの用語の説明を ご覧ください。
また、お仕事現場によっては一部の工程がなかったり工程の呼び名が違ったりします。
そこら辺は、ゆるく捉えてください。
以上を踏まえて、本題に入ります。
先ほどの工程分けを もう一度 見てください。
1.要件定義
2.基本設計
3.詳細設計
4.プログラム設計
5.プログラミング
6.単体試験
7.結合試験
8.総合試験
です。
実は、これらの工程は大きく2つに分けられます。
それは
1.要件定義
2.基本設計
3.詳細設計
4.プログラム設計
と
5.プログラミング
6.単体試験
7.結合試験
8.総合試験
です。
開発の前半にやる
1.要件定義
2.基本設計
3.詳細設計
4.プログラム設計
は「考える作業」です。
頭をウンウン悩ませて「何を作る?」や「どう作る?」といった内容を決めます。
開発の後半にやる
5.プログラミング
6.単体試験
7.結合試験
8.総合試験
は「実際に作る作業」です。
「考える作業」で決まった内容をもとにして、プログラムを作ったり、作った物がおかしくないかテストします。
この2つに分類した工程のうち、前半の
1.要件定義
2.基本設計
3.詳細設計
4.プログラム設計
が「上流工程」です。
システム開発の作業工程を川の流れに見立てると、上流の方でやる作業ですよね。
あと、ついでなので書いておくと、後半の
5.プログラミング
6.単体試験
7.結合試験
8.総合試験
は「下流工程」と呼ばれます。
お仕事現場によっては、区切り方が違う場合もありますけどね。
基本的には、そんな感じです。
一般的に、上流工程は考える作業です。
システムエンジニアさんが中心になってやります。
開発の前半でやる作業です。
下流工程は実際に作る作業です。
プログラマさんが中心になってやります。
開発の後半でやる作業です。
上流工程と下流工程のどちらが大事かといえば、どちらも大事です。
ただし、一般的には上流工程の方が重要視される傾向にあります。
それは上流工程の方が
ミスるとヤバい
からです。
新作料理の発表会で考えるとイメージしやすいかもしれません。
新作料理の発表会において、料理がレシピ通りに作れませんでした。
どうしましょうか?
簡単ですね。
作り直せば良いだけです。
時間が足りなかったら、人を増やすとかの対応も考えられます。
それでは、レシピ自体が間違っていたら、どうでしょうか?
これは、もう、お手上げですよね。
一から考え直さなくては、いけないわけですから。
システム開発も同じです。
下流工程のミスは比較的、簡単に取り戻せます。
決して喜ばしい状況では ありませんけどね。
プログラムに不具合(バグ)があったとか、作るのが遅くて時間が足りないとかであれば、人を増やせば何とかなります。
一方で上流工程のミスは取り戻すのが大変です。
必要な機能が漏れていたとか、機能同士の関係性に矛盾があったとかが発覚すると考え直しです。
考える作業は人を増やせば何とかなるとも限りません。
しかも、間違った状態ですでに物を作っていたら、その作った物は全部、使えません。
工数が無駄になります。
そんなわけで、上流工程は比較的ベテランの人が担当する傾向にあります。
経験が少ない人は、最初は下流工程から関わることが多いはずです。
一言でまとめるよ
まぁ「上流工程」って単語が出てきたら「どんなものを作るか考える作業なんだな~」と お考えください。
おまけ
■検索してみる?





