Software Development with Formal Methods