Herb Simonは興味深い議論をしている。なぜ構造は――人工的なあるいは自然の――階層構造をとる傾向にあるのだろうか。彼は2人の時計作りを考えた。1人はたった1つの長い工程で組み立てる、もう一人はラインになった工程で作り組み合わせる。電話が鳴ると、時計作りは止まって、どんな作業をしていたとしても中断しなければならなく、作業はだめになってしまう。たった1つの工程で作っている時計作りは全部がだめになり、1からやり直さなければならない。しかし、階層的に作業している時計作りは、失敗しない。その結果いつも時間を節約でき、効果的に時計を生産することができる。ソフトウェアを作るにはどちらが適していると思いますか? (この議論はSimon’s paper The Architecture of Complexityに載っている)
(トップダウンデザインの危険についての議論は、Software Requirements and Specification: A Lexicon of Software Principles,Practices and Prejudices,Michael Jackson,Addison Wesley,1995というタイトルの記事を見よ)
リレーションを使う考えは、そしてソフトウェア構造を考える点での役割という考えはまずDavid ParnasによりDesinging Software for Ease of Extension and Constraction IEEE Transaction on Software Engineering,Vol.SE-5,No2,1972で述べられている。