根据两个第一章的内容更新摘要。以及一些小修正。
This commit is contained in:
parent
33840df4ef
commit
697e5d4919
|
@ -33,7 +33,7 @@
|
|||
\subsection{软件}
|
||||
|
||||
人们通常把软件理解为计算机系统中与硬件相对的部分,包括程序及其文档,以及相关的数据。
|
||||
但这只是软件的存在形式,其所表达和实现的实质内容是以计算为核心手段实现应用目标的解决方案。
|
||||
但这只是软件的存在形式,其所表达和实现的实质内容是\emph{以计算为核心手段实现应用目标的解决方案}。
|
||||
|
||||
不同于一般物品,软件是一种人工制品,同时也是一种纯粹的逻辑制品。
|
||||
作为一种人工制品,其需以适应其所处环境的方式完成应用目标;作为逻辑制品,其困难不在于物理限制而在于逻辑构造。
|
||||
|
@ -106,7 +106,9 @@
|
|||
度量、评估和预测其质量和效率等指标。软件度量评估通过量化发现软件和技术的规律,并评价解决方案对应用目标的满足程度。
|
||||
这涉及到软件语言、构造和运行诸多方面,通常也将其归在软件工程的主要内容之中。
|
||||
|
||||
这四个子领域是密切联系、相互作用的,贯穿其中的是软件范型。
|
||||
这四个子领域是密切联系、相互作用的,贯穿其中的是软件范型%
|
||||
\footnote{这里的软件范型对应的英文是Software Paradigm。
|
||||
而为遵循习惯,在本书中程序设计和程序设计语言的Paradigm译为“范式”。}。
|
||||
每一个范型为软件工程师(或程序员)提供一套具有内在一致性的软件抽象体系,具化为一系列软件模型及其构造原理,并外化为相应的软件语言、构造方法、运行支撑和度量评估技术,从而可以系统化地回答软件应该“如何表示”、“怎样构造”、“如何运行”以及“质量如何”的问题~\cite{Mei:2016:INS:3086926,}。软件范型的变化将牵引构造方法、运行支撑、度量和质量评估的一系列变化,带动软件学科的发展。
|
||||
|
||||
\begin{figure}[htbp]
|
||||
|
@ -168,7 +170,7 @@
|
|||
\subsection{软件学科发展规律}
|
||||
|
||||
纵观软件学科的历史,可以发现其发展的外在驱动力始终来自于计算平台的发展和应用范围的扩张,
|
||||
而内在驱动力来自于其核心问题的解决,追求更具表达能力、更符合人的思维模式的编程范型,
|
||||
而内在驱动力来自于其核心问题的解决,追求更具表达能力、更符合人的思维模式的编程范式,
|
||||
追求更高效地发挥计算机硬件所提供的计算能力,不断凝练应用共性并沉淀计算平台,同时更好地满足用户对易用性的需求。
|
||||
这是由软件学科的方法论学科本质所决定的。
|
||||
|
||||
|
@ -203,7 +205,7 @@
|
|||
但面临非结构化、海量数据的应用问题后,数据库不再采用严苛的关系模型,转而使用更为灵活的键值对结构、文档模型、图模型等更为契合问题空间的抽象,
|
||||
同时给出这些抽象在大规模分布计算平台上的高效实现。
|
||||
|
||||
\subsection{我国的软件学科与产业}
|
||||
\subsection{我国的软件学科与产业}\todo{可能需要根据第17章更新本小节}
|
||||
我国软件学科起步较早,在几代科学家的不懈努力下取得了一系列的成果。例如,在上世纪60 年代中期就自主研发了ALGOL等语言的编译系统,70年代初研发了XT系列操作系统,
|
||||
80-90年代在银河系列巨型机上配备了操作系统、高级语言编译程序等系统软件。
|
||||
在软件相关的基础研究方面,我国在程序理论、算法理论等方面取得了一批基础性的成果,提出了以时序逻辑作为软件开发的统一基础。
|
||||
|
@ -249,9 +251,9 @@
|
|||
\section{发展趋势与挑战问题}
|
||||
|
||||
\subsection{软件成为基础设施}
|
||||
当前,计算的泛在化和软件定义一切的发展趋势使得软件成为信息社会的基础设施,软件学科也进入了一个新的发展阶段。
|
||||
人类信息化发展有三条并行不悖的主线:以单机应用为主要特征的数字化、以联网应用为主要特征的网 络化和以数据的深度挖掘和融合应用为主要特征的智能化。当前,计算的泛在化和软件定义一切的发展趋势使得信息化进入了一个新的时代,即从数字化阶段发展进入了网络化阶段,并正进入智能化阶段。这也使得软件真正成为信息社会的基础设施,软件学科也进入了一个新的发展阶段。
|
||||
|
||||
所谓“计算的泛在化”是指计算变得无处不在而又无迹可寻。万物数字化、万物互联使得计算无处不在,形成了“人-机-物” 三元融合的发展趋势。计算自然融入人类 生产、生活活动的环境和过程之中,无需关注,不着痕迹。
|
||||
所谓“计算的泛在化”是指计算变得无处不在而又无迹可寻。万物数字化、万物互联使得计算无处不在,形成了人机物三元融合的发展趋势。计算自然融入人类 生产、生活活动的环境和过程之中,无需关注,不着痕迹。
|
||||
所谓“软件定义”是指软件以平台化的方式,向下管理各种资源,向上提供编程接口,其核心途径是资源虚拟化以及功能可编程。而“软件定义一切”则将软件平台所管理的资源和提供的编程抽象泛化到包括计算、存储、网络、软件服务等在内的各类计算资源,包括各种数字化机电设备和可传感物体对象在内的各类物理资源,乃至可通过激励机制调配的人力资源。
|
||||
|
||||
软件的基础设施地位具体表现为两个方面。一方面,软件自身已成为信息技术应用基础设施的重要构成成分,以平台方式为各类信息技术应用和服务提供基础性能力和运行支撑。另一方面,软件正在 “融入”到支撑整个人类经济社会运行的“基础设施”中,特别是随着以互联网和其他网络(包括电信网、移动网、物联网等)的不断交汇融合,软件正在对传统物理世界基础设施和社会经济基础设施进行重塑,通过软件定义的方式赋予其新的能力和灵活性,成为促进生产方式升级、生产关系变革、产业升级、新兴产业和价值链的诞生与发展的重要引擎。从经济社会整体发展的角度,计算成为了人类与物理世界互动的中介,软件对人类社会的运行和人类文明的发展进步起到重要支撑作用。
|
||||
|
@ -264,13 +266,13 @@
|
|||
|
||||
软件学科的拓展来自软件应用范围扩张、计算平台的泛化和软件方法技术本身发展三个方面的驱动。
|
||||
|
||||
从软件应用范围扩张的角度看,计算日益变得无处不在,“人-机-物”三元融合不断深入。
|
||||
软件的角色也从负责应用过程中孤立、确定的信息处理环节,转变为负责定义并协同整个应用涉及的“人-机-物”各类资源,实现应用价值。
|
||||
从软件应用范围扩张的角度看,计算日益变得无处不在,人机物三元融合不断深入。
|
||||
软件的角色也从负责应用过程中孤立、确定的信息处理环节,转变为负责定义并协同整个应用涉及的人机物各类资源,实现应用价值。
|
||||
软件作为应用解决方案,涉及的范畴扩展到各类物理设备、物品和人类的主观体验与价值实现;
|
||||
因而软件学科无可避免地涉及到控制科学、系统科学以及心理学、管理学、经济学和社会学等范畴的问题,并以软件学科自身的方法论将其内化和拓展。
|
||||
|
||||
从软件依赖的计算平台泛化的角度看,计算平台从传统的集中式单机发展到并行与分布平台,到今天的“云-边-端”异构多态计算平台。
|
||||
软件定义技术为这个“人-机-物”融合的平台提供可编程计算抽象。
|
||||
软件定义技术为这个人机物融合的平台提供可编程计算抽象。
|
||||
软件作为解决方案,在这个计算平台之上利用数据资源,协同人机物,实现应用价值;同时也通过在这个平台上提供服务,并进一步积累数据,不断拓展这个计算平台。
|
||||
|
||||
从软件方法技术发展的角度看,软件的基本形态从计算机硬件的附属品到独立的软件产品,转变到云化和泛在的软件服务,%,转变为无处不在而又无迹可寻的泛在服务。
|
||||
|
@ -289,9 +291,9 @@
|
|||
%体现在其前所未有的代码规模、软件处理的数据量、软件用户量和使用的多样性、软件通过网络形成的连接量和种类、涉及承载运行的计算和物理设备量和种类等方面,也体现在且其所处环境的具有开放性,并面临由于“人在回路”所带来的不确定性。这使得看待软件的视角从封闭规约下的确定行为系统向开放环境中的复杂自适应系统、从单体系统向系统之系统转变。
|
||||
%第三层含义是系统论。对于上述复杂软件系统,常常难以用其组成部件的性质去解释其整体性质。此时单纯依赖还原论方法难以驾驭其复杂性,需要借鉴系统论方法。
|
||||
所谓软件学科的系统观,有三层含义。
|
||||
第一层含义是复杂系统。现代软件系统具有前所未有的规模和内部复杂性,且所处的环境具有开放性,并面临由于“人在回路”所带来的不确定性。这使得看待软件的视角从封闭规约下的确定行为系统向开放环境中的复杂自适应系统、从单体系统向系统之系统转变。第二层含义是系统论。对于上述复杂软件系统,常常难以用其组成部件的性质去解释其整体性质。此时单纯依赖还原论方法难以驾驭其复杂性,需要借鉴系统论方法,超越还原论。第三层含义是系统工程。软件学科的关注点应从为应用系统提供高质量的软件部件,上升到关注“人-机-物”融合的整个系统的价值实现。
|
||||
第一层含义是复杂系统。现代软件系统具有前所未有的规模和内部复杂性,且所处的环境具有开放性,并面临由于“人在回路”所带来的不确定性。这使得看待软件的视角从封闭规约下的确定行为系统向开放环境中的复杂自适应系统、从单体系统向系统之系统转变。第二层含义是系统论。对于上述复杂软件系统,常常难以用其组成部件的性质去解释其整体性质。此时单纯依赖还原论方法难以驾驭其复杂性,需要借鉴系统论方法,超越还原论。第三层含义是系统工程。软件学科的关注点应从为应用系统提供高质量的软件部件,上升到关注人机物融合的整个系统的价值实现。
|
||||
|
||||
以系统观看软件学科发展,软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强。%系统观要求软件科学体系需超越传统还原论的思维藩篱。
|
||||
以系统观看软件学科发展,软件科学与自然科学、社会科学等各领域产生了千丝万缕的联系,信息物理融合、软件社会化、大数据时代的软件新形态使得软件必然成为技术-社会系统。人机物融合的软件系统,其复杂性本身就呈现在系统乃至系统之系统的层面上,综合性和系统性也愈来愈强,必须作为视作复杂系统来认识对待。这就要求超越传统还原论的思维藩篱,发展作为复杂系统的软件的理论。
|
||||
%
|
||||
近年来,软件科学在系统观方向上进行了不少探索,包括:基于复杂网络来认识大规模软件系统的整体性质、基于多自主体(Agent)的软件系统和方法、复杂自适应软件与系统、群体化软件开发方法等。网络化和大数据催发了融合软件系统与系统论研究的切入点,数据驱动的软件设计和优化初显端倪,在一些特定领域获得很大成功。
|
||||
%人们对于数据驱动的软件的设计,不再遵循传统的自顶向下、分而治之、逐步精化的经典还原论法则,而是一种基于输入输出的黑盒的数据描述,训练出深度神经网络,充当所需要的软件。这种%
|
||||
|
@ -301,13 +303,13 @@
|
|||
|
||||
% 新的软件方法学的关键在于如何认识因果和相关。因果观是有前提的,相对的;相关性是绝对的。软件发展在人机物融合时代,人在回路、“拟人化”计算(Human Computation)、人机共融等需要关于软件规律的元级方法论创新。在软件系统的建模方面,软件将从单纯信息处理向“场景计算”发展,这里的场景包括物理环境和社会环境。在软件系统的机理方面,软件的语义将由传统的还原论形式语义方法,向多尺度、可演化的抽象方向发展,组合方式将从传统的静态组合方式向动态可演化的、具有涌现特性的方式发展,建立软件微观行为与宏观行为的辩证统一。面向人机物融合的认知,软件作为人工智能或者“智能+”的承载,将深化复杂自主系统的智能行为理论和方法,软件定义将成为人机物融合系统中学习赋能(型)资源的管理途径。
|
||||
|
||||
软件科学的发展也将促进系统论和系统学的发展。在软件定义一切的时代,软件成为复杂适应系统认知的载体和实验平台,而软件发展中形成的以形式化体系为基础的规则驱动软件理论,高性能计算之上建立的模拟仿真技术,与进入智能化阶段形成的大数据驱动的软件方法,为形成还原论和整体论的辩证统一奠定了良好的基础,软件走向人机物融合更是为系统论和系统学的发展提供了实践探索的大场景。
|
||||
软件科学的发展也将促进系统论和系统学的发展。在软件定义一切的时代,软件成为复杂适应系统认知的载体和实验平台,而软件发展中形成的以形式化体系为基础的规则驱动软件理论,高性能计算之上建立的模拟仿真技术,与进入智能化阶段形成的大数据驱动的软件方法,为形成还原论和整体论的辩证统一奠定了良好的基础,软件走向人机物融合更是为系统论和系统学的发展提供了实践探索的大场景。尤其是,正如 Jim Gray所指出,大数据将成为人类触摸、理解和逼近现实复杂系统的有效途径。
|
||||
|
||||
% 展望未来,多自主体形成的协同与自组织以及自适应结构和能力、网络化产生的大数据与数据语义的复杂网络,将是软件系统在传统规则驱动基础上走向人机物融合超大规模系统的基础。软件作为复杂系统乃至复杂巨系统,在软件定义时代,软件科学将与系统学共同发展,软件方法学将吸收系统论成果,并支撑系统论和系统学的发展。
|
||||
|
||||
\subsubsection{形态观}
|
||||
% 随着计算机技术的发展和计算机应用的不断深入,软件的外在形态逐步从硬件附属物、独立的软件制品发展到网络化服务。与之相对应,软件开发范型也经历了无结构、结构化、面向对象、面向构件、面向服务的发展历程。
|
||||
当前,软件的外在形态正在朝着泛在化和可持续成长的方向发展:在空间维度上,软件应用的范围越来越广,对于人类生活和现实世界的渗透力越来越强,呈现出泛在化的趋势;时间维度上,软件应用随着上下文环境及用户需求的变化不断适应和演化,呈现出持续成长的趋势。与此同时,软件开发范型也进一步向网构化以及数据驱动方向发展。
|
||||
当前,在空间维度上,随着应用的范围越来越广、软件对于人类生活和现实世界的渗透力越来越强,呈现出泛在化的趋势;在时间维度上,随着应用上下文环境及用户需求的变化不断适应和演化,软件呈现出持续成长的趋势。与之相应地,软件的范型进一步向网构化以及数据驱动的方向发展。
|
||||
% \subsubsubsection{软件应用的泛在化}
|
||||
% 计算和信息处理早已通过各种移动设备、嵌入式设备以及各种传感器渗透到了我们日常生活的方方面面,并通过各种通信技术实现了广泛的设备互连和信息互通。各种软件应用以嵌入式的方式实现预定义的信息处理和通信功能。
|
||||
%
|
||||
|
@ -322,18 +324,18 @@
|
|||
%在软件定义一切以及人机物融合的发展背景下产生的软件应用的泛在化和持续成长的
|
||||
这一软件形态的发展趋势对于软件学科的内涵发展将产生多个方面的影响。
|
||||
|
||||
首先,“软件定义+计算思维”将成为每个人解决现实问题、满足自身需求的新范式。未来的人类社会及日常生活的方方面面都将以软件定义的人机物融合应用的方式来实现。实现用户需求的应用软件将越来越多地以最终用户编程的方式面向应用场景按需构造。因此,最终用户必须具备基于计算思维的问题解决方案规划和构造能力。同时,这也要求我们为支持人机物融合的泛在服务软件提供通用的编程抽象(包括编程模型和语言),支持这种最终用户编程。
|
||||
首先,“软件定义+计算思维”将成为每个人解决现实问题、满足自身需求的新范式。未来的人类社会及日常生活的方方面面都将以软件定义的人机物融合应用的方式来实现。实现用户需求的应用软件将越来越多地以最终用户编程的方式面向应用场景按需构造。同时,这也要求我们为支持人机物融合的泛在服务软件提供通用的编程抽象(包括编程模型和语言),支持这种最终用户编程。
|
||||
|
||||
其次,适应泛在化、专用化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。针对通用目的开发的软件需要不依附于硬件的长期生长演化能力,并具备面向不同专用硬件和平台的高效定制和裁剪能力。
|
||||
其次,适应泛在而专用化甚至变化的计算设备和运行平台成为软件的普遍要求。大量的应用软件将从通用的硬件和平台迁移到专用的硬件和平台上,需要新的方法和工具支持来实现大范围的软件迁移和优化。软件平台需要具有预测和管理未来硬件资源变化的能力,能适应硬件、底层资源和平台的变化,乃至能相对独立地长期生存演化。
|
||||
|
||||
再次,内生的持续成长能力将成为软件的基本能力。除了自适应能力外,软件将越来越多地具备支持自演化的持续生长能力。这种持续生长意味着通过各种智能化算法调整软件的算法和策略从而实现优化运行,而且还意味着软件通过各种生成以及合成能力不断增强自身的能力。因此,未来软件定义中功能与数据的界限将进一步模糊,越来越多的功能将通过数据驱动(代码也可以看作一种数据)的方式进行表示,并实现自演化和自生长。
|
||||
再次,内生的持续成长能力将成为软件的基本能力。除了自适应能力外,软件将越来越多地具备支持自演化的持续生长能力。这种持续生长不仅意味着通过各种智能化方法调整软件的算法和策略从而实现优化运行,而且还意味着软件通过各种生成以及合成能力不断增强自身的能力。因此,未来软件定义中功能与数据的界限将进一步模糊,越来越多的功能将通过数据驱动的方式进行设计,并实现自演化和自生长。
|
||||
|
||||
最后,软件与人将在不断汇聚的群体智慧中实现融合发展。软件的覆盖面越来越广、渗透性越来越强,最终用户对于软件的依赖也越来越强。由此,软件所能获得的关于用户行为和反馈的数据越来越全面和丰富,并在此基础上形成越来越强的群体智慧。这种群体智慧注入软件后又将服务于每个最终用户,使得他们能够在各种应用场景中以更加智能化和个性化的方式满足自身的需求,从而使得软件在使用中越来越有“灵性”和“人性”。未来的软件学科及相关研究需要摒弃“人”与“软件”二元分离的思维定式,更加自觉地考虑人机共融,不仅考虑“人因”,更要考虑“群智”。
|
||||
最后,软件与人将在不断汇聚的群体智能中实现融合发展。软件的覆盖面越来越广,软件所能获得的关于用户行为和反馈的数据越来越全面和丰富,并在此基础上形成越来越强的群体智能。这种群体智能注入软件后又将服务于每个最终用户,使得他们能够在各种应用场景中以更加智能化和个性化的方式满足自身的需求,从而使得软件在使用中越来越有``灵性''和``人性''。%未来的软件研究需要更加自觉的考虑人机共融,不仅考虑``人因'',更要考虑``群智''。
|
||||
%
|
||||
|
||||
\subsubsection{价值观}
|
||||
软件在整个系统中角色定位日益从负责应用过程中的信息处理环节转变为实现应用价值的主要载体。
|
||||
这就要求对软件质量的理解从以软件制品为中心的传统质量观转变为以人为中心的价值观。
|
||||
这就要求对软件质量的理解从以软件制品为中心的传统质量观拓展、转变到以人为中心的价值观。
|
||||
传统的软件质量观下,人们主要关注软件制品的正确性、高效性、易用性等外部质量属性和易维护性、易移植性等内部质量属性。这些质量属性一般是客观的。
|
||||
软件的价值观是建立在传统的软件制品质量属性基础上,强调用户体验,强调软件系统的应用对人类价值的实现。软件通过一系列价值要素体现了主观的人类价值。
|
||||
除了可以用经济价值衡量的软件质量以外,尤其需要强调软件的可信性、安全性、
|
||||
|
@ -356,22 +358,19 @@
|
|||
|
||||
%软件作为信息化社会的的基础设施,其可信性对于整个社会系统至关重要。
|
||||
%软件系统的可信性,要求在软件开发、运行、维护、使用等过程采取有效的措施和方法确认其满足人们的普遍要求和期望,它体现了新时代软件的价值取向。
|
||||
软件系统的可信性,包括软件本身可信和行为可信两个方面。
|
||||
软件本身可信,指的是软件身份可信和能力可信,即:软件开发过程提供可信证据(如内部质量和外部质量)进行自证。
|
||||
软件行为可信,指的是软件行为可追踪记录、不可更改,即:软件运行过程提供监控以控制其对周遭的影响,使得包含该软件在内的整个系统的对外表现符合用户要求。
|
||||
软件形式日趋多样,加剧了软件可信面临的挑战。
|
||||
软件系统的可信性包括软件本身可信和行为可信两个方面。软件本身可信,指的是软件的身份和能力可信,即:软件开发过程提供可信证据(如关于软件质量的过程记录和评审、测试结果等),对软件及其组成成分的来源和质量进行自证;软件行为可信,指的是软件运行时行为可追踪且记录不可篡改,即:通过监控软件运行过程并控制其对周围环境的影响,使得包含该软件在内的整个系统的对外表现符合用户要求。软件形态日趋多样,自身以及运行环境的复杂性越来越高,加剧了软件可信面临的挑战。
|
||||
%
|
||||
% (2)安全性
|
||||
%
|
||||
|
||||
% 安全性要求软件为人类活动和生存环境提供必要的安全保障,包括系统安全(Safety)和信息安全(Security)。系统安全是指能及时有效地避免给人员、设施、环境、经济等造成严重损害,信息安全是指能有效防控各类信息的非法获取、传播和使用。
|
||||
安全性,既包括了功能安全,也包括了信息安全。功能安全是指避免给人员、设施、环境、经济等造成严重损失。其安全性设计通过主动冗余、失效安全等机制,降低系统失效导致灾难性后果的概率。信息安全性防护防止信息以及系统软硬件设施被非法获取、传播和使用。
|
||||
%软件信息安全保障失效的后果之一就是系统安全故障,因此,本书将两种安全性合二为一,统称为安全性(Safety\&Security)。传统软件质量观将安全视作系统质量的一部分,强调软件个体的安全性。随着人机物融合,软件系统已融入人类社会,并与人类无缝交互。换言之,泛在计算平台上软件与软件、软件与人的交互无处不在,软件个体可影响整个泛在网络计算平台的行为;软件个体的漏洞等故障很容易扩散(传播)。
|
||||
软件作为基础设施,描述并掌控了很多关键领域的资源,其安全性威胁会给整个系统带来致命的威胁。因此,安全性这一质量属性随着软件成为基础设施的趋势而变得愈发重要。
|
||||
|
||||
%
|
||||
% (4)持续性
|
||||
%
|
||||
软件系统的安全性要求其为人类活动和生存环境提供必要的安全保障,包括功能安全(Safety)和信息安全(Security)。功能安全是指能及时有效地避免给人员、设施、环境、经济等造成严重损害,信息安全是指系统保护自身免于入侵及信息的非法获取、使用和篡改,具体包括机密性、完整性和可用性三方面。
|
||||
%本书将两种安全性合二为一,统称为安全性(Safety \& Security)。传统软件质量观将安全视作系统质量的一部分,强调确定边界之内的系统安全性。
|
||||
在人机物融合的趋势下,%软件已经广泛并深入渗透到人类社会生活的方方面面,与人形成了密切的交互关系。换言之,泛在计算平台上软件与软件、软件与人的交互无处不在,软件个体可影响整个泛在网络计算平台的行为;软件个体的漏洞等故障很容易扩散(传播)。这些也导致了信息安全问题很容易转化为防危安全问题。
|
||||
软件作为基础设施,参与并掌控了很多关键领域的资源,其安全性威胁会给整个系统甚至人类社会带来致命的威胁。因此,安全性随着软件成为基础设施的现状变得愈发重要。
|
||||
|
||||
|
||||
|
||||
|
||||
%软件系统成为支撑社会经济运行的基础设施,需具有持续提供服务的能力。
|
||||
% 软件系统提供服务的持续性(sustainability),指的是在持续不间断运行、维护和发展过程中,面对各种突发异常事件,仍能提供令人满意的服务的能力。
|
||||
|
@ -382,12 +381,16 @@
|
|||
%
|
||||
|
||||
%作为人类价值载体,软件行为体现了人类价值观;由于软件无迹可寻,导致人类价值观又通过软件影响人类社会。因此,
|
||||
软件系统的行为应符合社会道德标准,不对个人和社会产生负面结果,这种规范称为软件系统的伦理观。社会道德定义了一定时间区域内人们行为规范,可具体表现为无歧视、尊重隐私、公平公正等,并最终在软件系统的具体行为中体现。因此,软件系统的伦理观,体现于软件行为的上述方面,并需要通过软件开发和运行的诸多机制进行支持。
|
||||
|
||||
软件系统的伦理是指系统的行为应符合社会道德标准,不会对个人和社会产生负面结果。社会道德定义了一定时间区域内人们行为规范,可具体表现为无歧视、尊重隐私、公平公正等,并最终体现于软件系统的具体行为。因此,软件系统的伦理,也体现于软件行为的上述方面,并需要通过软件开发和运行的诸多机制进行支持。
|
||||
|
||||
|
||||
%
|
||||
% (4)持续性
|
||||
%
|
||||
|
||||
%软件支撑的基础设施服务,为满足各类应用快速增长、新技术不断涌现的需求,需要具有开放扩展能力,即能集成各种异构的技术及系统,支持各类软件制品的即时加载/卸载,对内部状态及外部环境变化的感应、自主响应以及调控机制,以及个性化服务的定制等。显然,这种开放体系架构常常引入系统设计的脆弱性和质量隐患,从而给持续提供服务带来挑战。
|
||||
|
||||
软件系统成为支撑社会经济运行的基础设施,需具有持续提供服务的能力。软件系统提供服务的可持续性(Sustainability),指的是在持续不间断运行、维护和发展过程中,面对各种突发异常事件,仍能提供令人满意的服务的能力。软件支撑的基础设施服务,为满足各类应用快速增长、新技术不断涌现的需求,需要具有开放扩展能力,即能集成各种异构的技术及系统,支持各类软件制品的即时加载/卸载,对内部状态及外部环境变化的感应、自主响应以及调控机制,以及个性化服务的定制等。
|
||||
软件系统的可持续性(Sustainability),指的是在持续不间断运行、维护和发展过程中,面对各种突发异常事件,仍能提供令人满意的服务的能力。这是软件作为信息社会基础设施的必然要求。同时,为满足各类应用快速增长、新技术不断涌现的需求,软件系统需要具有开放扩展能力,即能集成各种异构的技术及子系统,支持各类软件制品的即时加载/卸载,对内部状态及外部环境变化的感应、自主响应以及调控机制,以及个性化服务的定制等。
|
||||
|
||||
% \subsubsubsection{价值观下,软件方法学的关键科学问题}
|
||||
% 软件价值观强化了可信性、安全性、持续性等具有新时代特色的价值要素,这些价值要素与软件开发运行维护过程的交融将经历一个长期的阶段,其带来的关键科学问题在于四个方面:
|
||||
|
@ -411,7 +414,7 @@
|
|||
%
|
||||
|
||||
\subsubsection{生态观}
|
||||
软件的开发、维护、运行及使用所涉及的三大类元素(包括软件涉众、软件制品和软件设施)彼此交互、互相依赖,逐渐形成复杂生态系统,需要用生态化的观点去理解和研究。
|
||||
软件的开发、维护和应用所涉及的三大类元素,包括软件涉众(开发者、用户及企业和组织等),软件制品,以及软件设施(支持软件活动的软件设施),彼此交互、互相依赖,逐渐形成复杂生态系统,需要用生态化的观点去理解和研究。
|
||||
%生态化是软件的强大渗透力的必然结果:一方面软件活动延伸到了个体、群体和社会;另一方面软件所涉及的各种元素之间存在越来越多的依赖性、相关性和相互作用。
|
||||
% \subsubsection{软件生态系统}
|
||||
% “人-机-物”三元融合的新型应用模式涉及到广大社会群体,涉及面广,分工精细,不仅需要术业专攻的各种企业和个体参与,也使得它们可以根据其本身特点和业务诉求参与到开发、应用及其支撑的各个环节,从而形成联合生态。
|
||||
|
@ -422,60 +425,36 @@
|
|||
生态系统可以从下述维度来刻画。
|
||||
%
|
||||
|
||||
首先,多元素交互是软件生态系统的最典型特征,而且交互的元素具有深刻的社会性。元素关系主要体现为协作、竞争和混合并保持生态的平衡。系统中要素关系之间的平衡是秩序之本,非平衡是运动变化之源。
|
||||
首先,多元素交互是软件生态系统的最典型特征,而且交互的元素具有深刻的社会性(例如核心参与者---开发者和用户---都是社会体)。元素关系主要体现为协作、竞争和混合并以生态平衡为目标。系统中要素关系(对立、独立或互补)之间的平衡是秩序之本,非平衡是运动变化之源。
|
||||
|
||||
|
||||
其次,生态系统的关键元素是软件涉众、软件制品和软件设施,三者互相融合、依赖和影响。涉众之间、制品之间、设施之间存在各种依赖,网状的依赖形成各种供应链,而涉众、制品和设施之间因为彼此依存也存在各种影响。生态的要义在于供应链的形成和各种影响的相互作用需要抵达平衡。
|
||||
其次,生态系统的关键元素是软件涉众、制品和基础设施,三者互相融合、依赖和影响。涉众之间、制品之间、基础设施之间存在各种依赖,网状的依赖形成各种供应链,而涉众、制品和基础设施之间因为彼此依存也存在各种影响。生态的要义在于供应链的形成和各种影响的相互作用需要抵达平衡。
|
||||
|
||||
第三,生态系统是由人类智能和机器智能交互并融合而实现的。人类智能体现为分布在全球的开发者和用户;机器智能体现为支撑分布式开发和使用的软件工具与基础设施,支持人们更好地协作、开发和无处不在的使用,并且在开发和使用活动中不断迭代增强。通过众多的个体认知的汇聚,以及商业和宏观调控角度的战略调控,人类智能和机器智能相互协作、补充,并向群体混合智能方向发展。
|
||||
%生态系统是由群体智能和计算机智能交互并融合而实现的。群体智能体现为分布在全球的开发者和用户,计算机智能体现为支撑分布式开发和使用的工具和基础设施(计算机辅助支持和人机交互)。群体智能(体现了众多的个体认知的汇聚,并涵盖商业智能和宏观调控的战略智能等)通过计算机智能凝炼为代码和产品,计算机智能支持人们更好地协作、开发和无处不在的使用,并且在开发和使用活动中不断迭代增强。
|
||||
|
||||
|
||||
% \subsubsection{生态观下的软件学科的关键科学问题}
|
||||
软件从过去的个体作坊开发,到不同组织内或组织间人员混合参与的组织式开发,发展到了数以万计互相依赖的软件或项目形成的供应链和庞大的生态系统。其转变给软件开发带来了前所未有的创新水平。同时,规模指数级增长的软件或项目及其之间庞杂的依赖关系使得软件供应链的复杂度激增,进而给软件开发和使用及市场带来诸多挑战,包括:大规模代码和项目的供应链行为如何理解和利用?面临高昂的学习成本,个体开发者如何学习并加入复杂项目和生态?复杂生态中群体如何协作,协作行为如何发展?产业生态如何形成,如何实现可持续发展?等等。
|
||||
%
|
||||
软件从过去的个体作坊开发,到不同组织内或组织间人员混合参与的组织化开发,再发展到数以万计互相依赖的软件形成的供应链和庞大的生态系统下的社会化开发。其转变给软件开发带来了前所未有的创新可能。
|
||||
%同时,规模指数级增长的项目及其之间庞杂的依赖关系使得供应链复杂度激增,进而给软件开发、运行和使用及市场带来诸多挑战。
|
||||
相应地,生态观对软件方法学带来显著的变化。软件和软件学科需要从以往关注个体软件的构建和运维转变到关注有广泛社会参与的软件体系的构建、运维和成长,以及软件生态的平衡和可持续发展。同时软件学科跟其他学科的交叉性将更为凸显,社会学、经济学、组织学、生物学等学科的理论和发现可被用来研究海量软件活动数据隐含的软件生态网络,其发现反过来对其他学科的发展也将很有裨益。
|
||||
|
||||
% 第一,个体开发者学习成本进一步增大。
|
||||
%首先因为软件之间广泛存在的依赖关系使得掌握一个新的软件需要学习别的软件。例如,对某个软件进行调试需要学习的相关软件依赖包可能会很多。其次,复杂依赖关系带来了新的问题,涉及更多的学习内容。例如,不同开源项目遵循相应许可证(License)的约束,并且不同许可证之间存在兼容问题,这就要求开发者在借鉴开源代码时需要了解对应的许可证。这其中的关键科学问题是:
|
||||
% 个体开发者如何学习并加入复杂项目和生态?
|
||||
%
|
||||
|
||||
% 第二,群体协作更加复杂。%首先群体元素更为多样,其次不同元素围绕生态中的各种软件活动存在错综复杂的协作关系,最后协作行为并非恒定而是不断发展和演化的。例如供应链上的软件项目互相依赖,开发者需要跨越多个项目去实现目标功能,开发者之间的协作不再拘泥于单个项目。例如具有不同商业目标的公司需要各司其职,互补有无,还需要跟竞争对手建立协作,在商业利益和群体目标之间实现平衡。已有的群体协作机制大多聚焦对单个项目的支持,互相依赖的项目之间因缺少有效的信息沟通与集成机制使得群体协调的复杂度增大。总之,这其中的关键科学问题是:复杂生态中群体如何协作,协作行为如何发展?
|
||||
%
|
||||
% 第三,生态可持续性受到的威胁持续增加。软件供应链上的节点是组成生态的关键元素,它们互相依赖互相影响。一个软件的漏洞有可能使得其他依赖该软件的项目面临同样的危机。例如,影响昭著的Heartbleed漏洞所涉及的OpenSSL项目中的两个文件至少存在于其他六千多个开源项目中。各大企业因为软件供应链的存在对软件溯源(即追踪代码问题的来源)有很大的需求,投资也是可观的。然而软件供应链上节点间的依赖关系隐藏在开发活动数据中,看不见摸不着但广泛存在,这就使得软件生态的可持续受到更多潜在威胁。而生态的形成和可持续发展影响到软件甚至信息产业的革新和发展。这方面的关键科学问题是:大规模代码和项目的供应链行为如何理解?产业生态如何形成,如何实现可持续发展?
|
||||
%
|
||||
|
||||
% 总之,尽管有数千万个软件和项目及超过一千亿的源代码文件,但人们对软件生态中供应链的形成和发展,及其可能带来的风险和挑战却知之甚少。随着软件生态系统的快速延展,各类供应链关系逐步显现,如开发供应、技术供应、以及产销供应等。供应链中数以千万计的个体开发者、软件项目、公司等围绕软件形成复杂生态的各种活动数据都被软件支持工具记录下来,可以方便的获取,这为公众或者企业自己更好地理解生态的形成和发展,以降低或消除上述生态中的依赖风险、识别其他可能存在的风险提供了一种很好的方法。利用社会学理论对海量数据可视化出来的软件供应链网络进行分析,可以允许我们从个体学习、群体协作、以及生态持续的角度去识别评估风险,进而地更好保障软件生态的可持续发展。
|
||||
%
|
||||
% 综上,生态观对软件方法学带来显著的变化和跨越,软件学科跟其他学科的交叉性将更为凸显。软件和软件学科需要从以往关注个体软件的构建和运维转变到关注有广泛社会参与的软件体系的构建、运维和成长,以及软件生态的平衡和可持续发展。
|
||||
%
|
||||
%
|
||||
%
|
||||
|
||||
\subsection{学科研究的主要问题}
|
||||
|
||||
软件学科的学科内容主要涵盖软件语言与软件理论、软件开发方法、软件运行支撑、软件度量和质量评估四方面的内容,而软件范型贯穿其间,使之相互配合形成方法论意义上的有机整体。软件范型的变化将牵引软件技术体系的变化。而上述系统观、形态观、价值观和生态观的新视角将引起软件范型的变化,并辐射到软件开发、运行和度量各个层面方法和技术的变革,进而对软件的整体生态与教育方面产生深刻的影响。
|
||||
|
||||
软件语言与软件理论方面将着力解决适应人机物融合新软件范型的抽象建立这一基础性问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,特别是需要应对大规模的数据与计算的算法理论,以及在异构多态的新硬件架构和量子计算等新计算平台下的程序理论等等。与软件理论紧密相关,软件语言应重点研究领域和应用问题表达和求解的新抽象,加强大数据时代语言对数据处理的支持,以及开发人机物融合的泛在混成系统的编译技术,在领域特定语言和语言工程、多范式程序设计范式融合、软件语言和实现的内生安全等方面奠定软件定义的形态基础。
|
||||
软件理论和软件语言方面将着力解决如何建立适应人机物融合的软件范型基础这一基本问题。软件理论的核心是从复杂系统的角度来建立构建正确、高效、可靠、安全软件系统的理论和算法基础,\wang{拓展可计算理论传统研究的内容范围,特别是需要应对网络环境下日益增长的大数据与持续计算的算法与计算复杂性理论,以及在新的硬件架构(异构多态)和计算平台(量子计算平台)下的计算理论和程序理论等等}。与软件理论紧密相关,软件语言\wang{将重点研究泛在计算各种抽象,构建领域特定的程序设计语言,探索语言演化和生长机制、以及基于“语言工程”的软件设计方法和支撑环境,共同奠定软件范型发展的理论和语言基础}。
|
||||
|
||||
软件构造方法将面向人机物融合场景的“软件定义”,软件需要在万物互联的平台上开发、运行、并持续演进地提供服务,具有自主性、协同性、演化性、情境性、涌现性和可信性等诸多特性。这在软件构造的技术方法和组织模式上均需要新方法和技术,包括:复杂场景分析与建模、软件自适应与自成长、基于人机协作的群智化软件开发、数据驱动的软件自动化、安全可信高度智能的开发运维一体化等。
|
||||
软件构造方法将\wang{研究人机物融合场景下的软件开发范型和技术体系,也即研究面向应用场景需求、如何“软件定义”人机物融合的“场景计算机”。
|
||||
%它要在万物互联的平台上持续演进地面向场景提供服务,具有自主性、协同性、演化性、情境性、涌现性和可信性等诸多特性。
|
||||
面向高效、高质量、低成本的目标,软件构造的技术方法和组织模式上需要应对复杂场景分析与建模、群智开发、人机协作编程、开发运维一体化等以一系列挑战,亟待新方法和技术的发展。}
|
||||
|
||||
软件运行支撑需要满足软件作为社会基础设施的规模、效能、持续、演进等诸多关键需求,并适应人机物融合的各类资源和应用场景的管理和实现。这将集中反映在未来的泛在操作系统与运行平台方面,需研究支持软件定义的新型运行平台架构、泛在资源的高效虚拟化和灵活调度、复杂软件系统持续适应演化的共性支撑、人机物融合过程中的安全与隐私保护等关键问题。
|
||||
软件运行支撑\wang{将向支撑人机物融合、具有“资源虚拟化”和“功能可编程”特点的泛化运行平台发展,需要满足作为社会基础设施在规模、适应、演化、安全、效能等方面的诸多严格要求。未来的泛在操作系统与运行平台,需在软件定义的新型运行平台架构、泛在资源的高效虚拟化和调度方法、软件系统持续适应演化的支撑机制、人机物融合过程中的安全与隐私保护等关键问题上有突破。}
|
||||
|
||||
软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面。未来的重要变化是在复杂系统和软件生态层面的科学观察,用以指导软件开发和运行技术层面的持续创新。以各类软件大数据为核心的度量抽象将揭示
|
||||
软件生态如何形成、如何可持续发展的基本规律,进而理解并驾驭大规模代码和项目的供应链行为、支持个体学习并加入复杂项目和生态,改进复杂生态中群体的协作。数据驱动和规则驱动将在软件质量与安全保障上发挥重要的作用。
|
||||
软件度量和质量评估是软件学科的科学观察、工程构造相交融的重要方面,\wang{其未来的重要变化是在复杂系统和软件生态层面的科学观察,并以此为基础推进软件开发和运行层面的持续发展。一方面,将通过有效的度量和分析,理解和利用大规模代码和项目的供应链行为,研究个体学习和群体协作,并探索软件生态的形成和可持续机制机理等。另一方面,在软件成为信息社会的基础设施后,软件质量评估和保障的需求不断增长、更为突出。以应用场景的价值牵引,带动软件质量和确保技术的发展成为重要趋势,未来突破的重点将在数据驱动的智能系统质量保障、 人机物融合场景下的系统可信增强、大规模复杂系统安全缺陷检测、物联网环境下的系统安全保障等方面。}
|
||||
|
||||
“数据为中心”是人机物融合时代的最为突出的特征,数据工程和数据管理是未来软件构造和运行支撑的共性沉淀。在数据工程方面,需要应对异构数据整理、数据分析和数据安全与隐私保护等挑战。在数据管理方面,需研究如何管理大数据、特别是如何利用新硬件混合架构来实现大数据的管理。
|
||||
|
||||
在软件成为基础设施的时代,%软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局,
|
||||
应用软件系统日益以面向领域的人机物融合的场景计算为主要呈现形式。
|
||||
%这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在不同的应用领域,
|
||||
面对系统边界的可伸缩性、系统成分的异构性和系统模型的混成性,需研究各领域的环境建模及其软件定义方法、模型驱动场景感知和认知、异构资源的统一表示和封装、系统学习赋能机制及性能确保、异构模型的融合和验证以及空间分布系统的的时空一致性等关键技术问题。
|
||||
%,在共性方法上发展领域特定方法,并反馈、沉淀于共性方法。
|
||||
当前智慧城市、无人自治系统、以及软件定义卫星等新兴应用领域为此方面的研究提供了大场景。
|
||||
软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。\wang{在人机物融合及软件定义一切的大背景下,以卫星、流程工业控制、智慧城市、无人自主系统等为代表的重大领域都蕴含着平台再造与整合的发展机遇,即以软件作为万能集成器对相关系统原有的软硬件和服务资源进行解构然后以平台化的方式进行重构,从而建立软件定义的融合发展平台。此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。}
|
||||
|
||||
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。软件教育需要适应“软件定义一切”普及教育的需求,还要在顺应人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育上有新发展。
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。\wang{软件教育需要构建包括顺应``软件定义一切''发展趋势的通识教育、针对人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的完整体系,并建设发展相应的教育理念、方法和伦理。}
|
||||
|
||||
%在此软件学科发展的新阶段,可以上述系统观、形态观、价值观和生态观的新视角,展望本学科的主要挑战和研究问题:
|
||||
%\begin{itemize}
|
||||
|
@ -499,54 +478,54 @@
|
|||
|
||||
我们比任何时候都需要更加重视软件学科建设,牢固确立软件学科的优先发展地位,准确把握新时代软件学科的发展方向。建议从加强软件基础前沿研究、升级软件高等教育体系和构建软件产业良性发展环境等维度规划我国的软件学科发展战略。
|
||||
|
||||
|
||||
|
||||
\subsection{加强软件基础前沿研究}
|
||||
|
||||
|
||||
新时代软件学科面对的软件是人机物融合、泛在、可演化的复杂系统,这样的系统已经超出传统软件学科关注的以计算机为中心的软件范畴;为此加强软件基础前沿研究是现实而紧迫的。
|
||||
|
||||
\begin{enumerate}
|
||||
\begin{enumerate}
|
||||
\item \textbf{加强面向人机物融合泛在计算模式的软件理论研究。} 新时代软件系统是持续演化、人机物融合、泛在的开放复杂系统。以互联网(物联网)上大量涌现的人机物融合的智能云服务系统为例,软件系统需要处理持续增长的网络大数据,融合离散计算与连续的物理空间,服务行为具有不确定性和持续演化性。此类软件系统已经超出了当前算法和程序理论的研究范畴。需要借鉴复杂系统思想、理论和方法,拓展与控制理论的交叉,研究开放的新型软件理论,为新时代软件学科提供理论支持。
|
||||
%
|
||||
%
|
||||
\item \textbf{加强面向泛在计算的程序设计语言及其支撑环境研究。} 随着计算向各个领域的渗透,降低普通用户学习门槛成为面向泛在计算的程序设计语言关注的重点。需要结合各个行业领域的软件定义需求,以领域特定的程序设计语言设计原理和高效实现为目标,研究面向领域应用的新型程序设计语言理论、程序设计语言的演化和互操作性机理、程序设计语言的支撑环境和工具链等,提供共性和个性兼顾的编程支撑。
|
||||
%
|
||||
%
|
||||
\item \textbf{布局基于软件定义方法的泛在操作系统原理和技术研究。} 需要研究以``连接协调''为核心的新型软件体系结构下泛在操作系统模型和机理、各类新型异构资源的抽象机制及其虚拟化技术、应用需求导向的按需高效资源调度、内生可信安全机制等,以及研究如何充分发挥泛在操作系统的``元层''共性基础支撑作用,有效驱动和实现``信息-物理-社会''空间的协同持续演化。
|
||||
%
|
||||
%
|
||||
\item \textbf{探索以数据为中心的新型应用开发运行模式及其平台支撑。} 随着大数据应用的繁荣和数据作为主要资产定位的确立,围绕数据部署应用将成为一种主要的应用模式。需要研究异构海量数据的抽象和建模、多元(源)数据资源的互操作和调度管理技术及平台、以多元(源)数据为中心的应用快速开发和高效运行技术、以及相应的数据安全和隐私保护技术等。
|
||||
%
|
||||
%
|
||||
\item \textbf{加强对大规模代码和项目的供应链和生态行为研究。} 开源、众包等软件开发社区模式已成为传统组织型软件开发模式之外的重要模式。需要以刻画和分析复杂的软件供应链模型为基础,研究个体如何高效认知复杂项目和生态、群体如何高效高质地协作完成各类软件开发相关的任务、软件涉众如何围绕软件构建可持续性演化的生态系统等。基于互联网群体智能的软件开发方法和支撑平台研究、基于软件工程大数据的软件自动化方法和技术研究、以及软件知识产权的甄别和保护技术也是值得关注的重点。
|
||||
%
|
||||
\item \textbf{重视软件技术研究和应用的价值取向和管理。} 鉴于软件的基础设施化的发展趋势,需要加强复杂人机物融合系统安全可靠确保、机器学习赋能软件的质量评估和风险防控等,同步发展软件确保工具环境、软件基础设施以及软件生态治理。需要推进以人为中心的软件价值观研究和规范,研究各种社会因素带来的超越软件使用质量的新型软件价值及其约束和规范、可能风险的防护和提示机制等,软件技术及其应用的伦理研究也应受到关注。
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
|
||||
\subsection{升级完善软件学科高等教育体系}
|
||||
|
||||
|
||||
软件不仅成为社会经济活动的基础设施,还将重塑人们的思维模式。在现代高等教育体系中,软件教育不仅仅是面向软件专门人才的专业教育,还应该成为覆盖全体大学生的通识教育。
|
||||
|
||||
\begin{enumerate}
|
||||
\begin{enumerate}
|
||||
\item \textbf{布局面向全体大学生的软件通识教育。} 要通过以``算法抽象+编程思维''为核心的认知教育,帮助学生形成用算法和编程理解数字空间的认知能力;通过以``语言案例+编程案例''为核心的实践案例教育,帮助学生形成自主学习编程工具、解决现实计算问题的实践能力。要使大学软件通识教育与中小学的计算机基础教育相衔接;与当下大学开设的``大学计算机基础''通识课程融合衔接;还要与大学各类专业教育和未来终身学习相衔接。
|
||||
%
|
||||
%
|
||||
\item \textbf{重构软件学科专业人才培养体系。} 需将以计算机为核心的软件学科知识体系拓展为以网络为平台的软件学科知识体系,系统能力培养标准也要由计算机空间拓展到网络空间,建立与软件新``四观''相适应的高层次研究型专门人才培养方法,强化解决以网络为平台的复杂系统问题的能力,造就勇于开拓新时代软件学科``无人区''的探索者,为中国引领新时代软件学科发展培养领军人才。
|
||||
%
|
||||
%
|
||||
\item \textbf{开展面向其他学科专业的软件工程教育。} 为适应``软件定义一切''的时代特点,结合各行业领域信息化转型发展需求,需构建面向其他学科专业的软件工程课程体系,实现复合型、创新型和跨界人才培养,有效提升行业领域应用专门人才与软件专业人才合作开发复杂应用软件的能力,为各行业领域提供高端软件开发人才,提高基于计算机和网络开发仿真、设计、分析、制造、测试等工具软件的能力和水平。
|
||||
%
|
||||
%
|
||||
\item \textbf{构建并开放软件教育支撑平台。} 要把握软件学科实践性的特点,坚持以泛在化的计算机和网络为支撑工具,支持软件人才实践能力培养,研发支持软件人才培养的支撑软件和大规模开放在线课程(Massive Open Online Course,MOOC),与开源软件资源以及开源软件开发部署云平台对接,构建开放共享的软件开发、部署、维护、升级和演化的实训平台,推广大规模开放在线实践(Massive Open Online Practice,MOOP)教学,对接软件产业环境,形成支撑大学教育和终身教育的开放平台。
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
\subsection{构建软件产业良性发展环境}
|
||||
在软件定义一切、成为经济社会基础设施的时代背景下,强大的软件产业需要强大的软件学科支撑,同时也提供了软件学科发展的沃土。需要把握住新时代软件带来的颠覆式发展机遇期,实现创新发展和跨越发展。
|
||||
|
||||
\subsection{构建软件产业良性发展环境}
|
||||
在软件定义一切、成为经济社会基础设施的时代背景下,强大的软件产业需要强大的软件学科支撑,同时也提供了软件学科发展的沃土。需要把握住新时代软件带来的颠覆式发展机遇期,实现创新发展和跨越发展。
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{完善知识产权保护。} 需加强软件知识产权保护的宣传,加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施研究以及法规制定,完善健全软件知识产权保护体系并建立严格的实施机制,切实保护软件技术和应用创新,促进我国软件产业的技术升级。
|
||||
\item \textbf{完善知识产权保护。} 需加强软件知识产权保护的宣传,加强各个领域、各种形态、各种应用场景下的软件技术知识产权保护方法和措施研究以及法规制定,完善健全软件知识产权保护体系并建立严格的实施机制,切实保护软件技术和应用创新,促进我国软件产业的技术升级。
|
||||
%
|
||||
\item \textbf{布局新基础设施建设。} 结合数字中国建设和数字经济发展新需求,打造新一代信息技术主导的社会经济活动的新型基础设施,如5G通信网、物联网、人工智能开放平台和大型数据中心等。同时,加快推动传统物理基础设施的软件定义改造和升级,如电力传输网、交通路网等。以此为基础,面向传统行业领域数字化转型、网络化重构和智能化提升的迫切需求,大力推进软件定义方法在各行业的推广应用,推进工业互联网技术研发和平台构建,按需打造各行业特定的泛在操作系统。
|
||||
%
|
||||
%
|
||||
\item \textbf{大力发展新型应用。} 需面向智慧城市、社会治理、敏捷物流、信息消费等重点领域,加强投入和引导,构建相应的大数据互操作平台和应用开发工具,支撑高附加值软件产品和服务的技术创新,培育人机物融合的新型应用。
|
||||
%
|
||||
%
|
||||
\item \textbf{积极培育开源生态。} 需培育基于开源模式的公益性生态环境建设,``参与融入''国际成熟开源社区,``蓄势引领''中文开源社区。探索开源生态下的新型商业模式,并以其为抓手提升我国在信息技术领域的核心竞争力和国际影响力,特别是通过中文开源平台的建设构建国家软件资产托管和共享体系。
|
||||
%
|
||||
\item \textbf{推进公共数据开放。} 需通过政策和法规制定,鼓励地理、气候、统计、环境、交通等政府数据和公共数据开放,构建基于互联网的大数据开放共享平台及开放的数据分析工具库,支持不同组织和个人开展数据汇聚、管理、分析和应用的大规模协作和高附加值的数据类软件产品和服务创新。
|
||||
%
|
||||
\item \textbf{推进公共数据开放。} 需通过政策和法规制定,鼓励地理、气候、统计、环境、交通等政府数据和公共数据开放,构建基于互联网的大数据开放共享平台及开放的数据分析工具库,支持不同组织和个人开展数据汇聚、管理、分析和应用的大规模协作和高附加值的数据类软件产品和服务创新。
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
|
|
|
@ -268,7 +268,6 @@ Sapir-Whorf语言相对论假设对语汇的重要性给出了一个表述~\cite
|
|||
\end{minipage}
|
||||
\end{figure}
|
||||
|
||||
\todo{左图中抽象请去掉}
|
||||
%软件范型重点解决软件是什么的问题,描述了软件的模型和模型构造、运行的基本理论,包括了计算理论、程序设计语言和程序理论。计算理论包括可计算性理论、算法理论等。可计算性理论回答什么能或不能在计算平台上求解,算法理论回答如何在计算平台上高效能行求解问题。程序设计语言和程序理论回答软件抽象是什么以及它们之间联系的问题。我们将软件范型的学科内容归入程序设计语言与理论。
|
||||
|
||||
%软件语言的核心任务是建立通用的抽象机制,包括抽象的表示和抽象之间的关系,为问题空间、解空间和平台空间建模。
|
||||
|
|
|
@ -210,7 +210,7 @@
|
|||
|
||||
软件学科的发展呈现了纵横交错的发展态势,即共性沉淀和领域牵引相辅相成的格局。这在人机物融合时代复杂多变的应用和开放平台上将更为显现。在已有共性方法上发展领域特定方法,并反馈并带动新型共性方法的发展,是学科发展的有效途径。\wang{在人机物融合及软件定义一切的大背景下,以卫星、流程工业控制、智慧城市、无人自主系统等为代表的重大领域都蕴含着平台再造与整合的发展机遇,即以软件作为万能集成器对相关系统原有的软硬件和服务资源进行解构然后以平台化的方式进行重构,从而建立软件定义的融合发展平台。此外,高性能 CAE 软件系统等专用工程软件也是软件学科的重要关注点。在支撑实现高端装备、重大工程和重要产品的计算分析、模拟仿真与优化设计等重大应用价值外,其高效能、高精度、高定制的需求亦将推动软件技术的发展。}
|
||||
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。\wang{软件教育需要适应“软件定义一切”\wang{通识教育}、顺应人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的需求,并教育理念、方法和伦理建设上有重要发展。}
|
||||
软件学科的发展离不开软件教育体系、内容、方法、手段的变革。\wang{软件教育需要构建包括顺应``软件定义一切''发展趋势的通识教育、针对人机物融合时代特点的专业教育、融合软件学科知识的其他学科专业教育和继续教育的完整体系,并建设发展相应的教育理念、方法和伦理。}
|
||||
|
||||
本部分余下各章将讨论学科内各个领域方向所面临的一些主要挑战问题。
|
||||
我们大胆预测,软件学科的未来发展将由这些问题上的突破和进展所塑造。
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue