上流工程とは?下流工程との違いやシステム開発全体における位置付け
情報システムを作る際には上流工程で最初にお客様のニーズを明らかにして、どんなシステムを作るのか、何ができるようにするのかといった大枠から決めていきます。
システム開発を行うにあたって成功のカギを握るのは、この上流工程にあるといっても過言ではありません。
この記事では「上流工程って何?」ということから始めて、具体的な仕事内容や上流工程エンジニアになる方法について解説します。
目次
1.上流工程とは
上流工程とはシステム開発の最初の段階を指します。
上流工程では次のような基本的な仕様を決めます。
- お客様の課題や要望を明確にする
- 要望を達成するためにどんなシステムを作るのかを決める
- 機能やアーキテクチャ、システムの仕様を具体化する
またシステム開発全体の計画を立てるために、次のような作業を行います。
- 要員の選定
- 全体スケジュールの作成
- 費用の見積り
上流工程を正しく実施しないと作業の手戻りが発生したり、出来上がったシステムがお客様の要望を満たさないといった問題が発生します。このため上流工程はプロジェクト全体の成否やクオリティを左右する非常に重要な役割を担っていると言えます。
2.上流工程と下流工程の違い
上流工程と下流工程の違いについて以下にまとめました。
2-1.作業内容
上流工程は情報システムの要件や機能、基本仕様など大枠を決める工程で、下流工程は上流工程で決めた内容に従って開発、テスト、デプロイなど具体的な作業を行う工程になります。
2-2.担当分担
システム開発を受注した大手のIT企業がそのまま上流工程を担当することが多く、下流工程は中小のIT企業が二次受けとして担当することが多いです。
2-3.必要なスキル
上流工程では高度な業務知識・問題解決能力や提案力のスキルが求められます。下流工程ではプログラミング能力やテスト、デプロイなどのITスキルを有していることが必要になります。
3.上流工程でやること
上流工程で行う作業は「システム企画」、「要件定義」、「基本設計」の3つがあります。各作業について、具体的な内容を以下にまとめました。
3-1.システム企画
上流工程で一番初めに取り組む作業がシステム企画です。システム企画ではビジネスや事業の目標達成のために、どのようなシステムを作るのかを決めます。例えばネット販売を始めるためにWebサイトを構築するといったことを決めていきます。また要員選定、全体スケジュール、費用見積りなどの全体計画もシステム企画で行います。
3-2.要件定義
システム企画が完了したら要件定義を行います。要件定義とはシステムが満たすべき具体的な要件や機能を決めていく作業です。「お客様からのどこまで望みに応えられるのか?」を決めていく作業と言えます。
3-3.基本設計
要件定義が完了したら基本設計を行います。基本設計では要件を実現するための具体的な機能を決定します。例えばネット販売システムを新規構築するのであれば、次のような設計を行います。
- Webサーバのアーキテクチャ
- ネットワーク構成
- 画面レイアウト設計
- データベースのテーブル定義
4.上流工程で作るもの
上流工程ではシステム企画、要件定義、基本設計の各作業ごとに成果物を作成します。
成果物にはお客様の要望をきちんと取り込めているか、考慮漏れがないかといったことをしっかり確認する必要があります。各成果物について以下にまとめました。
4-1.RFP(提案依頼書 Request For Proposal)
RFPはシステム企画の工程で発注者側が実現したい要望を示す書類で、発注者側で作成します。RFPには以下のような内容を記載します。
- 提案依頼範囲
- 提案依頼内容
- 機能要求
- 非機能要求
- 移行要求などその他要求
4-2.提案書
受注者はRFPを読み込んで、ヒアリングや質問記入票のやり取りを行い、提案書を作成します。提案書には以下のような内容を記載します。
- 提案方針
- システム構成
- ネットワーク基盤
- ハードウェア、ソフトウェア
- 機能要求に対する提案
- 非機能要求に対する提案
- その他要求に対する提案
- 契約条件
- 費用見積
4-3.プロジェクト計画書
受注者は提案書に加えて、システム開発を行う上で必要な内容を記載したプロジェクト計画書を作成します。プロジェクト計画書には以下のような内容を記載します。
- プロジェクトの目的
- 体制
- 全体スケジュール
- 作成する成果物
- 作業場所など各種取り決め
4-4.要件定義書
要件定義書は要件定義で作成する書類です。システムが満たすべき具体的な要件を記載して、お客様の要望にどこまで応えられるかを明確にします。要件定義書には以下のような内容を記載します。
- 業務要件一覧
- システム要件一覧(ハードウェア、ソフトウェア構成、ネットワーク基盤など)
- 機能要件一覧
- 非機能要件一覧
- その他要件一覧
4-5.基本設計書
基本設計書は基本設計で作成する書類です。要件定義書の内容をシステムで実現するための具体的な機能を記載します。利用者が見て触れる部分をドキュメント化することで認識を合わせるという目的もあります。基本設計書には以下のような内容を記載します。
- 機能一覧
- 業務フロー
- ネットワーク構成図
- 画面レイアウト、帳票レイアウト
- データベースのテーブル定義やER図
5.上流工程でよくあるトラブル
上流工程ではお客様の要望を元にシステム全体を設計していく必要があります。お客様とのコミュニケーションがうまくいかなかったり、業務知識や問題解決能力が不足していると大きなトラブルが発生します。上流工程で発生しがちなトラブルについて以下にまとめました。
5-1.費用が後から増加
お客様の要望を十分にくみ取ることが出来ていないと、後から機能追加が発生して工数と費用が増えるといったトラブルが起こります。例えばネット販売システムを新規開発する際に、後から履歴表示機能やレビュー投稿機能の追加が必要になり、見積りより工数と費用が増えてしまうといったことが起きます。
5-2.作業の手戻りが発生
基本設計の内容に不備があると、後から手戻りが発生するといったトラブルが起こります。例えばネット上で売買契約を行うシステムを新規開発する際に、決済方法ごとに処理を分ける必要があったが考慮が足りておらず、業務フローが変更になり手戻りが発生するといったことが起きます。
5-3.スケジュールが遅延
上流工程で全体スケジュール作成しますが、計画に不備があるとスケジュール遅延が発生します。例えば開発で使用するソフトウェアのライセンス購入が着手日までに完了しておらず、後続作業が出来なくなるといったことが起きます。
6.トラブルを未然に防ぐには
上流工程をうまく進め、トラブルの発生を防ぐためのポイントを以下にまとめました。
6-1.お客様の要望を引き出す
後から機能追加が発生して費用が増えたりすることがないよう、システム企画や要件定義の段階でお客様と綿密なコミュニケーションを取って要望を引き出すことが大事です。
6-2.設計を標準化する
基本設計を不備なく行うするためには、設計書の標準化を行うことが重要です。標準化して作成方法や品質を統一すれば、考慮漏れや仕様不備が発生しにくくなり、手戻りを防止できます。
6-3.マイルストーンを管理する
スケジュールの遅延を防ぐためにはマイルストーンをしっかり管理することが何より大事です。「ここまでにこれが完了していないと次の作業ができない」というポイントをすべて洗い出して、マイルストーンとして管理することで、遅延を防止して予定どおり作業を進めることができます。
7.上流工程のやりがい
上流工程は責任重大ですがやりがいも多くあります。上流工程のやりがいについて以下にまとめました。
7-1.収入アップが見込める
IT業界全体で上流工程を担当できるエンジニアは常に不足しています。需要が多ければ多いほど、また供給が少ないほど労働市場における価値は上がりますが、上流工程ができるエンジニアは希少価値が高く、高収入が期待できます。
7-2.達成感が大きい
上流工程の担当者はプロジェクト成否を左右する重要な存在なので、プログラミングやテストが主な作業となる下流工程よりも充実感が大きいと感じる人が多いです。また一から計画してプロジェクトを自身で動かしている実感があり、お客様と直接接して反応をダイレクトに感じることができるので、プロジェクトが無事成功した際の感動や達成感が大きいです。
7-3.能力を最大限に発揮できる
上流工程ではプロジェクトの目的からシステム全体のスケジュール、予算など大きな内容を決めていきます。自身の能力に自信があり、自分で物事を決めて仕事を進めたい人にとっては最大限に能力を発揮できる業務と言えます。
8.上流工程エンジニアになる方法1 【スキルを身につける】
上流工程エンジニアになるには、求められるスキルを持っていることをアピールして、上流工程エンジニアとしてプロジェクトにアサインされる必要があります。
上流工程エンジニアに求められるスキルを以下にまとめました。
8-1.ヒアリング能力と提案力
上流工程エンジニアには「いかにお客様の要望を引き出せるか?」というヒアリング能力、お客様の立場にたって課題解決に導くプロセスを提供する提案力が求められます。優れたヒアリング能力と提案力を身につけるためには、考えを引き出す質問力を上げること、ヒアリングした内容を具体化して表現するプレゼンテーション能力を鍛えることなどが大事です。
8-2.資料作成能力
上流工程で作成する要件定義書や基本設計書はお客様と認識合わせするためのものであったり、下流工程で実際に開発を行う際の基盤となるものなので、資料作成能力は大事なスキルです。資料作成のスキルを磨くには、見やすく説得力のある資料を作ることを日頃から心掛けて練習する必要があります。またお手本にできるものを見つけて参考にすることも有効です。
8-3.計画立案能力
後から工程遅延や費用追加が発生しないよう、計画立案能力が必要になります。具体的にはマイルストーンをしっかり押さえてスケジュールに反映すること、各工程で人、物、金がどれだけ必要か確定させて、全体スケジュールに正確に反映することなどが大事になります。
8-4.進捗管理能力
プロジェクトが正しく遂行されるよう進捗管理することも上流工程エンジニアに必要なスキルになります。「品質・費用・スケジュール」の3つに影響する問題が発生したら、先送りせず大きな問題になる前に先手先手で対処していくことが大事になります。
9.上流工程エンジニアになる方法2 【資格を取得する】
ハイレベルな資格を取得することで自身の能力を客観的に提示できるので、資格の取得は上流工程エンジニアになるための非常に有効な手段になります。上流工程エンジニアになるのために有効な資格として代表的なものを以下にまとめました。
9-1.プロジェクトマネージャ
その名のとおりプロジェクトマネージャのスキルを問う試験で、取得することで上流工程に関するスキルをアピールできます。
9-2.システムアーキテクト
情報システム戦略立案や業務モデル・情報システム全体の体系を検討するスキルを問う試験で、取得することでシステム企画や要件定義などに関するスキルをアピールできます。
9-3.ITストラテジスト
経営とITを結びつける戦略家としてのスキルを問う試験で、上流工程のみならずビジネスを成功に導くCIOやITコンサルタントのスキルをアピールできます。
9-4.情報処理安全確保支援士
サイバーセキュリティに関する専門的な知識・技能を問う資格です。上流工程でセキュリティ確保の観点から要件定義や基本設計を行うことは必須であり、セキュリティの専門家としてのスキルを有していることをアピールできます。
9-5.PMP(プロジェクトマネジメント・プロフェッショナル)
PMPはIPAの情報処理技術者試験ではなく、米国のプロジェクトマネジメント協会であるPMIがプロジェクトマネジメントの専門家であることを証明する資格です。知識試験のほかにプロジェクトのリーダーとしての実務経験の証明や、公式なプロジェクトマネジメント研修が必要なことなどが特徴です。
10.まとめ
上流工程はシステム開発全体の成否やクオリティを左右する重要なものであり、高度なスキルや専門知識が必要になります。しかしお客様と直接接してプロジェクトを自身で動かしていく充実感があり、大きなやりがいを感じることが出来ます。また上流工程ができるエンジニアは希少価値が高く高収入が期待できます。IT業界で重要な存在として活躍することを目指して、上流工程エンジニアを目指してみましょう。
コメント