What are the advantages and limitations of using Formal Specifications?


I have researched through Internet the advantages and disadvantages that the use of formal specifications and specifically the C # Code Agreements could have. I have found several answers, but I could not identify the key points about the pros and cons, as I mentioned above. Could I have any help on that topic and some relevant source to help me?