開発の「下流工程」とは?その流れと上流工程に行くためのポイントを解説!
エンジニアが担うシステム開発の流れは、「上流工程」と「下流工程」の2つに大きく分けられることはご存じでしょうか。
基本的には設計などの上流工程を経験豊富なエンジニアが、開発や保守などの下流工程を経験の浅いエンジニアが担うことになります。
今回はこの下流工程の業務について、その業務内容や上流工程を担当するために必要なことについてご紹介していきます。
目次
「下流工程」とは?
システム開発はその工程を川の流れをイメージして工程ごとに「上流」「下流」と呼びますが、システム開発における「下流工程」とは、設計に基づいた実際の開発から運用・保守までの工程を指しています。
上流工程でクライアントにヒアリングを行い、その要望を実現するために決定された仕様や細かく設計された設計書から、実際にコーディングをしてシステムを構築していくのが下流工程のエンジニアの仕事です。
上流工程との違い
対して上流工程とは、要件定義から設計までの工程を指しています。
クライアントの要求を実現可能な形に落とし込み、さらに下流工程でエンジニアが問題なくコーディングを行うために細かな設計を行う、いわばシステム開発の基盤となる工程であるため、上流工程は基本的に実務経験豊富でスキルの高いエンジニアが担当しています。
下流工程の主な流れ
それでは、下流工程で行われる業務について、その流れごとに詳しく見ていきましょう。
STEP1:コーディング作業
まずは、設計書や仕様書をもとに、開発するシステムごとに様々なプログラミング言語を用いて実際のコーディング作業を行っていきます。
コーディング作業を行うエンジニアは、プログラマーとも呼ばれますね。
基本的には複数のエンジニアでチームを組み、それぞれで分業して進めていきます。
STEP2:テスト
開発が一旦完了し、システムが完成したら、リリースの前に正しく動作するかどうか、またきちんと要件を満たしているかどうかテストを行います。
行われるテストには、
- モジュールごとに行われる単体テスト
- 機能それぞれが連携しているかどうかを調べる結合テスト
- システム全体の動作を確認する総合テスト
- クライアントが要求通りできているかを確認する受入テスト
などの様々なものがあります。
テストで不具合があれば修正し、再度テストする、といったような形でシステムを完成させていき、クライアントの受入テストまでクリアすればいよいよ運用に移ります。
STEP3:運用・保守
システムはリリースしたら終了というわけではなく、運用後も問題なく動作しているかを確認したり、メンテナンスやアップデートを行ったりといった保守業務が発生します。
運用中に不具合などなにかトラブルがあれば、すぐに原因を解明し改修することも重要な業務のひとつですね。
下流工程の業務に必要なスキル
駆け出しのエンジニアが担当することの多い下流工程の業務ですが、もちろん業務を行うには、最低限必要なスキルがあります。
プログラミングスキル
エンジニアの基礎ともいえるプログラミングのスキルは、もちろん必須となります。
例えばWebサイト制作を行うエンジニアであればHTML/CSSやPHP、JavaScript、アプリケーション開発であればJavaやRuby、AIや機械学習分野であればPythonなど、主流となるプログラミング言語は開発する分野によって異なります。
また、IT業界では進歩が速いため新たな言語が登場し、使っていた言語が使われなくなるということもあり得ます。
自身の開発分野で必要になる言語を、トレンドも意識しながら学んでおきましょう。
コミュニケーションスキル
チームで協力してシステムを開発するエンジニアには、コミュニケーションスキルも欠かせません。
また、コミュニケーションスキルは今後上流工程を目指したり、キャリアアップを目指したりする上でも重要なスキルです。
クライアントとのコミュニケーションで要望を聞きだすことも上流工程には必須となりますので、話す力と聞く力の両方を鍛えておきましょう。
上流工程に行くためには?
エンジニアは、下流工程で経験を積んで上流工程へとステップアップしていくのが一般的です。
高いスキルを求められるため上流工程では幅広い仕事に挑戦できたり、収入アップにもつながるため、できるだけ早くスキルを学び、上流工程を担えるようなエンジニアになりたいところですよね。
それでは、上流工程に行くためにはどのようなスキルが必要なのでしょうか。
求められるスキルや経験の目安についてご紹介します。
実務経験を積む
エンジニアは専門的な技術を要する職種であるため、実務経験が重視されます。
もちろんスキルやどのような仕事を受け持つことができたかなどでも前後しますが、目安として上流工程には3年以上の実務経験が必要だとされています。
もちろんただやみくもに経験を積むだけでなく、技術的なスキルはもちろん必要な様々なスキルを学びながら業務を行っていきましょう。
設計スキルを身に着ける
上流工程ではただプログラミングを行えばよいわけではなく、クライアントの要望を実現可能な形でシステムに落とし込むための設計スキルが必要です。
ITの全般的な知識はもちろん、クライアントの課題を本質から理解し、どうすれば解決できるかを考えられる論理的な思考力や、専門的な知識のないクライアント2も分かりやすく説明できるようなコミュニケーションスキルが求められるでしょう。
マネジメントスキルを身に着ける
上流工程を担うエンジニアに次に求められるのが、マネジメントスキルです。
設計書を作成する上で、実際に作業を行うエンジニアにどのように作業を分担していくか、また納期までに問題なく完成させるためにどのようなスケジュールで進めるか、マネジメントを行うのも上流工程を担うエンジニアの役割のひとつです。
また、開発には予算もありますので、コスト面も考慮しなければなりません。
プロジェクト全体をマネジメントするプロジェクトマネージャーなど、更なるキャリアアップにも欠かせないスキルだと言えますね。
資格を取得する
上流工程を担当できるだけのスキルがあることをアピールするために、有効なのが資格を取得することです。
特に、難易度の高い資格やその分野で設計から一連の開発を行えることを示す資格など、求められるスキルを証明できる資格を取得しましょう。
資格が特に有利に働くのが、転職の際などです。
スキルがあり、それをアピールすることができれば転職によって上流工程を任せてもらうことも不可能ではないでしょう。
まとめ
今回の記事では、システム開発においての流れを表す言葉のひとつである「下流工程」について、その業務内容や求められるスキル、さらに上流工程を目指すためのポイントまで詳しくご紹介しました。
エンジニアはまず下流工程で経験を積むことになりますが、上流工程を担えるエンジニアになれればエンジニアとして需要を高めることができ、収入アップやキャリアアップにつながります。
まずは下流工程からしっかりと経験を積み、コミュニケーションやマネジメントなどの技術以外のスキルに関しても積極的にスキルアップを目指していきましょう。