40多年的软件工程研究是失败的 - iansommerville


作者背景从1981年左右到2014年退休,我一直从事软件工程或相关学科的研究。从1984年到2014年,我的所有研究都涉及与英国和整个欧洲的工业界合作。我有幸与来自不同行业和国家的许多人一起工作,我从这些经历中学到了很多东西。

这篇文章反映了我在英国和欧洲的研究经验。我认为,其他国家的情况在细节上有所不同,但都存在着相同的基本问题:

这篇文章是由我写的一条推文引起的,这条推文是对提交给2022年ICSE会议(软件工程研究的旗舰会议)的论文的研究领域的分析。这些导致我对软件工程研究进行了普遍的反思。我很遗憾地说,我认为我们这个群体在40多年的研究中,并没有真正交出多少实质性的东西。

从根本上说,我认为有三个相关的根源造成了这种情况。

  1. 短期主义。
  2. 还原主义思维
  3. 竞争而非合作

1. 短期主义
短期主义现在在软件工程(乃至所有计算机科学)研究中普遍存在。这在一定程度上是20世纪70年代开始的 "不发表就灭亡 "的文化的结果,这种文化现在在大多数国家都很流行。
研究人员必须不断地写论文以保持可信度,怎么能责怪他们呢?
他们专注于短期项目,发表中期成果,不愿意投资于生产稳健和可重复使用的示范系统,并倾向于跳上某一特定时间段的时尚浪潮(例如80年代的形式化方法,现在的机器学习)。

这种短期行为的直接后果是:许多软件工程研究都缺乏雄心。
注重成功指标的研究人员不愿意去处理长期的困难项目。在英国,在21世纪初,有一项建议是确定 "计算科学的大挑战"。提出了一些有趣的项目,如验证性编译器,但没有一个实现。

许多资助机构(如欧盟委员会)的政策加剧了短期行为,即学术研究应该与工业界合作。可以理解的是,工业界不认为自己的角色是一个长期的研究资助者,而是专注于短期或最多是中期的研究。不幸的是,由于好的和坏的原因,这种研究对许多公司来说都是不太优先的。我30多年来的经验是,它往往资金不足,在短时间内被取消,而且人员不足。

2. 还原论
在还原论的世界里,小规模、短期项目的工作可以是合理的(也许),可以说这些项目可以形成一些更大的系统的组成部分。
然而,现实情况是,还原主义的方法根本无法扩展到大规模、复杂的IT系统的建设。
我以前写过这方面的文章,这里就不多说了,简单地说,还原论的方法依赖于系统各部分之间相对简单和可理解的关系。大规模的软件系统根本不是这样的。

太多的研究人员仍然不明白这一点,他们认为我们只需要找到一些神奇的方法,软件工程的问题就会得到解决。他们在解决研究 "问题 "时,根本不知道他们的工作可能会如何扩展。因此,就软件工程实践而言,他们所做的大部分工作实际上是无用的。

3. 竞争而非合作
这些问题的背后是人类的问题,即我们有一个支离破碎的社区,在许多情况下未能共同行动,对竞争而不是合作更感兴趣。竞争环境的现实是,那些已经有充足资金的人处于获得更多资金的最佳位置。新加入的人很难为创新的想法获得资金,因此,如果他们要取得任何进展,他们必须提出已经建立的增量研究。他们必须依靠富人桌上的面包屑生活。

作为一个社区,高级成员(这里面包括我自己)未能创造一个包容性的环境,使来自传统精英之外的新想法得到支持。在与政策制定者和资助机构打交道时,我们没有共同行动,除了极少数例外,我们没有大声反对阻碍我们领域发展的徒劳的短期行为。


未来有希望吗?坦率地说,我并不乐观,因为变革将依赖于已经拥有终身职位的资深成员的利他行为,放弃短期研究,从竞争中退缩,让年轻的研究人员蓬勃发展。个人的努力是很重要的(我想我在职业生涯的最后几年里已经努力过了),但实际上,只有当社区的大多数人都希望发生这种变化时,才有可能实现。