如果您已经接受过使用形式化方法(FM)进行编程的培训,则:
- 您发现它有用吗?
- 您的FM培训涉及什么(例如一门课程,一本书)?
- 您使用什么调频工具?
- 与不使用FM相比,它在速度/质量上有什么优势?
- 您使用FM创建哪种软件?
- 如果您现在不直接使用FM,至少值得学习吗?
我很想听到在这个社区中可以找到的尽可能多的FM经验/观点。我开始阅读它,并想了解更多。
背景
编程和软件开发/工程是地球上最新的人类技能/专业,因此,该领域并不成熟也就不足为奇了-在我们领域的主要输出中显示出来,因为代码通常很晚且容易出错。平均编码和顶级编码器之间的生产率差异很大(至少10:1)也表明了行业的不成熟。这些令人沮丧的事实已在文献中得到了很好的报道,并被史蒂夫·麦康奈尔(Steve McConnell)的《密码大全》(Code Complete)等书所介绍。
软件/ CS中的主要人物(例如,已故的E. Dijkstra)已提出使用形式化方法(FM)来解决错误的根本原因(其中之一):编程中缺乏数学上的严格性。例如,迪克斯特拉(Dijkstra)提倡学生共同开发程序及其证明。
与美国相比,FM在欧洲的CS课程中似乎更为普遍。但是在过去的几年中,新的“轻量级” FM方法和诸如Alloy之类的工具引起了一些关注。FM仍远不是行业中的常用方法,我希望在此获得一些有关原因的反馈。
更新资料
截至目前(2010年10月14日),在下面的6个答案中,没有人明确提出要在“现实世界”作品中使用FM。我真的很好奇有人是否可以并且愿意。也许FM确实说明了学术界(FM是未来!)和行业(FM几乎没有用)之间的鸿沟。