Describir: Constructing Correct Software