development process – Origin of the idea of using separate specification / implementation / testing teams?

In our company we split up software development in three non-overlapping teams: a team that writes the specification, a team that writes the code, and a third team that tests the implementation against the specification. I’m looking for a bibliography reference for a description of this division of labour? It seems to me that it is common practice in safety-critical domains.