下流工程とは製造(プログラミング)やテストなどシステムを実際に作り込む工程のことです。主に製造(プログラミング)やテスト全般(単体テスト、結合テストなど)を実施します。エンジニアとして必ずといって良いほどキャリアとして関わるのがこの下流工程です。この記事では下流工程を理解するために初心者でも分かる流れ、どこまでが下流工程か、上流工程との違いなどを簡単に解説していきます。
下流工程とは製造(プログラミング)やテストなどシステムを実際に作り込む工程のことです。下流工程の主な作業は上流工程で定められ設計されたシステム開発要件を仕様書通りに製造し、正しく動作するか確認を行うという内容です。これらの工程を「製造(プログラミング)」「テスト」と呼びます。システムにおける各開発プロセスの役割を明確にし上流工程から下流工程にかけて順序立てて進めていこうことを水が滝のように流れることと見立てて「ウォーターフォールモデル」と呼びます。下流工程では製造(プログラミング)やテストといった仕様書を元にした作業がメインとなるため比較的経験の浅いエンジニアが取り組む仕事内容が多いです。
英語表記は“Downstream process”
略式は”DP”
となっております。
※英語で表現される機会もあるため参考までに
システム開発の基本工程について解説された記事はこちら>>
ウォーターフォールモデルの特徴やメリットについて解説された記事はこちら>>
下流工程における主要な作業工程を見ていきましょう。
内部設計をもとにプログラム言語を用いてプログラム(モジュール)の作成を実行します。
この作業をコーディングとも呼ばれる場合はあります。
単体テストでは作成したモジュール単位で設計書にて要求された要件、機能を満たしているかどうかを確認、検証します。不具合が見つかった場合には製造工程(プログラム)へと戻り、修正対応を実行しし、テスト結果のフィードバックを実施します。
単体テストの一般的な取り組みや利点、手法などについて解説された記事はこちら>>
結合テストとは複数のモジュールを組み合わせてシステムが正しく連携し合い、不具合なく動作するかを検証するテスト作業です。主にモジュール間のインターフェイスが正しく機能するかやモジュールを結合した状態でのブラックボックステストの2つの種類を確認します。
結合テストの一般的な取り組みや種類、手法などについて解説された記事はこちら>>
システムテストとはシステムが全体をとおして要求された機能や性能を満たしているかどうかを確認、検証を行うシステム開発工程におけるテストフェーズの最終段階のテスト工程です。システムテストを実施する際は、本番に近い環境を用いてテストを実施します。
システムテストの一般的な取り組みや手順などについて解説された記事はこちら>>
運用テストとはシステムの導入を行うお客様が実際の業務の流れに沿って利用し、システムの利用手順の理解や操作性の確認、不具合などの問題なく動作するかを確認、検証をする本番稼働前の最後のテスト工程です。
運用テストの一般的な取り組みや手順などについて解説された記事はこちら>>
実際に使えるように、旧システムから新システムへと切り替えを実施する工程です。ある時点で旧システムから新システムへ一気に切り替える一斉移行や、システムの機能単位ごとに新システムへ切り替えていく順次移行などの方法があります。ウォーターフォールモデルのシステム開発工程に当てはめた際には、運用テスト工程が完了した後にシステムを本番環境に移す為にシステム移行工程が実行されます。
システム移行の一般的な取り組みや手順などについて解説された記事はこちら>>
下流工程と上流工程の違いについて説明します。下流工程とは「製造(プログラミング)やテストなどシステムを実際に作り込む工程のこと」上流工程とは「要件定義や基本設計などのシステムを開発するための初期段階のこと」です。ではどこからどこまでが下流工程であり上流工程なのでしょうか。ウォーターフォール開発の流れを参考に下記の表を見ていきましょう。
上流工程 or 下流工程 | システム開発工程 | 概要 |
【上流工程】 | システム企画 | システムの概要を決定する |
【上流工程】 | 要件定義 | お客様の要件を明確にし、開発見積りを決定する |
【上流工程】 | 基本設計 | 画面や帳票などのユーザーインターフェースを設計する |
【上流工程】 | 詳細設計 | プログラムの設計など、開発者側からの視点でシステムを設計する |
【下流工程】 | 製造(プログラミング) | 設計書に基づき、プログラムの作成を実行する |
【下流工程】 | 単体テスト | モジュールごとにテストを実施する |
【下流工程】 | 結合テスト | 各モジュールを結合してテストを実施する |
【下流工程】 | システムテスト | すべてを含めた(要件定義通りか?)テストの実施をする |
【下流工程】 | 運用テスト | 実際の業務運用に沿って動作検証を実施する |
【下流工程】 | システム移行 | 実際の稼働環境へシステムを移す |
下流工程に必要なスキル(能力)を見ていきましょう。
下流工程ではプログラミング能力が必要とされます。製造(プログラミング)やテストといったシステム開発工程をメインに取り組むため、プログラミング能力を有していないと仕事をこなすことはできません。2020年現在プログラミング言語別に案件数の多い言語は「Java」「PHP」「JavaScript」が上位3言語と言われております。(※Web革命調べhttps://frontend-diary.com/programming-ranking/) プログラミング能力を効率良く身に付けて、就職支援まで実施してくれる職業訓練校に通う方も多いです。
下流工程ではコミュニケーション能力が必要とされます。製造(プログラミング)やテストなどの開発工程では一人称での作業が多いため、コミュニケーション能力は不要と捉えられがちですがそんなことは決してありません。特に複数名で実施する開発プロジェクトであればあるほどチーム間での仕様確認や進捗共有は大切になります。またシステム開発の業界柄、業務委託・派遣といった契約形態が多く存在し、初めて一緒に作業をする方々に囲まれる機会が非常に多いです。そのような場面でも円滑に仕事を進めていくためにコミュニッケーション能力が必要となります。
下流工程では論理的な思考能力を持つことが必要とされます。上流工程で作成された設計書・資料作成を読み込んでプログラム作業を実施する際には意図を紐解き、物事を順序立てて、プログラムを効率良く組んでいく必要があります。論理的な思考能力が不足していると予期せぬプログラムバグの発生やその原因が掴めないなど数多くのリスクが散りばめられてしまいます。
下流工程を理解するために初心者でも分かる流れ、どこまで、上流工程との違いなどを簡単に解説させて頂きました。下流工程を一言で表すと『製造(プログラミング)やテストなどシステムを実際に作り込む工程のこと』です。下流工程で高いパフォーマンスを発揮するには「プログラミング能力」「コミュニケーション能力」「論理的な思考能力」が必要とされます。下流工程についてこの記事で記載されている最低限の内容は理解をしておくようにしましょう。