
本日、KORECを通じてソフトバンクの説明会が行われました。ソフトバンクでのエンジニアは上流工程を担当するという話を聞いて、果たして上流工程とは具体的にどのような業務を指すのかという疑問が生じました。
開発の上流工程、その役割と能力
上流工程とは、システム開発・設計において最初に行う初期段階です。
いくつかの要件に分けることができ、主に含まれるのは「要件定義」「機能定義」「構成管理」「計画立案」などの工程です。要件定義は、クライアントが求めるシステムの内容をヒアリングし、要件としてまとめます。機能定義は、要件を具体的な機能に決定し、構成管理は、定義した機能を提供できるシステム構成や構造を管理します。計画立案は、制作物のスケジュール全体の行程を計画する工程です。
システム設計までが上流工程、プログラム開発以降を下流工程とするのが一般的です。効率的に短期間で開発を完了できるかどうかは上流工程に左右されると言っても過言ではありません。 上流工程には設計物の品質と方向性を決定する重要な役割があります。
下流工程では何を行う?
下流工程では、どのような作業を行うのでしょうか。下流工程を理解することで、より上流工程の重要さが理解できます。
下流工程は、上流工程で決められた仕様や機能、プログラミング言語を活用してシステム開発や実際の製造を行う段階です。名称の由来は、ソフトウェア開発モデルの一つである「ウォーターフォールモデル」から来ており、その名の通り、滝の如く上流から下流へ流れるように一直線にシステム開発が進んでいくことを表現しています。
下流工程に含まれる主な要件には、「実装(コーディング)」「テスト」「導入」などがあります。実装(コーディング)では、定められた機能・プログラミング言語通りに開発を行い、テストでは完成した機能が想定通りに実際に動いてレスポンスを返すかどうかを確認します。導入は、最終的に本番環境へリリースし、クライアントの環境で実際に動作するのかを確認する工程です。
上流工程で定義された内容を作り込み、その通りに動作するのかを下流工程でテストします。そのため、下流工程まで進んだプロジェクトは機能そのものの修正が難しくなります。万が一、下流工程で機能や構成の変更を行えば、「他機能と整合性が取れない」「クライアントが必要な機能が提供されていない」という問題が発生する可能性があるからです。
それだけ上流工程は重要な役割を担っているということです。
上流工程と下流工程の違い
まとめると、上流工程と下流工程の違いは以下の通りです。
区分 | 上流工程 | 下流工程 |
開発の段階 | 企画、設計、開発、テスト | 導入、運用、保守 |
業務内容 | 製品やサービスの創造的な発想と実装 | 製品やサービスの安定した運営 |
必要な能力 | ビジネス理解度、創造性、技術力 | 運用経験、問題解決能力 |
上流工程業務の役割
上流工程業務は、製品やサービスの成功の可否を決定する重要な役割を果たします。上流工程業務を通じて製品またはサービスのビジネス要件を導き出し、これを実現できる技術を選択して製品またはサービスを開発します。 したがって、上流工程業務は製品またはサービスの競争力と品質を高めるために重要な役割を果たします。
上流工程のトラブル防止に必要なスキル
- お客様のニーズを的確に引き出す
上流工程で最も重要なのは、クライアントの要望をしっかり把握することです。クライアントから聞いた内容をそのまま設計に反映させるのではなく、クライアントが本当に望むシステムの姿を考えることが重要です。 そのため、形式的な内容だけでなく、「どのような実務をしているのか」「どのような点に不満があるのか」など、具体的な要件を聞いて整理することが必要です。
- 具体的な基本設計
ヒアリングした内容からシステムイメージを策定し、具体的な基本設計に反映します。上流工程で決定された基本設計は、その後の上流工程の作業や下流工程の指針となります。例えば、仕様書に詳細なサーバー要件やプログラミング言語が明記されていないため、下流工程で独自の判断で開発した結果、最終的にクライアントの本番サーバーでそのプログラミング言語が使用できなくなるなどの問題も発生します。
基本設計がずれてしまうと、クライアントが望むシステムと異なるシステムが作られてしまうため、基本設計についてもクライアントの同意を事前に得る必要があります。
まとめ
上流工程業務は製品またはサービスの成功の可否を決定する重要な役割を担います。 したがって、上流工程業務能力を備えた人材は開発分野で高い競争力を持つことができます。
今年に入って数回のチームプロジェクトを経て、プロジェクト設計に対する関心が高まりました。 前述したように、初期プロジェクトの設計の完成度によってプロジェクトの品質とスピードが決定されるためです。 プロジェクトの設計をきちんとしないままプロジェクトを進めた経験がありますが、途中でお互いの考えが違い、ロジックを変更する場合が頻繁に発生しました。😂
特に、今年7月に行ったESGプロジェクトを担当し、自分が作りたいプロジェクトではなく、クライアントの依頼を受けて初めてプロジェクトを企画し、上流工程の経験をチームリーダーとしてすることができ、多くのことを感じることができました。
将来PMとして活躍する自分の姿を考えると、上流工程を早くから経験し、慣れておく必要があると思います。
댓글