上流工程とは

要点

  • 上流工程とは、システム開発の中で「何を、何のために作るか」を決める初期の工程群のことです。
  • 代表的な営みに「業務要件定義」「システム要件定義」「基本設計(外部設計)」「見積もり」の4つがあります。
  • ここを疎かにすると、実装やテストといった後工程で大きな手戻りが発生してしまいます。
📝 要件を固める 業務要件定義 システム要件定義
📐 形にする 基本設計(外部設計) 見積もり

ぽち先生も、毎日こんな風にアプリを使っています

📱 新しいアプリを使う 🏠 リフォームの計画
業務要件定義新しいアプリを作るとき、そもそも「何のために」作るのかって、最初にどうやって決めるんだろう? システム要件定義「使いやすくしたい」という漠然とした要望を、実際の機能にするにはどうやって具体化するんだろう? 基本設計このアプリの画面、誰がどうやってこのレイアウトに決めたんだろう? 見積もりこのシステムを作るのに、どれくらいの期間や費用がかかるか、作る前にどうやって予測するんだろう?

開発全体の流れの中での位置づけ

システム開発は、おおまかに「要件定義」→「設計」→「実装」→「テスト」→「リリース・運用」という流れで進みます。

要件定義
設計
実装
テスト
リリース・運用

このうち「要件定義」と「設計の前半(基本設計まで)」が上流工程、「詳細設計・実装」以降が下流工程と呼ばれます。上流工程は、家づくりでいえば「どんな家に住みたいか」「間取りをどうするか」を決める段階にあたります。

なぜ上流工程が重要なのか

上流工程での間違いや認識のズレは、気づくタイミングが遅くなるほど、修正コストが大きくなります。

上流工程で気づくドキュメントの修正だけで済み、コストは小さい
実装中に気づくコードの書き直しが発生し、コストが増える
リリース後に気づく本番影響・再テスト・関係者への説明など、コストが大きく跳ね上がる

ぽち先生のヒント家を建てるとき、基礎工事や骨組みが終わったあとに「やっぱり部屋を増やしたい」と言うと、大掛かりな追加工事になってしまうよね。設計図の段階で希望をすり合わせておけば、修正は紙の上だけで済むんだ。

上流工程を構成する4つの営み

「上流工程」はひとつの作業ではなく、目的の異なる4つの営みの積み重ねです。

📝 業務要件定義 業務の目的・課題を整理
⚙️ システム要件定義 機能要件・非機能要件を定義
🖥️ 基本設計(外部設計) 画面・帳票・外部連携を設計
🧮 見積もり 工数・コストを見立てる

業務要件定義とは(概要)

業務要件定義は、システムそのものではなく「業務上、何を解決したいか」という目的や課題を明らかにする工程です。現場の担当者へのヒアリングや、業務の流れを図にした「業務フロー図」を通じて、あるべき業務の姿を整理し、「業務要件定義書」としてまとめます。

ぽち先生のヒントリフォームを頼む前に「家族が増えるので部屋を増やしたい」「片付けやすい家にしたい」と、暮らし方の希望を業者に伝える段階に似ているよ。

システム要件定義とは(概要)

システム要件定義は、業務要件定義で固まった目的を受けて「システムに何をさせるか」を具体化する工程です。機能そのものを表す「機能要件」と、性能や可用性など機能以外の品質条件を表す「非機能要件」に分けて整理します。

ぽち先生のヒントリフォームの「間取り図・仕様書」を作る段階に相当するよ。「収納を増やしたい」という希望を、「壁面収納を2畳分設置する」という具体的な仕様に落とし込むんだ。

基本設計(外部設計)とは(概要)

基本設計は、システム要件を元に「利用者から見える部分」を具体的に設計する工程です。画面のレイアウトや帳票の様式、外部システムとの連携方法などを決めます。これに対し、プログラム内部の作りを決める工程は「詳細設計(内部設計)」と呼ばれ、基本設計の後に続きます。

見積もりとは(概要)

見積もりは、開発にどれくらいの工数(時間・人数)とコストがかかるかを事前に予測する営みです。過去の実績と比較する「類推見積もり」や、作業を細かく分解して積み上げる「積み上げ見積もり」といった手法があり、想定外に備えて「バッファ」も見込んでおきます。

まとめ

上流工程は、システム開発における「何を、何のために作るか」を決める土台の工程です。ここでの認識のズレや手抜きは、後工程になるほど大きなコストとなって跳ね返ってきます。

それぞれの営みは、以下の個別トピックでさらに詳しく学べます。

関連トピック:

🏠 トップに戻る