This document discusses formal methods for software development. It notes that formal methods use mathematical and logical notations to develop software and systems in a rigorous way. Formal methods help ensure high quality software by generating better code and protecting against requirement changes from customers. However, formal methods also have disadvantages like taking a long time and requiring extra training.