前往AGI的征途里:跨越两百年,人类仍然渴望“银弹”( 七 )

\n

当然 , 这一指标并没有像“摩尔定律”一样如此言之凿凿地成为“规律” , 但“没有银弹”则是指出软件工程的复杂性的行业本质 。 复杂性要求软件行业的从业者不要寄希望于短时间内就可以取得本质性突破 , 而应该是持之以恒地 , 在可靠度、简洁性上取得按部就班地进展 , 逐步提高软件开发的生产率 。

\n

\n

布鲁克斯首先区分了软件开发的两类问题:本质性的根本任务 , 即打造抽象的软件的复杂概念结构;附属性的次要任务 , 即使用编程语言表达这些抽象概念结构 , 在空间和时间限制下将它们映射成机器语言 。 他认为 , 附属性的任务可以随着工具的改善而逐步解决 , 而本质性的任务则因为缺少有效地解决工具 , 而难以攻克 。

\n

而构思软件概念性的结构本身就有复杂性、一致性、可变性及不可见性的特点 。 而在软件开发中 , 构建什么样的系统成为最困难的部分 。 复杂性则要求开发人员必须给出明确详细的技术需求 , 而软件系统往往又是活动的、变动的系统 , 在过程中不断重复地抽取和细化产品的需求 , 让定义系统需求成为开发人员之间的沟通的常态 。

推荐阅读