王老师修改过的 两个第一章;政策建议(从word转成tex);几个使得编译能通过的小修改。
This commit is contained in:
parent
617d27c75c
commit
ca376aff15
|
|
@ -10,7 +10,7 @@
|
|||
\end{minipage}
|
||||
\end{center}
|
||||
这个描述主要从计算机系统中与硬件相对的角度,说明了软件的存在形式。
|
||||
而从软件的历史渊源看,它本质上是刻画完成给定应用目标的\index{可计算函数}可计算函数~\cite{Turing:1937:ComputableNumbers},这构成了软件的实质内容。在本书中,我们将软件\index{软件}视作是\emph{以计算为核心手段实现应用目标的解决方案}。软件属于人工制品,以适应其所处环境的方式完成应用目标;更进一步,它是一种计算的逻辑制品,既有图灵可计算性~\cite{Turing:1937:ComputableNumbers, Cooper:2002:CT:961908}和计算复杂性~\cite{Cook:1983:OCC:358141.358144}的刚性约束,同时又有通用图灵机模型给予的巨大的通用性和灵活性。
|
||||
而从软件的历史渊源看,\wang{它所描述的实质内容是用来完成给定应用目标的\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}), 包括研究和分析、开发和运行、使用和演化软件等活动所涉及的理论、原则、方法、技术、工具和系统等。
|
||||
|
|
@ -78,11 +78,11 @@ EDSAC作为第一台存储程序结构的电子计算机,给出了通用图灵
|
|||
|
||||
第一个事件是软件与硬件的解绑~\cite{Humphrey:2002:SUP:513126.513132}。早期的软件依附在硬件之上解决应用问题,软件完全是针对其运行的硬件开发,不能再用于其它硬件。此时的计算机系统中硬件和软件是相互“捆绑”的。技术上的一体带来了商业上的一体。计算机公司(如IBM)的商业模式在收费上采取只考虑硬件价格而软件和系统服务免费的策略。这在当时对于用户是很有吸引力的,也增强了公司的竞争力。到1964年时情况发生了变化,IBM发布了新的IBM S/360系统,其目标是用户能够升级硬件系统而不需要替换或改变他们的应用程序。这在事实上形成了一种把应用解决方案剥离出硬件系统的技术可行性。而稍后RCA也宣布了其新的Spectra 70系统与IBM S/360兼容。这使得IBM难以阻止RCA在市场上“免费”使用其软件。1968年,IBM宣布了其软件和硬件系统的解绑。此后,软件从计算机系统硬件中剥离出来,获得了可以独立发展的空间,有机会产生独立的商业和竞争模式。可以看到,除了商业上的反垄断和市场竞争因素外,软件本质上所具备的“解决方案”的独立性和计算平台抽象使得解绑具备了历史必然性和技术可行性。软件学科的独立存在凸显。之后的发展以Bill Gates创立Microsoft和Larry Ellison创立Oracle为标志,软件成为独立产品并形成巨大产业,应用领域从科学计算和商业计算开始不断扩大,逐渐从作为硬件附属品的软硬件一体化阶段过渡到软件产品化、产业化阶段。人们逐步认识到软件是计算机系统的灵魂,其共性沉淀形成的系统软件向下管理计算机系统的各类资源,向上满足应用软件对计算机系统的功能需求。
|
||||
|
||||
第二个事件是软件工程\index{软件工程}的提出。计算机能力的快速提高和软件复杂性增加导致了所谓的“软件危机”现象。典型的案例是IBM S/360的操作系统OS/360的进度、开销和可靠性均不尽人意。北大西洋公约组织(NATO)在1968年举行了首次软件工程会议~\cite{Naur:1969:SER:1102020}。在这次会议上,专家们首次提出需要与其他领域的工程方法一样系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中所明确指出的,“我努力使软件具有其应有的地位,使得构造软件的活动受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”~\cite{Cameron:2018:ComputingEdge}。软件工程的出现激活了软件发展的巨大活力。这一史实也说明了软件发展的外在驱动力,即不断增长的应用需求和计算能力。
|
||||
第二个事件是软件工程\index{软件工程}的提出。计算机能力的快速提高和软件复杂性增加导致了所谓的“软件危机”现象。典型的案例是IBM S/360的操作系统OS/360的进度、开销和可靠性均不尽人意。北大西洋公约组织(NATO)在1968年举行了首次软件工程会议~\cite{Naur:1969:SER:1102020}。在这次会议上,专家们首次提出需要与其他领域的工程方法一样系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中所明确指出的,“我努力使软件具有其应有的地位,使得构造软件的活动受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”~\cite{Cameron:2018:ComputingEdge}。软件工程的出现激活了软件发展的巨大活力。这一史实也证实了软件发展的外在驱动力,即不断增长的应用需求和计算能力。
|
||||
|
||||
\subsection{软件发展的主线}
|
||||
|
||||
软件通常可分为应用软件、系统软件和支撑软件。应用软件是指特定应用领域专用的软件,面向终端用户完成既定应用目标,例如办公软件、聊天软件、财务软件等;系统软件位于硬件层之上,为应用软件提供服务,如Windows或Linux操作系统、各种数据库管理系统、编译程序及软件中间件等;支撑软件是支撑各种软件的开发与维护的软件,如软件开发工具及环境等。系统软件和支撑软件又统称为基础软件。
|
||||
软件通常可分为应用软件、系统软件和支撑软件。应用软件是指特定应用领域专用的软件,面向用户完成既定应用目标,例如工业控制软件、飞行控制软件、公共管理软件、人机交互软件、聊天软件、财务软件等;系统软件位于硬件层之上,为应用软件提供服务,如Windows或Linux操作系统、各种数据库管理系统、编译程序及软件中间件等;支撑软件是支撑各种软件的开发与维护的软件,如软件开发工具及环境等。系统软件和支撑软件又统称为基础软件。
|
||||
|
||||
追溯软件发展可以有多条线索,既可以考察计算机系统平台、应用形式的发展,也可以采用程序设计语言、系统软件、支撑软件等角度。
|
||||
从计算平台看,软件运行平台从主机平台、微机平台、局域网平台、互联网平台到万物互联平台;系统软件也从批处理式、交互式、网络化发展到云边端融合等模式去支撑从少量集中到海量分布异构的资源管理和利用。
|
||||
|
|
@ -205,21 +205,21 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite
|
|||
纵观软件学科发展历史,随着计算时代从数字化时代发展到网络化,再到目前人机物融合、智能化时代,软件和软件学科在继承中发展;变化成为常态,正所谓“变是不变的真理”。我们从两个方面来认识软件学科发展的规律:第一,本学科发展的驱动力是什么;第二,本学科的研究方法论是什么。
|
||||
|
||||
\subsubsection{发展的驱动力}
|
||||
软件是兼具刚性约束和柔性适应的产物。平台和应用的可计算、复杂性和正确性形成了软件需要遵循的刚性约束,而内在的各种方法学引导、功能和适应性设计则造就了软件的柔性多样,也给予了软件学科无穷的发展活力。作为一门面向人工制品的方法论学科,软件学科发展的驱动力主要来自于两个方面:外在驱动力来自于应用范围的扩张和计算平台的发展;内在驱动力来自于其核心问题的解决,追求更高效地发挥计算机硬件所提供的计算能力,不断凝练应用共性并沉淀到系统软件平台中,同时更好地满足用户对易用性的需求。此外,软件发展驱动力还来自面向开发者的人本属性,包括人的认知规律和人力资源管理的深化与提高。
|
||||
软件是兼具刚性约束和柔性适应的产物。平台和应用的可计算、复杂性和正确性形成了软件需要遵循的刚性约束,而人的认知规律和人力资源管理的深化与提高,内在的各种方法学引导、功能和适应性设计则造就了软件的柔性多样,也给予了软件学科无穷的发展活力。作为一门面向人工制品的方法论学科,软件学科发展的外在驱动力来自于应用范围的扩张和计算平台的发展;其内在驱动力来自于其核心问题的解决,追求更高效地发挥计算机硬件所提供的计算能力,不断凝练应用共性并沉淀到系统软件平台中,同时更好地满足用户对易用性的需求。
|
||||
|
||||
\textbf{外在驱动力}
|
||||
|
||||
计算平台的发展和应用范围的扩张分别构成了软件学科发展的平台驱动力和应用驱动力。不断变迁的平台构成了软件灵活成长的平台空间;而不断扩张的应用构成软件所解决的问题空间。在平台空间和问题空间之间,构成了由软件填补的解空间。软件的发展是这三个空间变化、渗透和互动的产物。
|
||||
计算平台的发展和应用范围的扩张分别构成了软件学科发展的平台驱动力和应用驱动力。不断变迁的平台构成了软件灵活成长的平台空间;而不断扩张的应用构成软件所需解决的问题空间。在平台空间和问题空间之间,构成了由软件填补的解空间。软件的发展是这三个空间变化、渗透和互动的产物。
|
||||
|
||||
应用拉动,平台变化,推动软件的发展。从应用驱动力的角度,软件的应用范围不断扩展,渗透力不断增强。不断增长的应用诉求拉动了软件技术从最初单纯的计算与数据处理拓展到各个行业的应用、乃至现在无所不在的应用,软件学科的无可比拟的渗透力变得空前的强大,软件的形态、开发方法和运行支撑等诸多方面发生了巨大的变化。从平台驱动力的角度,计算平台从单机发展到局域网、互联网、物联网,从云计算、端计算、边缘计算到泛在计算,形成了从封闭、静态环境(单机计算平台)到开放、动态环境(泛在计算平台)的态势,造就了软件发展的不竭动力,使得软件所能提供的解决方案的解空间空前强大。在应用驱动力和平台驱动力的联合作用下,软件正走向“定义一切”。
|
||||
应用拉动,平台变化,推动软件的发展。从应用驱动力的角度,软件的应用范围不断扩展,渗透力不断增强。不断增长的应用诉求拉动了软件技术从最初单纯的计算与数据处理拓展到各个行业的应用、乃至现在无所不在的应用,软件学科的无可比拟的渗透力变得空前的强大,软件的形态、开发方法和运行支撑等诸多方面发生了巨大的变化。从平台驱动力的角度,计算平台从单机发展到局域网、互联网、物联网,从云计算、端计算、边缘计算到泛在计算,形成了从封闭、静态环境(单机计算平台)到开放、动态环境(泛在计算平台)的态势,造就了软件发展的不竭动力,使得软件所能提供的解决方案的解空间空前强大。在应用驱动力和平台驱动力的联合作用下,“软件定义一切”成为趋势。
|
||||
|
||||
\textbf{内在驱动力}
|
||||
|
||||
从学科内在的技术角度看,软件的发展有四个基本驱动力,即,追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型;支持高效率和高质量的软件开发;充分发挥硬件资源的能力,支持高效能、高可靠和易管理的软件运行;桥接异构性,实现多个应用系统之间的互操作。基于抽象的复杂性控制成为学科发展的核心要素。围绕抽象和复杂性控制,软件技术从系统化走向形式化和自动化,软件也向超大规模、开放适应、持续成长方向发展。
|
||||
从学科的技术角度看,软件的内在驱动力来自五个方面,即,追求更具表达能力、更符合人类思维模式、易构造、易演化的软件模型;支持高效率和高质量的软件开发;充分发挥硬件资源的能力,支持高效能、高可靠和易管理的软件运行;桥接异构性,实现多个应用系统之间的互操作;更好地满足用户对易用性的需求。基于抽象的复杂性控制成为学科发展的核心要素。围绕抽象和复杂性控制,软件技术从系统化走向形式化和自动化,软件也向超大规模、开放适应、持续成长方向发展。
|
||||
|
||||
\subsubsection{学科方法}
|
||||
|
||||
从研究的角度,软件学科需要建立在计算机上运行软件的科学和工程基础。从应用的角度,需要建立开发软件制品的方法和过程来高效、高质和低成本地构建软件系统。与计算学科类似~\cite{Denning:1989:CD:63238.63239},在软件学科中,基本方法可以归为三类,即理论方法、实验方法和设计方法。
|
||||
从研究的角度,软件学科需要建立在计算机上运行软件的科学和工程基础。从应用的角度,需要建立开发软件制品的方法和过程来高效、高质和低成本地构建软件系统。与计算学科类似~\cite{Denning:1989:CD:63238.63239},\todo{文献作者有误}在软件学科中,基本方法可以归为三类,即理论方法、实验方法和设计方法。
|
||||
|
||||
\textbf{理论方法}
|
||||
|
||||
|
|
@ -235,7 +235,8 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite
|
|||
|
||||
上述三类方法各自具有不可替代的作用,理论方法用来描述和揭示软件模型及其之间的联系;实验方法运用实验手段收集数据和实验结果,来预言软件行为并与现实世界比较;设计方法则是依据软件模型和计算对象的映射规律来设计完成解决方案。
|
||||
|
||||
以模型为数学对象,形成了软件学科的基础(数学)理论方面的内容,其基本方法是理论方法。从软件代码逆向到软件抽象模型,即从软件代码能否构造一个符合该代码系统的模型,并对软件进行断言或者预言,形成了软件学科的科学方面的内容,其基本方法是实验方法。从应用目标到设计软件模型再到软件,即面向问题获得求解模型并构造一个符合该模型的软件系统,形成了软件学科的工程方面的内容,其基本方法是设计方法。这三个方面在软件学科的研究中并不是正交的,往往会联合在一起共同解决学科问题,三者的紧密联系也使得软件学科区别于数学、自然科学和传统工程科学。
|
||||
以模型为数学对象,形成了软件学科的基础(数学)理论方面的内容,其基本方法是理论方法。从软件代码逆向到软件抽象模型,即从软件代码能否构造一个符合该代码系统的模型,并对软件进行断言或者预言,形成了软件学科的科学方面的内容,其基本方法是实验方法。从应用目标到设计软件模型再到软件,即面向问题获得求解模型并构造一个符合该模型的软件系统,形成了软件学科的工程方面的内容,其基本方法是设计方法。这三个方面在软件学科的研究中并不是正交的,往往会联合在一起共同解决学科问题。 %三者的紧密联系也使得软件学科区别于数学、自然科学和传统工程科学。
|
||||
\todo{软件与传统工程科学的差别}
|
||||
|
||||
%\begin{itemize}
|
||||
% \item \textbf{举例}:基于大代码的软件自动生成方法就综合软件科学中的理论、实验和设计方法。程序综合是计算机科学的明珠。其理论研究是长期以来的科学问题。演绎推理的理论方法是其重要途径,形式规约开始构造一个正确的程序,自动定理证明和归纳综合是其基本思路,并逐步发展到了归纳推理。近来随着海量代码的累积,实验统计的方法逐步兴起,以实验方法从代码数据中学习,建立程序综合和推理的启发式预言有效地提高了综合效率。以归纳推理和统计推理相结合的程序综合设计方法成为了当前软件自动化研究的重要趋势,在代码自动生成、代码修复、人机协同编程等方面取得了重要进展。
|
||||
|
|
@ -267,6 +268,7 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite
|
|||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\todo{左图中抽象请去掉}
|
||||
%软件范型重点解决软件是什么的问题,描述了软件的模型和模型构造、运行的基本理论,包括了计算理论、程序设计语言和程序理论。计算理论包括可计算性理论、算法理论等。可计算性理论回答什么能或不能在计算平台上求解,算法理论回答如何在计算平台上高效能行求解问题。程序设计语言和程序理论回答软件抽象是什么以及它们之间联系的问题。我们将软件范型的学科内容归入程序设计语言与理论。
|
||||
|
||||
%软件语言的核心任务是建立通用的抽象机制,包括抽象的表示和抽象之间的关系,为问题空间、解空间和平台空间建模。
|
||||
|
|
|
|||
|
|
@ -65,10 +65,10 @@
|
|||
\begin{figure}[htbp]
|
||||
\centering
|
||||
\includegraphics[width=0.99\textwidth]{fig1-2/2-2.png}
|
||||
\caption{程序设计语言的发展及分类}\todo{改图,去掉“系统编程语言”中的“语言”}
|
||||
\caption{程序设计语言的发展及分类}
|
||||
\label{fig:2-2}
|
||||
\end{figure}
|
||||
|
||||
\todo{改图,去掉“系统编程语言”中的“语言”}
|
||||
%这里以多个有代表性的语言为例,分析其应用背景、设计特点与发展规律,从而展现程序设计语言发展的历史与现状。
|
||||
按照程序设计语言的类型与应用,图\ref{fig:2-2}给出了以时间为主线的不同类别语言的发展过程与分类关系。从不同角度来看,一种程序设计语言既可能属于系统编程语言,又是面向对象语言。从发展过程来看,一种语言在发展过程中会不断进行扩充,融入不同的范式,进而趋近于多范式语言。计算机产业的发展往往是新的产业应用从已有的应用模式中成长出来而不是取而代之。新语言的出现往往标志着信息技术在新的应用领域的扩张。本节主要以应用驱动来组织。
|
||||
|
||||
|
|
|
|||
|
|
@ -5,31 +5,33 @@
|
|||
|
||||
%\footnote{这里所谓人是指系统中的人类参与者及其社会关系,机是指计算平台和信息空间的数据、软件服务等各种资源,物是指数字化的设备装置和可传感的物品。或曰“信息-物理-社会”三元融合系统。}
|
||||
|
||||
如第一章中所述,软件是以计算为核心手段实现应用目标的解决方案;软件学科是研究以软件求解应用问题的理论、原则、方法和技术,以及相应的工具支持和生态环境的学科。也就是说,软件学科本质上是一门方法论学科~\cite{Wirth:2008:BHS:1449571.1449577}。其带来的是一种人类思维方式的创新,以人机共融的方式延伸了单纯的人脑思维,形成了一种前所未有的创造力。随着软件应用范围的扩张、软件计算平台的泛化和软件方法技术的发展,软件学科的边界不断拓展,内涵不断深化。本章总论“软件作为基础设施”这一发展趋势,进而以系统观、形态观、价值观和生态观四个视角探讨软件学科的方法论新内涵。
|
||||
如第一章中所述,软件是以计算为核心手段实现应用目标的解决方案;软件学科是研究以软件求解应用问题的理论、原则、方法和技术,以及相应的工具支持和生态环境的学科。也就是说,软件学科本质上是一门方法论学科~\cite{Wirth:2008:BHS:1449571.1449577}。其带来的是一种人类思维方式的改变和创新,以人机共融的方式延伸了单纯的人脑思维,形成了一种前所未有的创造力。随着软件应用范围的扩张、软件计算平台的泛化和软件方法技术的发展,软件学科的边界不断拓展,内涵不断深化。本章总论“软件作为基础设施”这一发展趋势,进而以系统观、形态观、价值观和生态观四个视角探讨软件学科的方法论新内涵。
|
||||
|
||||
\section{软件作为基础设施}
|
||||
|
||||
从人类社会信息化的角度看,软件的基础设施地位具体表现为两个方面。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在“融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着互联网和其他网络(包括电信网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式和生产关系变革、产业转型升级、新兴产业和价值链诞生与发展的重要引擎。因而,计算成为了人类与物理世界互动的中介,软件成为了创造新文明的载体,软件“赋能、赋值”的作用正在被加速和加倍放大,对人类社会的运行和人类文明的发展进步起到重要支撑作用。大规模、高效率地生产高质量的软件产品和提供软件服务的能力已成为社会经济升级发展的新动能,成为国家的一种核心竞争力。
|
||||
\wang{人类信息化发展有三条并行不悖的主线,以单机应用为主要特征的数字化、以联网应用为主要特征的网络化和以数据的深度挖掘和融合应用为主要特征的智能化。软件进入了一个新的时代,即从数字化阶段发展进入了网络化阶段,并正进入智能化阶段。利用计算机工作的人们和数字化设备,通过互联网实现了高效的连接,各类信息交互、任务协同的规模得到空前拓展,空间上的距离不再成为制约沟通和协作的障碍。网络化、智能化成为新时代软件的外部特征,软件真正作为了信息化社会的基础设施。} 软件的基础设施地位具体表现为两个方面。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在“融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着互联网和其他网络(包括电信网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式和生产关系变革、产业转型升级、新兴产业和价值链诞生与发展的重要引擎。因而,计算成为了人类与物理世界互动的中介,\wang{软件承载着人类现代文明,人类现代文明运转在软件之上。软件“赋能、赋值、赋智”的作用正在被加速和加倍放大,支撑着人类社会和文明的发展进步。}大规模、高效率地生产高质量的软件产品和提供软件服务的能力已成为社会经济升级发展的新动能,成为国家的一种核心竞争力。
|
||||
|
||||
软件成为人类社会基础设施是社会信息化进程不断加深的必然结果,其技术基础是“计算的泛在化”和“软件定义一切”。
|
||||
|
||||
“计算的泛在化”是指计算变得无处不在而又无迹可寻。互联网和其他网络的交汇融合,进一步推动了人类社会、信息空间、物理世界的融合。计算设备、网络设备、存储设备与各类传感器设备、判断与决策设备、执行设备所形成的数量众多、大大小小的平台互联融合,成为一体;与此同时,对于所服务的用户而言,计算自然融入人类生产、生活环境和过程之中,无需关注,不着痕迹,形成新的人机物融合计算环境。人机物融合标志着我们从终端互联、用户互联、应用互联开始走向万物互联,信息技术及其应用更加无处不在,“大数据”现象随之产生,信息化的第三波浪潮正在开启。
|
||||
|
||||
“软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程。需要注意的是,“软件定义”与“软件化”是不同的两个概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程;而“软件定义”则是一种技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,适应上层业务系统的需求和变化。“软件定义一切” ( Software Defined Everything,简称SDX)则将软件平台所管理的资源和提供的编程抽象泛化到包括计算、存储、网络、软件服务等在内的各类计算资源、包括各种数字化机电设备和可传感物体对象在内的各类物理资源、乃至可通过激励机制调配的人力资源。软件定义可递归分层,形成一种生长式、演化式的可扩展体系。这种软件定义的人机物融合平台逐渐呈现了“泛在操作系统”的发展方向。
|
||||
“软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程。需要注意的是,“软件定义”与“软件化”是不同的两个概念。“软件化”仅仅描述了根据业务需求来开发具有相应功能的软件应用系统的过程;而“软件定义”则是一种技术手段,其关注点在于将底层基础设施资源进行虚拟化并开放API,通过可编程的方式实现灵活可定制的资源管理,适应上层业务系统的需求和变化\footnote{\wang{软件化和软件定义的主角都是软件,软件化是软件定义的基础,可以视作软件定义1.0版本,即被定义对象上没有系统软件,只是程控化的功能软件,不支持再编程。而软件定义2.0中,被定义对象(或主体)以计算平台化的方式运行系统软件,该系统软件向下管理各种资源,向上提供资源虚拟化的编程接口,支持对被定义对象的功能再编程。}}。
|
||||
“软件定义一切” ( Software Defined Everything,简称SDX)则\wang{将软件平台所管理的资源和提供的编程抽象泛化到不仅包括计算、存储、网络、软件服务等在内的各类计算资源,而且包括各种数字化机电设备和可传感物体对象在内的各类物理资源。以智能手机、智能仪表、智能家居等为代表的“软件定义设备”日渐普遍,更进一步,SDX还将包括可通过激励机制调配的人力资源。}
|
||||
软件定义可递归分层,形成一种生长式、演化式的可扩展体系。这种软件定义的人机物融合平台逐渐呈现了“泛在操作系统”(Ubiquitous Operating System)的发展方向。
|
||||
|
||||
“软件定义一切”实质上是通用可编程思想在各个领域的应用,是一种以软件实现分层抽象的方式来驾驭复杂性的方法论。数字化使得几乎所有的设备都包含了独立或者集成的计算设备,完成“感知、判断、决策、执行”闭环的部分或者全部。这个改变是信息化发展的基础,使得现代设备或装置往往都具备编程控制的能力,推动了人们基于通用计算机的思维架构(人们将其总结成计算思维)来理解和求解各领域问题。可见,“软件定义一切”意味着需要构造针对“X”的“操作系统”。未来的面向人机物融合的软件平台,就是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统(Ubiquitous Operating System)。
|
||||
“软件定义一切”实质上是通用可编程思想在各个领域的应用,是一种以软件实现分层抽象的方式来驾驭复杂性的方法论。数字化使得几乎所有的设备都包含了独立或者集成的计算设备,完成“感知、判断、决策、执行”闭环的部分或者全部。这个改变是信息化发展的基础,使得现代设备或装置往往都具备编程控制的能力,推动了人们基于通用计算机的思维架构(人们将其总结成计算思维)来理解和求解各领域问题。可见,“软件定义X”意味着需要构造针对“X”的“操作系统”。未来的面向人机物融合的软件平台,就是对海量异构基础设施资源进行按需、深度软件定义而形成的“泛在”操作系统\cite{mei2018toward}。
|
||||
|
||||
\section{软件学科范畴的拓展}
|
||||
|
||||
作为一门方法论学科,软件学科拓展的驱动力来自软件应用范围扩张、计算平台泛化和软件方法技术本身发展三个方面。
|
||||
作为一门方法论学科,软件学科拓展的驱动力来自软件应用范围扩张、计算平台泛化和软件方法技术本身发展等方面。
|
||||
|
||||
从软件应用范围扩张的角度看,正如上文所述,计算日益变得无处不在,“人-机-物”三元融合不断深入。在此趋势下,从宏观上看,软件从实现计算的工具逐步转变为信息社会不可或缺的基础设施;从微观上看,软件的角色也从负责应用过程中孤立、确定的信息处理环节,转变为负责定义并协同整个应用涉及的“人-机-物”各类资源,实现应用价值。软件作为系统解决方案,涉及的范畴扩展到各类物理设备、物品和人类的主观体验与价值实现;因而软件学科无可避免地涉及到控制科学、系统科学以及心理学、管理学、社会学等范畴的问题,并以软件学科自身的方法论将其内化和拓展。
|
||||
从软件应用范围扩张的角度看,正如上文所述,计算日益变得无处不在,人机物融合不断深入。在此趋势下,从宏观上看,软件从实现计算的工具逐步转变为信息社会不可或缺的基础设施;从微观上看,软件的角色也从负责应用过程中孤立、确定的信息处理环节,转变为负责定义并协同整个应用涉及的人、机、物等各类资源,实现应用价值。软件作为系统解决方案,涉及的范畴扩展到各类物理设备、物品和人类的主观体验与价值实现;因而软件学科无可避免地涉及到控制科学、系统科学以及心理学、管理学、社会学等范畴的问题,并以软件学科自身的方法论将其内化和拓展。
|
||||
|
||||
从软件依赖的平台泛化的角度看,计算平台已经从传统的集中式单机发展到并行与分布式平台,再到今天的“云-边-端”异构多态计算平台。这个网络化计算平台不仅包括传统的互联网,还融合了传感网、物联网、移动互联网、社交网等,标志着计算平台不断向物理世界和人类社会快速延伸,形成了一种泛化的计算平台。软件定义技术为这个“人-机-物”融合的平台提供可编程计算抽象。同时,这个计算平台也使得关于“人-机-物”融合的应用场景的海量数据不断被收集、处理和积累,成为平台上的重要资源。软件作为应用解决方案,在这个计算平台之上利用数据资源,协同人机物,实现应用价值;同时也在这个平台上提供服务并进一步积累数据,从而不断拓展这个计算平台。
|
||||
从软件依赖的平台泛化的角度看,计算平台已经从传统的集中式单机发展到并行与分布式平台,再到今天的“云-边-端”异构多态计算平台。这个网络化计算平台不仅包括传统的互联网,还融合了传感网、物联网、移动互联网、社交网等,标志着计算平台不断向物理世界和人类社会快速延伸,形成了一种泛化的计算平台。软件定义技术为这个人机物融合的平台提供可编程计算抽象。同时,这个计算平台也使得关于人机物融合的应用场景的海量数据不断被收集、处理和积累,成为平台上的重要资源。软件作为应用解决方案,在这个计算平台之上利用数据资源,协同人机物,实现应用价值;同时也在这个平台上提供服务并进一步积累数据,从而不断拓展这个计算平台。
|
||||
|
||||
从软件方法技术发展的角度看,当前软件的基本形态、所实现的逻辑推理形式、软件开发的隐喻(metaphor)模式、软件的生态环境、元级方法论都在发生深刻的改变。软件的基本形态从计算机硬件的附属品到独立的软件产品,再到云化的软件服务,继而转变为无处不在而又无迹可寻的泛在服务。软件所实现的逻辑推理形式在基于规则的演绎之上发展出数据驱动的归纳,统计机器学习技术就是后者的典型表现。软件开发的隐喻模式\footnote{即软件开发从问题空间向解空间的映射模式}经历了从实现数学计算到模拟物理世界,再到虚实融合再创造的转变。对软件作为客体对象的考察从以个体及其生产使用为主扩展到在生态的层面上考虑软件及其利益相关者群体的竞争、协作等社会性特征。在元级方法论层面上,正从以还原论为主向系统论发展,软件作为解决方案越来越多地被视为开放环境中的复杂适应系统,而不是封闭规约下的确定行为系统。
|
||||
|
||||
随着学科内涵的不断拓展,软件学科逐渐成为一门基础学科,并向其他学科渗透。所谓基础学科,是指某个拓展人类可认识改造的世界疆域之不可替代的知识体系,具有独特的思维方式与方法论,为其他学科发展提供不可或缺的支撑。软件学科日益呈现出这些特征:软件是把物理世界拓展为信息-物理-社会融合世界的主要手段;与此同时,“软件定义”赋能的计算思维有可能成为继实验观察、理论推导、计算仿真、大数据分析之后的新的综合性研究手段,尤其是为以信息-物理-社会融合系统为对象的科学研究提供了赖以运作的理论基础和实践规范。而以软件知识为主体的计算机教育已经成为包括我国在内的多个国家的国民基础教育课程体系的主要内容之一。
|
||||
随着学科内涵的不断拓展,软件学科逐渐成为一门基础学科,并向其他学科渗透。所谓基础学科,是指某个拓展人类可认识改造的世界疆域之不可替代的知识体系,具有独特的思维方式与方法论,为其他学科发展提供不可或缺的支撑。软件学科日益呈现出这些特征:软件是把物理世界拓展为信息-物理-社会融合世界的主要手段;与此同时,“软件定义”赋能的计算思维有可能成为继实验观察、理论推导、计算仿真、大数据分析之后的一种新的综合性研究手段,尤其是为以信息-物理-社会融合系统为对象的科学研究提供了赖以运作的理论基础和实践规范。而以软件知识为主体的计算机教育已经成为包括我国在内的多个国家的国民基础教育课程体系的主要内容之一。
|
||||
%其一个标志是其基础内容进入国民基础教育课程体系。
|
||||
|
||||
\section{软件科学的新理解}
|
||||
|
|
@ -46,17 +48,17 @@
|
|||
|
||||
第二层含义是系统论。对于上述复杂软件系统,常常难以用其组成部件的性质去解释其整体性质。此时单纯依赖还原论方法难以驾驭其复杂性,需要借鉴系统论方法,超越还原论。
|
||||
|
||||
第三层含义是系统工程。软件学科的关注点应从为应用系统提供高质量的软件部分,上升到关注“人-机-物”融合的整个系统的价值实现。软件定义一切的趋势使得软件不仅仅是系统中的信息处理工具,而且也是管理各类资源、融合人机物的“万能集成器”,是实现应用价值的整体解决方案。
|
||||
第三层含义是系统工程。软件学科的关注点应从为应用系统提供高质量的软件部分,上升到关注人机物融合的整个系统的价值实现。软件定义一切的趋势使得软件不仅仅是系统中的信息处理工具,而且也是管理各类资源、融合人机物的“万能集成器”,是实现应用价值的整体解决方案。
|
||||
|
||||
\subsubsection{系统观下的软件学科发展}
|
||||
|
||||
软件作为人类智力产品,无论是软件制品本身,还是软件开发、使用过程和场景都与万物和人类有着紧密关联,其开发和运行的网络化、服务化\cite{Mei:2016:INS:3086926},以及软件基础设施化都触发了计算平台、软件生产方式和运行方式的变革。软件创新从个人、组织智慧发展到群体智慧创新。软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统(Socio-technical System)。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强。系统观要求软件科学体系需破除传统还原论的思维藩篱。
|
||||
软件作为人类智力产品,无论是软件制品本身,还是软件开发、使用过程和场景都与万物和人类有着紧密关联,其开发和运行的网络化、服务化\cite{Mei:2016:INS:3086926},以及软件基础设施化都触发了计算平台、软件生产方式和运行方式的变革。软件创新从个人、组织智能发展到群体智能创新。软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统(Socio-technical System)。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强\wang{,必须作为视作复杂系统来认识对待}。系统观要求软件科学体系需破除传统还原论的思维藩篱\wang{,对软件理论提出了极大的挑战。传统的软件理论是建立在逻辑和图灵机模型之上的,缺乏对大数据处理、智能系统设计与推理、信息安全保障和数据隐私保护、处理“计算、控制和通讯深度融合”以及自适应等能力,开放动态的复杂系统的行为具有不确定性和持续性,超出了之前经典模型和算法的主流研究范畴。虽然,我们在特定领域已经有大型网络应用走在前面,但作为复杂系统的软件的理论还没有产生,实践走在了理论的前面。}
|
||||
|
||||
近年来,软件科学在系统观方向上进行了不少探索,包括:基于复杂网络来认识大规模软件系统的整体性质、基于多自主体的软件系统和方法、复杂自适应软件与系统、群体化软件开发方法等。网络化和大数据催发了融合软件系统与系统论研究的切入点,数据驱动的软件性能优化甚至软件设计辅助初显端倪。通过对软件代码大数据特别是动态运行大数据的分析,软件性能优化在云计算平台等一些特定场景中获得很大成功。对于数据驱动的软件设计,人们不再遵循传统的自顶向下、分而治之、逐步精化的经典还原论法则,而是采用一种基于输入输出的黑盒的数据描述,训练出深度神经网络,充当所需要的软件部件。这种基于深度学习的方法从海量的样本中归纳出神经网络,其泛化能力可视为通过神经元系统的涌现而达成的功能。然而,这些研究仍处于方法层次,还未达到方法论的层次,即关于研究问题需要遵循的途径和研究路线,也可视作具体方法的元级层次。
|
||||
|
||||
新的软件方法学的关键在于如何认识因果和相关。因果观是有前提的,相对的;相关性是绝对的;探寻因果是认知的必需,也是追求。软件发展在人机物融合时代,人在回路、“拟人化”计算(Human Computation)、人机共融等需要关于软件规律的元级方法论创新。
|
||||
|
||||
在软件系统的建模方面,软件将从单纯的信息处理向“场景计算”发展,这里的场景包括物理环境和社会环境。软件与软件所处的环境或应用场景共同决定了软件的特性和价值,包括功能、性能、安全、可靠等。软件将作用于环境,并且可以改变自身结构以适应环境变化和影响环境的需求。
|
||||
在软件系统的建模方面,软件将从单纯的信息处理向“场景计算”发展,这里的场景包括物理环境和社会环境。软件与软件所处的环境或应用场景共同决定了软件的特性和价值,包括功能、性能、安全、可靠等。软件将作用于环境,并且可以改变自身结构以适应环境变化和影响环境的需求。\wang{大数据带来的数据驱动的方法将是一个重要的方向,正如Jim Gray指出的,大数据将成为人类触摸、理解和逼近现实复杂系统的有效途径。}
|
||||
|
||||
在软件系统的机理方面,软件的语义将由传统的还原论形式语义方法,向多尺度、可演化的抽象方向发展,组合方式将从传统的静态组合方式向动态可演化的、具有涌现特性的方式发展,建立软件微观行为与宏观行为的辩证统一。面向人机物融合的认知,软件作为人工智能或者“智能+”的承载,将深化复杂自主系统的智能行为理论和方法,软件定义将成为人机物融合系统中学习赋能(型)资源的管理途径。
|
||||
|
||||
|
|
@ -64,11 +66,11 @@
|
|||
|
||||
\subsubsection{系统观下关键科学问题}
|
||||
|
||||
软件学科的系统观形成、并与系统学的交叉融合将经历一个长期的阶段。当前软件学科所面临的一个关键科学问题是对于人机物融合系统的建模与分析,表现为两个方面:一是系统论驱动的复杂软件系统的观察和度量方法;二是兼容离散、连续、实时等不同特性的模型表示方法及其工具支持。在操作层面上,系统观下软件方法学的研究有紧密联系的两个抓手:
|
||||
软件学科的系统观形成、并与系统学的交叉融合将经历一个长期的阶段。当前软件学科所面临的一个关键科学问题是对于人机物融合系统的建模与分析,表现为两个方面:一是系统论驱动的复杂软件系统的观察和度量方法;\wang{二是超出经典算法和程序理论范围的软件理论。}在操作层面上,系统观下软件方法学的研究有紧密联系的两个抓手:
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item 以复杂适应性软件系统为抓手,形成元级反射和学习赋能相结合的元级化理论,以此研究泛在操作系统的基本理论、关键技术和实现平台,为人机物融合的资源和应用场景建模提供计算的平台抽象;
|
||||
\item 以复杂适应性软件系统为抓手,\wang{拓展与控制理论的交叉},形成元级反射和学习赋能相结合的元级化理论,以此研究泛在操作系统的基本理论、关键技术和实现平台,为人机物融合的资源和应用场景建模提供计算的平台抽象;
|
||||
|
||||
\item 推进数据驱动软件开发方法的发展,打通传统软件方法与数据驱动软件方法,突破大数据分析的可解释性和常识推理问题,为涌现现象规律的认识、解释、设计建立基础理论和方法。
|
||||
|
||||
|
|
@ -90,11 +92,11 @@
|
|||
|
||||
首先,“软件定义+计算思维”将成为每个人解决现实问题、满足自身需求的新范式。未来的人类社会及日常生活的方方面面都将以软件定义的人机物融合应用的方式来实现。实现用户需求的应用软件将越来越多地以最终用户编程的方式面向应用场景按需构造。因此,最终用户必须具备基于计算思维的问题解决方案规划和构造能力。同时,这也要求我们为支持人机物融合的泛在服务软件提供通用的编程抽象(包括编程模型和语言),支持这种最终用户编程。
|
||||
|
||||
其次,适应泛在而专用化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。针对通用目的开发的软件需要不依附于硬件的长期生长演化能力,并具备面向不同专用硬件和平台的高效定制和裁剪能力。
|
||||
|
||||
其次,\wang{适应泛在而专用化甚至变化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。软件平台需要具有预测和管理未来硬件资源变化的能力,能适应硬件、底层资源和平台的变化,乃至能相对独立地长期生存演化。}
|
||||
|
||||
再次,内生的持续成长能力将成为软件的基本能力。除了自适应能力外,软件将越来越多地具备支持自演化的持续生长能力。这种持续生长不仅意味着通过各种智能化方法调整软件的算法和策略从而实现优化运行,而且还意味着软件通过各种生成以及合成能力不断增强自身的能力。因此,未来软件定义中功能与数据的界限将进一步模糊,越来越多的功能将通过数据驱动的方式进行设计,并实现自演化和自生长。
|
||||
|
||||
最后,软件与人将在不断汇聚的群体智慧中实现融合发展。软件的覆盖面越来越广、渗透性越来越强,最终用户对于软件的依赖也越来越强。由此,软件所能获得的关于用户行为和反馈的数据越来越全面和丰富,并在此基础上形成越来越强的群体智慧。这种群体智慧注入软件后又将服务于每个最终用户,使得他们能够在各种应用场景中以更加智能化和个性化的方式满足自身的需求,从而使得软件在使用中越来越有“灵性”和“人性”。未来的软件学科及相关研究需要摈弃“人”与“软件”二元分离的思维定式,更加自觉的考虑人机共融,不仅考虑“人因”,更要考虑“群智”。
|
||||
最后,软件与人将在不断汇聚的群体智能中实现融合发展。软件的覆盖面越来越广、渗透性越来越强,最终用户对于软件的依赖也越来越强。由此,软件所能获得的关于用户行为和反馈的数据越来越全面和丰富,并在此基础上形成越来越强的群体智能。这种群体智能注入软件后又将服务于每个最终用户,使得他们能够在各种应用场景中以更加智能化和个性化的方式满足自身的需求,从而使得软件在使用中越来越有“灵性”和“人性”。未来的软件学科及相关研究需要摈弃“人”与“软件”二元分离的思维定式,更加自觉的考虑人机共融,不仅考虑“人因”,更要考虑“群智”。
|
||||
|
||||
\subsubsection{形态观下关键科学问题}
|
||||
|
||||
|
|
@ -194,22 +196,21 @@
|
|||
|
||||
本书在第一篇总结了软件学科是由软件语言和理论、软件构造方法、软件运行支撑、软件度量和质量评估等四方面形成有机整体,软件范型的变化将牵引软件技术体系的变化。而上述系统观、形态观、价值观和生态观的新视角将引起软件范型的变化,并辐射到软件语言与理论、软件开发、运行和度量评估等各个层面方法和技术的变革,进而从整体软件的生态与教育方面产生深刻的影响。
|
||||
|
||||
软件理论和软件语言方面将着力解决如何建立适应人机物融合的软件范型基础这一基本问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,特别是需要应对大规模的数据与计算的算法理论,以及在新的硬件架构(异构多态)和计算平台(量子计算平台)下的程序理论等等。与软件理论紧密相关,软件语言应重点研究领域和应用问题表达和求解的新抽象,加强大数据时代语言对数据处理的支持,以及开发人机物融合的泛在混成系统的编译技术,在领域特定语言和语言工程、多范式程序设计范式融合、软件语言和实现的内生安全等方面奠定软件范型发展的基础。
|
||||
软件理论和软件语言方面将着力解决如何建立适应人机物融合的软件范型基础这一基本问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,\wang{拓展可计算理论传统研究的内容范围,特别是需要应对网络环境下日益增长的大数据与持续计算的算法与计算复杂性理论,以及在新的硬件架构(异构多态)和计算平台(量子计算平台)下的计算理论和程序理论等等}。与软件理论紧密相关,软件语言\wang{将重点研究泛在计算各种抽象,构建领域特定的程序设计语言,探索语言演化和生长机制、以及基于“语言工程”的软件设计方法和支撑环境,共同奠定软件范型发展的理论和语言基础}。
|
||||
|
||||
软件构造方法将“软件定义”人机物融合的“场景计算机”,它要在万物互联的平台上持续演进地提供服务,具有自主性、协同性、演化性、情境性、涌现性和可信性等诸多特性。这在软件构造的技术方法和组织模式上均需要新方法和技术,包括:复杂场景分析与建模、软件自适应与自成长、基于人机协作的群智化软件开发、数据驱动的软件自动化、安全可信高度智能的开发运维一体化等。
|
||||
软件构造方法将\wang{研究人机物融合场景下的软件开发范型和技术体系,也即研究面向应用场景需求、如何“软件定义”人机物融合的“场景计算机”。
|
||||
%它要在万物互联的平台上持续演进地面向场景提供服务,具有自主性、协同性、演化性、情境性、涌现性和可信性等诸多特性。
|
||||
面向高效、高质量、低成本的目标,软件构造的技术方法和组织模式上需要应对复杂场景分析与建模、群智开发、人机协作编程、开发运维一体化等以一系列挑战,亟待新方法和技术的发展。}
|
||||
|
||||
软件运行支撑需要满足软件作为社会基础设施的规模、效能、持续、演进等诸多关键需求,并适应人机物融合的各类资源和应用场景的管理和实现。这将集中反映在未来的泛在操作系统与运行平台方面,需研究支持软件定义的新型运行平台架构、泛在资源的高效虚拟化和灵活调度、复杂软件系统持续适应演化的共性支撑、人机物融合过程中的安全与隐私保护等关键问题。
|
||||
软件运行支撑\wang{将向支撑人机物融合、具有“资源虚拟化”和“功能可编程”特点的泛化运行平台发展,需要满足作为社会基础设施在规模、适应、演化、安全、效能等方面的诸多严格要求。未来的泛在操作系统与运行平台,需在软件定义的新型运行平台架构、泛在资源的高效虚拟化和调度方法、软件系统持续适应演化的支撑机制、人机物融合过程中的安全与隐私保护等关键问题上有突破。}
|
||||
|
||||
软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面。未来的重要变化是在复杂系统和软件生态层面的科学观察并以此为基础开展在软件开发和运行层面的持续发展。以各类软件大数据为核心的度量抽象将揭示
|
||||
软件生态如何形成、如何可持续发展的基本规律,进而理解并驾驭大规模代码和项目的供应链及其变化、支持个体学习并加入复杂项目和生态,改进复杂生态中群体的协作。数据驱动和规则驱动将在软件质量与安全保障上发挥重要的作用。
|
||||
软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面,\wang{其未来的重要变化是在复杂系统和软件生态层面的科学观察,并以此为基础推进软件开发和运行层面的持续发展。一方面,将通过有效的度量和分析,理解和利用大规模代码和项目的供应链行为,研究个体学习和群体协作,并探索软件生态的形成和可持续机制机理等。另一方面,在软件成为信息社会的基础设施后,软件质量评估和保障的需求不断增长、更为突出。以应用场景的价值牵引,带动软件质量和确保技术的发展成为重要趋势,未来突破的重点将在数据驱动的智能系统质量保障、 人机物融合场景下的系统可信增强、大规模复杂系统安全缺陷检测、物联网环境下的系统安全保障等方面。}
|
||||
|
||||
“数据为中心”是人机物融合时代的最为突出的特征,数据工程和数据管理是未来软件构造和运行支撑的共性沉淀。在数据工程方面,需要应对异构数据整理、数据分析和数据安全与隐私保护等挑战。在数据管理方面,需研究如何管理大数据、特别是如何利用新硬件混合架构来实现大数据的管理。
|
||||
|
||||
软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。 在不同的应用领域,面对系统边界的可伸缩性、系统成分的异构性和系统模型的混成性,需研究各领域的环境建模及其软件定义方法、模型驱动场景感知和认知、异构资源的统一表示和封装、系统学习赋能机制及性能确保、异构模型的融合和验证以及空间分布系统的的时空一致性等关键技术问题。智慧城市、无人自治系统、以及软件定义卫星等新兴应用领域为此方面的研究提供了大场景。
|
||||
此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。
|
||||
软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。\wang{在人机物融合及软件定义一切的大背景下,以卫星、流程工业控制、智慧城市、无人自主系统等为代表的重大领域都蕴含着平台再造与整合的发展机遇,即以软件作为万能集成器对相关系统原有的软硬件和服务资源进行解构然后以平台化的方式进行重构,从而建立软件定义的融合发展平台。此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。}
|
||||
|
||||
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。软件教育需要适应“软件定义一切”普及教育的需求,还要在顺应人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育上有新发展。
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。\wang{软件教育需要适应“软件定义一切”\wang{通识教育}、顺应人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的需求,并教育理念、方法和伦理建设上有重要发展。}
|
||||
|
||||
本部分余下各章将讨论学科内各个领域方向所面临的一些主要挑战问题。
|
||||
我们大胆预测,软件学科的未来发展将由这些问题上的突破和进展所塑造。
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
|
||||
最后,生态系统中的企业参与具有很大的不稳定性。商业企业始终需要在“开放”与“盈利”之间权衡,一旦确定其目标无法实现或企业战略发生变化,将有可能直接停止(撤走)对所参与的软件生态的所有投入。例如,在开源社区占据主导地位的企业的离开有可能直接导致该开源生态走向失败\cite{Zhou2016Inflow}。例如,IBM取消了对开源项目Aperi的支持后,该项目被迫关闭。对于开源生态而言,商业文化与自由开源精神可能存在冲突。开源开发者更加倾向于自发参与、按照个人意愿选择任务。因此,商业企业传统的软件开发习惯,如组织安排、任务分工等可能伤害那些崇尚“黑客文化”、“自由软件精神”的个体开发者。例如,目前世界第一大开源JavaEE应用服务器JBossAS的创始人Marc Fleury在RedHat收购JBoss之后离开\cite{CIO2018}。
|
||||
|
||||
值得指出来的是,目前中国也在逐步构建软件产业生态\sec{Ch1-5-SoftwareIndustry}。例如在操作系统、数据库和中间件等方面形成了自有产品和上下游应用的依赖,但是如何能够拓展更广阔的市场,并形成可持续的生态,还有待研究。另一方面,国内软件厂商是否能够把握时机,面向未来的人机物融合应用,定位到合适的技术进行发展建立生态,是一个很大的挑战。
|
||||
值得指出来的是,目前中国也在逐步构建软件产业生态(§\ref{Ch1-5-SoftwareIndustry})。例如在操作系统、数据库和中间件等方面形成了自有产品和上下游应用的依赖,但是如何能够拓展更广阔的市场,并形成可持续的生态,还有待研究。另一方面,国内软件厂商是否能够把握时机,面向未来的人机物融合应用,定位到合适的技术进行发展建立生态,是一个很大的挑战。
|
||||
|
||||
\section{主要研究内容}
|
||||
为了应对上述挑战,需要开展以下几个方面的研究工作。首先,为了理解和度量复杂的软件生态,需要在现有软件数据挖掘的技术和方法的基础上继续发展数据驱动的软件度量和分析方法(§\ref{sec:se-measurement})。其次,围绕软件生态的三个层次还需要分别针对各自的问题开展研究工作:1)应对复杂软件供应链所带来的机会和挑战,如何理解并度量大规模代码和项目的供应链模式,从中挖掘可借鉴的成功经验,同时及时识别潜在风险(§\ref{sec:se-supply});2)基于软件供应链,开发者之间形成了相互协作的关系网,如何帮助他们顺利加入复杂项目、提高群体协作效率(§\ref{sec:se-cooperation});3)在此基础上,如何深入理解生态系统的形成和可持续机理,从而帮助软件生态可持续发展(§\ref{sec:se-ecosystem})。
|
||||
|
|
|
|||
121
Ch3-1.tex
121
Ch3-1.tex
|
|
@ -1,91 +1,56 @@
|
|||
% !TEX root = main.tex
|
||||
%\chapter{政策建议}
|
||||
|
||||
软件因可编程通用计算机的发明而生,并逐步发展演化为信息化时代人类文明的新载体。人类社会的信息化从基于计算机的数字化起步,当计算机融入数字化设备,``软件定义设备''成为趋势。伴随信息化进入网络化阶段,软件发展、积累、演变成为当今社会基础设施的灵魂,人类文明已经运行在软件之上,进而推动人类社会的信息化进入智能化的新阶段。人机物融合泛在计算时代正在开启,计算无处不在,软件定义一切、赋智万物。面向新时代,\textbf{我们比任何时候都需要更加重视软件学科建设,牢固确立软件学科的优先发展地位,准确把握新时代软件学科的发展方向}。
|
||||
|
||||
新时代软件的系统观、形态观、价值观和生态观为软件学科发展标定了方向。软件学科和软件产业的紧密互动关系需要我们统筹推进科研、教育和产业的协调发展。建议从加强软件基础前沿研究、升级软件高等教育体系和构建软件产业良性发展环境等维度规划我国的软件学科发展战略。
|
||||
|
||||
%\section{学科发展政策建议}
|
||||
%\begin{enumerate}
|
||||
%\item 加强软件理论、程序设计语言、系统软件等基础领域的研究。加强面向泛在计算的程序设计语言的基础性研究,以领域特定的程序设计语言的设计原理与高效实现为核心,以程序设计语言的演化和互操作性机理为重点,通过程序设计语言的基础研究,有效而深入地解决计算泛在和多样性,应用复杂性和安全性等带来的新挑战。推进对以“连接协调”为核心的新型体系结构下的新一代操作系统模型和机理的研究。研究如何为各类新型异构资源建立适当抽象,并按照应用需求进行灵活调度。研究操作系统和运行平台如何充分发挥其“元层”支撑作用,有效驱动和实现“信息-物理-社会”空间的协同持续演化。
|
||||
%\item 加强面向国家重大新型领域的全栈软件系统和工具环境的研究。国家重大新型领域涉及物联网,生命健康,军事国防等,需要加大面向领域需求的程序语言、开发方法、支撑运行环境和工具链的研究与开发。
|
||||
%\item 加强面向生态持续的复杂系统软件工程和价值保证研究。推进以人为中心的软件价值的研究和规范。面向泛在计算场景下的软件价值,包括普适日常应用和安全攸关应用,研究各种社会因素带来的突破使用质量的新的软件价值,并建立相关约束和规范,包括提示用户可能存在的风险,制定智能软件的质量标准、检测方法和实施办法等。推进对大规模代码和项目的供应链和生态行为的研究和分析。研究个体如何认知复杂项目和生态,群体如何高效高质地协作完成各类软件活动相关的任务,涵盖公司、个体开发者及用户在内的广泛社会力量如何围绕软件构建可持续性演化的生态系统等。
|
||||
%\item 加强学科交叉和综合,加强跨领域研究和应用。加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施的研究,建立公平、公正的环境,持续推动软件技术创新进程。
|
||||
%\item 改变唯论文、唯引用的评价机制,强调软件系统和工具研发的创新贡献。
|
||||
%\end{enumerate}
|
||||
|
||||
\section{加强软件基础前沿研究}
|
||||
|
||||
正如本报告第一部分所述,传统的软件学科源于并主要关注以计算机为中心的软件,而当今的软件学科必须高度关注以网络为平台的软件带来的挑战。本报告第二部分指出,新时代软件学科面对的\textbf{软件是人机物融合、泛在、可演化的复杂系统},这样的系统已经超出传统软件学科关注的以计算机为中心的软件范畴。面对新时代的软件系统,软件学科在理论、方法、技术、工具等方面都显得滞后,不能满足要求,加强新时代软件基础前沿研究是现实而紧迫的。
|
||||
|
||||
%\section{软件教育政策建议}
|
||||
%\begin{enumerate}
|
||||
%\item 推行以“计算思维 + 创新思维”为核心的普及教育,包括软件学科核心认知能力的成长模型和规律及其知识体系、以计算思维为核心,融合创新思维的系统化认知能力培养方法和适应不同认知水平且贯穿终生的软件学科普及教育方法。
|
||||
\begin{enumerate}
|
||||
\item \textbf{加强面向人机物融合泛在计算模式的软件理论研究。} 经典软件理论针对以计算机为中心的确定性封闭场景。例如,支撑其构建的早期算法理论要求算法具有表示(编码)的有限性、行为的确定性和执行终止性。但新时代软件系统是持续演化、人机物融合、泛在的开放复杂系统。以互联网(物联网)上大量涌现的人机物融合的智能云服务系统为例,软件系统需要处理持续增长的网络大数据,融合离散计算与连续的物理空间,服务行为具有不确定性和持续演化性。此类软件系统已经超出了当前算法和程序理论的研究范畴。需要借鉴复杂系统思想、理论和方法,拓展与控制理论的交叉,研究开放的新型软件理论,为新时代软件学科提供理论支持。
|
||||
%
|
||||
\item \textbf{加强面向泛在计算的程序设计语言及其支撑环境研究。} 传统程序设计语言研究一直是走通用路线,强调表达能力的完备性,支持软件专业人员开发软件。随着计算向各个领域的渗透,网络化、泛在化、人机物融合化要求提供领域化的程序设计语言及其支撑环境,降低普通用户学习门槛以及方便普通用户使用成为面向泛在计算的程序设计语言关注的重点。需要结合各个行业领域的软件定义需求,以领域特定的程序设计语言设计原理和高效实现为目标,研究面向领域应用的新型程序设计语言理论、程序设计语言的演化和互操作性机理、程序设计语言的支撑环境和工具链等,为高效而深入地满足各个行业领域定制计算的多样性需求,提供共性和个性兼顾的编程支撑。
|
||||
%
|
||||
\item \textbf{布局基于软件定义方法的泛在操作系统原理和技术研究。} 传统操作系统发展是以围绕CPU为主线、以拓展网络通信能力为辅线,难以应对人机物融合泛在计算所带来的海量异构``物''、``人''资源的管理需求,难以支撑复杂、多样、多变的各类应用。需要研究以``连接协调''为核心的新型软件体系结构下泛在操作系统模型和机理、各类新型异构资源的抽象机制及其虚拟化技术、应用需求导向的按需高效资源调度、内生可信安全机制等,以及研究如何充分发挥泛在操作系统的``元层''共性基础支撑作用,有效驱动和实现``信息-物理-社会''空间的协同持续演化。
|
||||
%
|
||||
\item \textbf{探索以数据为中心的新型应用开发运行模式及其平台支撑。} 传统的应用开发运行是以计算资源为中心,通过处理输入数据获得输出结果。随着大数据应用的繁荣和数据作为主要资产定位的确立,围绕数据部署应用将成为一种主要的应用模式。需要研究异构海量数据的抽象和建模、多元(源)数据资源的互操作和调度管理技术及平台、以多元(源)数据为中心的应用快速开发和高效运行技术、以及相应的数据安全和隐私保护技术等。
|
||||
%
|
||||
\item \textbf{加强对大规模代码和项目的供应链和生态行为研究。} 开源、众包等软件开发社区模式已成为传统组织型软件开发模式之外的重要模式,因此带来开源闭源交织的复杂软件供应链和生态,同时也在互联网上积累了丰富的软件工程大数据资源。需要以刻画和分析复杂的软件供应链模型为基础,研究个体如何高效认知复杂项目和生态、群体如何高效高质地协作完成各类软件开发相关的任务、软件涉众如何围绕软件构建可持续性演化的生态系统等。基于互联网群体智能的软件开发方法和支撑平台研究、基于软件工程大数据的软件自动化方法和技术研究、以及软件知识产权的甄别和保护技术也是值得关注的重点。
|
||||
%
|
||||
%\item 推行以“多学科交叉融合知识体系+系统能力和解决复杂工程 问题能力培养”为核心的专业教育,包括建立面向多学科交叉融合的软件学科专业教育的知识体系和软件学科专业教育核心能力的培养方法。
|
||||
%
|
||||
%\item 推行以“专业学科知识 + 软件学科知识”为基础,实现复合型、创新型和跨界人才培养的其他学科专业教育,建立基于“专业学科知识 + 软件学科知识”的其他学科专业教育知识体系和具有软件学科知识和能力的复合型、创新型和跨界专业人才培养方法。
|
||||
%
|
||||
%\item 开展以“探究成才规律 + 寻求理念创新 + 开发支撑软件”为 核心的教育方法改革,探索软件学科人才培养模型及规律、研究软件学科资源在人才培养中的应用,推进群体化学习和大规模在线开放实践 MOOP,研发软件学科教育的支撑软件。
|
||||
%\end{enumerate}
|
||||
|
||||
%\section{软件产业政策建议}
|
||||
%\begin{enumerate}
|
||||
%\item 鼓励面向行业的共性软件技术创新和研发,以纵带横,促进领域特定共性软件平台和工具环境的发展。
|
||||
%\item 建立以开源生态为核心、具有针对性的知识产权保护的群智化软件创新环境,培育健康发展的软件产业生态。
|
||||
%\item 建立数据开放机制和平台,鼓励围绕大数据聚集、管理、分析和应用的大规模协作制定数据开放的相关政策,开放地理、气候、统计、环境、交通等政府数据,并建立基于互联网的大数据开放共享平台,以及开放的数据分析工具库,鼓励不同的组织和个人基于此平台开展数据聚集、管理、分析和应用的大规模协作,挖掘数据蕴含的价值,提供高附加值的数据类软件产品和服务。
|
||||
%\item 面向智慧城市、移动互联网应用等热点领域加大投入,支持高附加值的新型网络计算操作系统和应用支撑工具平台的技术创新和产品推广。针对智慧城市、移动互联网应用等当前需求迫切且应用价值高的热点领域,加大投入力度,把握互联网、移动互联网、物联网等平台深度普及所带来的发展契机,支持产学研用相结合的技术创新和成果转化,建立自主可控的新型网络计算操作系统和应用支撑工具平台,打造针对热点应用领域的高附加值基础软件产品。
|
||||
%\end{enumerate}
|
||||
|
||||
\section{学科发展政策建议}
|
||||
软件定义一切,软件已经成为当今社会的基础设施,新时代的软件四观:系统观、形态观、价值观和生态观为软件学科发展提供了方向。软件学科应以建立这四观为基本发展点,立足于网络时代的蓬勃需求,结合点与面、通与专,在基础理论、软件应用模式、新型软件价值和软件生态行为方面不断创新,继往开来。
|
||||
|
||||
\begin{enumerate}
|
||||
\item 将软件工程扩展为软件科学与工程学科。并建立通识、专业、跨学科、继续等多层次的终生教育体系。
|
||||
|
||||
\item 大力加强面向泛在计算的程序设计语言以及支撑环境、软件开发方法的基础性研究,以领域特定的程序设计语言的设计原理与高效实现为核心,以程序设计语言的演化和互操作性机理为重点,通过程序设计语言的基础研究,加大程序设计语言的支撑环境和工具链的开发,从而有效而深入地解决计算的泛在和多样性,软件的复杂性和软件的安全性等带来的新时代的挑战。
|
||||
%
|
||||
\item 推进对以“连接协调”为核心的新型软件体系结构下的新一代操作系统模型和机理的研究。研究如何为各类新型异构资源建立适当抽象,并按照应用需求进行灵活调度。研究操作系统和运行平台如何充分发挥其“元层”支撑作用,有效驱动和实现“信息-物理-社会”空间的协同持续演化。
|
||||
%
|
||||
\item 重视软件技术研究和应用的价值取向和管理。软件的社会基础设施化使得社会治理现代化与软件密不可分,软件的价值观与社会治理的统一将成为重要的因素。
|
||||
%\item
|
||||
推进以人为中心的软件价值的研究和规范。面向泛在计算场景下的软件价值,研究各种社会因素带来的突破使用质量的新的软件价值,并建立相关约束和规范,包括提示用户可能存在的风险,制定智能软件的质量标准、检测方法和实施办法等。
|
||||
|
||||
\item 推进对大规模代码和项目的供应链和生态行为的研究和分析。研究个体如何认知复杂项目和生态,群体如何高效高质地协作完成各类软件活动相关的任务,涵盖公司、个体开发者及用户在内的广泛社会力量如何围绕软件构建可持续性演化的生态系统等。%并进一步推进国内软件产业生态系统的建设。
|
||||
%\item加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施的研究,建立公平、公正的环境,持续推动软件技术创新进程。
|
||||
\item \textbf{重视软件技术研究和应用的价值取向和管理。} 软件的基础设施化使得社会经济运行、社会治理等均与软件密不可分,软件承载的价值观与社会经济价值观的符合度将成为重要的挑战。特别需要加强软件安全和质量,尤其是复杂人机物融合系统安全可靠确保、机器学习赋能软件的质量评估和风险防控等,同步发展软件确保工具环境、软件基础设施以及软件生态治理。需要推进以人为中心的软件价值观研究和规范,研究各种社会因素带来的超越软件使用质量的新型软件价值及其约束和规范、可能风险的防护和提示机制等,软件技术及其应用的伦理研究也应受到关注。
|
||||
\end{enumerate}
|
||||
|
||||
\section{软件教育政策建议}
|
||||
软件教育在充分考虑知识体系和教育手段的基础上,未来注重专业教育与通识教育并重,领域学科知识与软件学科知识结合,原理讲授与开源实践融合。
|
||||
|
||||
\section{升级完善软件学科高等教育体系}
|
||||
|
||||
软件定义一切将带来软件定义的世界,无处不在的软件不仅成为社会经济活动的基础设施,还将重塑人们的思维模式。面向未来,每一个接受高等教育的成年人不仅应该是现代信息化社会的直接受益者,更应该是现代软件文明的直接创造者,软件技能不再仅仅是大学软件专业人才的专业技能,还将成为所有大学生必备的工作生活技能。因此在现代高等教育体系中,\textbf{软件教育不仅仅是面向软件专门人才的专业教育,还应该成为覆盖全体大学生的通识教育}。软件教育要注重专业教育与通识教育并重,领域学科知识与软件学科知识结合,原理讲授与动手实践融合。
|
||||
|
||||
\begin{enumerate}
|
||||
\item 推行以“计算思维 + 创新思维”为核心的普及教育,包括软件学科核心认知能力的成长模型和规律及其知识体系、以计算思维为核心,融合创新思维的系统化认知能力培养方法和适应不同认知水平且贯穿终生的软件学科普及教育方法。
|
||||
%
|
||||
\item 推行以“多学科交叉融合知识体系 + 系统能力和解决复杂工程 问题能力培养”为核心的专业教育,包括建立面向多学科交叉融合的软件学科专业教育的知识体系和软件学科专业教育核心能力的培养方法。
|
||||
%
|
||||
\item 推行以“专业学科知识 + 软件学科知识”为基础,实现复合型、创新型和跨界人才培养的其他学科专业教育,建立基于“专业学科知识 + 软件学科知识”的其他学科专业教育知识体系和具有软件学科知识和能力的复合型、创新型和跨界专业人才培养方法。
|
||||
%
|
||||
\item 开展以“探究成才规律 + 寻求理念创新 + 开发支撑软件”为 核心的教育方法改革,探索软件学科人才培养模型及规律、研究软件学科资源在人才培养中的应用,推进群体化学习和大规模在线开放实践 MOOP,研发软件学科教育的支撑软件。
|
||||
\begin{enumerate}
|
||||
\item \textbf{布局面向全体大学生的软件通识教育。} 当今的大学软件通识教育隐含在计算机通识教育之中,缺少系统性设计。未来大学软件通识教育要从两个能力入手,实现三个衔接,延伸并拓展现有国民教育体系。两个能力一是认知能力,通过以``算法抽象+编程思维''为核心的认知教育,帮助学生形成用算法和编程理解数字空间的认知能力;二是实践能力,通过以``语言案例+编程案例''为核心的实践案例教育,帮助学生形成自主学习编程工具、解决现实计算问题的实践能力。三个衔接一是衔接过去,即与中小学的计算机基础教育相衔接;二是衔接当下,即与当下大学开设的``大学计算机基础''通识课程融合衔接;三是衔接未来,即与大学各类专业教育和未来终身学习相衔接。
|
||||
%
|
||||
\item \textbf{重构软件学科专业人才培养体系。} 当今主导软件学科专业教育的知识体系是以计算机为中心的软件知识体系。面向新时代软件新``四观''标定的软件未来走向,需将以计算机为核心的软件学科知识体系拓展为以网络为平台的软件学科知识体系,系统能力培养标准也要由计算机空间拓展到网络空间,建立与软件新``四观''相适应的高层次研究型专门人才培养方法,强化解决以网络为平台的复杂系统问题的能力,造就勇于开拓新时代软件学科``无人区''的探索者,为中国引领新时代软件学科发展培养领军人才。
|
||||
%
|
||||
\item \textbf{开展面向其他学科专业的软件工程教育。} 目前各专业领域的应用软件开发由于专业知识与软件知识之间的鸿沟而经常发生需求沟通、软件理解等方面的困难,迫切需要加强各专业领域中的软件工程能力培养。为了适应``软件定义一切''的时代特点,结合各行业领域信息化转型发展需求,需构建面向其他学科专业的软件工程课程体系,实现复合型、创新型和跨界人才培养,有效提升行业领域应用专门人才与软件专业人才合作开发复杂应用软件的能力,为各行业领域提供高端软件开发人才,提高基于计算机和网络开发仿真、设计、分析、制造、测试等工具软件的能力和水平。
|
||||
%
|
||||
\item \textbf{构建并开放软件教育支撑平台。} 软件学科是实践动手能力要求很高的学科专业,软件开发环境是软件学科人才培养的基础支撑。要把握软件学科实践性的特点,坚持以泛在化的计算机和网络为支撑工具,支持软件人才实践能力培养,研发支持软件人才培养的支撑软件和大规模开放在线课程(Massive Open Online Course,MOOC),与开源软件资源以及开源软件开发部署云平台对接,构建开放共享的软件开发、部署、维护、升级和演化的实训平台,推广大规模开放在线实践(Massive Open Online Practice,MOOP)教学,对接软件产业环境,形成支撑大学教育和终身教育的开放平台。
|
||||
\end{enumerate}
|
||||
|
||||
\section{软件产业政策建议}
|
||||
泛在计算和“软件定义一切”使得软件产业挑战和机遇并存。
|
||||
我国软件产业虽然有长足的发展,但是鉴于基础相对薄弱,还需要在下述两个方面不断加强和拓展:
|
||||
一是需要为软件产业培育良好的基础环境;二是需要把握泛在计算带来的机会开拓新型应用模式。
|
||||
如何能抓住时代赋予的机会,在软件技术领域实现颠覆式创新和跨越式发展,对我国实现创新型国家发展战略具有重大意义。
|
||||
具体来说,建议国家在知识产权和公共数据平台建设方面建立政策法规,培育健康的产业发展环境,并面向热点领域加大投入,为发展新型应用模式和开源生态加强产业政策。
|
||||
|
||||
\section{构建软件产业良性发展环境}
|
||||
软件学科总体而言是一个以解决问题为目标的技术学科,支撑产业发展是其使命,产业需求反过来又为其发现研究问题提供了源头。过去,软件学科的战略地位通过其支撑的战略性新兴产业—软件产业—得到强化。今天,在软件定义一切、成为经济社会基础设施的时代背景下,软件产业与软件学科的战略意义将进一步彰显。\textbf{一个强大的软件产业需要强大的软件学科支撑,同时也提供了软件学科发展的沃土。} 我国软件产业基础还相对薄弱,还处于产业链的中低端,需要把握住新时代软件带来的颠覆式发展机遇期,实现创新发展和跨越发展。
|
||||
|
||||
\begin{enumerate}
|
||||
\item 知识产权保护:加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施的研究,健全决策机制,规范操作流程,探索形成赋权形式、成果评价、收益分配等方面制度,建立有针对性的知识产权保护、投融资政策环境,培育健康发展的软件产业生态。
|
||||
%%1)在开源政策法规方面,建议加强对开源相关知识产权法律法规的研究和建立,政府采购向开源方案或混合方案倾斜,政府主导建立开源基金会,鼓励社会力量参与公益性开源创新生态环境建设。
|
||||
|
||||
\item 数据开放政策:建立数据开放机制和平台,鼓励围绕大数据聚集、管理、分析和应用的大规模协作制定数据开放的相关政策,开放地理、气候、统计、环境、交通等政府数据,并建立基于互联网的大数据开放共享平台,以及开放的数据分析工具库,鼓励不同的组织和个人基于此平台开展数据聚集、管理、分析和应用的大规模协作,挖掘数据蕴含的价值,提供高附加值的数据类软件产品和服务。
|
||||
|
||||
\item 软件资产管理和共享体系: 建立国家软件资产管理和共享体系,构建基础、领域、行业软件生态,发展社会化、群智化、开源化的国家软件生态圈。
|
||||
|
||||
\item 发展新型应用:面向智慧城市、移动互联网应用等热点领域加大投入,支持高附加值的新型网络计算操作系统和应用支撑工具平台的技术创新和产品推广,打造针对热点应用领域的高附加值基础软件产品和服务。
|
||||
|
||||
\item 培育开源生态:培育基于开源模式的公益性生态环境建设,采取“参与融入、蓄势引领”的开源策略(“参与融入”针对国际成熟开源社区,“蓄势引领”则从中文开源社区建设切入),发展开源软件生态,并以其为抓手提升我国在信息技术领域的核心竞争力和国际影响力。
|
||||
|
||||
\section{TBC: 一些执行层面的建议}
|
||||
\begin{enumerate}
|
||||
\item 确立软件发展的优先位置,在软件学科发展的基础性和战略性方向上强化科研支撑,在软件应用和产业上确立软件优先的发展思路。例如,在国家重点研发上设立软件专项,并在其他各专项中设立领域或行业软件的递增份额。
|
||||
\item 机构设置
|
||||
\item jm融合
|
||||
\end{enumerate}
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\item \textbf{完善知识产权保护。} 我国软件产业还处于产业链的中低端的一个重要原因,是全社会对软件知识产权保护的认识和手段严重缺失。需加强软件知识产权保护的宣传,加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施研究以及法规制定,完善健全软件知识产权保护体系并建立严格的实施机制,切实保护软件技术和应用创新。
|
||||
%
|
||||
\item \textbf{布局新基础设施建设。} 结合数字中国建设和数字经济发展新需求,打造新一代信息技术主导的社会经济活动的新型基础设施,如5G通信网、物联网、人工智能开放平台和大型数据中心等。同时,加快推动传统物理基础设施的软件定义改造和升级,如电力传输网、交通路网等。以此为基础,面向传统行业领域数字化转型、网络化重构和智能化提升的迫切需求,大力推进软件定义方法在各行业的推广应用,推进工业互联网技术研发和平台构建,按需打造各行业特定的泛在操作系统。
|
||||
%
|
||||
\item \textbf{大力发展新型应用。} 新一代基础设施必将孕育人机物融合的新型应用。需面向智慧城市、社会治理、敏捷物流、信息消费等重点领域,加强投入和引导,构建相应的大数据互操作平台和应用开发工具,支撑高附加值软件产品和服务的技术创新和应用。
|
||||
%
|
||||
\item \textbf{积极培育开源生态。} 开源生态是新时代软件发展的重要时代特征。需培育基于开源模式的公益性生态环境建设,采取``参与融入、蓄势引领''的开源策略(``参与融入''针对国际成熟开源社区,``蓄势引领''则从中文开源社区建设切入),发展开源软件生态,探索开源生态下的新型商业模式,并以其为抓手提升我国在信息技术领域的核心竞争力和国际影响力,特别是通过中文开源平台的建设构建国家软件资产托管和共享体系。
|
||||
%
|
||||
\item \textbf{推进公共数据开放。} 新时代软件发展的一个重要特征是大数据驱动。需通过政策和法规制定,鼓励地理、气候、统计、环境、交通等政府数据和公共数据开放,构建基于互联网的大数据开放共享平台及开放的数据分析工具库,支持不同组织和个人开展数据汇聚、管理、分析和应用的大规模协作和高附加值的数据类软件产品和服务创新。
|
||||
\end{enumerate}
|
||||
16
main.tex
16
main.tex
|
|
@ -20,6 +20,7 @@
|
|||
\usepackage{tikz}
|
||||
\usetikzlibrary{trees}
|
||||
|
||||
|
||||
\usepackage[textsize=tiny]{todonotes}
|
||||
\newcommand{\xxm}[2][]{\todo[color=yellow, #1]{xxm: #2}}
|
||||
\newcommand{\dan}[2][]{\todo[color=orange, #1]{dan: #2}}
|
||||
|
|
@ -30,8 +31,11 @@
|
|||
\usepackage[style=numeric, sorting=none]{biblatex}
|
||||
\bibliography{references.bib}
|
||||
|
||||
|
||||
|
||||
\usepackage{color}
|
||||
\usepackage{stmaryrd}
|
||||
\newcommand{\oomit}[1]{}
|
||||
\newcommand{\authorComment}[3]{{\textcolor{#1}{$\llbracket$~#2: #3~$\rrbracket$}}}
|
||||
\newcommand{\wang}[1]{\authorComment{red}{wang}{#1}}
|
||||
\makeindex
|
||||
|
||||
|
||||
|
|
@ -46,10 +50,12 @@
|
|||
|
||||
\tableofcontents
|
||||
|
||||
%\oomit{
|
||||
|
||||
\chapter*{摘要}
|
||||
\addcontentsline{toc}{chapter}{摘要}
|
||||
\input{Ch0-1-Abstract}
|
||||
%}
|
||||
|
||||
\mainmatter
|
||||
|
||||
|
|
@ -58,6 +64,8 @@
|
|||
\chapter{引言}
|
||||
\input{Ch1-1-History}
|
||||
|
||||
%\oomit{
|
||||
|
||||
\chapter{程序设计语言与理论}
|
||||
\label{book1-PL}
|
||||
\input{Ch1-2-ProgrammingLanguage}
|
||||
|
|
@ -73,10 +81,11 @@
|
|||
|
||||
|
||||
\part{新时代的软件学科}
|
||||
|
||||
%}
|
||||
\chapter{引言}
|
||||
\input{Ch2-1-Overview}
|
||||
|
||||
%\oomit{
|
||||
\chapter{软件理论}
|
||||
\input{Ch2-2-SoftwareTheory}
|
||||
|
||||
|
|
@ -109,6 +118,7 @@
|
|||
\chapter{学科发展建议}
|
||||
\input{Ch3-1}
|
||||
|
||||
%}
|
||||
|
||||
\printbibliography[heading=bibintoc,title=参考文献]
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue