Most of us have a stereotype associated with the word “engineering”: that it is formal, verifiable, and mathematical. But real-world engineering incorporates informal methods as well. Heuristics, exploration, trial and error, and even guesswork play a role in every engineering discipline, and especially so in software engineering. Nevertheless, it’s vital to maintain a rigorous approach, with suitable care and validation.
This talk presents a case study of responsibly applying informal methods in a software engineering context where formal methods are (at least for now) not much help. I will show how a team can pursue a careful, rigorous approach worthy of the name “engineering” in the absence of formal methods.