架构软件工程的未来(精要版)

2022-12-03 11:12:22 浏览数 (1)

【引言】《架构软件工程的未来》一文共有近5万字,很多朋友反映阅读耗费的时间较多,导致很多人没有耐心读完,特推出4000字精要版。

1. 软件工程作为一种战略优势

我们生活在一个由软件驱动的变革时代。软件以及所有软件工程的过程、实践、技术和支持它的科学领域,使我们的医疗、国防、商业、通信、教育和能源系统成为可能。它也是几乎所有研究领域的关键赋能组件,如智能基础设施(纳米技术)、人类增强(生物技术)和自主交通。然而,对软件的依赖使我们容易受到其自身弱点的影响。软件的弱点直接反映了软件工程的现状和实践中的不足之处,它们可以毫无预警地影响数百万人。2021年,软件问题导致了美国历史上最大规模的输油管道关闭,并导致了数百家企业的瘫痪。软件质量问题还导致了飞机和汽车坠毁中的生命损失,以及航空飞行的昂贵故障。

如果没有永远投资软件工程的催化剂,随着我们越来越依赖于越来越大且越来越复杂的软件系统,情况将会进一步恶化。本报告旨在成为此类催化剂。确定将支持未来系统的关键技术和研究领域,并制定指导研究工作的路线图,是使软件成为竞争优势的关键一步。本研究概述了旨在使未来软件系统更安全、可预测和可进化的努力。卡内基梅隆大学软件工程研究所(CMU SEI)与软件工程界进行了接触,并组建了一个由远见卓识者和高级思想领袖组成的咨询委员会,以确保软件工程的生态系统观点的广泛性,并在将来的研发愿景和路线图中得到体现。

2. 调查结果反映了新的学习、挑战和研究需求

不出所料,本研究调查指出,软件工程研究是一个高度动态、快速发展的领域,技术可以迅速崛起并发展成为现代生活基础设施的组成部分。虽然这也许并不令人惊讶,但最近的技术趋势在多范围内融合在一起,并出现速度和质量都很高的软件能力,其中许多技术和能力在10年前都是无法想象的。

以下调查结果来源于软件工程实践的现状、有助于推进软件工程实践状态的新趋势和新兴技术、与软件工程研究社区举办的研讨会、文献调查、与该领域专家的访谈以及我们咨询委员会的投入。他们总结了软件工程未来所需的关键学习、关键挑战和新研究。

  1. 保持国家软件工程能力是一项战略优势。软件工程影响一切,因为软件无处不在,包括我们国家的基础设施、国防、金融、教育和医疗系统。我们对软件系统日益增长的依赖使得我们必须保持国家在软件工程领域的领导地位和战略优势。我们需要提高软件工程的知名度,使其获得与其对国家安全和竞争力的重要性相称的持续认可和投资。
  2. 保持国家软件工程能力需要持续的研究。新型软件系统将继续超越当前的软件工程理论、工具和实践所能支持的范围。未来的系统和软件工程的根本性转变需要在智能自动化、确保系统进化、理解组合系统和新的系统类型(如人工智能系统、社会规模系统和量子系统)等领域的重点突破。
  3. 保持国家软件工程能力需要促进战略伙伴关系。我们需要促成战略伙伴关系与合作,以推动行业、研究实验室、学术界和政府之间的软件工程研究创新。
  4. 保持国家软件工程能力需要持续的投资。决策者必须认识到软件工程的好处,并使其成为一项重要的国家能力。这种承认将意味着持续的战略投资。
  5. 软件工程的愿景需要改变。当前的软件开发流水线概念将被基于程序员意图不断进化系统的AI和人合作概念所取代。
  6. 将重点放在再保证的系统上,使新能力能够持续、快速地整合。由于软件无处不在,因此对软件的需求不断增加,不断发展,以整合新的功能。因此,我们需要了解如何在不损害现有能力的情况下,持续有效地重新保证依赖软件的系统,提高鉴证证据和论据的重要性将是关键。
  7. 社会级规模的系统需要新的设计原则。对软件影响的认知正在产生新的质量属性需求,软件工程师需要开发更好的设计方法。除了传统属性(可修改性、可靠性、性能等),还需要添加一个新的质量属性列表,如透明度、影响力等。
  8. 需要重新构构造软件工程的人才队伍。依赖于软件的系统是由一群拥有完全不同技能的人为许多不同的目的而构建的,其中许多人没有受过正式的软件工程培训。我们需要更好地了解所需劳动力的性质以及了解如何促进其增长。

3. 未来软件工程的指导性愿景和路线图

我们的指导性愿景是,当前的软件开发流水线概念被替换为人和软件是值得信赖的合作者,可以根据程序员的意图快速开发系统。为了实现这一愿景,我们预计未来系统工程需要新的开发和架构范例。

我们的研究有助于为未来系统的软件工程提供新的研究领域。与顾问委员会和软件工程研究社区的其他领导者密切合作,我们制定了包含六个研究重点领域的研究路线图。下图显示了这些领域以及要开展的研究主题列表,随后对每个研究重点领域进行了简短描述。

3.1 人工智能增强了软件开发

在软件开发过程的每个阶段,人工智能都能提供帮助。通过减轻繁琐的任务,人们将能够更好地专注于需要创造力的任务,以及只有人类才能提供的创新。为了实现这一重要目标,我们需要重新设计整个软件开发过程,增加对开发人员的人工智能和自动化工具支持。关键的挑战将是利用整个生命周期中生成的数据。该研究领域的重点是人工智能增强软件开发在开发的每个阶段会是什么样子。在持续演进过程中,人工智能在承担常规任务时特别有用。

