Applying formal specifications to real-world software development | Synapse