http://wiki.c2.com/?FunctionalDecomposition
オブジェクト指向にかぎらず、大きな仕事があるからといって、単純にタスクを分割しただけでは、情報のやりとりが非効率になることがよくあります。
長い手続きを何の考えもなしにオブジェクトに分けてしまうと、グローバル変数を使うサブルーチンのようになってしまいます。つまり、元のスコープからアクセスしていた情報を共有するために、引数が無駄に多かったり、あるいは大きなコンテキストになったり、乱暴なパブリックフィールドアクセスが起きたり、といったことが起こります。
仕事をオブジェクトに分けましょうというのは、責務の専門性でグルーピングするということです。どこから何を参照するかの関係線が最少になるようにし、意味がわかるようにメタファーでくくるようにしましょう。
それぞれの社員が、プロダクトの開発と営業をどちらもやるのではなく、開発者は倍の開発を、営業マンは倍の営業をすると偏らせるほうが、どう考えても正常ですよね