システム開発の上流工程とは?下流との違いや仕事の流れを徹底解説|東京のWEB制作会社・ホームページ制作会社|株式会社GIG

システム開発の上流工程とは?下流との違いや仕事の流れを徹底解説

2023-06-01 制作・開発

システム開発にはさまざまな工程があり、その中でも特に重要なのが上流工程です。

上流工程とは、システム開発の最初の段階で、要件定義や設計などの計画的な作業を行う工程のことです。上流工程で行う作業は、システムの品質やコスト、納期などに大きな影響を与えるため、非常に重要な役割を果たします。

一方、下流工程とは、上流工程で決められた計画に沿って、プログラミングやテストなどの実装的な作業を行う工程のことです。下流工程で行う作業は、上流工程で作られた設計書や仕様書などのドキュメントに基づいて行われます。

しかし、上流工程と下流工程の違いや仕事の流れは、実際に経験しないと分かりにくいものです。

そこで今回は、システム開発の上流工程と下流との違いや仕事の流れを徹底解説します。システム開発に関わる方は、ぜひ参考にしてください。

システム開発の上流工程とは?主な業務内容も解説



システム開発の上流工程とは、システム開発プロジェクトの初期段階で行われる工程のことです。

上流工程では、システムの内容・スケジュール・予算などを決定するプランニングや、システムの全体像や内部構造を設計する作業が行われます。

上流工程の質が、システムの品質や効率に大きく影響するため、非常に重要な役割を担っています。

上流工程の主な業務内容

上流工程に含まれる主な業務は以下の通りです。

コンサルティング(企画)

コンサルティングとは、クライアントの課題やニーズをヒアリングし、解決策や方針を提案する業務です。

要件定義

要件定義とは、システムに求められる機能や性能を明確に定義する業務です。

基本設計(外部設計)

基本設計とは、システムの全体像や構成、機能や仕様、操作や入出力などを設計する業務です。

見積り

見積りとは、システムの規模や仕様、開発工程などから、開発費用や工数を見積もる業務です。

詳細設計(内部設計)

詳細設計とは、システムの内部構造や動作、アルゴリズムやモジュールなどを詳細に設計する業務です。

上流工程は、プロジェクトマネージャーやシステムエンジニア、ITコンサルタントなどが担当します。

システム開発の下流工程とは?主な業務内容も解説


上記の上流工程に対して、システム開発の下流工程とは、システム開発プロジェクトの後半段階で行われる工程のことです。

下流工程では、上流工程で決定された要件や設計に基づいて、実際にシステムを構築する作業が行われます。

下流工程の特徴は、プログラミングやテストなどの技術的なスキルが求められることや、システムの品質や効率に直接影響することです。

下流工程の主な業務

下流工程に含まれる主な業務は以下の通りです。

開発(製造・コーディング)

開発とは、内部設計をもとにプログラム言語を用いてプログラム(モジュール)の作成を実行する業務です。

この作業は、コーディングとも呼ばれます。

単体テスト

単体テストとは、作成したモジュール単位で設計書にて要求された要件、機能を満たしているかどうかを確認、検証する業務です。単

体テストでバグが発生した場合は、修正が必要となります。

結合テスト

総合テストとは、複数のモジュールを組み合わせて、システム全体の機能や性能を検証する業務です。

総合テストでは、インターフェースやデータのやり取りなどに問題がないかを確認します。

システムテスト

システムテストとは、システムを実際の運用環境に近い条件でテストする業務で、ユーザーの視点からシステムの動作や仕様を検証するのが特徴です。

この作業は、ユーザー受け入れテストとも呼ばれます。

納品

納品は、テストで問題がないことを確認してから、システムをクライアントに引き渡す業務です。納品後は、保守や運用サポートを行うこともあります。

上流工程と下流工程の違い4つを比較


上記のように、上流工程と下流工程は、システム開発の工程を大きく分けて考えるという概念です。

上流工程では、システムの要件や設計を決める作業が行われます。一方、下流工程では、上流工程で決めた内容をもとに、システムの実装やテストを行う作業が行われます。

