システムを開発する際の工程を大まかに分けると、要件定義、設計、開発(プログラミング)、テストという流れになります。このなかで上流工程と呼ばれるのが要件定義と設計の工程で、上流工程を担当するSEには指示者としての役割が求められます。
上流工程を担うSEは、顧客と直接コミュニケーションをとり、顧客が求めているシステムを理解したうえでそのシステムの設計に必要な情報を聞き出す必要があります。そして、その情報に基づいてシステム全体の設計を行っていきます。
また、要件定義や設計のほか、システム完成までのスケジュール作成や予算調整、人員配置なども、上流工程を担うSEの重要な役割です。
一方、下流工程と呼ばれるのが、開発とテストの工程です。
下流工程を担うSEは、上流工程SEが作成した設計書に基づき、プログラミング言語を駆使してシステムを構築していくのが仕事の一つです。システムが完成すると実際に想定通りの動きをするかを確かめるためにテストを行い、テストで問題がなければ顧客の本番環境でも動作するかを確認し、そこでも問題がなければシステムは完成となります。
下流工程を担うSEは実際のシステムを構築するという役割があるため、パソコンの前での作業が多くなるのが特徴です。
このように、システム開発において上流工程はプロジェクトの成否に関わる大事なフェーズであり、上流工程を担うSEには様々なスキルが求められます。それだけ責任のある仕事なので、上流工程SEの給与水準は下流工程を担うSEよりも高くなる傾向があります。