3.2 确保软件系统的持续演进

当考虑当今依赖于软件的系统时,它们不是静态的(甚至不经常更新的)工程工件。相反,它们是流动的,这意味着它们将经历几乎连续的更新和改进,并仍然有效。因此,该研究领域的目标是开发快速和有保证的软件演化的理论和实践,以实现持续演化系统的有效性和有界性的再保证。

3.3 通过组合正确性进行软件构建

随着依赖于软件的系统范围和规模不断增长和变化,这些系统的复杂性使得任何一个人或团体都无法理解整个系统。因此,有必要使用支持模块化组件组合的技术和平台来集成(并持续重新集成)软件系统。这是特别困难的,因为许多这样的组件是从现有元素中重用的,而这些元素不是设计为在一起集成或演进的。该研究领域的目标是创建方法和工具,以规范和实施组合规则,允许(1)创建所需的行为(功能和质量属性)和(2)保证这些行为。

3.4 人工智能赋能的软件系统工程化

人工智能支持系统是软件依赖系统,包括了人工智能和非人工智能组件,与没有人工智能的系统相比,具有一些不同的固有特征。然而,支持人工智能的系统首先是一种软件系统。这些系统与传统软件系统的开发和维护有许多相似之处。该研究领域的重点是探索现有的软件工程能够可靠地支持人工智能系统的开发,以及识别和增强软件工程技术,用于规范、设计、架构、分析、部署和维护具有人工智能组件的系统。

3.5 社会规模系统的工程化

社会规模的软件系统,如今天的商业社交媒体系统,旨在保持用户参与,并经常影响他们的生活和工作。社会规模系统的一个关键挑战是预测社会激励的质量属性,当人类是系统的组成部分时,这些属性会出现。目标是利用社会科学的知识来构建和发展考虑这些属性的社会规模软件系统。

3.6 量子计算的软件系统工程

量子计算软件工程的进步与硬件的进步同样重要。这一研究领域的目标是首先使当前的量子计算机能够更容易、更可靠地编程,然后随着更大、完全容错的量子计算系统变得可用,实现越来越多的抽象。一个关键挑战是最终将这些类型的系统完全集成到统一的软件开发生命周期中。

4. 研究和立法建议促进变革

促进软件工程的变革将导致更值得信赖和能力更强的依赖于软件的系统。本节前面预览的路线图所示的研究重点领域衍生了一系列促进变革所需的研究建议,随后是制定建议,重点是需要的人员、投资和维护。

以下研究解决了各种挑战,如人工智能的日益使用、确保不断变化的系统、组合和重新组合系统以及社会技术的工程化和异构系统。

  1. 使AI成为可靠的系统能力增强器。软件工程和人工智能社区应该联手发展人工智能的工程学科。这将有助于人工智能软件系统的开发和发展,使其按预期运行,并使人工智能成为软件工程生产力的倍增器。
  2. 软件系统演进和规模化保证的理论和开发实践。软件工程研究社区应该开发一种理论和相关实践,以重新确保不断演进的软件系统。本研究的一个焦点是保证论证,它应该是与系统架构同等重要的软件工程工件,以确保小的系统更改只需要增量的重新保证。
  3. 为组合技术开发形式语义。计算机科学界应该关注最新一代的组合技术,以确保依赖注入框架等技术通过指定系统行为的不同抽象级别来保持语义。这将允许在实现可预测的运行时行为的同时,通过组合获得演进的好处。
  4. 社会规模的社会技术系统实现成熟的工程化。软件工程社区应与社会科学社区合作,为社会技术系统开发工程原理。社会学和心理学等学科的理论和技术应用于发现社会技术系统的新设计原则,这反过来应导致社会规模系统的更可预测行为。
  5. 促进对新计算模型工程的更多关注,重点是量子使能的软件系统。软件工程界应与量子计算界合作,以预测量子赋能的新架构范例计算系统。重点应该是理解量子计算模型如何影响软件堆栈的所有层。

上述建议侧重于实现变革的科学和工程障碍。以下立法建议侧重于体制障碍,包括经济、人力和政策障碍。

  1. 确保投资优先权反映软件工程作为国家关键能力的重要性。软件工程在国家安全和全球市场竞争力中的战略作用应反映在国家研究活动中,包括美国白宫科技政策办公室(OSTP)和网络与信息技术研发(NITRD)开展的研究活动。这些研究活动应将软件工程研究视为与芯片制造和人工智能同等重要的投资重点,有利于国家竞争力和安全。
  2. 将软件工程研究的持续进展制度化。软件工程的持续进步要求将软件工程研究和实践影响的持续审查和再投资周期制度化。保持国家软件工程水平需要研究资金来源和机构与软件工程界的行业和政府领导人合作,定期审查软件工程的状态。
  3. 制定一项战略,确保未来软件工程的有效劳动力。目前,软件工程由具有大量跨学科技能的人员执行,并不总是包括软件工程的正式培训。此外,软件工程的性质似乎正在改变,以反映依赖于软件系统的流动性。我们需要更好地了解所需劳动力的性质以及如何促进其增长。软件工程界、软件行业和学术界应制定一项战略,以确保未来软件工程人员队伍的有效性。

5. 构建面向未来的系统需要的软件工程

基于软件的性质,它在能力、复杂性和互联方面在持续无限制增长。软件的发展似乎没有停滞不前。为了使未来的软件系统安全、可预测和可进化,来自私人和公共来源投资的软件工程界必须共同努力,从战略上推进软件工程的理论和实践,以实现下一代软件依赖系统。

0 人点赞