上流工程と下流工程の違いは、以下の4つです。

1.業務の内容の違い

上流工程の業務内容は、システムの目的や機能、性能などを定義する要件定義や、システムの全体像や仕様を設計する基本設計や詳細設計などです。

一方、下流工程の業務内容は、設計書に基づいてプログラムを作成する開発や、システムの動作や品質を確認するテストなどです。

2.担当者の違い

上流工程は、システムエンジニアやプロジェクトマネージャーなどが担当します。一方、下流工程は、プログラマーやテスターなどが担当するのが一般的です。

3.担当する事業者の違い

上流工程は、システム開発プロジェクト全体の内容を決定・管理するため、大手のシステムインテグレーターなどが担当することが多いです。

一方、下流工程は、システム開発の一部分を担当するため、下請けや関連会社の中小企業が担当するのが一般的です。

4.必要なスキルの違い

上流工程では、ビジネスや業務の知識や、クライアントとの折衝やコミュニケーションのスキルや、プロジェクトの管理や見積もりのスキルなどが必要です。

一方、下流工程では、プログラミングやテストの技術やスキルや、効率的な作業のスキルなどが必要です。

上記のように、上流工程と下流工程はシステム開発の工程を分けた概念ですが、実際には、上流工程と下流工程の間には密接な関係があります。

上流工程で決めた内容が下流工程の作業に影響を与えるため、上流工程での品質や正確さが重要です。また、下流工程で発生した問題や変更要望が上流工程にフィードバックされるため、下流工程での柔軟さや迅速さが重要となります。

このように、上流工程と下流工程の違いを理解することで、システム開発の流れやポイントを把握できるようになるでしょう。

上流設計に必要なスキルと知識6つ


上流設計に必要なスキルと知識には、次の6つが挙げられます。

  1. ITに関する幅広い知識

  2. 業務知識や法令知識

  3. 論理的思考力

  4. ドキュメント作成力

  5. コミュニケーション能力

  6. 見積り能力

以下で、それぞれ解説します。

1.ITに関する幅広い知識

上流設計では、システムの要件や設計を決める作業が行われるため、ITに関する幅広い知識が必要です。

例えば、プログラミング言語やフレームワーク、データベースやネットワーク、セキュリティやクラウドなどの技術やトレンドを理解しておくことが重要です。また、システムの品質や性能を評価するための指標や手法にも精通しておく必要があります。

2.業務知識や法令知識

上流設計では、システムの目的や機能、性能などを定義する要件定義や、システムの全体像や仕様を設計する基本設計や詳細設計などが行われます。そのため、システムを導入する業務や業界の知識や、業務に関する法令や規制の知識が必要です。

例えば、金融や医療などの業界では、個人情報の保護やセキュリティの強化などの法令や規制に従ってシステムを設計しなければなりません。

3.論理的思考力

上流設計では、システムの要件や設計を決める際に、論理的思考力が必要です。

論理的思考力とは、事実や根拠に基づいて、問題を分析したり、仮説を立てたり、解決策を導き出したりする能力のことです。

例えば、システムの要件や設計を決める際には、顧客の要求や課題を正しく理解し、優先順位をつけたり、トレードオフを考慮したり、効果や影響を評価したりする必要があります。

4.ドキュメント作成力

上流設計では、システムの要件や設計を決めた内容をドキュメントに明記する必要があります。

ドキュメント作成力とは、システムの要件や設計をわかりやすく、正確に、簡潔に、一貫性を持って表現する能力のことです。

例えば、システムの要件や設計をドキュメントに記述する際には、用語や記号の統一や、図や表の活用や、見出しや段落の整理などに注意する必要があります。

5.コミュニケーション能力

上流設計では、顧客やプロジェクトメンバーとのコミュニケーションが重要です。

コミュニケーション能力とは、相手の立場やニーズを理解し、自分の意見や提案を伝える能力のことです。

例えば、上流設計では、顧客とのヒアリングや打ち合わせ、プロジェクトメンバーとの調整や報告などのコミュニケーションが発生します。その際には、聞く・話す・書く・読むの4つのスキルを使って、円滑にコミュニケーションをとる必要があります。

