There's a book called "Dreaming in Code" which actually details how hard this problem was for a real project that ultimately failed. Good book for anyone who wants to read an account of a writer who followed an entire software team through the lifecycle of a product.