diff --git a/Ch1-1-History.tex b/Ch1-1-History.tex index aa3ae63..562a8ae 100644 --- a/Ch1-1-History.tex +++ b/Ch1-1-History.tex @@ -10,7 +10,7 @@ \end{minipage} \end{center} 这个描述主要从计算机系统中与硬件相对的角度,说明了软件的存在形式。 -而从软件的历史渊源看,\wang{它所描述的实质内容是用来完成给定应用目标的\index{可计算函数}可计算函数~\cite{Turing:1937:ComputableNumbers}}。在本书中,我们将软件\index{软件}视作是\emph{以计算为核心手段实现应用目标的解决方案}。软件属于人工制品,以适应其所处环境的方式完成应用目标;更进一步,它是一种计算的逻辑制品,既有图灵可计算性~\cite{Turing:1937:ComputableNumbers, Cooper:2002:CT:961908}和计算复杂性~\cite{Cook:1983:OCC:358141.358144}的刚性约束,同时又有通用图灵机模型给予的巨大的通用性和灵活性。 +而从软件的历史渊源看,它所描述的实质内容是用来完成给定应用目标的\index{可计算函数}可计算函数~\cite{Turing:1937:ComputableNumbers}。在本书中,我们将软件\index{软件}视作是\emph{以计算为核心手段实现应用目标的解决方案}。软件属于人工制品,以适应其所处环境的方式完成应用目标;更进一步,它是一种计算的逻辑制品,既有图灵可计算性~\cite{Turing:1937:ComputableNumbers, Cooper:2002:CT:961908}和计算复杂性~\cite{Cook:1983:OCC:358141.358144}的刚性约束,同时又有通用图灵机模型给予的巨大的通用性和灵活性。 软件已经成为人类认识和改造世界的关键工具,承载着信息时代人类的文明。 软件科学与工程学科(以下简称软件学科)是以软件为基本研究对象的人工科学(或曰“人工制品科学”,Science of Artificial~\cite{Simon:1996:SA:237774}), 包括研究和分析、开发和运行、使用和演化软件等活动所涉及的理论、原则、方法、技术、工具和系统等。 @@ -219,7 +219,7 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite \subsubsection{学科方法} -从研究的角度,软件学科需要建立在计算机上运行软件的科学和工程基础。从应用的角度,需要建立开发软件制品的方法和过程来高效、高质和低成本地构建软件系统。与计算学科类似~\cite{Denning:1989:CD:63238.63239},\todo{文献作者有误}在软件学科中,基本方法可以归为三类,即理论方法、实验方法和设计方法。 +从研究的角度,软件学科需要建立在计算机上运行软件的科学和工程基础。从应用的角度,需要建立开发软件制品的方法和过程来高效、高质和低成本地构建软件系统。与计算学科类似~\cite{Denning:1989:CD:63238.63239},在软件学科中,基本方法可以归为三类,即理论方法、实验方法和设计方法。 \textbf{理论方法} @@ -236,7 +236,7 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite 上述三类方法各自具有不可替代的作用,理论方法用来描述和揭示软件模型及其之间的联系;实验方法运用实验手段收集数据和实验结果,来预言软件行为并与现实世界比较;设计方法则是依据软件模型和计算对象的映射规律来设计完成解决方案。 以模型为数学对象,形成了软件学科的基础(数学)理论方面的内容,其基本方法是理论方法。从软件代码逆向到软件抽象模型,即从软件代码能否构造一个符合该代码系统的模型,并对软件进行断言或者预言,形成了软件学科的科学方面的内容,其基本方法是实验方法。从应用目标到设计软件模型再到软件,即面向问题获得求解模型并构造一个符合该模型的软件系统,形成了软件学科的工程方面的内容,其基本方法是设计方法。这三个方面在软件学科的研究中并不是正交的,往往会联合在一起共同解决学科问题。 %三者的紧密联系也使得软件学科区别于数学、自然科学和传统工程科学。 -\todo{软件与传统工程科学的差别} +%\todo{软件与传统工程科学的差别} %\begin{itemize} % \item \textbf{举例}:基于大代码的软件自动生成方法就综合软件科学中的理论、实验和设计方法。程序综合是计算机科学的明珠。其理论研究是长期以来的科学问题。演绎推理的理论方法是其重要途径,形式规约开始构造一个正确的程序,自动定理证明和归纳综合是其基本思路,并逐步发展到了归纳推理。近来随着海量代码的累积,实验统计的方法逐步兴起,以实验方法从代码数据中学习,建立程序综合和推理的启发式预言有效地提高了综合效率。以归纳推理和统计推理相结合的程序综合设计方法成为了当前软件自动化研究的重要趋势,在代码自动生成、代码修复、人机协同编程等方面取得了重要进展。 diff --git a/Ch2-1-Overview.tex b/Ch2-1-Overview.tex index ea12bd8..21426f0 100644 --- a/Ch2-1-Overview.tex +++ b/Ch2-1-Overview.tex @@ -9,14 +9,14 @@ \section{软件作为基础设施} - \wang{人类信息化发展有三条并行不悖的主线,以单机应用为主要特征的数字化、以联网应用为主要特征的网络化和以数据的深度挖掘和融合应用为主要特征的智能化。软件进入了一个新的时代,即从数字化阶段发展进入了网络化阶段,并正进入智能化阶段。利用计算机工作的人们和数字化设备,通过互联网实现了高效的连接,各类信息交互、任务协同的规模得到空前拓展,空间上的距离不再成为制约沟通和协作的障碍。网络化、智能化成为新时代软件的外部特征,软件真正作为了信息化社会的基础设施。} 软件的基础设施地位具体表现为两个方面。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在“融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着互联网和其他网络(包括电信网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式和生产关系变革、产业转型升级、新兴产业和价值链诞生与发展的重要引擎。因而,计算成为了人类与物理世界互动的中介,\wang{软件承载着人类现代文明,人类现代文明运转在软件之上。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,支撑着人类社会和文明的发展进步。}大规模、高效率地生产高质量的软件产品和提供软件服务的能力已成为社会经济升级发展的新动能,成为国家的一种核心竞争力。 + 人类信息化发展有三条并行不悖的主线:以单机应用为主要特征的数字化、以联网应用为主要特征的网络化和以数据的深度挖掘和融合应用为主要特征的智能化。软件进入了一个新的时代,即从数字化阶段发展进入了网络化阶段,并正进入智能化阶段。利用计算机工作的人们和数字化设备,通过互联网实现了高效的连接,各类信息交互、任务协同的规模得到空前拓展,空间上的距离不再成为制约沟通和协作的障碍。网络化、智能化成为新时代软件的外部特征,软件真正成为了信息化社会的基础设施。软件的基础设施地位具体表现为两个方面。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在“融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着互联网和其他网络(包括电信网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式和生产关系变革、产业转型升级、新兴产业和价值链诞生与发展的重要引擎。因而,计算成为了人类与物理世界互动的中介,软件承载着人类现代文明,人类现代文明运转在软件之上。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,支撑着人类社会和文明的发展进步。大规模、高效率地生产高质量的软件产品和提供软件服务的能力已成为社会经济升级发展的新动能,成为国家的一种核心竞争力。 软件成为人类社会基础设施是社会信息化进程不断加深的必然结果,其技术基础是“计算的泛在化”和“软件定义一切”。 “计算的泛在化”是指计算变得无处不在而又无迹可寻。互联网和其他网络的交汇融合,进一步推动了人类社会、信息空间、物理世界的融合。计算设备、网络设备、存储设备与各类传感器设备、判断与决策设备、执行设备所形成的数量众多、大大小小的平台互联融合,成为一体;与此同时,对于所服务的用户而言,计算自然融入人类生产、生活环境和过程之中,无需关注,不着痕迹,形成新的人机物融合计算环境。人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮正在开启。 - “软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程。需要注意的是,“软件定义”与“软件化”是不同的两个概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程;而“软件定义”则是一种技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,适应上层业务系统的需求和变化\footnote{\wang{软件化和软件定义的主角都是软件,软件化是软件定义的基础,可以视作软件定义1.0版本,即被定义对象上没有系统软件,只是程控化的功能软件,不支持再编程。而软件定义2.0中,被定义对象(或主体)以计算平台化的方式运行系统软件,该系统软件向下管理各种资源,向上提供资源虚拟化的编程接口,支持对被定义对象的功能再编程。}}。 -“软件定义一切” ( Software Defined Everything,简称SDX)则\wang{将软件平台所管理的资源和提供的编程抽象泛化到不仅包括计算、存储、网络、软件服务等在内的各类计算资源,而且包括各种数字化机电设备和可传感物体对象在内的各类物理资源。以智能手机、智能仪表、智能家居等为代表的“软件定义设备”日渐普遍,更进一步,SDX还将包括可通过激励机制调配的人力资源。} + “软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程。需要注意的是,“软件定义”与“软件化”是不同的两个概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程;而“软件定义”则是一种技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,适应上层业务系统的需求和变化\footnote{软件化和软件定义的主角都是软件,软件化是软件定义的基础,可以视作软件定义1.0版本,即被定义对象上没有系统软件,只是程控化的功能软件,不支持再编程。而软件定义2.0中,被定义对象(或主体)以计算平台化的方式运行系统软件,该系统软件向下管理各种资源,向上提供资源虚拟化的编程接口,支持对被定义对象的功能再编程。本书中如未加说明,软件定义缺省指软件定义2.0。}。 +“软件定义一切” ( Software Defined Everything,简称SDX)则将软件平台所管理的资源,从包括计算、存储、网络、软件服务等在内的各类计算资源,泛化到包括各种数字化机电设备和可传感物体对象在内的各类物理资源。以智能手机、智能仪表、智能家居设备等为代表的“软件定义设备”日渐普遍。更进一步,SDX还将包括可通过激励机制调配的人力资源,以及各类应用、知识等资源。 软件定义可递归分层,形成一种生长式、演化式的可扩展体系。这种软件定义的人机物融合平台逐渐呈现了“泛在操作系统”(Ubiquitous Operating System)的发展方向。 “软件定义一切”实质上是通用可编程思想在各个领域的应用,是一种以软件实现分层抽象的方式来驾驭复杂性的方法论。数字化使得几乎所有的设备都包含了独立或者集成的计算设备,完成“感知、判断、决策、执行”闭环的部分或者全部。这个改变是信息化发展的基础,使得现代设备或装置往往都具备编程控制的能力,推动了人们基于通用计算机的思维架构(人们将其总结成计算思维)来理解和求解各领域问题。可见,“软件定义X”意味着需要构造针对“X”的“操作系统”。未来的面向人机物融合的软件平台,就是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统\cite{mei2018toward}。 @@ -52,13 +52,13 @@ \subsubsection{系统观下的软件学科发展} - 软件作为人类智力产品,无论是软件制品本身,还是软件开发、使用过程和场景都与万物和人类有着紧密关联,其开发和运行的网络化、服务化\cite{Mei:2016:INS:3086926},以及软件基础设施化都触发了计算平台、软件生产方式和运行方式的变革。软件创新从个人、组织智能发展到群体智能创新。软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统(Socio-technical System)。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强\wang{,必须作为视作复杂系统来认识对待}。系统观要求软件科学体系需破除传统还原论的思维藩篱\wang{,对软件理论提出了极大的挑战。传统的软件理论是建立在逻辑和图灵机模型之上的,缺乏对大数据处理、智能系统设计与推理、信息安全保障和数据隐私保护、处理“计算、控制和通讯深度融合”以及自适应等能力,开放动态的复杂系统的行为具有不确定性和持续性,超出了之前经典模型和算法的主流研究范畴。虽然,我们在特定领域已经有大型网络应用走在前面,但作为复杂系统的软件的理论还没有产生,实践走在了理论的前面。} + 软件作为人类智力产品,无论是软件制品本身,还是软件开发、使用过程和场景都与万物和人类有着紧密关联,其开发和运行的网络化、服务化\cite{Mei:2016:INS:3086926},以及软件基础设施化都触发了计算平台、软件生产方式和运行方式的变革。软件创新从个人、组织智能发展到群体智能创新。软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统(Socio-technical System)。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强,必须作为视作复杂系统来认识对待。系统观要求软件科学体系需破除传统还原论的思维藩篱,对软件理论提出了极大的挑战。传统的软件理论是建立在逻辑和图灵机模型之上的,缺乏对大数据处理、智能系统设计与推理、信息安全保障和数据隐私保护、处理“计算、控制和通讯深度融合”以及自适应等能力,开放动态的复杂系统的行为具有不确定性和持续性,超出了之前经典模型和算法的主流研究范畴。虽然,我们在特定领域已经有大型网络应用走在前面,但面向复杂系统的软件理论还没有产生,实践走在了理论的前面。 近年来,软件科学在系统观方向上进行了不少探索,包括:基于复杂网络来认识大规模软件系统的整体性质、基于多自主体的软件系统和方法、复杂自适应软件与系统、群体化软件开发方法等。网络化和大数据催发了融合软件系统与系统论研究的切入点,数据驱动的软件性能优化甚至软件设计辅助初显端倪。通过对软件代码大数据特别是动态运行大数据的分析,软件性能优化在云计算平台等一些特定场景中获得很大成功。对于数据驱动的软件设计,人们不再遵循传统的自顶向下、分而治之、逐步精化的经典还原论法则,而是采用一种基于输入输出的黑盒的数据描述,训练出深度神经网络,充当所需要的软件部件。这种基于深度学习的方法从海量的样本中归纳出神经网络,其泛化能力可视为通过神经元系统的涌现而达成的功能。然而,这些研究仍处于方法层次,还未达到方法论的层次,即关于研究问题需要遵循的途径和研究路线,也可视作具体方法的元级层次。 新的软件方法学的关键在于如何认识因果和相关。因果观是有前提的,相对的;相关性是绝对的;探寻因果是认知的必需,也是追求。软件发展在人机物融合时代,人在回路、“拟人化”计算(Human Computation)、人机共融等需要关于软件规律的元级方法论创新。 - 在软件系统的建模方面,软件将从单纯的信息处理向“场景计算”发展,这里的场景包括物理环境和社会环境。软件与软件所处的环境或应用场景共同决定了软件的特性和价值,包括功能、性能、安全、可靠等。软件将作用于环境,并且可以改变自身结构以适应环境变化和影响环境的需求。\wang{大数据带来的数据驱动的方法将是一个重要的方向,正如Jim Gray指出的,大数据将成为人类触摸、理解和逼近现实复杂系统的有效途径。} + 在软件系统的建模方面,软件将从单纯的信息处理向“场景计算”发展,这里的场景包括物理环境和社会环境。软件与软件所处的环境或应用场景共同决定了软件的特性和价值,包括功能、性能、安全、可靠等。软件将作用于环境,并且可以改变自身结构以适应环境变化和影响环境的需求。大数据带来的数据驱动的方法将是一个重要的方向,大数据将成为人类触摸、理解和逼近现实复杂系统的有效途径。 在软件系统的机理方面,软件的语义将由传统的还原论形式语义方法,向多尺度、可演化的抽象方向发展,组合方式将从传统的静态组合方式向动态可演化的、具有涌现特性的方式发展,建立软件微观行为与宏观行为的辩证统一。面向人机物融合的认知,软件作为人工智能或者“智能+”的承载,将深化复杂自主系统的智能行为理论和方法,软件定义将成为人机物融合系统中学习赋能(型)资源的管理途径。 @@ -66,11 +66,11 @@ \subsubsection{系统观下关键科学问题} - 软件学科的系统观形成、并与系统学的交叉融合将经历一个长期的阶段。当前软件学科所面临的一个关键科学问题是对于人机物融合系统的建模与分析,表现为两个方面:一是系统论驱动的复杂软件系统的观察和度量方法;\wang{二是超出经典算法和程序理论范围的软件理论。}在操作层面上,系统观下软件方法学的研究有紧密联系的两个抓手: + 软件学科的系统观形成、并与系统学的交叉融合将经历一个长期的阶段。当前软件学科所面临的一个关键科学问题是对于人机物融合系统的建模与分析,表现为两个方面:一是系统论驱动的复杂软件系统的观察和度量方法;二是超出经典算法和程序理论范围的软件理论。在操作层面上,系统观下软件方法学的研究有紧密联系的两个抓手: \begin{enumerate} -\item 以复杂适应性软件系统为抓手,\wang{拓展与控制理论的交叉},形成元级反射和学习赋能相结合的元级化理论,以此研究泛在操作系统的基本理论、关键技术和实现平台,为人机物融合的资源和应用场景建模提供计算的平台抽象; +\item 以复杂适应性软件系统为抓手,拓展与控制理论的交叉,形成元级反射和学习赋能相结合的元级化理论,以此研究泛在操作系统的基本理论、关键技术和实现平台,为人机物融合的资源和应用场景建模提供计算的平台抽象; \item 推进数据驱动软件开发方法的发展,打通传统软件方法与数据驱动软件方法,突破大数据分析的可解释性和常识推理问题,为涌现现象规律的认识、解释、设计建立基础理论和方法。 @@ -92,7 +92,7 @@ 首先,“软件定义+计算思维”将成为每个人解决现实问题、满足自身需求的新范式。未来的人类社会及日常生活的方方面面都将以软件定义的人机物融合应用的方式来实现。实现用户需求的应用软件将越来越多地以最终用户编程的方式面向应用场景按需构造。因此,最终用户必须具备基于计算思维的问题解决方案规划和构造能力。同时,这也要求我们为支持人机物融合的泛在服务软件提供通用的编程抽象(包括编程模型和语言),支持这种最终用户编程。 - 其次,\wang{适应泛在而专用化甚至变化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。软件平台需要具有预测和管理未来硬件资源变化的能力,能适应硬件、底层资源和平台的变化,乃至能相对独立地长期生存演化。} + 其次,适应泛在而专用化甚至变化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。软件平台需要具有预测和管理未来硬件资源变化的能力,能适应硬件、底层资源和平台的变化,乃至能相对独立地长期生存演化。 再次,内生的持续成长能力将成为软件的基本能力。除了自适应能力外,软件将越来越多地具备支持自演化的持续生长能力。这种持续生长不仅意味着通过各种智能化方法调整软件的算法和策略从而实现优化运行,而且还意味着软件通过各种生成以及合成能力不断增强自身的能力。因此,未来软件定义中功能与数据的界限将进一步模糊,越来越多的功能将通过数据驱动的方式进行设计,并实现自演化和自生长。 @@ -196,21 +196,21 @@ 本书在第一篇总结了软件学科是由软件语言和理论、软件构造方法、软件运行支撑、软件度量和质量评估等四方面形成有机整体,软件范型的变化将牵引软件技术体系的变化。而上述系统观、形态观、价值观和生态观的新视角将引起软件范型的变化,并辐射到软件语言与理论、软件开发、运行和度量评估等各个层面方法和技术的变革,进而从整体软件的生态与教育方面产生深刻的影响。 -软件理论和软件语言方面将着力解决如何建立适应人机物融合的软件范型基础这一基本问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,\wang{拓展可计算理论传统研究的内容范围,特别是需要应对网络环境下日益增长的大数据与持续计算的算法与计算复杂性理论,以及在新的硬件架构(异构多态)和计算平台(量子计算平台)下的计算理论和程序理论等等}。与软件理论紧密相关,软件语言\wang{将重点研究泛在计算各种抽象,构建领域特定的程序设计语言,探索语言演化和生长机制、以及基于“语言工程”的软件设计方法和支撑环境,共同奠定软件范型发展的理论和语言基础}。 +软件理论和软件语言方面将着力解决如何建立适应人机物融合的软件范型基础这一基本问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,拓展可计算理论传统研究的内容范围,特别是需要应对网络环境下日益增长的大数据与持续计算的算法与计算复杂性理论,以及在新的硬件架构(异构多态)和计算平台(量子计算平台)下的计算理论和程序理论等等。与软件理论紧密相关,软件语言将重点研究泛在计算各种抽象,构建领域特定的程序设计语言,探索语言演化和生长机制、以及基于“语言工程”的软件设计方法和支撑环境,共同奠定软件范型发展的理论和语言基础。 -软件构造方法将\wang{研究人机物融合场景下的软件开发范型和技术体系,也即研究面向应用场景需求、如何“软件定义”人机物融合的“场景计算机”。 +软件构造方法将研究人机物融合场景下的软件开发范型和技术体系,也即研究面向应用场景需求、如何“软件定义”人机物融合的“场景计算机”。 %它要在万物互联的平台上持续演进地面向场景提供服务,具有自主性、协同性、演化性、情境性、涌现性和可信性等诸多特性。 -面向高效、高质量、低成本的目标,软件构造的技术方法和组织模式上需要应对复杂场景分析与建模、群智开发、人机协作编程、开发运维一体化等以一系列挑战,亟待新方法和技术的发展。} +面向高效、高质量、低成本的目标,软件构造的技术方法和组织模式上需要应对复杂场景分析与建模、群智开发、人机协作编程、开发运维一体化等以一系列挑战,亟待新方法和技术的发展。 -软件运行支撑\wang{将向支撑人机物融合、具有“资源虚拟化”和“功能可编程”特点的泛化运行平台发展,需要满足作为社会基础设施在规模、适应、演化、安全、效能等方面的诸多严格要求。未来的泛在操作系统与运行平台,需在软件定义的新型运行平台架构、泛在资源的高效虚拟化和调度方法、软件系统持续适应演化的支撑机制、人机物融合过程中的安全与隐私保护等关键问题上有突破。} +软件运行支撑将向支撑人机物融合、具有“资源虚拟化”和“功能可编程”特点的泛化运行平台发展,需要满足作为社会基础设施在规模、适应、演化、安全、效能等方面的诸多严格要求。未来的泛在操作系统与运行平台,需在软件定义的新型运行平台架构、泛在资源的高效虚拟化和调度方法、软件系统持续适应演化的支撑机制、人机物融合过程中的安全与隐私保护等关键问题上有突破。 -软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面,\wang{其未来的重要变化是在复杂系统和软件生态层面的科学观察,并以此为基础推进软件开发和运行层面的持续发展。一方面,将通过有效的度量和分析,理解和利用大规模代码和项目的供应链行为,研究个体学习和群体协作,并探索软件生态的形成和可持续机制机理等。另一方面,在软件成为信息社会的基础设施后,软件质量评估和保障的需求不断增长、更为突出。以应用场景的价值牵引,带动软件质量和确保技术的发展成为重要趋势,未来突破的重点将在数据驱动的智能系统质量保障、 人机物融合场景下的系统可信增强、大规模复杂系统安全缺陷检测、物联网环境下的系统安全保障等方面。} +软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面,其未来的重要变化是在复杂系统和软件生态层面的科学观察,并以此为基础推进软件开发和运行层面的持续发展。一方面,将通过有效的度量和分析,理解和利用大规模代码和项目的供应链行为,研究个体学习和群体协作,并探索软件生态的形成和可持续机制机理等。另一方面,在软件成为信息社会的基础设施后,软件质量评估和保障的需求不断增长、更为突出。以应用场景的价值牵引,带动软件质量和确保技术的发展成为重要趋势,未来突破的重点将在数据驱动的智能系统质量保障、 人机物融合场景下的系统可信增强、大规模复杂系统安全缺陷检测、物联网环境下的系统安全保障等方面。 “数据为中心”是人机物融合时代的最为突出的特征,数据工程和数据管理是未来软件构造和运行支撑的共性沉淀。在数据工程方面,需要应对异构数据整理、数据分析和数据安全与隐私保护等挑战。在数据管理方面,需研究如何管理大数据、特别是如何利用新硬件混合架构来实现大数据的管理。 -软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。\wang{在人机物融合及软件定义一切的大背景下,以卫星、流程工业控制、智慧城市、无人自主系统等为代表的重大领域都蕴含着平台再造与整合的发展机遇,即以软件作为万能集成器对相关系统原有的软硬件和服务资源进行解构然后以平台化的方式进行重构,从而建立软件定义的融合发展平台。此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。} +软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。在人机物融合及软件定义一切的大背景下,以卫星、流程工业控制、智慧城市、无人自主系统等为代表的重大领域都蕴含着平台再造与整合的发展机遇,即以软件作为万能集成器对相关系统原有的软硬件和服务资源进行解构然后以平台化的方式进行重构,从而建立软件定义的融合发展平台。此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。 -软件学科的发展离不开软件教育体系、内容、方法、手段的变革。\wang{软件教育需要构建包括顺应``软件定义一切''发展趋势的通识教育、针对人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的完整体系,并建设发展相应的教育理念、方法和伦理。} +软件学科的发展离不开软件教育体系、内容、方法、手段的变革。软件教育需要构建包括顺应``软件定义一切''发展趋势的通识教育、针对人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的完整体系,并建设发展相应的教育理念、方法和伦理。 本部分余下各章将讨论学科内各个领域方向所面临的一些主要挑战问题。 我们大胆预测,软件学科的未来发展将由这些问题上的突破和进展所塑造。 diff --git a/references.bib b/references.bib index af57dc8..9547bec 100644 --- a/references.bib +++ b/references.bib @@ -939,8 +939,8 @@ year = {1937} } @article{Denning:1989:CD:63238.63239, - author = {Comer, D. E. and Gries, David and Mulder, Michael C. and Tucker, Allen and Turner, A. Joe and Young, Paul R.}, - editor = {Denning, Peter J.}, + author = {Denning, Peter J., Comer, D. E. and Gries, David and Mulder, Michael C. and Tucker, Allen and Turner, A. Joe and Young, Paul R.}, + editor = {}, title = {Computing As a Discipline}, journal = {Commun. ACM}, issue_date = {Jan. 1989},