Formal Models: I Hate You, I Love You
My view on formal methods is somewhat... nuanced. In spite of this I'll go ahead and start with a ridiculously strong and outrageous assertion that I can use as a toe hold for further discussion: Formal specifications do not have a place in agile software development. Don't get me wrong. As a software engineer I like the idea of formal specifications very much. They are precise. They are unambiguous. They are... engineering-y. But as a post-modernist software engineer I also think formal specifications are kind of a dumb idea . They are tedious. They are cryptic. They are... anti-human. For decades software engineers seem to have put formal specifications on a pedestal as if they were the Michelangelo's David of requirements. But while Michelangelo's sculpture of David manages to perfectly capture the essence of humanity in marble, even the most elegant formal specifications fail to fully capture the perfect essence of desired function...