This document discusses formal methods in software engineering, including formal specification techniques. It describes how formal specification helps discover problems in system requirements by requiring a detailed analysis. Both algebraic and model-based techniques for interface and behavioral specification are covered. The document also addresses topics like the acceptance of formal methods, their use in critical systems, specification in the software development process, and techniques for interface specification.