From 763ac0ca36b6e0a4aac81193f7bd61603b5ae77c Mon Sep 17 00:00:00 2001 From: DanHaoPKU Date: Sat, 14 Dec 2019 11:02:07 +0800 Subject: [PATCH] update Ch2-4 and Ch2-8 --- Ch2-4-DevelopmentMethodology.tex | 19 +++++++++---- Ch2-8-Quality&Security.tex | 49 ++++++++++++++++---------------- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/Ch2-4-DevelopmentMethodology.tex b/Ch2-4-DevelopmentMethodology.tex index cadb0d8..78ecdb1 100644 --- a/Ch2-4-DevelopmentMethodology.tex +++ b/Ch2-4-DevelopmentMethodology.tex @@ -2,19 +2,19 @@ 软件开发方法与技术\index{软件开发方法与技术}是软件学科\index{软件学科}的核心关注点之一。从宏观上看,其目标一方面是在计算平台上给出满足用户需求的解决方案,另一方面是达到开发效率、质量、成本的最佳平衡。在通常的软件及信息技术体系中,软件开发包括了技术、管理、工具等多个方面:技术上包括软件分析、设计、构造、维护和质量保证,关注于如何完成具体的软件开发活动并产出相应的软件制品;管理上包括软件过程模型\index{软件过程模型}、开发团队组织和最佳实践,关注于软件开发活动的流程和协作管理以及包括人在内的各类资源的组织和运筹等;不论是技术还是管理方面,在解决大规模复杂软件开发问题时都离不开工具的支持和帮助。高效、高质量、低成本地开发和演化软件系统是软件开发方法和技术研究追求的总体目标,在这个总体目标指引下,在不断出现的、新的应用需求的牵引下,软件开发方法和技术研究不断面临新的挑战。 -在“软件定义一切”的时代背景下,尽管软件开发方法与技术的目标宏观上依然不变,但是软件的需求空间被进一步大幅度扩展,人机物融合的需求场景和运行环境更进一步增大了软件系统的规模和复杂性,导致软件开发和演化的成本随之急剧上升,从而产生了对软件自动化\index{软件自动化}方法与技术的迫切需求;另一方面,软件开发和演化\index{软件开发和演化}的外在条件随着需求和技术发展不断发生变化,新的问题不断涌现,不断扩展了软件自动化方法和技术的研究空间。 +在“软件定义一切”的时代背景下,尽管软件开发方法与技术的目标宏观上依然不变,但是软件的需求空间被进一步大幅度扩展,人机物融合的需求场景和运行环境更进一步增大了软件系统的规模和复杂性,导致软件开发和演化的成本随之急剧上升,从而产生了提高软件开发和演化自动化程度的迫切需求;另一方面,软件开发和演化\index{软件开发和演化}的外在条件随着需求和技术发展不断发生变化,新的问题不断涌现,不断扩展了软件自动化方法和技术的研究空间。 人是软件开发成败的决定因素,认知空间中人们长期的积累与计算平台的发展,使得软件开发的社会化和智能化成为必然方向,也为软件开发中人与计算/机器平台的新型关系的建立提出了挑战。网络化、数据化、可视化、虚拟化将改变人在软件开发中的工作方式、合作方式和组织方式,催生出软件开发的各种新方式,包括软件开发终端化和普及化、群智化开发\index{群智化开发}与生态化平台等等。建立新的开发方式以有效适应人机融合的软件生态发展,将是软件开发和平台的未来机遇。 -软件作为智力和人工制品,软件开发属于认知空间范畴,介于应用空间(问题空间)与平台空间(解空间)之间。应用空间和平台空间的泛在化和持续变化决定了未来软件形态的泛在性、适应性、演化性。复杂多样的不确定性成为软件的固有本质特征,控制而不是消除不确定性使得软件的持续演化和成长成为必然挑战。与传统软件开发相比较,软件的不确定性控制和处理难以在设计时完成,除了面向应用空间,软件开发的设计时与运行时融合要求认知空间与平台空间的协作乃至一体化成为一个趋势。近来的开发运维一体化\index{开发运维一体化}已经有了一个良好的开端。 +软件作为智力和人工制品,软件开发属于认知空间范畴,本质上是问题空间、解空间和平台空间之间的转换和映射。随着问题空间和平台空间的泛在化和持续变化,未来软件形态也呈现出泛在性、适应性、演化性、不确定性。特别是复杂多样的不确定性成为软件的固有本质特征,控制而不是消除不确定性使得软件的持续演化和成长成为必然挑战。与传统软件开发相比较,软件的不确定性控制和处理难以在设计时完成,除了面向应用空间,软件开发的设计时与运行时融合要求认知空间与平台空间的协作乃至一体化成为一个趋势。近来的开发运维一体化\index{开发运维一体化}已经有了一个良好的开端。 -面向动态变化场景的人机物融合复杂系统\index{人机物融合复杂系统},软件开发面临的首要挑战是融合人机物三元资源、以建模为核心的软件定义\index{软件定义}方法和技术。我们需要构建人机物三元资源及其行为的抽象、观察和度量的新模型和方法,研究基于软件定义方法的元级控制和数据赋能机理,使得软件开发方式(包括设计、构造和保证)从实体建模为主走向实体加链接,从分而治之走向群智聚合,从而有效驾驭各类软件复杂性。 +面向动态变化场景的人机物融合复杂系统\index{人机物融合复杂系统},软件开发面临的首要挑战是融合人机物三元资源、以建模为核心的软件定义\index{软件定义}方法和技术。我们需要构建人机物三元资源及其行为的抽象、观察和度量的新模型和方法,研究基于软件定义方法的元级控制和数据赋能机理,使得软件开发方式(包括设计、构造和保障)从实体建模为主走向实体加链接,从分而治之走向群智聚合,从而有效驾驭各类软件复杂性。 \section{重大挑战问题} 在人机物融合应用场景需求牵引下,软件开发方法和技术研究面临的重大挑战问题主要包括复杂场景分析与建模、群智开发、人机协作编程\index{人机协作编程}和开发运维一体化。 \subsection{复杂场景分析与建模} -人机物融合计算场景的需求在我们的日常生活中已经存在,大到智慧国家、智慧城市,小到网络家电、汽车引擎智能网络控制系统,对这类计算场景的分析和建模存在许多挑战,其中最重要的挑战包括如下四个方面。 +人机物融合计算场景的需求在我们的日常生活中已经存在,大到智慧国家、智慧城市,小到网络家电、汽车引擎智能网络控制系统,对这类计算场景的分析和建模存在许多挑战,其中主要的挑战包括如下几个方面。 \subsubsection{与日俱增的规模与复杂度} 首先,从已经出现的支撑人机物融合计算场景的系统来看,其系统的大小和复杂性显著增加。例如,现代汽车中基于软件的功能在不断地持续增加\cite{zhang2017software},比如,2007年经典高端轿车包含大约270个与驾驶员互动的软件实现的功能,而最新的高端轿车包含超过500个这样的功能。轿车软件的规模也在大幅增长。2007年高端轿车的二进制代码量约为66兆字节,而现在这类轿车则含超过1千兆字节的二进制代码。随着软件支持的功能的数量和规模的增加,复杂性也随之增加。这些基于软件的功能要求各个子系统,例如刹车系统、发动机管理系统、驾驶辅助系统等,具备更细粒度的功能,以及子系统之间密集的交互,因而整个系统的复杂性大大增加,对系统的分析和建模需要从方法和技术上得到全面提升。 @@ -37,6 +37,13 @@ 人机物融合计算场景下,软件系统分析和建模的困难还来自于当前的需求相关者(即领域专家,最终用户和客户)无法提供完整和正确的能力要求。许多创新应用,如微信、在线购物等一些受欢迎的应用程序,都是由技术的发展和产品设计师的创新思维驱动的,而不是最初的需求相关者所要求的。信息技术飞速发展的时代,领域专家和最终用户无法提出超出想象的技术发展,不能预测技术的发展趋势,如何在软件系统分析和建模方法中,支持创新需求的引入,或提供对创新需求的包容手段是一个重要的挑战。 +\subsubsection{系统内生安全性} +对人机物融合系统而言,安全和隐私保护是第一要务,首先不容置疑的是系统安全性,系统在和人和物理环境直接交互的过程,需要保护人生安全,需要保护其交互环境,不施加具有破坏性的操作,避免交互环境受到损失;其次,由于其直接和人打交道,采集和分享人的信息,使得系统的隐私保护成为计算系统需要强制执行的法律,欧盟、美国等都出台了个人隐私数据或网络隐私保护法,中国也出台了个人信息保护法。与开发功能性需求是申明系统要做什么不同,使人机物融合系统具有内生的安全性和遵循隐私保护法,其系统需求开发的难点和挑战是回答以下几个问题:如何避免在系统操作回路中/上的人的安全隐患?如何避免系统可能对交互环境造成的伤害/破坏?如何避免不在系统操作回路上的人的安全隐患?如何避免泄露不在系统操作回路上的人的隐私。 +\subsubsection{计算与控制的交互与融合} +人机物融合场景下,大量系统不再是单纯等待外界输入后做简单响应。在以轨道交通、航空航天、医疗卫生、工业控制等为代表的核心系统软件中,相关系统行为都包含了连续实时计算与离散决策控制之间的交互与融合。以列控系统为例,列车运行中相关运行参数物理量,如车速、位置、外界风速、轨道坡度等取值在连续变化。基于这些运行参数取值的实时监控与预测计算,列控系统会在各运行模式间切换,比如加速,减速等。然而列车不同的运行模式也会导致这些物理量变化规律发生改变。在这类情况下,系统的连续计算和离散控制两种行为相互依赖、相互影响、彼此互为依存、息息相关。因此,如何在开放环境下准确构建系统离散与连续交织行为模型成为重要挑战。 + + + \subsection{群智开发} 互联网\index{互联网}技术的发展,使得人类群体打破物理时空限制开展大规模协作成为可能。新型编程技术(包括新型高级编程语言、智能化编程工具和技术等)的出现则降低了编程开发的参与门槛。软件开发从一个纯粹的生产性活动演变为一个涉及到多种要素紧密关联的社会性活动;软件也从相对独立的产品演变为多种元素相互依赖、持续演化的生态。在软件生态系统中,作为软件开发活动的关键要素,“人”在其中发生了显著变化:参与者规模的变化-软件开发活动的参与者规模由过去的公司/组织内部封闭环境下的数百至数万人,演变为软件生态系统\index{软件生态系统}中开放环境下通过互联网联接的数万数十万人;参与者群体多样类型的变化-软件开发活动的参与者由过去的主要是开发者,演变为软件生态系统中开发者、用户、管理者、投资人等多种不同类型的群体深度参与,共同驱动软件生态系统的发展演化;参与者个体多重角色的变化-软件开发活动中参与个体的角色从单纯的软件开发者或使用者等单一角色,演变为软件生态系统的参与者和推动者等多重角色,每个参与个体都成为软件生态中的组成部分,与软件生态共同成长演化\cite{zhang2017software}。 @@ -82,10 +89,10 @@ DevOps 持续高效高质量的交付有赖于高度自动化支持工具的支 DevOps整合了开发团队与运维团队,使其成为一个整体,这使得团队的组织、文化和软件过程都与单纯的开发团队和运维团队有所不同。同时,团队的规模也不可避免的有所增加,降低了团队面对面沟通的效率。DevOps是受到敏捷软件开发的影响而产生的,天然带有敏捷基因并植根于精益思想。然而,敏捷方法的很多理念和实践并不能天然应用于DevOps。例如,常规敏捷方式鼓励着眼当前问题同时通过承担一定程度的技术负债来应对未来的多种可能变化。这种寻求局部最优解的思维方式并不利于打破各个部门之间的壁垒。又如,在敏捷宣言鼓励之下的“重代码轻文档”工作方式对于持续性的维持还是弊大于利,毕竟我们不会轻易终止一款软件系统。另一方面,随着开发和维护的软件系统越来越复杂,其规模也越来越大,在开发运维团队合并后,必然要求团队规模也相应扩大,团队之间的协作和交流也会更加复杂。敏捷社区提出了SAFe(Scaled Agile Framework)来支持更大规模的团队,目前已经列入DevOps相关内容。然而,也有很多人批评SAFe过于复杂,违背了敏捷的基本价值观。从这个意义上说,如何在大规模团队中实施DevOps仍将成为未来一段时间研究者和实践者需要解决的问题。 \section{主要研究内容} -面向高效、高质量、低成本开发和演化软件系统的总体目标,软件开发方法和技术的研究范围涵盖新型程序设计与软件方法学\index{软件方法学}、软件自动化技术、软件复用\index{软件复用}技术、软件自适应与生长\index{软件自适应与生长}技术、复杂软件分析与建模、智能软件开发方法、嵌入式软件\index{嵌入式软件}开发方法与技术、复杂系统需求分析方法与技术、\index{软件服务}化方法与技术等各个方面。结合应对以上重大挑战问题,主要研究内容将集中在人机物融合场景建模、系统自适应需求分析、系统内生安全规约获取、群智软件生态、群智开发方法、群智协同演化、群智软件支撑环境、面向机器编程的代码生成、面向人机协同的智能开发环境、开发过程建模与优化、软件系统运行数据管理、安全可信的开发运维一体化、开发运维一体化的组织与管理、微服务软件体系结构等。 +面向高效、高质量、低成本开发和演化软件系统的总体目标,软件开发方法和技术的研究范围涵盖新型程序设计与软件方法学\index{软件方法学}、软件自动化技术、软件复用\index{软件复用}技术、软件自适应与生长\index{软件自适应与生长}技术、复杂软件分析与建模、智能软件开发方法、嵌入式软件\index{嵌入式软件}开发方法与技术、复杂系统需求分析方法与技术、\index{软件服务化方法与技术}等各个方面。结合应对以上重大挑战问题,主要研究内容将集中在人机物融合场景建模、系统自适应需求分析、系统内生安全规约获取、群智软件生态、群智开发方法、群智协同演化、群智软件支撑环境、面向机器编程的代码生成、面向人机协同的智能开发环境、开发过程建模与优化、软件系统运行数据管理、安全可信的开发运维一体化、开发运维一体化的组织与管理、微服务软件体系结构等。 \subsection{人机物融合场景建模} -人机物融合的新型泛在系统,以实现人类社会、信息空间和物理世界的互联互通为目标。在这种应用场景中,计算资源高度泛化,系统能力拓展到包括连接、计算、控制、认知、协同和重构等在内的网络化、协同式和适应性的认知、计算和控制一体的综合能力范畴。需要研究人机物融合的计算环境的认知和建模,特别是对各种实现感知、计算、通信、执行、服务等能力的异构资源的认知的建模;系统研究交互环境的建模理论,包括交互环境静态属性特征和动态行为特征,以及行为约束等多个方面;需要对典型人机物融合场景下泛在应用的本质特征,分别予以有效的场景抽象,研究相应的软件定义方法,以凝练人机物融合应用场景的共性,更有效地管理资源,并适应动态多变的应用场景。 +人机物融合的新型泛在系统,以实现人类社会、信息空间和物理世界的互联互通为目标。在这种应用场景中,计算资源高度泛化,系统能力拓展到包括连接、计算、控制、认知、协同和重构等在内的网络化、协同式和适应性的认知、计算和控制一体的综合能力范畴。需要研究人机物融合的计算环境的认知和建模,特别是对各种实现感知、计算、通信、执行、服务等能力的异构资源的认知的建模;系统研究交互环境的建模理论,包括交互环境静态属性特征和动态行为特征,以及行为约束等多个方面;针对系统离散、连续行为交织,系统外部运行环境、内部协作关系随时间、任务变化进行实时演变的特性,研究相关复杂行为建模与刻画方法,从而对系统行为进行描述,为后续分析、测试、验证提供基础;需要对典型人机物融合场景下泛在应用的本质特征,分别予以有效的场景抽象,研究相应的软件定义方法,以凝练人机物融合应用场景的共性,更有效地管理资源,并适应动态多变的应用场景。 \subsection{系统自适应需求分析} 人机物融合应用场景下,需求以及交互环境的动态变化性和不确定性,使得系统的自适应性成为关键,软件系统的自适应性需求建模和管理成为热点研究课题,其中包括自适应需求的获取,自适应系统的建模,需求、系统模型和交互环境的在线检测和分析,系统能力在线规划和管理等。针对系统环境的开放性、动态变化性和不确定性等,需要对系统及其交互环境在建模和模型管理方面进行综合型研究,在系统环境建模方法,环境现象感知方法,环境事件推理技术,模型的追踪关系和基于追踪关系的协同演化策略,运行时目标驱动的在线优化和系统功能重配置方法,以及系统自适应性机制的度量和评估方法等方面进行深入研究。 diff --git a/Ch2-8-Quality&Security.tex b/Ch2-8-Quality&Security.tex index 28403e4..1b57b7c 100644 --- a/Ch2-8-Quality&Security.tex +++ b/Ch2-8-Quality&Security.tex @@ -1,54 +1,54 @@ % !TEX root = main.tex -软件学科是一门工程技术型学科,质量自从软件诞生之日起就是被关注的重点。软件质量\index{软件质量}和安全保障是通过相关技术和管理手段来检测、度量和评估软件制品符合预期的程度,并排除或容忍软件制品中不符合预期的因素,从而保障软件的实现和行为符合预期。经典的软件质量核心价值观强调“绝对正确”,涵盖了正确性、易用性、高效性、可靠性、鲁棒性、(易)理解性、维护性、复用性、移植性、测试性等一系列属性\cite{ISO9126},强调在客观证明基础之上形成对软件质量的客观认识。 +软件质量自从软件诞生之日起就是被关注的重点。软件质量\index{软件质量}和安全保障是通过相关技术和管理手段来检测、度量和评估软件制品符合预期的程度,并排除或容忍软件制品中不符合预期的因素,从而保障软件的实现和行为符合预期。经典的软件质量核心价值观强调“绝对正确”,涵盖了功能性、可靠性、易用性、效率、维护性和可移植性等一系列质量属性\cite{ISO9126},强调在客观证据基础之上形成对软件质量的客观认识。 -在“软件定义一切”的时代,一方面人机物融合应用场景使得软件的使能空间被进一步大幅度扩展,导致软件系统的规模和复杂性进一步增大,软件开发和演化的成本进一步上升;另一方面动态开放的运行环境使得安全性成为十分重要的质量属性,针对性的保障措施成为迫切需求;进一步,由于软件日益成为实现应用价值的核心载体,各类利益相关者的价值实现被纳入软件质量属性的范围,还需要考虑伦理、授权、法律等相关非技术因素。由于受到可投入成本的限制,人们越来越清楚地认识到在客观证明基础之上形成对软件质量的客观认识是现实达不到的理想目标,因而软件质量的核心价值观转变为强调“相对可信”,即在客观证据(包括部分客观证明)的基础上形成对软件质量的主观判断。 +在“软件定义一切”的时代,一方面人机物融合应用场景使得软件的使能空间被进一步大幅度扩展,导致软件系统的规模和复杂性进一步增大,软件开发和演化的成本进一步上升;另一方面动态开放的运行环境使得安全性成为十分重要的质量属性,针对性的保障措施成为迫切需求;进一步,由于软件日益成为实现应用价值的核心载体,各类利益相关者的价值实现被纳入软件质量属性的范围,还需要考虑伦理、授权、法律等相关非技术因素。由于受到可投入成本的限制,“绝对正确”这一理想目标在现实情况下难以达到,因而软件质量的核心价值观转变为强调“相对可信”,即在客观证据基础上形成对软件质量的主观判断。度量与评估软件符合预期的程度一直是软件质量保障的基础性挑战问题,随着软件质量的核心价值观从“绝对正确”转变为“相对可信”,该基础性挑战问题的空间被进一步拓展。 在建立价值观的基础上要进一步建立各类软件质量保障措施,也即围绕各类软件质量关注点提供解决问题的方法和技术。从系统观与生态观的角度看,软件质量的考虑涉及更宽广的范畴。例如,从系统工程的角度看,如何在经济可行条件约束下通过综合集成的方法,用可担负质量的部件实现高质量的系统。又如,如何认识在软件生态系统中质量的依赖与传播规律;考虑到软件生态中各类利益相关者的价值差异和冲突,软件及其服务的质量如何取舍权衡等等。以上内容相关的质量保障措施值得进一步研究,但由于篇幅有限,本章主要关注以下更加迫切、更具挑战性的软件质量与安全保障问题。 -随着软件质量的核心价值观从“绝对正确”转变为“相对可信”,度量与评估软件符合预期的程度成为软件质量保障的基础性挑战问题。随着人机物融合程度的加深,实时混成、云端融合、复杂异构、动态聚合、智能适应等非经典需求与应用场景层出不穷,软件系统设计、实现和运行过程中需要采用更具针对性的质量保障措施。大规模复杂系统的安全保障变得更重要但又更困难,迫切需要新的技术突破;确保物联网软件安全上升到了国家安全高度,亟需系统深入的研究工作。特别地,数据驱动的智能软件日益成为一类重要的软件形态,不同于传统软件,这类软件基于概率化的归纳推理来实现智能行为,对各类不确定性的驾驭是其内在的要求,如何有效评估和保障这类智能软件系统与服务的质量也是亟待研究的问题。 +在人机物融合计算环境下,实时混成、云端融合、复杂异构、动态聚合、智能适应等非经典需求与应用场景层出不穷,软件系统设计、实现和运行过程中需要采用更具针对性的质量保障措施;大规模复杂系统的安全保障变得更重要但又更困难,迫切需要新的技术突破;确保物联网环境下软件安全上升到了国家安全高度,亟需系统深入的研究工作;数据驱动的智能软件日益成为一类重要的软件形态,不同于传统软件,这类软件基于概率化的归纳推理来实现智能行为,对各类不确定性的驾驭是其内在的要求,如何有效评估和保障这类智能化软件系统与服务的质量也是亟待研究的问题。 \section{重大挑战问题} -软件质量与安全保障面临的重大挑战问题主要集中以下几个方面:一是在人工智能时代,数据驱动的智能软件系统高度复杂的数据依赖、软件行为不确定性、计算结果鲁棒性方面,对软件质量提出了新的挑战;二是针对人机物融合场景下的规模化、定义化的软件系统,如何应对传统静态、封闭、开发阶段的可信度量、评估和增强带来的挑战,以支持软件系统的动态、开放、演化;三是如何针对大规模复杂软件系统和无处不在的物联网软件,有效检测漏洞或恶意软件等安全缺陷,并通过构建准确、高效的缺陷修复技术及漏洞防御机制保障安全。 +在人机物融合的计算场景下,软件质量与安全保障面临的重大挑战问题主要集中以下几个方面:一是在人工智能时代,数据驱动的智能软件系统高度复杂的数据依赖、软件行为不确定性、计算结果鲁棒性方面,对软件质量提出了新的挑战;二是针对人机物融合场景下的大规模软件系统,拓展传统静态、封闭环境下的正确性、可靠性质量保障技术,支持动态、开放、演化环境下的可信质量保障;三是针对基础设施化软件系统,有效检测漏洞或恶意软件等安全缺陷,并通过构建准确、高效的缺陷修复技术及漏洞防御机制保障安全。 \subsection{数据驱动的智能软件系统质量保障} -越来越多的软件系统采用人工智能技术,基于大规模数据分析进行计算、推理及决策,即综合利用统计分析算法、数据处理、并行计算等技术,从海量、多态的数据中,挖掘知识、实现数据价值的最大化。与传统软件相比,数据驱动的智能软件系统在高度复杂的数据依赖、软件行为不确定性、计算结果鲁棒性方面,对质量保证研究提出了新的挑战\cite{sculley2015hidden}。随着数据驱动的智能软件系统越来越广泛地应用在工业生产、社会生活、金融经济、行政管理的方方面面,其可靠性、鲁棒性、安全性等问题如不能有效地加以防范,将造成重大损失甚至灾难性后果。 +越来越多的软件系统采用人工智能技术,基于大规模数据分析进行计算、推理及决策,即综合利用统计分析算法、数据处理、并行计算等技术,从海量、多态的数据中,挖掘知识、实现数据价值的最大化。与传统软件相比,智能算法模型通常构建一些复杂变换(往往是高维非线性)实现智能处理,这种复杂运算给模型内部变换边界带来特定方向的不稳定性。智能软件系统最终得依赖外部物理设备运行,系统运行过程还受环境的精度等方面的资源约束。因此,数据驱动的智能软件系统在高度复杂的数据依赖、软件行为不确定性、计算结果鲁棒性方面,对质量保证研究提出了新的挑战\cite{sculley2015hidden}。随着数据驱动的智能软件系统越来越广泛地应用在工业生产、社会生活、金融经济、行政管理的方方面面,其可靠性、鲁棒性、安全性等方面问题如不能有效地加以防范,将造成重大损失甚至灾难性后果。 -(1) 数据质量\index{数据质量}和模型质量\index{模型质量}成为瓶颈。数据驱动的智能软件系统中,往往以数据为核心,围绕数据的处理、分析、挖掘、学习等各种任务设计算法,被称为“面向数据编程”的模式。因此,与传统软件侧重“逻辑正确”不同,数据和模型的质量是数据驱动的智能软件系统可信性的基础和关键。一方面,数据的质量难以保证,噪音会严重干扰模型的有效性;另一方面,鉴于认知系统和认知过程的复杂性,模型有可能不完整、不精确、模型假设存在偏差,算法应具备一定的鲁棒性,不受模型中噪音的干扰,给出可信的决策结果,在数据分布特征等方面,训练数据集与实际应用或是预期的数据集可能存在不一致性,即数据集偏差、歧视、或是样本迁移问题,直接影响模型的可靠性。数据和模型的错误和失效,将造成智能算法判断和决策错误、软件失效。 +(1) 数据质量\index{数据质量}和模型质量\index{模型质量}成为瓶颈。数据驱动的智能软件系统中,往往以数据为核心,围绕数据的处理、分析、挖掘、学习等各种任务设计算法,被称为“面向数据编程”的模式。因此,与传统软件侧重“逻辑正确”不同,数据和模型的质量是数据驱动的智能软件系统可信性的基础和关键。一方面,数据的质量难以保证,与传统关系型数据相比,大数据具有数据量大、实时分析要求高、存在多种异构数据格式、噪音高、关键数据元素持续演变等特点,数据质量是大数据分析正确和决策有效的根本保证,数据质量管理更加具有挑战性和迫切性;另一方面,鉴于认知系统和认知过程的复杂性,模型有可能不完整、不精确、模型假设存在偏差,噪音会严重干扰模型的有效性。算法需具备一定的鲁棒性,不受模型中噪音的干扰,给出可信的决策结果,在数据分布特征等方面,训练数据集与实际应用或是预期的数据集可能存在不一致性,即数据集偏差、歧视、或是样本迁移问题,直接影响模型的可靠性。数据和模型的错误和失效,将造成智能算法判断和决策错误、软件失效。 (2) 数据依赖严重且依赖关系复杂、多变,软件行为难以预测。数据驱动的智能软件系统数据、模型之间存在着错综复杂的依赖关系,这些依赖关系可能是隐形的、间接的、动态多变的。数据、模型依赖及其与代码之间的相互关联难以分析和维护,错误难以定位和隔离。相比于代码分析,数据、模型和代码之间依赖和追踪关系的研究还非常有限,尚缺乏有效的技术和工具。由于程序逻辑高度依赖于数据,并且算法对数据、模型的变化敏感,所以基于概率分析和动态学习的决策过程,使得软件行为具有很大的不确定性。 -(3) 智能系统需具备运行时故障诊断、预测及自愈的能力。智能系统常常需要融合多种硬件设施、软件组件,实时完成大规模数据的采集、综合、分析等处理,实现智能感知和智能决策。系统应用场景多样,功能组合繁多,输入空间难以穷尽,条件组合数量巨大;在实际运行中,软硬件环境等因素复杂多变,各种情况叠加在一起综合作用。离线测试阶段难以覆盖各种可能的场景。另一方面,系统常需要集成大量第三方的数据和软件,如深度学习与机器学习框架。在实际应用中,第三方服务的稳定性、可靠性、安全性以及不同来源的服务之间的兼容性、互操作性等问题,都给系统集成带来了巨大的挑战。因此,运行过程中及时发现和诊断乃至预测系统故障、及时修复故障或通过容错等机制保持系统正常运行,对于保证业务安全和系统高可用性至关重要。 +(3) 智能系统需具备运行时故障诊断、预测及自愈的能力。智能系统常常需要融合多种硬件设施、软件构件,实时完成大规模数据的采集、综合、分析等处理,实现智能感知和智能决策。系统应用场景多样,功能组合繁多,输入空间难以穷尽,条件组合数量巨大;在实际运行中,软硬件环境等因素复杂多变,各种情况叠加在一起综合作用。离线测试阶段难以覆盖各种可能的场景。另一方面,系统常需要集成大量第三方的数据和软件,如深度学习与机器学习框架。在实际应用中,第三方服务的稳定性、可靠性、安全性以及不同来源的服务之间的兼容性、互操作性等问题,都给系统集成带来了巨大的挑战。因此,运行过程中及时发现和诊断乃至预测系统故障、及时修复故障或通过容错等机制保持系统正常运行,对于保证业务安全和系统高可用性至关重要。 \subsection{人机物融合场景下的软件系统可信增强} -与传统系统不同,人机物融合场景下的软件系统将计算部件与物理环境进行一体化整合,将大量独立的异构设备(及其数据)进行智能化的连接,并针对当前系统、场景等的实时变化根据任务需求对计算逻辑,乃至软件体系结构进行自动调整与配置。这样,计算设备可以更精确的获取外界信息并做出针对性、智能化的实时反映,从而提高计算的性能与质量,给出及时、精确并且安全可靠的服务,实现物理世界与信息系统的整合统一\cite{lee2006cyber}。显然,列车、电网、航天等典型安全攸关系统均具有鲜明的人机物融合特质。如何对相关系统的可信性进行保障对相关系统的正确运行具有重要意义。然而,在人机物融合的场景下,相关异构、组合、动态等特性也给系统行为可信保障带来了新的挑战与需求。 +与传统系统不同,人机物融合场景下的软件系统将计算部件与物理环境进行一体化整合,将大量独立的异构设备(及其数据)进行智能化的连接,并针对当前系统、场景等的实时变化根据任务需求对计算逻辑,乃至软件体系结构进行自动调整与配置。这样,计算设备可以更精确地获取外界信息并做出针对性、智能化的实时反映,从而提高计算的性能与质量,给出及时、精确并且安全可靠的服务,实现物理世界与信息系统的整合统一\cite{lee2006cyber}。显然,列车、电网、航天等典型安全攸关系统均具有鲜明的人机物融合特质。如何对相关系统的可信性进行保障对相关系统的正确运行具有重要意义。然而,在人机物融合的场景下,相关异构、组合、动态等特性也给系统行为可信保障带来了新的挑战与需求。 -(1) 人机物融合场景下组件间将进行频繁的通信、合作与协同,去完成复杂的任务。因此,相关系统是一个典型的组合系统。长期以来,对大规模组合系统进行分析、测试、验证一直是相关领域难点所在。此外,由于在人机物融合场景下不确定性、概率性行为、实时连续行为越来越常见。如何在建模阶段对随机、不确定、连续行为进行描述,并在分析中对相关行为进行研究,也是对相关复杂不确定系统进行可信增强的一个重要挑战。 +(1) 人机物融合场景下构件间将进行频繁的通信、合作与协同,去完成复杂的任务。因此,相关系统是一个典型的组合系统。长期以来,对大规模组合系统进行分析、测试、验证一直是相关领域难点所在。此外,由于在人机物融合场景下不确定性、概率性行为、实时连续行为越来越常见。如何在建模阶段对随机、不确定、连续行为进行描述,并在分析中对相关行为进行研究,也是对相关复杂不确定系统进行可信增强的一个重要挑战。 -(2) 相较于一般静态可预测系统,人机物融合场景下系统行为更加强调于实时捕获、采集环境或者其他协作成员的运行时参数,从而进行自身策略,乃至组件间拓扑结构的智能调整。在开放环境下,相关外界参数取值随时间变化,难以准确离线刻画。因此,从传统的静态测试、分析、验证等角度出发,难以遍历枚举相关开放动态行为中可能出现的所有场景,无法给出完整状态空间描述与安全保障。在此情况下,如何从运行时监控角度应对开放环境带来的连续动态行为是相关领域重要关注问题。 +(2) 相较于一般静态可预测系统,人机物融合场景下系统行为更加强调于实时捕获、采集环境或者其他协作成员的运行时参数,从而进行自身策略,乃至构件间拓扑结构的智能调整。在开放环境下,相关外界参数取值随时间变化,难以准确离线刻画。因此,从传统的静态测试、分析、验证等角度出发,难以遍历枚举相关开放动态行为中可能出现的所有场景,无法给出完整状态空间描述与安全保障。在此情况下,如何从运行时监控角度应对开放环境带来的连续动态行为是相关领域重要关注问题。 -(3) 从系统观来认识人机物融合系统,我们会发现在人机物融合场景下,相关系统的多组件行为呈现出典型的分布式、异构式特征。在组件内部行为难以描述,组件间相互规格和工作方式差异巨大,难以整体把控的情况下,如何从体系结构角度对系统可信增强进行考虑,设计面向容错的新型协同设计方式及异构系统体系结构,为相关软件设计提出了新的挑战。 +(3) 从系统观来认识人机物融合系统,我们会发现在人机物融合场景下,相关系统的多构件行为呈现出典型的分布式、异构式特征。在构件内部行为难以描述,构件间相互规格和工作方式差异巨大,难以整体把控的情况下,如何从体系结构角度对系统可信增强进行考虑,设计面向容错的新型协同设计方式及异构系统体系结构,为相关软件设计提出了新的挑战。 \subsection{大规模复杂系统安全缺陷检测} 现代软件系统因需求的快速迭代而增量构建、经过频繁重构和演化、规模庞大、复杂度高,都是典型的大规模复杂系统。他们在企业应用、城市交通、航空航天、智能电网、医疗、指挥控制等重要领域已经成为了不可或缺的一部分,但其实现中存在漏洞或恶意代码等安全缺陷,是导致大规模复杂系统安全性问题的主要根源;而要想保障其安全,需要即时检测并排除安全缺陷。但随着软件的规模和复杂性的不断增大,现有软件安全保障技术与工具的有效性和可扩展性受到了严重制约,软件安全缺陷检测和排除尚未改变以人为中心、侧重经验的实践现状,尚未能形成自动化、客观化的解决方案\cite{cousot2018program, zhang2019recent}。综上所述,软件安全保障所面临的新挑战主要包括: -(1) 安全缺陷统一建模。安全缺陷中,漏洞属于实现中存在遗漏,而恶意代码属于多余的实现。经过几十年的发展,已经公开了大量的安全缺陷,软件安全缺陷具有程序设计语言依赖、系统依赖等特征,有时还依赖于特定的硬件平台与体系结构,安全缺陷形态、机理各异。针对特定的安全缺陷,研究相应的检测方法进行精准制约化检测,虽在特定场景下可行,但已不能满足实际的安全需求。面临的挑战主要在于如何统一表达安全缺陷的语法、语义特征、触发规则、行为特征等问题,使得能够通过相关检测算法高效、精准识别安全缺陷;在此基础上,解决安全缺陷检测方法的平台化、引擎化、定制化,以便检测已有的重要安全缺陷,并具备扩展能力,检测新的安全缺陷。 +(1) 安全缺陷统一建模。安全缺陷中,漏洞属于实现中存在遗漏,而恶意代码属于非预期的实现,安全缺陷一旦被攻击或利用,都能对软件系统带来危害。经过几十年的发展,已经公开了大量的安全缺陷,软件安全缺陷具有程序设计语言依赖、系统依赖等特征,有时还依赖于特定的硬件平台与体系结构,安全缺陷形态、机理各异。针对特定的安全缺陷,研究相应的检测方法进行精准制约化检测,虽在特定场景下可行,但已不能满足实际的安全需求。面临的挑战主要在于如何统一表达安全缺陷的语法、语义特征、触发规则、行为特征等问题,使得能够通过相关检测算法高效、精准识别安全缺陷;在此基础上,提升安全缺陷检测方法的可扩展能力,以便检测已有的重要安全缺陷,还能检测新的安全缺陷。 (2) 大规模复杂系统安全缺陷检测方法的效率和资源有效协同。根据已公开的安全缺陷特征,通过静态分析、测试和验证等方法检测潜在安全缺陷,是目前被普遍采用的技术。但随着软件系统规模越来越大、系统功能日趋复杂,公开安全缺陷的数量也急剧上升,安全缺陷检测方法的精准性和规模化能力是难点问题。面临的挑战主要包括:1)需要在处理大规模程序时平衡精度和可扩展性。高精度的检测方法需要更多的资源开销,并且受到程序规模的制约,而为了适应大规模程序的安全缺陷检测,采用保守的策略,会导致大量的误报,且需要人工进一步确认,从而降低了检测方法的可用性; 2)需要平衡协同计算资源的消耗与检测效率。安全缺陷检测方法可以提升精度但增加复杂度且需要更高的计算资源,可以利用大数据处理、硬件加速、并行化等技术优化检测算法,依据特定的规则将大规模代码进行切分,将检测任务并行化处理、并将其分配到不同的计算资源上完成检测工作。 (3) 安全缺陷检测过程中大规模状态空间的充分探索。在安全缺陷检测过程,需要尽快探索到目标程序的状态空间,以检测潜在的安全缺陷,由于复杂软件系统的程序状态空间十分庞大,如何有效地探索程序的状态空间是需要解决的关键问题,具体包括以下几个方面:1)程序分支和循环结构的深度覆盖:通过探索程序状态空间过程中历史覆盖、缺陷检测、冗余等信息,有效地制导探索过程,尽早覆盖关键的程序状态空间;2)多维信息制导的模糊测试输入生成:利用程序结构、安全缺陷特征、执行结果反馈等信息,有效地制导模糊测试,使其能够产生覆盖多样性目标的输入空间,从而快速覆盖程序状态空间,到达能够触发安全缺陷的程序行为路径。 -(4) 历史漏洞机理和安全专家经验难以复用。在现有安全缺陷检测的分析和测试过程中,多个环节存在不确定性,仍需要安全专家人工进行决策。这些安全专家经验以及历史漏洞的机理信息对后续漏洞分析、检测、利用和修复工作能够起到很大作用。但遗憾的是,这些经验在现阶段难以实现高准确度的复用。然而,机器学习、深度学习等人工智能技术现已在文本翻译、图像处理、语音识别等方面得到广泛应用,使其具备人的智能而实现自主决策。因此,如何在安全缺陷检测和预警的各个环节中引入智能化技术,是现阶段所面临的重要挑战,具体包括以下两个方面:1)安全缺陷检测历史信息的智能化:将安全缺陷检测历史信息及其统计特征知识化,以便在安全缺陷检测过程中进行智能化预测;将深度学习技术应用到安全缺陷检测样本代码相似度映射中以便实现同源安全缺陷检测和挖掘的智能化,应用到输入域、程序结构的映射中实现模糊测试中输入生成的智能化;2)安全专家经验的知识化和智能化利用:分析安全缺陷检测过程中的专家经验,进而抽象其为安全缺陷检测的启发式规则,以便在安全缺陷检测过程中根据自动搜索经验知识空间实现安全缺陷检测的智能化。 +(4) 历史漏洞机理和安全专家经验难以复用。在现有安全缺陷检测的分析和测试过程中,多个环节存在不确定性,仍需要安全专家人工进行决策。这些安全专家经验以及历史漏洞的机理信息对后续漏洞分析、检测、利用和修复工作能够起到很大作用。但遗憾的是,这些经验在现阶段难以实现高准确度的复用。然而,人工智能技术现已在文本翻译、图像处理、语音识别等方面得到广泛应用,使其具备人的智能而实现自主决策。因此,如何在安全缺陷检测和预警的各个环节中引入智能化技术,是现阶段所面临的重要挑战,具体包括以下两个方面:1)安全缺陷检测历史信息的智能化:将安全缺陷检测历史信息及其统计特征知识化,以便在安全缺陷检测过程中进行智能化预测;将深度学习技术应用到安全缺陷检测样本代码相似度映射中以便实现同源安全缺陷检测和挖掘的智能化,应用到输入域、程序结构的映射中实现模糊测试中输入生成的智能化;2)安全专家经验的知识化和智能化利用:分析安全缺陷检测过程中的专家经验,进而抽象其为安全缺陷检测的启发式规则,以便在安全缺陷检测过程中根据自动搜索经验知识空间实现安全缺陷检测的智能化。 (5) 面向安全保障的缺陷自动修复与验证。及时修复软件中存在的安全缺陷,是保障软件安全的主要手段,现阶段主要依靠人工修复软件安全缺陷需要花费大量的时间精力阅读理解程序代码、定位安全缺陷并修复,非常耗时耗力。面临的挑战主要在于:1)如何针对安全缺陷实现自动修复。基于遗传算法、程序搜索、程序合成等手段的软件缺陷的自动修复方法面临在实际系统中应用的可扩展性、可用性等方面的挑战。2)如何自动验证修复。目前存在一些修复方法在某些实验途径上可以证实有效性,但缺少理论基础,无法保障其完备性,需要有手段保证安全缺陷修复措施符合预期。 -\subsection{物联网软件安全保障} +\subsection{物联网环境下基础设施类软件安全保障} -物联网是移动互联网\index{移动互联网}、云计算\index{云计算}、大数据技术和人工智能等新一代信息技术,在人类社会的具体应用领域中,通过人机物融合实现计算、信息、通讯、控制等任务的一体化的产物。物联网软件是其核心使能组成部分,也是软件产业的一个新兴领域。物联网高速发展的同时,也带来新的问题,特别是物理设备实现移动互联后,导致所有物联网终端设备直接暴露在互联网上、处于不安全状态,使得设备自身安全、其拥有和传输的数据的机密性、完整性和可获得性,都面临安全挑战。任一物联网终端软件一旦遭受攻击,将会导致软件崩溃、设备失效、威胁用户隐私、冲击关键信息基础设施等安全事故,对整个物联网系统造成严重的破坏性\cite{ammar2018internet, brumley2008automatic}。但现阶段,全面保障物联网软件与系统安全,需要检测物联网软件的所有潜在安全薄弱环节,实施有针对性的保障措施。但由于物联网软件的复杂性、异构性、人机物融合等特性,仍然需要重点解决如下重大挑战问题: +物联网作为新一代信息技术,通过软件定义、人机物融合实现计算、信息、通讯、控制等任务的一体化,软件是其核心使能、基础设施类组成部分。物联网高速发展的同时,也带来新的问题,特别是物理设备实现移动互联后,导致所有物联网终端设备直接暴露在互联网上、处于不安全状态,使得设备自身安全、其拥有和传输的数据的机密性、完整性和可获得性,都面临安全挑战。任一物联网终端软件一旦遭受攻击,将会导致软件崩溃、设备失效、威胁用户隐私、冲击关键信息基础设施等安全事故,对整个物联网系统造成严重的破坏性\cite{ammar2018internet, brumley2008automatic}。但现阶段,全面保障物联网软件与系统安全,需要检测物联网软件的所有潜在安全薄弱环节,实施有针对性的保障措施。但由于物联网软件的复杂性、异构性、人机物融合等特性,仍然需要重点解决如下重大挑战问题: (1) 面向复杂异构物联网终端控制软件的安全缺陷检测。物联网系统的使能部件是软件,而这类驱动物联网系统工作的核心软件,如果存在安全缺陷,包括漏洞、恶意软件,容易被攻击利用,在安全关键场景下会带来严重的后果,如何能够及时检测这类安全漏洞是关注的焦点。在复杂物联网系统中,计算、通信和控制设备由于其各自所执行的任务不同,往往由完全不同的软硬件构成,同时不同设备间的相互协作关系也由于系统的庞大而变得十分复杂,有时还可能存在动态变化,这导致对复杂物联网系统中异构的终端设备控制软件进行安全性检测变得异常困难。如何改进现有的静态分析与动态测试技术以适应物联网软件依赖的芯片、硬件外设、操作系统、指令集、外部库、交互接口、外部输入等异构性,是面向复杂异构物联网终端软件进行安全缺陷检测亟需解决的关键问题。 -(2) 面向完整物联网软件系统的模糊测试\index{模糊测试}。物联网边界模糊、设备异构,物联网软件实现了控制、计算与通信的集成,使其在处理能力不断强大的同时,内部结构也变得愈加庞杂且与外部世界的交互变得愈加频繁,而现有的模糊测试方法主要针对物联网软件系统自身故障进行安全检测,面临的挑战在于如何针对物联网系统与环境,探索使用基于人工智能技术、深度学习方法,构建智能化模糊测试方法,将物联网状态空间中搜索安全缺陷的问题转化为目标制导模糊测试与优化问题。 +(2) 面向完整物联网软件系统的模糊测试\index{模糊测试}。物联网边界模糊、设备异构,物联网软件实现了控制、计算与通信的集成,使其在处理能力不断强大的同时,内部结构也变得愈加庞杂且与外部世界的交互变得愈加频繁,而现有的模糊测试方法主要针对物联网软件系统自身故障进行安全检测,面临的挑战在于如何针对物联网系统与环境,探索使用基于人工智能技术,构建智能化模糊测试方法,将物联网状态空间中搜索安全缺陷的问题转化为目标制导模糊测试与优化问题。 (3) 面向动态安全检测的物联网软件仿真\index{软件仿真}与虚拟化技术。现有物联网软件测试需要互联网环境支撑、动态执行设备,并依据获取的运行时反馈信息进行分析,使得运行时安全检测面临驱动设备运行困难、捕获设备反馈困难、识别安全缺陷困难等问题,具体包括:1)物联网软件仿真技术。由于物联网软件依赖的终端硬件、体系结构、指令集、部署配置的多样性,如何在支持相应固件体系结构、指令集的模拟器的基础上构建通用仿真执行支撑环境;如何针对基于特定外设,基于适配接口构建物理设备运行驱动环境,从而实现能对典型设备进行运行驱动的支撑;如何利用通用仿真环境和物理环境的支撑,捕获运行时的物理设备的状态、仿真环境下覆盖等反馈信息,便于安全缺陷检测过程。 2)物联网系统环境建模与虚拟化技术,物联网软件需要通过外设、互联网接口与外界交互,如何基于各类网络协议,对多类交互输入接口进行虚拟化和数字化的基础上统一建模,对物联网运行依赖的系统软件平台进行虚拟化建模与支撑。 @@ -64,24 +64,25 @@ \end{figure*} \subsection{软件预期的外延扩展和符合性评估} -由于软件在社会生活中的作用发生根本性变化,作为软件质量与安全保障的依据,软件预期不能局限于传统的用户需求和领域标准,需要分析国际、国家软件质量和安全相关的标准,针对软件体现的人类价值观,研究软件价值要素和反映软件价值要素的软件质量属性,在此基础上研究新型软件质量和安全模型,制定或更新基于软件价值的质量、安全和可信标准;研究软件价值的度量与评估,在此基础上研究质量评估、安全评估、可信评估、标准符合性评估手段;还需要考虑公开缺陷/漏洞库/恶意软件库、软件伦理\index{软件伦理}、软件公平性\index{软件公平性}、软件授权\index{软件授权}、软件立法等社会生活中的非技术因素,基于ACM/IEEE软件工程职业伦理规范,研究适合我国国情的软件从业人员的职业伦理规范,基于在国家法律法规及重要领域软件应用,研究特定领域软件立法;基于GPL、APL等国际通行的开源软件授权规定,研究适合我国软件产业发展状况的授权法则,在此基础上,需要研究相应的标准、伦理、授权法则、法律等符合性检测、度量和评估技术。 +由于软件在社会生活中的作用发生根本性变化,作为软件质量与安全保障的依据,软件预期不能局限于传统的用户需求和领域标准,需要分析国际、国家软件质量和安全相关的标准,针对软件体现的人类价值观,研究软件价值要素和反映软件价值要素的软件质量属性,在此基础上研究新型软件质量和安全模型,制定或更新基于软件价值的质量、安全和可信标准;研究软件价值的度量与评估,在此基础上研究质量评估、安全评估、可信评估、标准符合性评估手段;还需要考虑公开缺陷/漏洞库/恶意软件库、软件伦理\index{软件伦理}、软件公平性\index{软件公平性}、软件授权\index{软件授权}、软件立法等社会生活中的非技术因素,基于ACM/IEEE软件工程职业伦理规范,研究适合软件从业人员的职业伦理规范,基于法律法规及重要领域软件应用,研究特定领域软件立法;基于GPL、APL等国际通行的开源软件授权规定,研究适合未来软件产业发展状况的授权法则,在此基础上,需要研究相应的标准、伦理、授权法则、法律等符合性检测、度量和评估技术。 \subsection{开放空间下的缺陷分析与漏洞挖掘技术} -由于软件自身的发展、开源软件的大量使用,软件系统的规模和复杂度大幅度提升,运行软件的平台不断变迁、软件自身的形态不断变化,而且,互联网和移动互联网使得运行在封闭空间的软件系统暴露到开放空间,面向缺陷检测,需要研究分析、测试、验证、仿真、监控、审查等检测技术的能力提升和可扩展性途径。为提升大规模软件缺陷检测的精度,需要考虑研究采用符号执行技术、抽象解释技术等,提升缺陷检测的精度以减少误报或漏报;针对新型软件方法学、新的软件形态,需要基于形式化方法、模型驱动方法,研究相应的缺陷检测、修复和容错方法;需要研究如何利用人工智能技术、虚拟化技术、大数据处理技术、并行化技术等支撑技术,利用数据、硬件等资源,提升和优化软件质量和安全保障技术。 +面向开放空间下,大规模、复杂软件系统的缺陷检测,需要研究提升现有软件分析、测试、验证、仿真、监控、审查等检测技术的精度、效率和可扩展性。需要考虑研究采用符号执行技术、抽象解释技术等,提升缺陷检测的精度以减少误报或漏报;针对新型软件方法学、新的软件形态,需要基于形式化方法、模型驱动方法,研究相应的缺陷检测、修复和容错方法;需要研究如何利用人工智能技术、虚拟化技术、大数据处理技术、并行化技术等支撑技术,利用数据、硬件等资源,提升和优化软件质量和安全保障技术的效率。 针对基于开源软件和代码托管平台的复杂、开放、规模大和分布式软件生态系统,充分利用软件生态系统中多种形态的数据(如代码、代码提交日志、程序频谱、文档、历史缺陷数据和开发者数据等),多种形态数据的关联和影响、项目间的依赖关系和数据流动,研究跨项目缺陷检测。 \subsection{系统动态行为监控与容错} 针对系统动态行为,以监控属性和监控设计模型为基础,对复杂状态空间进行快速、准确的计算和分析,结合运行时验证、故障诊断与隔离等技术,研究相关系统行为的实时、高效、主动监控方法。另一方面研究行为预测与控制生成技术,基于运行状态对系统后续状态空间进行预测,研究针对潜在故障的容错方法与技术,在可能发生故障前,进行实时控制生成,对系统运行进行干涉,以避免故障的发生,确保系统的行为符合预期。 -\subsection{数据治理技术} +\subsection{数据及智能模型的质量分析与评估} -与传统关系型数据相比,大数据具有数据量大、实时分析要求高、存在多种异构数据格式、噪音高、关键数据元素持续演变等特点,数据质量是大数据分析正确和决策有效的根本保证,数据质量管理更加具有挑战性和迫切性。因而,需要研究数据治理技术,形成高效的数据管理工具,保证数据在全生命周期内正确、规范、安全、符合系统要求,有助于高质量的知识挖掘和利用。 +在数据质量保障方面,主要研究(1)数据质量模型及度量方法如准确性、规范性、完整性、一致性、时效性等;(2)以高质量的知识挖掘和利用为目标,研究数据质量的改进和优化方法与技术;(3)研究在数据采集、分析、利用、演化的生命周期过程中,持续的质量监控和管理方法与技术,形成高效的数据管理工具。。 +在智能模型的质量保障方面,主要研究(1)有效的监测体系以及检测方法、技术与工具,能及时、有效地发现数据集偏差、歧视及样本迁移等问题;(2)针对数据集偏差、歧视及样本迁移等问题,高效鲁棒的模型及算法设计;(3)智能系统的鲁棒性、安全性、稳定性分析,有效识别和评估智能应用中的风险。 -\subsection{智能模型的质量与安全保障} +\subsection{智能系统测试} -针对数据集偏差、歧视及样本迁移等问题,一方面需要提高机器学习算法设计的鲁棒性;另一方面更需要在系统层面上构建一套监测体系来时刻发现数据偏差、歧视和样本迁移问题。在构建这套检测体系时,需要考虑两个维度,一是需要保证检测的高效性和及时性;二是需要保证检测的有效性,要能很好的度量数据分布。分析智能学习算法及其开发框架设计,检测鲁棒性、安全性、稳定性等各方面问题,并评估其在智能应用中的风险。探索有效的智能软件测试和质量评估方法。当前对于智能软件的质量评估主要是机器学习算法精度的度量标准,评估并引导智能软件在人工标注的数据集上得到较好的结果,但是却无法评估智能软件在面对恶意攻击的稳定性。 +智能系统测试在深入分析智能软件系统的故障模型、缺陷触发和传播机理的基础上,从数据驱动、复杂场景建模、人机物复杂运行环境模拟等几个方面开展相关研究。研究数据分布多样性、数据语义一致性、数据边界稳定性、数据精度适应性等特征数据测试;研究分布式、高并发、多种事件触发机制、复杂规则执行等特征场景测试;研究开放环境、动态交互协同、高度不确定性行为为典型特征的复杂环境测试;研究智能系统应用场景模拟、故障注入、数据及用例的基准测试集等测试工具及测试平台的构建。 \subsection{安全缺陷检测、定位、修复和预警} @@ -89,9 +90,9 @@ 分析漏洞成因,基于人工进行漏洞修复经验和知识,研究漏洞代码的自动化定位、漏洞代码上下文智能切片和基于上下文的代码逻辑修正等技术,结合智能化方法,构建智能化漏洞修复技术,保障漏洞修复的准确性和及时性。 基于恶意代码的静态结构和动态行为特征及其演化,通过在静态分析中引入人工智能技术,模拟安全专家“手工”检测和识别恶意代码的流程,构建恶意特征集作为训练集,训练智能化恶意代码检测模型,从而快速、准确地实现对恶意特征的识别和判断、对恶意行为的自动化验证。 -\subsection{物联网软件的测试技术} +\subsection{物联网环境下的测试技术} -物联网软件存在的安全缺陷可能存在潜在的风险,其自身结构特性和环境依赖给软件测试带来新的问题。需要研究物联网软件建模、模型驱动测试与验证方法;研究针对物联网软件的静态分析和符号执行技术,支持典型安全缺陷的检测;研究面向物联网的智能模糊测试技术,用物联网软件结构、行为模型有效制导模糊测试,生成能够覆盖物联网软件输入域、结构和行为场景的测试输入,利用机器学习、深度学习等人工智能技术,基于对物联网软件结构与行为、物联网软件安全缺陷、模糊测试历史等知识和经验的学习,构建并训练映射模型,预测输入域与状态空间区域的映射关系,通过使用遗传算法、人为指定漏洞关联重点区域,优化模糊测试制导算法,避免无效、冗余的测试用例生成,在资源有限的情况下充分有效地遍历重要的状态空间尽早发现漏洞。 +物联网环境下软件存在的安全缺陷可能存在潜在的风险,其自身结构特性和环境依赖给软件测试带来新的问题。需要研究软件建模、模型驱动测试与验证方法;研究针对软件的静态分析和符号执行技术,支持典型安全缺陷的检测检测;研究面向物联网环境的智能模糊测试技术,用软件结构、行为模型有效制导模糊测试,生成能够覆盖软件的输入域、结构和行为场景的测试输入,利用人工智能技术,基于对软件结构与行为、软件安全缺陷、模糊测试历史等知识和经验的学习,构建并训练映射模型,预测输入域与状态空间区域的映射关系,通过使用遗传算法、人为指定漏洞关联重点区域,优化模糊测试制导算法,避免无效、冗余的测试用例生成,在资源有限的情况下充分有效地遍历重要的状态空间尽早发现漏洞。 \subsection{过程改进与预防式软件质量保障}