「グローバル変数とか使うと、モジュールが実際には密結合になって、個々のモジュールの状態遷移がコントールしきれなくなる(人知を超えた複雑さになる)」、「依存関係は、網目は避けてせめてツリーにしておこう」、とかあるわけですよ。
同じことが、大粒度のコンポーネント構造にも言えるし、業務のデータフローにも言えるわけです。
モジュール間にまずインターフェースを定義しようという話と、業務のデータフロー上の受け渡し情報を"伝票"的にモデル化するという話は、同じ話なわけです。
一般に、ツリー構造を維持しつつ依存関係をメンテするのは、ツリーを維持するのを放棄してやるより高コストなわけです。
グローバル変数を直接参照できるところを、いちいち引数渡しにする方が、初期コストは高いわけです。