- 🕒
- 更新
上流工程は難しい!?10分でわかる上流工程の仕組みと流れ
※当サイトはマイナビ・リクルート等各社サービスのプロモーションを含み、アフィリエイトプログラムにより売上の一部が運営者に還元されることがあります。 なお、得た収益が記事中での製品・サービスの評価に影響を与えることはありません。
ITエンジニアの一般的なキャリアパスとして下流工程から上流工程を目指すということがよくいわれています。
ところでそもそもシステム開発プロジェクトなどにおける上流工程とはいったいどんなものなのでしょうか。
ここではステップアップを目指すエンジニアに向けて、上流工程の内容や大まかな作業フローを解説します。上流工程に携わるエンジニアは下流工程を専門に担当するエンジニアよりも年収が高く、重要なポジションを任される傾向があります。このコラムを読んで上流工程への理解を深めつつ、ITエンジニアとして今後のキャリアビジョンを考えてみましょう。
※当サイトは口コミの一部を掲載しています。
転職サイト名 | 特長 | 求人を探す |
---|---|---|
レバテック キャリア | 【全年代におすすめ】 |
|
マイナビ IT AGENT | 【20代におすすめ】 |
|
Geekly | 【スピード転職におすすめ】 |
この記事の目次
そもそも上流工程とは?上流工程と下流工程は何が違う?
ここでは上流工程の概要、さらに上流工程にどんなやりがいがあるのかを簡単に紹介します。システム開発プロジェクトでは一般的にウォーターフォール・モデルという開発プロセスが採用されています。これはプロジェクトの全工程を「要件定義」「設計」「開発」「テスト」「運用」といったいくつかの工程に分割します。
そして、これらの各工程を順番に進めていくことで、システムを構築していきます。水が川を流れるように直列的に開発を進めていくことから「ウォーターフォール」という名前がつきました。
ウォーターフォール・モデルでは、プロジェクト開発における前半の工程を上流工程、後半の工程を下流工程と読んでいます。具体的には最初の「要件定義」から「設計」までが上流工程、後半の「開発」以降が下流工程になります。
上流工程は開発プロジェクト全体のプロセスの中では、プロジェクト全体の方向性を決める段階に相当します。上流工程の作業がどれだけ緻密に行われているかによってプロジェクトの成否が決まるのです。
それだけに非常に責任の重い仕事といえるでしょう。その責任の重さを反映してか、上流工程担当のシステムエンジニアは下流工程担当のシステムエンジニアやプログラマより年収水準も高い傾向があります。
上流工程とは
上流工程はソフトウェアやシステムなどの開発・設計における初期の工程のことを指します。複雑なシステム開発を成功させるためにはいきなりプログラムを作り始めるのではなく、実際の作業を始める前に作るシステムの内容を決める、開発スケジュールを組み立てる、といった計画作業が必要になります。こうした実装作業に入るのに必要な計画を決めていくのが上流工程です。
上流工程では顧客とのヒアリングにもとづき製品の仕様、および基本的な設計を決め、さらに開発予算やスケジュールについても検討していきます。具体的な作業内容としては対象物に求められる機能を定義する要件定義、実装される機能を定義する機能定義、スケジュールを決める計画立案などが挙げられます。
これらの上流工程を担当しているのがシステムエンジニアと呼ばれるITエンジニアです。ただし日本の場合すべてのシステムエンジニアが上流工程に関わっているとは限りません。なかには下流工程をメイン業務としているシステムエンジニアも存在します。そのため上流工程を担当するシステムエンジニアのことを特に上流システムエンジニアと呼ぶことがあります。
下流工程との違い
システムなどの開発プロジェクトにおいて初めの工程を上流工程と呼ぶのに対し、後ろの工程を下流工程と呼びます。下流工程は上流工程で決定された仕様にもとづき、コーディングやテスト、導入などを行う工程です。下流工程を担当するシステムエンジニアやプログラマといった職種の人が担当します。
上流工程がシステムの大まかなデザインおよび開発スケジュールを決める段階だとしたら、下流工程は決められた計画に基づき実際に製品を形にしていく段階ともいえます。
こうした上流工程・下流工程の関係から、立場的に上流工程サイドにいる人が指示する人、下流工程サイドにいる人は指示を受けて作業する人という関係が成り立ちます。
上流工程担当のシステムエンジニアは下流工程担当のメンバーを取りまとめ、開発プロジェクトを牽引するリーダー的な存在です。したがって多くのITエンジニアにとって、下流工程から上流工程へのステップアップを目指すというのが一般的なキャリアプランとなっています。
実際によくあるのが新人時代はプログラマや下流工程担当のシステムエンジニアとして現場で経験を積み、スキルを身に着けてから上流工程にチャレンジするという流れです。
上流工程の作業を担当するシステムエンジニアには下流工程の知識も要求されます。そのため下流工程を多く経験している人ほど上流工程の業務を身につけやすいといわれています。実際に下流工程の作業を経験したことのある上流システムエンジニアは多いです。
上流工程の業務フローをおさらい!業務内容と流れ
上流工程は開発プロジェクトの方向性、および出来上がった製品のクオリティを決める重要な工程です。上流工程のどこかに不備があると下流工程にしわ寄せがいき、プロジェクトが炎上してしまいます。
まさにプロジェクトの成否を握る責任重大な仕事といえるでしょう。それでは実際上流システムエンジニアと呼ばれる人たちはどのような業務をこなしているのでしょうか。ここでは要件定義、基本設計といった上流工程の業務フローを簡単に紹介します。
システム開発プロジェクトの上流工程
システム開発プロジェクトとは、顧客企業の抱える業務上の問題をITの力を借りて解決する仕事のことを指します。
システム開発プロジェクトでは、ユーザーの抱える課題を解決するために新しい業務のやり方を提案し、さらにそれに合ったコンピュータシステムを構築していきます。
システム開発プロジェクトは単純にソフトウェアやシステムを開発すればよいというものではありません。制作したソフトウェアやシステムの機能により顧客企業の業務改善に成功してはじめてプロジェクト成功ということになります。
言葉のそもそもの定義からも分かるようにシステム開発は決して実行容易なプロジェクトではありません。作るシステム・ソフトウェアのクオリティはもちろんのこと、それが顧客の要望に本当に合っているかということまで問われることになります。
最終的にプロジェクトを成功させるためには正しい方向性を見極め、きちんとした計画をたてることが不可欠です。それだけに上流工程においては綿密な作業が求められています。
システム化企画
システム化企画はシステム開発プロジェクトにおける最初の工程です。顧客とのヒアリングをもとに、システム開発における基本方針を決定していく段階です。システム化の対象となった業務内容を分析・整理し、望ましいシステム方式や目標品質といった開発方針を決めます。
このシステム化企画の工程中に、おおよそのスケジュール決めやコスト計算を同時に行うケースも多いです。このシステム化企画の段階が終わると、計画は徐々に実行段階に近づいていきます。
要件定義
要件定義はシステム化企画の成果物を元に、開発するシステムに実装すべき機能や求められる性能を決めていく段階です。ユーザー部門の要求をもとにシステムの機能・性能を整理し、決定していきます。
さらにそれを要件定義書という成果物の形にまとめます。要件定義書には要求に対する解決策を提示し、設計にまで落とし込めるレベルが必要だといわれています。
それ以降のシステム開発プロジェクトの工程はすべてこの要件定義書にそって進むため、要件定義の失敗はプロジェクト炎上の原因になります。システム化企画同様プロジェクトの成否を決める大事な工程といえるでしょう。(※1、※2)
基本設計
基本設計は要件定義書を元にシステムの基本部分の設計をする工程です。機器の構成や機能、操作・入出力に関する事項といったシステムの基礎的な仕様がここで決定されます。ここで決まった基本設計に基づき、システムの詳細な設計が行われます。(※3)
見積もり
見積もりは開発全体にかかる大まかなコストを計算する段階です。開発コストはシステムの規模と必要工程によって決まります。見積もりでは、類似法、WBS法、LOC法などの手法を使い、開発する内容の規模と必要な工数を見極めていきます。
当初の見積もり額と実際の見積もり額に大幅なズレが生じる事態を防ぐためにも、正確さが求められる作業です。
システム設計の上流工程
システム設計はシステムやソフトウェアなどを開発・構築する際、システムの目的や仕様、動作などを決定する工程のことをいいます。システム設計にもさまざまな工程がありますが、そのうち要件定義から外部設計までが上流工程と呼ばれています。
要件定義
要件定義とは開発するシステムの範囲を決定する工程のことをいいます。システム設計においてはシステムで作るものと作らないものを明確にすることが要件定義になります。ここで決めておくべき事項としては、機能一覧などの機能要件、性能、保守性、使用性などの非機能要件があげられます。
アーキテクチャ設計
アーキテクチャ設計は外部設計のひとつで、ソフトウェアやハードウェアの構造、実装方針を決める工程です。インフラ、ミドルウェアなどの実行環境の設計、アプリケーション全体の構造などを決めるアプリケーション・アーキテクチャ設計、開発標準およびテスト方式の決定を行います。
機能設計・機能定義
機能設計・機能定義は外部設計のひとつで、システムの機能ごとに細かい仕様を決める工程です。システム全体をモジュール単位に分割し、それぞれの外部仕様を決定します。具体的にはパッチ設計、データベース設計、画面・帳票設計などの設計が含まれます。
内部設計
内部設計は外部設計に基づき、ユーザーには見えないシステム内部の設計を行う工程です。システム内部の動作・機能などシステム内部に関する部分について詳細な設計を行い、実際にプログラミングができる段階まで落とし込んでいきます。なおこの内部設計については場合によっては上流工程ではなく下流工程に含まれるケースもあります。
上流工程に携わるシステムエンジニアに必要なスキルとは?
それでは、これらの上流工程に関わるシステムエンジニアにはどのような能力が必要とされるのでしょうか。上流システムエンジニアの場合、開発以外の管理業務も仕事の中に入ってくるという特徴があります。
したがってプログラミングに関する技術力はもちろんのこと、プロジェクトマネジメント力、コミュニケーションスキルなどが必要となってきます。
マネジメントスキル
上流システムエンジニアはマネジメントスキルが求められます、上流工程の担当者は下流工程担当のシステムエンジニアやプログラマに指示を出す立場になることが多く、結果的にプロジェクトのリーダー的なポジションを任されるケースが多いです。
システム開発はチームで動くのが一般的なため、上流システムエンジニアはスタッフをまとめる力が要求されます。またチームワークを向上させるために、メンバー全員と意思疎通を積極的に行い、メンバー間のコミュニケーションを活発化させる能力も求められるでしょう。
プログラミングの技術スキル
上流工程に携わるエンジニアにはプログラミング関連のスキルが必要です。確かに上流工程では実際にプログラムを組む機会は少ないかもしれません。しかしプロジェクト全体を理解するためにはプログラミングに関する豊富な知識と技術は必要です。
プログラミングの技術があれば現場との意思疎通もしやすくなりますし、さらにシステム設計・開発における業務フローの作成もやりやすくなります。
設計書作成スキル
優秀な上流システムエンジニアになるためには設計書作成スキルは必須といえます。システムやソフトウェアの開発では上流工程で作成した基本設計をプログラマが具現化するという流れをとるのが一般的です。そのため基本設計書は重要な役割を持っています。
たとえば要件定義書と基本設計書にズレが生じるとできあがったシステムがクライアントの要望とは大きく食い違ったものになってしまいます。
ウォーターフォール・モデルでは各工程の結果をもとに直線的に作業が進んでいきます。もし上流工程に欠陥が見つかったとしても下流工程に進んだ段階で軌道修正を図るのは困難です。
デスマーチやプロジェクト炎上を防ぐためにも上流工程でシステム開発の方針や基本の設計を詳細に、適切に決めておく必要があります。
上流工程はやりがいがたくさん!転職も視野に考えてみては?
上流工程を目指すことはITエンジニアにとってはメジャーなキャリアプランの1つです。それでは実際、上流システムエンジニアになることにはどのようなメリット・やりがいがあるのでしょうか。
まず知っておきたいメリットの1つが待遇の良さです。日本のシステムエンジニアの場合、上流工程担当のシステムエンジニアと実際に開発作業にあたっているシステムエンジニア・プログラマの間に大きな収入格差が存在します。
年収の額は仕事のモチベーションに大きく影響する要素です。上流システムエンジニアとなり、高い年収が得られるようになればそれだけ仕事への満足感も高まりやすくなります。
また仕事のやりがいという意味では、開発プロジェクトの中心メンバーとして活躍できるという点も見逃せません。
上流システムエンジニアになると、システム設計などシステム全体の構想にかかわるような作業も担当させてもらえるようになります。
上から言われたとおりに手を動かすのではなく、自分の頭でシステムの全体像を考え作り上げていく喜びを感じられます。
さらに実際に製品を使う顧客との距離が近いというのも上流システムエンジニアならではのメリットです。上流エンジニアは顧客と接する機会も多く、自分の作った製品に対する反応を直に感じることができます。
特に実際にシステムが稼働段階に入ったときには、顧客から離れた立ち位置にいるプログラマなどよりも深い達成感が味わえるかもしれません。
このように上流工程は下流工程にはないメリットが感じられる工程です。ITエンジニアとしてよりやりがいのある仕事を求めるのであれば、積極的に上流工程を目指すべきといえるでしょう。
ただ大手SI企業の下請け企業のように、企業によっては自社のシステムエンジニアに上流工程を担当させない場合もあります。
もし現在勤めている会社に上流工程を目指すルートがなく、今後のキャリアプランに不安を感じているようであれば思い切って転職を考えるのも手です。上流工程を扱う企業に転職できればそれだけ上流工程に携われる可能性も高くなります。
求人サービスを比較して理想の転職先を見つけよう!
上流工程担当のITエンジニアは給料もよく、仕事の内容面でもやりがいのある職種です。将来目指すべきキャリアの在り方として検討すべき価値は十分にあります。エンジニアとしてのスキルを磨き、積極的に上流工程へのキャリアアップにチャレンジしてみてはいかがでしょうか。
人によっては上流システムエンジニアへとキャリアチェンジするために転職を考えることもあるでしょう。その場合にはオンライン上の転職エージェント・転職サイトを利用するのがおすすめです。
これらのサービスでは自分の希望条件に合わせて求人情報が検索できます。条件的なミスマッチも起きづらく、欲しい情報をすばやく探すことができるはずです。特に求人サービス比較サイトを使えば複数の転職サービスを一度に比較でき、より効率よく転職活動を進められます。使えるサービスは上手に使い、ITエンジニアとしてのキャリアアップを実現していきましょう。
ITエンジニアを目指す人におすすめの転職エージェント5選
「どの転職エージェントを利用すればいいかわからない」という方のために、ITエンジニアを目指す人におすすめの転職エージェントを紹介します。
転職エージェントによって強みや特徴が違うので、自分に合った転職エージェントを選びましょう。
マイナビ IT AGENT
- 紹介できる求人情報の8割が非公開求人と業界トップクラス
- サポート期限は無期限で、登録から内定まで一人の担当者がサポート
- 登録者の約7割が20~30代のIT・Webエンジニアで、若い世代の転職に強い
ミライトーチMediaとは
転職やキャリアに関わるコンテンツを通じ、「今の仕事に悩む人」がより自分らしく働けるようにサポートしているメディアです。
不安のない転職活動や理想の転職先探しに役立ててもらうため、転職者や人材業界関係者へのインタビュー調査はもちろん、厚生労働省などの公的データに基づいたリアルで正しい情報を発信し続けています。