6.見積り能力

上流設計では、システムの開発にかかる費用や期間を見積もる必要があります。

見積もり能力とは、システムの開発に必要なリソースや工数を正確に算出する能力のことです。

例えば、上流設計では、システムの要件や設計に基づいて、ハードウェアやソフトウェアの選定や、プログラミングやテストの作業量や、人員や外注の必要性などを考慮して、見積もりを行う必要があります。

下流設計に必要なスキルと知識3つ

下流設計に必要なスキルと知識には、次の3つが挙げられます。

  1. プログラミング能力

  2. コミュニケーション能力

  3. テスト能力

以下で、それぞれ解説します。

1.プログラミング能力

プログラミングには、設計書の内容を論理的に理解し、正確に実装する技術が必要です。そのため、使用するプログラミング言語やフレームワーク、ツールなどに習熟しておく必要があります。

2.コミュニケーション能力

下流工程では、プロジェクトチーム内で他者と協力してシステムを完成させるため、コミュニケーション能力が必要です。仕様や進捗、問題点などを適切に報告・連絡・相談できるスキルが求められます。

3.テスト能力

下流工程では、システムが正常に動作するかを確認するためのテスト能力が必要です。テスト計画やテストケースを作成し、テスト実施や結果報告を行うことができるスキルや知識が求められます。

上流工程の流れとポイント5つ


前述した通り、上流工程は、システム開発の初期段階で、システムの全体像や要件を決定する工程です。そのため、上流工程の質が下流工程の効率やシステムの品質に大きく影響するため、非常に重要な工程となります。

以下では、上流工程の5つのフェーズの内容と、注意すべきポイントを解説します。

フェーズ1.コンサルティング(企画)

コンサルティングは、クライアントの課題やニーズをヒアリングし、システム開発の方針や提案を行う、まず最初のフェーズです。

コンサルティングでは、クライアントの要望を正確に理解し、専門的な知識や経験を活かして最適な解決策を提供することがポイントです。

コンサルティングの結果は、提案書や企画書にまとめられます。

フェーズ2.要件定義

要件定義は、システムに求められる機能や仕様を明確に定義するフェーズです。要件定義では、機能要件と非機能要件を網羅的に洗い出し、予算やスケジュールとの兼ね合いを考慮しながら要件定義書に記述します。

要件定義書は、後の設計や開発の基礎となるため、曖昧さや不整合がないように注意することがポイントです。

フェーズ3.基本設計

基本設計は、要件定義で決めた内容に基づいて、システムの全体像を設計するフェーズです。基本設計では、システムの構造や構成、機能や仕様、操作や入出力などを設計します。

また、基本設計はユーザーから見える部分を主に設計することから、外部設計とも呼ばれます。

基本設計書は、システムの完成度や品質に大きく影響するため、要件とのトレーサビリティを確保し、詳細かつ正確に記述することがポイントです。

フェーズ4.見積り

見積りは、システム開発プロジェクト全体のコストを見積もるフェーズです。見積りでは、システムの規模や仕様、開発工程などから、専門的な手法を用いて正確なコストを算出します。

また、要件定義や基本設計が終わった段階で、詳細設計以降の費用を再見積りすることもあります。

見積りのミスや失敗は、予算オーバーやトラブルの原因になるため、なるべく正確なコストと工数を見積もることがポイントです。

フェーズ5.詳細設計

詳細設計は、基本設計で決めた内容に基づいて、システムの内部まで詳細に設計するフェーズです。詳細設計では、システム内部の機能や動作、プログラムの処理やデータ構造などを設計します。

また、詳細設計はユーザーからは見えない部分を主に設計することから、内部設計とも呼ばれます。

詳細設計書は、実際のプログラミングの指針となるため、実現可能性やエラーハンドリングを考慮し、具体的かつ完結に記述するのがポイントです。

