当前位置: 首页 > 科技观察

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

时间:2023-03-22 01:52:16 科技观察

1.作为战略优势的软件工程我们生活在一个软件驱动变革的时代。软件,以及支持它的所有软件工程流程、实践、技术和科学领域,使我们的医疗、国防、商业、通信、教育和能源系统成为可能。它也是几乎所有研究领域的关键支持组件,例如智能基础设施(纳米技术)、人类增强(生物技术)和自主交通。然而,对软件的依赖使我们容易受到软件自身弱点的影响。软件中的弱点直接反映了软件工程的状态和实践中的缺陷,它们可以在没有警告的情况下影响数百万人。2021年,软件问题导致美国历史上最大规模的输油管道停运,数百家企业陷入瘫痪。软件质量问题还导致飞机和车祸中的人员伤亡,以及航空飞行中代价高昂的故障。如果没有永远投资于软件工程的催化剂,随着我们越来越依赖更大、更复杂的软件系统,情况将会恶化。本报告旨在成为这样一种催化剂。确定将支持未来系统的关键技术和研究领域,并制定路线图来指导研究工作,是使软件成为竞争优势的关键步骤。本研究概述了旨在使未来软件系统更加安全、可预测和可演化的努力。卡内基梅隆大学软件工程研究所(CMUSEI)已经接触到软件工程社区,并组建了一个由有远见者和高级思想领袖组成的顾问委员会,以确保软件工程的广泛生态系统观点,并反映在未来的研发愿景和路线图中。2.调查结果反映了新的学习、挑战和研究需求不出所料,这项研究调查指出,软件工程研究是一个高度动态和快速发展的领域,技术可以迅速出现并演变成现代生活基础设施的一个组成部分。虽然这可能并不令人惊讶,但最近的技术趋势已经在多个方面汇聚,并产生了高速和高质量的软件功能,其中许多功能在10年前是不可想象的。以下调查结果来自软件工程实践的现状、有助于推动软件工程实践状况的新趋势和新兴技术、与软件工程研究社区的研讨会、文献调查、对该领域专家的访谈,以及我们的顾问委员会提出。他们总结了未来软件工程所需的关键知识、关键挑战和新研究。保持国家软件工程能力是一个战略优势。软件工程影响一切,因为软件无处不在,包括我们国家的基础设施、国防、金融、教育和医疗保健系统。我们对软件系统的日益依赖使得我们必须保持我们国家在软件工程方面的领导地位和战略优势。我们需要提高软件工程的知名度,以获得与其对国家安全和竞争力的重要性相称的持续认可和投资。需要持续研究以保持国家软件工程能力。新型软件系统将继续超越当前软件工程理论、工具和实践所能支持的范围。系统和软件工程未来的根本性转变需要在智能自动化、确保系统演化、理解组合系统以及人工智能系统、社会规模系统和量子系统等新型系统等领域取得重点突破。维持国家软件工程能力需要促进战略伙伴关系。我们需要培养战略伙伴关系和协作,以推动行业、研究实验室、学术界和政府之间软件工程研究的创新。需要持续投资以维持国家软件工程能力。政策制定者必须认识到软件工程的好处,并使其成为一项重要的国家能力。这种认可将意味着持续的战略投资。软件工程的愿景需要改变。当前软件开发管道的概念将被人工智能和人类协作的概念所取代,人工智能和人类协作根据程序员的意图来改进系统。专注于能够持续快速集成新功能的可靠系统。由于软件无处不在,对软件进行演进以合并新功能的需求不断增加。因此,我们需要了解如何在不损害现有功能的情况下持续有效地重新确保依赖软件的系统,增加取证证据和论据的重要性将是关键。社会规模的系统需要新的设计原则。对软件影响的认识正在对质量属性产生新的要求,软件工程师需要开发更好的设计方法。除了传统的属性(可修改性、可靠性、性能等)外,还需要添加新的质量属性列表,如透明度、影响力等。需要对软件工程人才队伍进行重组。依赖于软件的系统是由一群具有不同技能的人为许多不同的目的而构建的,其中许多人没有接受过正式的软件工程培训。我们需要更好地了解我们需要的劳动力的性质以及如何促进其增长。3.未来软件工程的指导愿景和路线图我们的指导愿景是,软件开发流水线的当前概念被人和软件所取代,成为可以根据程序员的意图快速开发系统的可信赖的合作者。为实现这一愿景,我们预计未来的系统工程将需要新的开发和架构范例。我们的研究有助于为未来系统的软件工程提供新的研究领域。我们与我们的顾问委员会和软件工程研究界的其他领导者密切合作,制定了包括六个研究重点领域的研究路线图。下图显示了这些领域和要进行的研究课题列表,随后是每个研究重点领域的简短描述。3.1人工智能增强软件开发人工智能可以在软件开发过程的每个阶段提供帮助。通过卸载繁琐的任务,人们将能够更好地专注于需要创造力的任务,即只有人类才能提供的创新。为了实现这一重要目标,我们需要重新设计整个软件开发流程,增加对开发人员的人工智能和自动化工具支持。一个关键的挑战将是利用整个生命周期中生成的数据。该研究领域的重点是人工智能增强软件开发在每个开发阶段会是什么样子。随着人工智能的不断发展,它在承担日常任务方面特别有用。3.2确保软件系统的持续演进当考虑当今的软件相关系统时,它们不是静态的(甚至不经常更新的)工程产物。相反,它们是流动的,这意味着它们将经历近乎持续的更新和改进并且仍然有效。因此,该研究领域的目标是发展快速且有保证的软件演化的理论和实践,以确保持续演化系统的有效性和有限性。3.3通过组合正确性构建软件随着依赖于软件的系统在范围和规模上不断增长和变化,这些系统的复杂性使得任何个人或团队都不可能理解整个系统。因此,有必要使用支持模块化组件组合的技术和平台来集成(并不断重新集成)软件系统。这尤其困难,因为这些组件中的许多组件都是从现有元素中重用的,而这些元素并不是为集成或一起发展而设计的。该研究领域的目标是创建方法和工具来指定和执行组合规则,这些规则允许(1)创建所需的行为(功能和质量属性)和(2)保证这些行为。3.4AI-EnabledSoftwareSystems工程化的AI-enabled系统是依赖于软件的系统,包括AI和非AI组件,并且具有一些不同于没有AI的系统的固有特征。然而,支持人工智能的系统首先是一个软件系统。这些系统与传统软件系统的开发和维护有许多相似之处。该研究领域侧重于探索现有软件工程如何可靠地支持人工智能系统的开发,以及识别和增强用于指定、设计、架构、分析、部署和维护具有人工智能组件的系统的软件工程技术。3.5工程社交规模系统社交规模软件系统,如当今的商业社交媒体系统,旨在保持用户参与并经常影响他们的生活和工作。社会规模系统的一个关键挑战是预测当人类成为系统的组成部分时出现的社会激励的定性特性。目标是使用来自社会科学的知识来构建和开发将这些属性考虑在内的社会规模软件系统。3.6量子计算软件系统工程量子计算软件工程的进步与硬件的进步同等重要。这一系列研究的目标首先是让当前的量子计算机更容易、更可靠地进行编程,然后随着更大、完全容错的量子计算系统的出现,实现越来越多的抽象。一个关键的挑战是最终将这些类型的系统完全集成到一个统一的软件开发生命周期中。4.促进变革的研究和立法提案促进软件工程的变革将导致更可靠和更强大的软件依赖系统。本节前面预览的路线图中显示的研究重点领域派生出一组促进变革所需的研究建议,然后是侧重于所需人员、投资和维护的发展建议。以下研究解决了人工智能的使用越来越多、确保系统不断变化、组合和重组系统以及社会技术工程和异构系统等挑战。让人工智能成为可靠??的系统能力增强器。软件工程和人工智能社区应该联手发展人工智能的工程学科。这将有助于AI软件系统的开发和演进,使其按预期运行,并使AI成为软件工程的生产力倍增器。软件系统演化与可扩展性保证的理论与开发实践。软件工程研究社区应该开发一种理论和相关实践来重新确保不断发展的软件系统。这项研究的一个重点是保证论证,它应该是与系统架构一样重要的软件工程工件,以确保小的系统更改只需要增量再保证。为组合技术开发形式语义。计算机科学界应该关注最新一代的组合技术,以确保依赖注入框架等技术通过指定系统行为的不同抽象级别来保留语义。这将通过组合实现进化的好处,同时实现可预测的运行时行为。社会规模的社会技术系统是成熟设计的。软件工程界应该与社会科学界合作,为社会技术系统开发工程原理。来自社会学和心理学等学科的理论和技术被应用于发现社会技术系统的新设计原则,这反过来应该会导致社会规模系统的行为更加可预测。促进对新计算模型工程的更多关注,重点是支持量子的软件系统。软件工程社区应该与量子计算社区合作,以预测支持量子的新架构范式计算系统。重点应该放在理解量子计算模型如何影响软件堆栈的所有层上。上述建议侧重于改变的科学和工程障碍。以下立法提案侧重于体制障碍,包括经济、人力和政策。确保投资重点反映软件工程作为关键国家能力的重要性。软件工程在国家安全和全球市场竞争力中的战略作用应反映在国家研究活动中,包括白宫科技政策办公室(OSTP)和网络与信息技术研究与开发办公室(NITRD)开展的研究活动。这些研究活动应将软件工程研究作为与芯片制造和人工智能同等的投资重点,以造福于国家竞争力和安全。将软件工程研究的持续进步制度化。软件工程的持续进步需要对软件工程研究和实践的影响进行持续审查和再投资周期的制度化。维护国家软件工程标准需要研究资金来源和机构与软件工程界的行业和政府领导者合作,定期审查软件工程的状态。制定战略以确保为未来的软件工程提供有效的劳动力。目前,软件工程由具有广泛跨学科技能的人员执行,并不总是包括软件工程方面的正规培训。此外,软件工程的性质似乎正在发生变化,以反映依赖于软件的系统的流动性。我们需要更好地了解我们需要的劳动力的性质以及如何促进其增长。软件工程社区、软件行业和学术界应制定一项战略,以确保未来软件工程劳动力的有效性。5.构建面向未来的系统所需的软件工程是基于软件的本质,软件在能力、复杂性和互连方面继续无限增长。软件开发似乎并没有停滞不前。为了使未来的软件系统安全、可预测和可演进,软件工程社区在私人和公共来源的投资下,必须共同努力,从战略上推进软件工程的理论和实践,以实现下一代软件相关系统。