SMS: Formal software development