×

ソフトウェア開発における上流工程と下流工程とは?

システム開発には、お客様へのヒアリングから実際の開発まで、さまざまなステップがあります。 手続きの前半部分を「上流工程」と呼びますが、上流工程で不備や誤解が多いと、手続き後半の「下流工程」でトラブルが多発します。

ソフトウェア開発における上流工程と下流工程とは?

 2022年09月23日

ソフトウェア開発における上流工程と下流工程とは?

システム開発には、お客様へのヒアリングから実際の開発まで、さまざまなステップがあります。 手続きの前半部分を「上流工程」と呼びますが、上流工程で不備や誤解が多いと、手続き後半の「下流工程」でトラブルが多発します。 この記事では、システム開発の上流と下流のプロセスと、管理の重要性について説明します。

 


ソフトウェア開発とは関係ありませんが、単純な生産プロセスから始めましょう。これを基に、ソフトウェア開発の上流と下流を定義できます。

 

次の 3 つのステップがあります。

 ⓵ パーツ集め

 ⓶ パーツの組み立て

 ⓷ 組み立ての塗装

生産工程は川にとても似ているので、工程が次から次へと進むにつれて、下流に向かっていることが容易に理解できます。

次のルールを導き出すことができます。

・依存性ルール: 各アイテムは、その視点から上流のすべてのアイテムに依存します。

・価値のルール: 下流に移動し、各ステップが製品により多くの価値を追加します。

それでは、これらのルールをさまざまなソフトウェア開発コンテキストに適用してみましょう。

 

上流工程はシステム開発の要!プロジェクト成功に必要なスキルとは? - システム開発のプロが発注成功を手助けする【発注ラウンジ】

 

ほとんどのソフトウェア コンポーネントには、他のコンポーネントへの依存関係があります。 では、上流の依存関係と下流の依存関係とは何ですか?コンポーネント C はコンポーネント B に依存し、コンポーネント B はコンポーネント A に依存します。

依存性ルールを適用すると、コンポーネント A は、コンポーネント C の上流にあるコンポーネント B の上流にあると安全に言えます (矢印が反対方向を指していても)。

ここで値のルールを適用するのは少し抽象的ですが、コンポーネント C はコンポーネント B と A のすべての機能を「インポート」し、それらの機能に独自の値を追加して下流のコンポーネントにするため、最も価値があると言えます。

 

 

上流」と「下流」という言葉がよく使われるもう1つのコンテキストは、オープン ソース開発です。 実際には、上記で説明したコンポーネントの依存関係と非常によく似ています。

これは、オープン ソース プロジェクトではかなり一般的な開発スタイルです。プロジェクトのフォークを作成し、そのフォークにバグを修正するか機能を追加してから、元のプロジェクトにパッチを送信します。

このコンテキストでは、依存関係ルールはプロジェクト A を上流 プロジェクトにします。これは、プロジェクト B がなくても十分に機能しますが、プロジェクト B (フォーク) はプロジェクト A (元のプロジェクト) なしでは存在すらしないためです。

価値のルールも同様に適用されます。プロジェクト B が新しい機能またはバグ修正を追加するため、元のプロジェクト A に価値が追加されます。したがって、オープンソースプロジェクトにパッチを提供するたびに、上流にパッチを送信したと言えます。

 

システム開発の「上流工程」とは?下流工程との違いや流れ、ポイントを解説

 

マイクロサービスで構成されるシステムでは、上流 サービスと下流 サービスについての話もあります。当然のことながら、依存関係ルールと値ルールの両方がこのコンテキストにも適用されます。

サービス A が依存しているため、サービス B が上流 サービスです。 また、サービス A は、サービス B の価値に追加されるため、下流 サービスです。

この場合、上流と下流を定義する「ストリーム」は、サービスAを介してシステムに入るデータ ストリームではなく、システムの中心からユーザー向けサービスに至るまでのデータ ストリームであることに注意してください。サービスがユーザー (またはその他の最終消費者) に近ければ近いほど、そのサービスは下流にあります。

 

 

上流」と「下流」の概念が使用されるコンテキストでは、2つの単純なルールを適用して、どのアイテムが別のアイテムの上流または下流にあるかを調べることができます。

 

本記事がベトナムにおけるオフショア開発でシステムの工程を検討される上で少しでも参考になれば幸いです。私たちHachinetはオフショアにおける品質保証に加え、品質を重視したオフショア開発にも取り組んでいます。オフショア開発やシステム開発に関してお悩みなどございましたら、ぜひHachinetにお気軽にお問い合わせください。御社のオフショアプロジェクトを最大限にサポートさせていただきます。

 

オフショア開発でシステムの構築をご検討されている方々はぜひ一度ご相談ください。

※以下通り弊社の連絡先

アカウントマネージャー: クアン(日本語・英語対応可)

電話番号: (+84)2462 900 388

メール:  [email protected]

お電話でのご相談/お申し込み等、お気軽にご連絡ください