ウォーターフォール解説② ~上流/下流の概念~
はじめに
多くの方が「上流下流」と聞いて最初に思い浮かべるのは、要件定義から始まり、設計、実装、テストへと進む開発工程の流れでしょう。これは確かにウォーターフォール開発の本質的な特徴の一つですが、実務において私たちが向き合う「上流下流」には、もっと深い構造があります。
(1)「工程」の上流下流
システム開発の時間的な流れを期間毎に区切ったものを「工程」と呼びます。ここに上流下流があります。上流工程では要件定義や基本設計が行われ、そこで決定された内容が詳細設計、実装、テストという下流工程へと展開されていきます。上流工程では「何を作るか」「なぜ作るのか」という本質的な検討が行われ、下流工程ではその決定に基づいて「どのように作るか」という具体的な実現方法が定められていきます。これは川の流れに例えると、上流での決定が下流に大きな影響を与えることになります。
(2)「商流」の上流下流
企業取引の流れを「商流」と呼びます。ここにも上流下流が有ります。典型的な例を見てみましょう。大手企業がシステム開発を発注する際、まず大手SIerが元請けとして受注します。ここが商流の最上流です。しかし現代のシステム開発は、一社で全てを担うには複雑すぎます。そこでSIerは案件を分割し、それぞれの得意分野を持つ開発会社(一次請けベンダー)に発注します。さらにその会社も、必要に応じて専門性や開発リソースを補うため、他社(二次請け、三次請けベンダー)に発注していきます。なお、この商流の構造が生み出す特徴的な現象があります。上流に位置するほど顧客の生の要望に触れる機会が多く、プロジェクトの全体像を把握しやすい立場にあります。一方、下流では上流から伝達される仕様書や設計書が主な情報源となり、しばしば「なぜこの機能が必要なのか」といった背景情報が十分に伝わらないことがあります。また、各層でのマージン構造により、下流に行くほど単価が圧縮される傾向にあります。
(3)「指揮系統」の上流下流
組織における「指揮系統」にも「上流下流」があります。経営層が事業戦略を決定し、事業部門の責任者がそれを具体的な計画に落とし込み、プロジェクトマネージャーが開発チームを指揮していきます。この階層構造によって、組織としての意思決定の一貫性が保たれるのです。
3つの「上流下流」の相互関係
これら3つの「上流下流」―工程、商流、指揮系統―は、それぞれが独自の役割と意味を持っています。たとえば、商流の下流に位置する会社が工程の上流を担当することもありますし、指揮系統の上位者が下流工程の詳細に関与することもあります。ただし、実務では、商流の上流企業が工程の上流も担当するケースが多いのが実態です。この3つの構造は、時として複雑に絡み合いながらも、基本的には独立した概念として理解する必要があります。
アジャイルでは?
アジャイル開発は、このような重層的な「上流下流」構造に一石を投じています。アジャイルでは開発工程の上流下流を意図的に曖昧にし、イテレーションごとに要件定義から運用までを繰り返します。そして、この考え方は商流や指揮系統の上流下流にも影響を与えています。たとえば、スクラムチームには顧客代表としてのプロダクトオーナーが参加し、開発チームとの直接対話が推奨されます。このように、流れが双方向的ないしは還流的になっているため、卓上型流し素麺器のようなイメージで流れを捉えると良いかもしれません。
「上流」という言葉が招く誤解について
「上流」という言葉から、社会的な地位や待遇の「上下」を連想してしまう方もいるかもしれません。しかし、システム開発における「上流下流」は、社会階級的な意味での上流階級・下流階級とは全く異なる概念です。たとえば、商流における「上流」企業で働く派遣社員と、「下流」の開発ベンダーで働く管理職を比較してみましょう。派遣社員は要件定義などの工程上流に関わることができますが、必ずしも待遇が良いとは限りません。一方、下流の開発ベンダーの管理職は、より高い報酬を得ていることが一般的です。
また、「上流工程」を担当することは確かに重要な役割ですが、それは「下流工程」が価値的に劣るということを意味しません。むしろ、高度な技術力を必要とする実装やテストの工程なくしては、品質の高いシステムは実現できません。つまり、ここでいう「上流下流」は、単にプロジェクトにおける位置関係や役割の違いを表現しているにすぎません。それは価値の優劣や社会的地位を示すものではなく、システム開発という協働作業の中での機能的な区分けなのです。
まとめ
ここまで説明したようにウォーターフォール開発の中で「上流下流」と呼ばれているものには、「工程」「商流」「指揮系統」の3種のものがあります。そして、アジャイルではこの三種の上流下流はどれも曖昧かつ、双方向的なものとなっています。さらに、上流=偉い/下流=卑しいという感覚で捉えられるものではないということを覚えてください。
Discussion