我是一名软件工程师/架构师,专注于人工智能和分布式系统,我来自电子和通信工程背景。
在我的软件之旅中,我一直想知道为什么这个工程分支缺乏正式的设计方法,如电子学(数学建模和实现)以及具有许多约束的最佳通信系统的设计,这些系统中的大多数都是比地球上最复杂的软件(比如运行我们使用和开发的软件的 IC)复杂得多,并且唯一具有正式方法的软件相关领域是硬件描述语言。
我最近了解到,存在用于软件设计、规范和验证的形式化方法,如 Z 符号和语言、维也纳开发方法和 b 语言。
但是这个领域的最新技术是什么,普通工程师如何使用它(例如在我的团队中)?