上記の上流工程をおろそかにすると、下流工程で手戻りやバグが発生しやすくなり、プロジェクトの品質やスケジュールに影響を及ぼす可能性があります。そのため、上流工程では、クライアントとのコミュニケーションや要件の整理、設計の精度などに十分に注意することが重要です。

下流工程の流れとポイント3つ

下流工程は、上流工程で決めた要件や設計をもとに、システムを実際に作る工程です。

以下では、下流工程の3つの内容と、注意すべきポイントを解説します。

フェーズ1.開発

開発は、上流工程で作成した詳細設計書に基づいてプログラミングを行うフェーズで、コーディングの技術や効率が求められます。

開発のポイントは、設計書の内容を正確に理解し、実装することです。また、コーディング規約や品質基準に沿って、可読性や保守性の高いコードを書くことも重要です。

開発で注意すべきポイントには、設計書と異なる仕様や機能を実装してしまうことや、バグやエラーを発生させることなどがあります。これらは、後のテストや納品に影響を及ぼす可能性があるため、十分なチェックが必要です。

フェーズ2.テスト

テストは、開発したシステムが正常に動作するかを検証するフェーズです。テストの種類や観点は、上流工程で作成したテスト計画やテストケースに基づきます。

テストのポイントは、システムの品質や機能を確認し、不具合や改善点を見つけることです。また、テストの結果や報告を適切に管理することも重要です。

テストで注意すべきポイントには、テストケースやテストデータの不備や不足により、システムの問題を見逃してしまうことや、テストの工程や成果物の管理ができないことなどがあります。これらは、システムの品質や信頼性を低下させる可能性があるため、十分な注意が必要です。

フェーズ3.納品

納品は、テストで確認したシステムをクライアントに引き渡すフェーズです。納品の方法や形式は、上流工程で決めた契約や仕様に従います。

納品のポイントは、システムの動作や品質をクライアントに説明し、納得してもらうことです。また、納品後の保守やサポートについても、クライアントとの合意を取ることが重要です。

納品で注意すべきポイントとしては、納品時にクライアントから不満やクレームを受けることや、納品後にシステムに不具合や障害が発生することなどがあります。これらは、クライアントとの信頼関係や評判を損なう可能性があるため、十分注意しましょう。

上記のように、下流工程は、上流工程で決めた要件や設計を実現する工程であり、システムの完成度や品質に直結する工程です。そのため、下流工程に携わるエンジニアには、豊富な経験と知識が必要です。

システム開発における上流工程と下流工程のまとめ

上記のように、システム開発における上流工程と下流工程では、仕事の内容や役割が異なることが分かります。

しかし、上流工程と下流工程は密接に関わるものです。それは、上流工程の質が下流工程の効率やシステムの品質に大きく影響するものであり、下流工程がシステムの完成度や品質を確保するものであるからです。

そこで、質の高いシステム開発を行うためには、上流工程と下流工程それぞれのフェーズやポイントをしっかりと理解しておく必要があります。

そこで、自社のシステム開発でお悩みの方は、株式会社GIGにお気軽にご相談ください。貴社に最適なソリューションを提供いたします。

株式会社GIGは、ナショナルクライアントからスタートアップまで、Webコンサルティング、UI/UXデザイン、システム開発など、DX支援をおこなうデジタルコンサルティング企業です。

また、45,000人以上が登録するフリーランス・副業向けマッチングサービス『Workship』や、7,000人以上が登録するデザイナー特化エージェントサービス『クロスデザイナー』、リード獲得に必要な機能を備えたCMS『LeadGrid』、UXコンサルティングサービス『UX Design Lab』などを展開しています。

WebやDX支援のご相談はいつでもご連絡ください。

■株式会社GIG

お仕事のお問い合わせはこちら
会社紹介資料のダウンロードはこちら
採用応募はこちら(GIG採用サイト)
採用応募はこちら(Wantedly)
採用応募はこちら(Green)

WebやDXの課題、お気軽にご相談ください。

GIG BLOG編集部

株式会社GIGのメンバーによって構成される編集部。GIG社員のインタビューや、GIGで行われたイベントのレポート、その他GIGにかかわるさまざまな情報をお届けします。