開発の「上流工程」とは?その流れと必要なスキルまで徹底解説!
エンジニアとしてシステム開発に携わる中で、「上流工程」といった言葉を耳にしたことがある方も多いのではないでしょうか。
開発工程の中で「上流」「下流」と区分されているものですが、具体的にどこまでの工程を指しているのかなど、詳しいことは知らないという方もいることと思います。
そこで今回は、開発における「上流工程」について、その業務範囲や必要なスキルなどをご紹介していきます。
目次
「上流工程」とは?
システム開発における「上流工程」とは、実際の開発に入る前の、クライアントの要望に合わせたシステムの企画から設計までの工程のことをまとめて指す言葉です。
上流工程でつくられた設計をもとに実際に開発することになるため、成果物の品質や効率的な開発が可能かなど、開発の土台となる重要な工程です。
開発の豊富な知識やスキル、またコミュニケーションなど、様々なスキルと経験を求められるため、基本的には経験豊富で高いスキルを持つエンジニアが担当することになります。
そのため、上流工程を担えるエンジニアになれば年収アップやキャリアアップも期待できるでしょう。
フリーランスのエンジニアにとっても、上流工程を担える高いスキルや実際に上流工程を担当した経験があることは案件獲得にも有利になりますね。
下流工程との違い
設計までの工程を上流工程と呼ぶのに対し、設計に基づいた実際の開発業務や開発したシステムに問題がないかのテスト、運用・保守などの工程を「下流工程」と呼びます。
上流工程と比べて実作業的な業務が多く、設計書の通りに開発を行うプログラミングスキルなどが求められます。
比較的経験の浅いエンジニアが担当することが多いですね。
上流工程の主な流れ
それでは、上流固定の主な業務内容を、流れに沿って具体的に見ていきましょう。
STEP1:システムの企画
まずは、開発するシステムの企画を立てることから始まります。
クライアントからの委託によりシステムを開発する場合、まずはクライアントへのヒアリングを行い、要求やクライアント側の課題、ユーザーのニーズなどを洗い出してそれらを解決するためのシステムを企画します。
ざっくりとした開発期間や予算とともに提案をまとめ、クライアントの了承が得られたらそのシステムの開発を進めるために次の段階に入ります。
STEP2:要件定義
次に、クライアントからの要求を元にシステムの仕様を決めていきます。
要件定義では、どんな機能を実装するかという「機能要件」、セキュリティに求める要件やスピードなど、機能以外の面の「非機能要件」の大きく2つを決定していきます。
要件定義では、予算や期間なども考慮しながらクライアントとすり合わせ、合意を得る必要があるでしょう。
STEP3:基本設計・見積もり
要件定義の内容に基づいて、システム全体の基本的な設計を行います。
例えば各種ソフトウエアやOSについて、入出力に関する仕様、ユーザーから見える操作画面など外部の設計など、システムの土台となる部分の設計ですね。
システムのおおよその概要が決定したら、コストや開発期間を明確にして見積もりを作成します。
企画時点では仕様が決定しておらず見積もりが立たないため概算のみの提示となり、基本設計後に正確な見積もりを出すのが一般的です。
STEP4:詳細設計
外部設計をもとに、システムに必要な内部の設計を行うのが詳細設計の段階です。
実際の開発ではこの詳細設計をもとに開発を行うことになるため、これを参考にすればプログラミングができるという程度まで設計書に落とし込んでいきます。
上流工程の業務に必要なスキル
企画・設計からヒアリングまで幅広い業務を行う上流工程には、実際のプログラミング以外にも様々なスキルが必要になります。
主に求められるスキルを4つ、ご紹介します。
コミュニケーションスキル
まずは、クライアントからの要望や課題を引き出すためのコミュニケーションスキルです。
クライアントはシステムに関する専門的な知識はないことが多いため、システムに関連するような要望や課題を言語化しにくいこともあるでしょう。
そんなクライアントに対しても理解できるように説明し、また要望を引き出す、「話す力」と「聞く力」両方のスキルが重要になります。
幅広いIT知識
設計のためには、システム全体を理解している必要があります。
例えばセキュリティやネットワークに関する知識、近年普及しているクラウドサービスに関する知識など、幅広い知識が求められます。
IT業界は進歩の速い業界でもあります。
新たな技術にも対応できるよう、最新の情報にもアンテナを貼っておきましょう。
開発業界の専門知識
クライアント企業の業務システムを開発する場合など、その業界の知識が必要となる場合もあります。
また、各業界には法令やルールによる制約がある場合もあるでしょう。
しっかりとルールを遵守し活用できるシステムをつくるために、その業界ごとのルールの把握も必要になります。
論理的思考力
クライアントの要望を理解し、さらにコストなども考慮しながら条件を満たすシステムを設計するためには、論理的な思考力が求められます。
クライアントへの提案や説明にも、大きく活かせるスキルだと言えるでしょう。
また、定義した要件をもとに設計書を作成するスキルも実装には非常に重要です。
誰が読んでも理解できるような設計書づくりを心がけましょう。
上流工程で役立つ資格
上流工程では、特別な資格が必要であるということはありません。
しかし様々なスキルが求められますので、資格を取得しておくことでスキルの証明になったり、上流工程を目指してスキルを上げるための学習になったりと、資格は役に立つでしょう。
上流工程におすすめの資格は、以下のようなものがあります。
- 応用情報技術者試験
- プロジェクトマネージャ試験
- システムアーキテクト
応用情報技術者試験は、IT全般の知識を証明できる国家資格です。
知名度の高い資格であるため、対外的な信用につながるでしょう。
下級の資格であり、ITの基礎知識を証明できる基本情報技術者試験もあるため、エンジニアとして働く方、エンジニアを目指す方はまずこちらから取得を目指すのも良いですね。
また、上流工程に加え、実際の開発においてもチームメンバーをまとめる役割を担い、さらにスキルを高めたいという方はプロジェクトマネージャ試験もおすすめです。
システムアーキテクト試験では、設計から運用に至るまで上流工程に欠かせない設計スキルを身に着けられます。
難易度は非常に高いと言われていますが、その分取得していれば高いスキルを認めてもらえるでしょう。
実際に上流工程の経験がある方や応用情報技術者試験に合格しているなど、一定のスキルがある方は挑戦してみると良いかもしれません。
まとめ
今回はシステム開発をはじめ開発においてのフェーズを表す「上流工程」という言葉について、その業務範囲や求められるスキル・資格まで詳しくご紹介しました。
上流工程では豊富なスキルが求められますが、上流工程を担当できるスキルを持つエンジニアの需要は高く、収入アップや今後のキャリアパスにも有利になるでしょう。
まずは、下流工程からしっかりと経験を積み、積極的にスキルアップを目指すことが重要です。
フリーランスの方も、スキルアップのために幅広い案件に挑戦してみてはいかがでしょうか。