FEnet未経験コラム

これからエンジニアを目指す方のための情報をお届け

SEの上流工程とは?上流工程におけるシステム開発と設計の流れ4つ

2021年01月08日
SE
SEの上流工程とは、何を差しているのですか?
PM
要件定義や設計など、システム全体に関わる内容のことを上流工程と呼んでいます。

SEにおける上流工程とは?

上流工程とは、ウォーターフローモデルに基づくシステム開発において、上流に位置する初期の工程のことを指します。ウォーターフローモデルに基づくシステム開発においては、システムは複数の工程で構成され、その上流にある要件定義や設計などを上流工程と呼びます。上流工程が、予算や要求に基づいてシステムの概要を決定するのに対して、実際にプログラミングやテストを行う下流に位置する工程を、下流工程と呼びます。

下流工程との相違点

上流工程と下流工程との大きな相違点は、作業の流れと役割、待遇などです。ここからは、上流工程の流れと下流工程の流れをそれぞれ解説し、最後に待遇の違いについても説明します。役割の違いについては、主に上流工程がシステム全体に関わる内容を決定し、上流工程の指示を受けて下流工程は、実際に開発を行います。この役割は明確に分離されたものではなく、上流工程と下流工程を全て同じチームで行うこともあります。

上流工程のシステム開発における流れ4つ

上流工程のシステム開発における流れは、システム化企画、要件定義、設計、見積もり作成の4つです。システムによって異なりますが、主に企画から設計を行うのが上流工程となります。以下では、システム開発における4つの工程それぞれの位置付けと、各工程でどのようなことを行うのかを説明します。開発するシステムによって流れは異なりますが、全て顧客とのやり取りを通して、システムの概要を計画して決定する段階になります。

流れ1:システム化企画

システム化企画とは、ユーザーの課題や要求に基づき、システム化の企画を立てることです。システム化したい内容と、これから開発するシステムの概要を決定する最初の段階になります。システム化企画では、システム開発の目的や達成目標、予算や開発期間など、開発を始める前に必要な情報をまとめて提出し、上層部からシステム開発を行う許可を得ます。システム化企画が通ると、実際に要件定義や設計を行う段階に移ります。

流れ2:要件定義

要件定義とは、開発を開始する前に、システムの概要と実装する機能を明確に定義し、顧客側に提示することです。契約に至る前に、顧客と開発チームでシステム開発に関する情報を共有し、同意を得るという重要な工程になります。要件定義では、顧客の要求を受けて主要な機能を列挙し、その実現のために必要となる詳細な機能を検討します。こうして細分化し、システムにバグが無いよう、実装する機能を定義していきます。

流れ3:設計

設計とは、システムの構成や処理方法を検討し計画することです。要件定義に基づいて、必要な機能を実装するための、具体的な方法を考えていきます。設計には、概要設計、外部設計、内部設計などいくつかの段階があります。ユーザーインターフェースやセキュリティなどの外部設計と、機能をどのように実装するかという内部設計を、それぞれバグや不具合が起こらないよう確認しながら進めていきます。

流れ4:見積もり作成

見積もり作成とは、システム開発の概要、予算や期間などをもとに大まかに計算し、顧客に提示することです。設計をもとに、各機能の実装にかかる期間や費用の予想を立てて提示し、双方の同意を得ます。見積もりを作成し、顧客側からの同意が取れれば、契約成立となり下流工程である開発段階に移ります。見積もり作成は、システム開発における上流工程の最後の段階であり、正確性が要求される重要な工程です。

下流工程のシステム開発における流れ3つ

下流工程の流れは、開発、テスト、納品の3つです。上流工程がシステム全体の計画や設計など開発の準備をするのに対して、下流工程はシステムを実際に開発して最終的に納品するまでを行います。以下では、下流工程の流れである開発、テスト、納品について、それぞれのシステム開発全体における位置付けと、どのようなことを行うのかについて説明します。全て実際に手を動かしてシステムを作っていくという重要な工程です。

流れ1:開発

開発とは、実際にプログラミング言語を用いてコーディングを行い、動くシステムを開発していく工程です。上流工程で作成された要件定義書や設計図に基づいて、必要な機能を順に実装していきます。使用するプログラミング言語や開発環境などは、上流工程の設計の時点で決定している場合もあれば、開発段階で改めて検討が必要なこともあります。基本的には、上流工程の決定に従って、開発を進めていきます。

流れ2:テスト

テストとは、開発したシステムが意図した通りに動くかどうかを確かめる工程です。開発した成果物に対して、網羅すべきテストケースをいくつか作成し、実際に動かしてプログラムの動作を確認します。小さな機能を開発するたびに行う単体テストと、ある程度開発を進めてから全体を通して正常に動くか行う総合テストが存在します。いずれの場合も、バグが見つかれば、再び開発工程に戻してデバッグを行います。

流れ3:納品

納品とは、完成したシステムを現場で使える状態にして顧客に渡すことです。納品した成果物を顧客が確認し、納品が完了した時点で報酬が支払われ、システム開発業務は終了となります。納品は、単に完成したソフトウェアを送付するだけでなく、社内システムへの導入や登録までを行うこともあります。上流工程の見積もりの時点で、納品後の保守と運用までが含まれていれば、その後のエラーの対応なども行っていくことになります。

システム設計における上流工程の流れ4つ

上流工程の中でも、システム設計は下流工程への引継ぎという点で、非常に重要な工程です。設計に基づいて下流工程での開発とテストが行われるため、設計が不十分であると、後から追加の作業が発生し、見積もりの修正が必要になります。以下では、システム設計における上流工程の流れを説明します。要件定義、アーキテクチャ設計、機能設計、内部設計の4つについて、それぞれの役割と具体的な内容について記述していきます。

流れ1:要件定義

要件定義とは、システム開発における必要な機能や満たすべき性能を、明確に定義する作業のことです。設計を始める前に、必ず必要な機能をリストアップし、漏れがないかを確認しておく必要があります。リストアップされた機能一覧は、要件定義書として文書化されることが多く、これを基準に次の段階である設計や、下流工程の開発などが行われます。また、下流工程でテストケースを作成する際にも、要件定義書が使用されます。

流れ2:アーキテクチャ設計

アーキテクチャ設計とは、システム全体の構成を決定するための設計です。ソフトウェアの設計だけではなく、使用するハードウェアの決定や、システムの実行環境などもアーキテクチャ設計に含む場合があります。アーキテクチャ設計の時点で、下流工程におけるテストケースや開発環境までを決定する場合もあり、下流工程の開発作業の指針となる設計です。

流れ3:機能設計

機能設計とは、それぞれの機能について、具体的な実装方法を決めるための設計です。要件定義書にまとめられた機能1つ1つについて、システムやプログラム、データの扱いなど詳細な仕様を決定していきます。また、ユーザーインターフェースや操作画面など、ユーザーとやりとりをする部分の設計も、この機能設計に含まれることがあります。外から見える部分については、機能設計の段階で設計を完了します。

流れ4:内部設計

内部設計とは、システムの内部の実装に関する設計のことです。機能単位ではなく、システム内部の全ての処理をどのように実装するかを決め、それぞれの機能間のデータのやり取りなどについても設計を行います。また、内部設計には、機能の詳細の設計が含まれるため、機能設計と同一のものとして扱うこともあります。

上流工程における待遇

上流工程と下流工程では、役割の違いに準じて待遇に違いがあることがあります。以下では、その違いについて説明します。一般に、下流工程の方が人数が必要であり、概要を決定する上流工程は少人数です。また、上流工程は、管理者の立場となるため、下流工程とは責任の重さや必要とされる知識の幅に差があり、給与面が良くなることが多いです。

給与面が良い

上流工程は、下流工程と比較すると給与が高く設定されている場合が多いです。これは、上流工程は決定権を持つ管理者の立場で、その分責任が重いためです。また上流工程では、実装に関わるプログラミングの知識だけではなく、セキュリティや顧客との交渉など、幅広い知識と技能が求められ、結果的に給与が高くなることもあります。

勤務時間に余裕がある

上流工程は、下流工程と比較すると、時間的に余裕がある場合が多いです。これは、下流工程は、案件の数や納期によって作業が多くなるのに対し、上流工程は設計段階のため、余裕をもって顧客との交渉を行うことができるからです。また、上流工程を大企業が行い、下流工程を下請けの中小企業が行うことも多く、結果的に時間的に余裕がある会社は上流工程の方が多くなります。

SE
上流工程は待遇がいいと言う面もあるけれど、その分責任や知識が問われるのですね。
PM
そうですね。下流工程で経験を積み、上流工程を目指すのもいいですね。

経験を積むことで上流工程へとステップアップしよう!

現在、下流工程を請け負っており、労働条件に満足していないのであれば、上流工程へのステップアップを目指すのも良いでしょう。給与面や勤務時間に関しては、より良くなる可能性があります。上流工程は、顧客とのやり取りの他に、下流工程に指示を出すための設計も行いますから、下流工程の開発やテストの知識が必須になります。様々な経験を積み、上流工程へのステップアップを目指しましょう。


FEnetではエンジニアへキャリアアップを目指す方向けに研修制度をご用意しています。研修一覧をご覧ください。

FEnet 未経験

転職相談もお気軽受け付けておりますのでご気軽にご応募ください。

エントリー(応募フォーム)