update Ch1-1 and Ch2-6

This commit is contained in:
Xin Peng 2019-10-08 15:57:15 +08:00
parent cfecc5a502
commit 47d1a19191
3 changed files with 68 additions and 44 deletions

View File

@ -2,11 +2,13 @@
\section{引言}
软件\index{软件}是以计算为核心手段实现应用目标和价值的解决方案。从1966年首届图灵奖至2018年的53次颁奖中属于软件领域的有37次69.8\%其中以程序设计语言、编译和操作系统为主获奖的有22次获奖还有4次数据库获奖。作为本书第一部分的开篇本章将简要回顾软件和软件技术的发展历程通过梳理软件发展脉络总结软件学科的基本内涵、关键问题、研究方法和发展规律为第二部分学科发展战略提供基础。
软件\index{软件}是以计算为核心手段实现应用目标和价值的解决方案。软件科学是以软件为基本研究对象的人工科学或曰“人工物科学”Science of Arti-ficial软件工程则是基于软件科学原理进行软件开发的工程。软件学科或曰软件科学与工程是指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、原则、方法、技术所构成的学科。在方法论的意义上软件学科构成整个计算机学科的主体部分并与系统、控制以及经济、社会等相关学科交叉融合。从1966年首届图灵奖至2018年的53次颁奖中属于软件领域的有37次69.8\%其中以程序设计语言、编译和操作系统为主获奖的有22次获奖还有4次数据库获奖。作为本书第一部分的开篇本章将简要回顾软件和软件技术的发展历程通过梳理软件发展脉络总结软件学科的基本内涵、关键问题、研究方法和发展规律为第二部分学科发展战略提供基础。
\section{软件发展简史}
本节我们试图从 “编程”表达解决方案和 “抽象”实现复杂性控制两个基本视角简要回顾软件发展历史,为下节讨论软件学科发展基本规律提供背景。
\subsection{人力/机械计算时代}
计算是人类思维的基本形式之一。人类历史上最早的计算设备是中国算盘。到东汉年代,提花机(参见图\ref{fig:1-1}的设计中蕴含了用编程方式编织特定图案的思想类似的设备1805年欧洲出现了Jacquards Loom参见图\ref{fig:1-2}。1842年人类的第一位程序员Ada Lavelace为Babagge的分析机写了第一个程序功能是计算Bernoulli数参见图\ref{fig:1-3}\ref{fig:1-4})。可见早在机械计算时代,可编程的思想已经萌芽。
程式化的计算是人类思维的基本形式之一。如果我们广义地理解“计算”,软件的历史可以追溯到很久以前。人类历史上最早的计算设备是中国算盘,其算法口诀可视为一种程式化计算的规则。到东汉年代,提花机(参见图\ref{fig:1-1})的设计中蕴含了用编程方式编织特定图案的思想。类似的设备晚至1805年才在欧洲出现即所谓Jacquards Loom参见图\ref{fig:1-2}。1842年人类的第一位程序员Ada Lavelace为Babagge的分析机写了第一个程序功能是计算Bernoulli数参见图\ref{fig:1-3}\ref{fig:1-4})。可见早在机械计算时代,可编程的思想已经萌芽。
\begin{figure}[htbp]
\centering
@ -40,52 +42,68 @@
\end{figure}
Computer一词历史上出现在1613年用来指完成演算或计算的人员。这种说法一直到19世纪末后工业革命产生了主要目标是用来演算的机器为止\footnote{https://www.computerhope.com/issues/ch000984.htm}。著名的哈佛大学哈佛天文台在1877年至1919年期间雇佣了一批妇女作为处理天文数据的技术工人。在电子计算机出现之前的人力和机械计算时代Mathematic Tables项目是最大最复杂的计算项目组织这类项目的关键就是编程的基本思想。Gertrude Blanch女士作为“数学的导演”和“计算的经理”设计了人力计算团队执行的“算法”。这些算法和错误检测的设计思想作为超越函数的计算标准延续了数十年。逐渐地也出现了表达编程描述形式和记号例如1921年Lillian和Frank Gilbreth的过程图Process Charts参见图1-5与后来的程序流图十分类似又如1940年IBM的W.J. Eckert提出的打孔卡参见图1-6。我们可以看到计算和编程是紧密耦合的,而编程的结果事实上是给出了一种计算应用(数学计算)的解决方案,它可以有人力计算或机械计算完成。然而,在那个时代,还未形成通用计算和编程的思想。
Computer一词历史上出现在1613年用来指完成演算或计算的人员。这种说法一直到19世纪末后工业革命产生了主要目标是用来演算的机器为止\footnote{https://www.computerhope.com/issues/ch000984.htm}。著名的哈佛大学天文台在1877年至1919年期间雇佣了一批妇女作为处理天文数据的技术工人。在电子计算机出现之前的人力和机械计算时代Mathematic Tables项目是最大最复杂的计算项目组织这类项目的关键就是编程的基本思想。Gertrude Blanch女士作为“数学的导演”和“计算的经理”设计了人力计算团队执行的“算法”。这些算法和错误检测的设计思想作为超越函数的计算标准延续了数十年。逐渐地也出现了表达编程描述形式和记号例如1921年Lillian和Frank Gilbreth的过程图Process Charts参见图1-5与后来的程序流图十分类似又如1940年IBM的W.J. Eckert提出的打孔卡参见图1-6。我们可以看到计算和编程是紧密相关的,而编程的结果事实上是给出了一种计算应用(数学计算)的解决方案,它可以由人力计算或机械计算完成。然而,在人力/机械计算时代,还未形成通用计算和编程的思想。
\subsection{电子计算时代}
四十年代出现了电子计算机,计算机先驱们相继研制了Colossus1943、ENIAC1946、EDSAC1949和Mark I1949等计算机。EDSAC作为第一台存储程序结构的电子计算机打开了通用计算的时代。程序是通过一种微开关的形式加载到机器硬件上。到五十年代后才出现了用户和计算机之间的简单交互。Grace Hopper在1951年和1952年为UNIVAC I编写了A-0系统这是第一个电子计算机的编译器从今天的角度看A-0更像现代编译器概念的Loader或Linker无论怎样都是第一个系统软件。UNIVAC I的程序有一组子程序和参数序列组成。两年后,A-2系统成为了第一个开源软件。早期系统是驻留管理程序,它将程序从纸带或者穿孔卡上读到计算机中加载。这种技术直接形成了历史上第一个商用操作系统1956年IBM 704的操作系统。五十年代后人们开始意识到1936年提出的图灵机模型的理论意义图灵机成为计算机科学发展的理论基础。通用图灵机和通用计算使人们进一步认识到可编程是计算的基本属性人们通过编写程序使得计算机完成指定的任务。
上世纪四十年代出现了电子计算机。计算机先驱们相继研制了Colossus1943、ENIAC1946、EDSAC1949和Mark I1949等计算机。EDSAC作为第一台存储程序结构的电子计算机打开了通用计算的时代。此时的程序是通过一种微开关的形式加载到机器硬件上。到五十年代后才出现了用户和计算机之间的简单交互。Grace Hopper在1951年和1952年为UNIVAC I编写了A-0系统这是第一个电子计算机的编译器。从今天的角度看A-0更像现代编译器概念的Loader或Linker但可以认为是第一个系统软件。UNIVAC I的程序由一组子程序和参数序列组成。两年后,A-2系统成为了第一个开源软件。早期的驻留管理程序将程序从纸带或者穿孔卡上读入到计算机中进行加载,这种技术直接形成了历史上第一个商用操作系统,1956年推出的IBM 704的操作系统。五十年代后人们开始意识到1936年提出的图灵机模型的理论意义图灵机由此成为计算机科学发展的理论基础。通用图灵机和通用计算使人们进一步认识到可编程是计算的基本属性,人们通过编写程序使得计算机完成指定的任务。
\subsection{软件和软件工程的出现}
“软件”一词最早出现在1953年兰德公司R.R. Carhart的报告中用来说明讨论可靠性时与硬件相对应的“人因”。而人们现在一般认为“软件”的术语来自John W. Tukey在1958年的论文。文中指出 “软件由精心编写的解释程序、编译器和自动编程等组成,它们至少电容器、晶体管、电线和磁带等现代计算机硬件一样重要”。1968年或许是巧合出现两个软件发展史上的重大事件。一是,软件与硬件的解绑;二是,软件工程会议的召开。这两个事件的背景都与IBM著名的IBM S/360系统相关。
“软件”一词最早出现在1953年兰德公司R.R. Carhart的报告中用来说明讨论可靠性时与硬件相对应的“人因”。而人们现在通常理解中的“软件”这一术语来自John W. Tukey在1958年所发表的论文。文中指出 “软件由精心编写的解释程序、编译器和自动编程等组成,它们至少电容器、晶体管、电线和磁带等现代计算机硬件一样重要”。1968年或许是巧合出现两个软件发展史上的重大事件。这两个事件的背景都与IBM著名的IBM S/360系统相关。
软件依附在硬件之上解决应用问题。早期的计算机系统中硬件和软件时捆绑的。所谓“捆绑”指IBM在收费上采取只考虑硬件价格而软件和系统服务免费的策略。这在当时对于用户是很有吸引的也增强了公司的竞争力。到1964 年情况发生了变化IBM宣布了新的IBM S/360系列希望能够升级硬件系统而不需要替换或改变用户的应用程序。而稍后RCA也宣布了其新的Spectra 70系统与IBM 360兼容。这使得IBM难以阻止RCA在市场上“免费”使用IBM的软件。1968年IBM宣布了其软件和硬件系统的解绑改变了软件的商业和竞争模式。自此软件从计算机系统中与硬件的剥离获得了可以独立发展的空间。可以看到除了商业上的反垄断和市场竞争因素外软件本质上“解决方案”的独立性和计算平台抽象为解绑提供了历史必然和技术可行。自此,人们逐步认识到软件是计算机系统的灵魂,它向下管理计算机系统的各类资源,向上满足用户对计算机系统的应用需求。
第一个事件是软件与硬件的解绑。早期的软件依附在硬件之上解决应用问题此时的计算机系统中硬件和软件是相互捆绑的。所谓“捆绑”是指计算机公司如IBM在收费上采取只考虑硬件价格而软件和系统服务免费的策略。这在当时对于用户是很有吸引的也增强了公司的竞争力。到1964 年时情况发生了变化IBM发布了新的IBM S/360系统希望能够升级硬件系统而不需要替换或改变用户的应用程序。而稍后RCA也宣布了其新的Spectra 70系统与IBM S/360兼容。这使得IBM难以阻止RCA在市场上“免费”使用IBM的软件。1968年IBM宣布了其软件和硬件系统的解绑改变了软件的商业和竞争模式。自此软件从计算机系统中与硬件的剥离获得了可以独立发展的空间。可以看到除了商业上的反垄断和市场竞争因素外软件本质上所具备的“解决方案”的独立性和计算平台抽象使得解绑具备了历史必然性和技术可行性。自此,人们逐步认识到软件是计算机系统的灵魂,它向下管理计算机系统的各类资源,向上满足用户对计算机系统的应用需求。
第二个事件是软件工程\index{软件工程}兴起。计算机能力的快速提高和软件复杂性困难出现了“软件危机”现象例如IBM 360操作系统OS/360的进度、开销和可靠性均不尽人意。NATO在1968年举行了首次软件工程会议人们逐渐认识到需要如同其他领域的工程方法一样系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中明确指出,“我努力使软件具有合法性,使得构造软件的活动要受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”。软件工程的出现不仅激活了软件发展的巨大活力,也隐喻了软件发展的外在驱动力,不断增长的应用需求和不断增长的计算能力。
第二个事件是软件工程\index{软件工程}提出。计算机能力的快速提高和软件复杂性增加导致了所谓的“软件危机”现象例如IBM S/360的操作系统OS/360的进度、开销和可靠性均不尽人意。北大西洋公约组织NATO在1968年举行了首次软件工程会议。在这次会议上专家们首次提出需要与其他领域的工程方法一样系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中所明确指出的,“我努力使软件具有应有的地位,使得构造软件的活动受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”。软件工程的出现激活了软件发展的巨大活力。这一史实也提示了软件发展的外在驱动力,即不断增长的应用需求和计算能力。
\subsection{软件发展的主线}
软件作为计算灵魂与计算发展紧密相连。追溯软件发展可以有多条线索,既可以考察计算机系统平台、应用和计算形态的发展,也可以采用程序设计语言、系统软件、软件开发方法等角度。从需求应用看,从军事计算需求起步,逐步从商业计算、个人计算、网络计算、云端计算、到如今泛在计算;从计算平台看,从主机时代、微机时代、互联网时代到人机物融合时代,计算设备的多样性、能力、范围不断扩展。相应的,面向需求,满足各类质量、进度和成本约束,软件的语言从机器语言、汇编语言、高级语言、发展到领域语言,软件开发方法从结构化方法、对象化方法、构件化方法、服务化和网构化方法到智能化方法,系统软件平台从批处理、交互式、网络化、云边端融合系统软件。
追溯软件发展可以有多条线索,既可以考察计算机系统平台、应用和计算形态的发展,也可以采用程序设计语言、系统软件、软件开发方法等角度。从应用需求看,软件从军事计算需求起步,逐步从商业计算、个人计算、网络计算、云端计算、到如今泛在计算;从计算平台看,从主机时代、微机时代、互联网时代到人机物融合时代,计算设备的多样性、能力、范围不断扩展。相应的,为更好地面向需求,满足各类质量、进度和成本约束,软件的语言从机器语言、汇编语言、高级语言、发展到领域语言,软件开发方法从结构化方法、对象化方法、构件化方法、服务化和网构化方法到智能化方法,系统软件平台从批处理、交互式、网络化、云边端融合系统软件。
软件作为问题解决方案,其结果是认识空间的表达。Sapir-Whorf的语言相对论假设对语汇的重要性给出了一个表述。其弱版的语言相对论是指语言影响思维与决策而强版的语言决定论则指语言决定思维与认知边界。认识软件的切入点是认识各种软件抽象。它们构成了软件方法学的语汇,包括但不限于程序设计语言设施、软件构件、软件服务等。而系统软件的核心在于实现抽象,应用软件在于使用抽象。不同层次的抽象、抽象的计算实现和使用组成了软件发展的脉络。我们试图以软件各种抽象为主线来梳理和汇聚软件发展的基本历程。
软件作为问题解决方案,其结果是对认知空间中的概念的表达。Sapir-Whorf的语言相对论假设对语汇的重要性给出了一个表述。其较弱的版本称为语言相对论是指语言影响思维与决策而较强的版本称为语言决定论则是指语言决定思维与认知边界。认识软件的切入点是认识各种软件抽象。它们构成了软件的语汇,包括但不限于程序设计语言设施、软件构件、软件服务等。宏观地说,软件方法学的核心是建立(一般的)软件抽象,而系统软件的核心在于实现这些抽象,软件工程则使用这些抽象构造应用软件。不同层次的抽象、抽象的计算实现和使用组成了软件发展的脉络。我们试图以软件各种抽象为主线来梳理和汇聚软件发展的基本历程。
从最初计算机系统上机器指令开始,人们不断地在建立抽象,例如:汇编语言中的宏指令抽象定义了具有宏名的一段汇编语句序列;在结构化高级语言的数据结构抽象,过程抽象;面向对象方法中的类和继承;构件化方法中的构件抽象;服务化方法的服务抽象;以及网构化方法的主体抽象;智能化方法语言中的学习赋能抽象等等。语汇抽象之间的关系与软件定义栈呈现一个垂直吻合的关系。例如在典型的大数据处理系统Google我们可以看到接口与服务、方法与设施、虚拟化与实现等不同层次组成的抽象栈它们分别对应着Web服务、MapReduce、Dryad、Pregel、BigTable、集群调度、分布式文件、操作系统等抽象层。
从最初计算机系统上机器指令开始,人们不断地在建立新的抽象,例如:汇编语言中的宏指令抽象定义了具有宏名的一段汇编语句序列;结构化高级语言提供了数据结构抽象和过程抽象;面向对象语言提供了类和继承抽象;构件化方法中的构件抽象;服务化方法的服务抽象;以及网构化方法的主体抽象;智能化方法语言中的学习赋能抽象等等。语汇抽象之间的关系与软件定义栈呈现一个垂直方向的对应关系。例如,在典型的大数据处理系统(Google搜索引擎我们可以看到接口与服务、方法与设施、虚拟化与实现等不同层次组成的抽象栈它们分别对应着Web服务、MapReduce、Dryad、Pregel、BigTable、集群调度、分布式文件、操作系统等抽象层。
以程序设计语言和相应程序接口为基础,形成了软件的基本抽象。与数学抽象不同,软件抽象是可编程的单元并有计算之实现。围绕这些抽象软件学科的发展呈扇形展开,分化出以建立抽象为主要内容的软件理论和方法学;以实现抽象为主要内容的系统软件;以使用抽象为主的软件开发和工程。参见图1-X
以程序设计语言和相应程序接口为基础,形成了软件的基本抽象。与数学抽象不同,软件抽象是可编程的单元并有计算之实现。围绕这些抽象软件学科的发展呈扇形展开,分化出以建立抽象为主要内容的软件方法学和程序设计语言;以实现抽象为主要内容的系统软件;以使用抽象为主的软件开发和工程。参见图\ref{fig:1-5}
军事和科学计算是计算应用的最初需求。面向科学计算建立的抽象成为软件发展的早期里程碑。为了满足数值计算的需求John Backus1953年发展了Fortran语言是历史上第一个正式推广的高级程序设计语言1957年在IBM704计算机上实现。Fortran语言提供的抽象对用数学公式表达的问题求解提供了直接支持。多年的版本更替Fortran语言至今仍在使用。Fortran的主要贡献者获得了图灵奖。1960年面向常规商业信息处理COBOL语言发布成为COBOL-60。COBOL提供了面向周期性循环处理和数据变换的抽象适合于报表、情报、计划编制等商业数据处理如今仍有应用。同一时间段面向通用计算的算法语言ALGOL 60诞生成为ACM当时算法描述的标准它提供了数据结构、块结构、递归等设施。ALGOL语言的意义重大一是它确立了结构化高级程序设计语言设计的基础之后的Pascal、C、Java等强制式程序设计语言的基础二是它催生了试图严格或形式化定义语言和程序的一大批软件基础理论成果。ALGOL 60的主要贡献者Peter Naur获得了2006年图灵奖。60年代末至80年代历经Simula 67、Smalltalk、C++等语言面向对象程序设计范型形成提供了类、对象、方法、消息传递、继承等设施建立了封装、抽象和多态等机制。面向对象语言的创立者也获得了图灵奖。与强制式程序设计语言不同50年代末人们还探索了声明式程序设计语言其代表是基于Lambda演算的函数式语言LISP。它提供了用于问题求解的函数抽象首次在语言中支持递归函数定义。LISP的设计思想深刻地影响了ML、Haskell等函数式程序设计语言的发展。随着人们对程序设计安全可靠、便捷有效等需求的提高以及计算平台向并发、分布、异构发展程序设计语言呈现了两方面走向一是程序设计范型的融合例如面向对象语言和函数式语言的融合并支持并发、安全计算出现了Scala、Rust等程序设计语言展现了强劲的势头另一方面是面向特定领域的语言受到了重视它们针对领域应用提供高效便捷的抽象例如面向大数据处理的Map Reduce面向区块链智能合约的Solidity。
% word中未指明具体标题和图片序号
\begin{figure}[htbp]
\centering
\includegraphics[width=0.80\textwidth]{fig1-1/1-5.jpg}
\caption{}
\label{fig:1-5}
\end{figure}
60年代末软件工程思想的出现使得人们认识到如何面向应用建立软件开发方法和软件工程模式的重要性。软件开发方法中的诸多抽象大多来自于程序设计语言的思路。例如70年代的结构化系统分析和设计方法、80年代的面向对象分析和设计、90年代基于构件的软件工程、新世纪的面向服务/网构化的软件工程等等。软件开发和程序设计在抽象上尽可能地保持了一致或相容,使得软件工程模型不同阶段、不同层次地抽象有着较好的对应。
\begin{itemize}
\item 从软件抽象的角度看程序设计语言与软件工程的发展互动
\end{itemize}
军事和科学计算是计算应用的最初需求。面向科学计算建立的抽象成为软件发展的早期里程碑。为了满足数值计算的需求John Backus于1953年发明了Fortran语言是历史上第一个正式推广的高级程序设计语言于1957年在IBM 704计算机上实现。Fortran语言提供的抽象对用数学公式表达的问题求解提供了直接支持。经过多年的版本更替Fortran语言至今仍在使用。Fortran的主要贡献者获得了图灵奖。1960年面向常规商业信息处理COBOL语言发布成为COBOL-60。COBOL提供了面向周期性循环处理和数据变换的抽象适合于报表、情报、计划编制等商业数据处理如今仍有应用。同一时间段面向通用计算的算法语言ALGOL 60诞生成为ACM当时算法描述的标准它提供了数据结构、块结构、递归等设施。ALGOL语言的意义重大一是它确立了结构化高级程序设计语言设计的基础之后的Pascal、C、Java等强制式程序设计语言的基础二是它催生了试图严格或形式化定义语言和程序的一大批软件基础理论成果。ALGOL 60的主要贡献者Peter Naur获得了2006年图灵奖。60年代末至80年代历经Simula 67、Smalltalk、C++等语言面向对象程序设计范型形成提供了类、对象、方法、消息传递、继承等设施建立了封装、抽象和多态等机制。面向对象语言的创立者也获得了图灵奖。与强制式程序设计语言不同50年代末人们还探索了声明式程序设计语言其代表是基于Lambda演算的函数式语言LISP。它提供了用于问题求解的函数抽象首次在语言中支持递归函数定义。LISP的设计思想深刻地影响了ML、Haskell等函数式程序设计语言的发展。随着人们对程序设计安全可靠、便捷有效等需求的提高以及计算平台向并发、分布、异构发展程序设计语言呈现了两方面走向一是程序设计范型的融合例如面向对象语言和函数式语言的融合并支持并发、安全计算出现了Scala、Rust等程序设计语言展现了强劲的势头另一方面是面向特定领域的语言受到了重视它们针对领域应用提供高效便捷的抽象例如面向大数据处理的Map Reduce面向区块链智能合约的Solidity。
60年代末软件工程思想的出现使得人们认识到如何面向应用建立软件开发方法和软件工程模式的重要性。软件开发方法中的诸多抽象大多来自于程序设计语言的思路。例如70年代的结构化系统分析和设计方法、80年代的面向对象分析和设计、90年代基于构件的软件工程、新世纪的面向服务/网构化的软件工程等等。软件开发和程序设计在抽象上尽可能地保持了一致或相容,使得软件工程模型不同阶段、不同层次的抽象有着较好的对应。
程序设计语言向上要面向问题求解方法的表达向下要在计算机系统上实现。围绕语言的语法、语义和语用等方面的程序理论和问题求解的计算理论成为了软件理论的重要部分。从ALGOL60开始关于程序理论的研究就开始了其基本内容是在计算理论的基础上建立程序的形式语义并对程序及其性质进行推理本质是基于数学的方法来建立抽象及抽象之间的联系。在60年代到70年代人们建立了程序设计语言的操作语义学、公理语义学、指称语义学和代数语义学。程序语言与形式语义的研究紧密联系例如1974年Barbara Liskov提出了抽象数据类型的程序设计思想建立了现代面向对象语言的核心特征包括强类型检查和通用类型支持支持了对象化方法语言中的类抽象。以形式语义学为基础人们长时期探索程序的形式开发和形式验证等形式化方法和技术以提高软件生产率和软件质量取得显著的进展例如模型检验获得了2005年图灵奖。与程序相关的问题的求解判定和算法复杂性也成为程序设计语言设计和形式化方法的重要内容例如Gradual类型的引入。
\begin{itemize}
\item 从软件抽象的角度看系统软件与软件工程的发展互动
\end{itemize}
随着硬件能力快速提高以编译器和操作系统为代表的系统软件成为建立抽象、使用抽象来实现更高级抽象的焦点。事实上程序设计语言中许多重要概念来自于编译器和操作系统的设计。John Cocke在解决上下文无关语言的有效扫描中发明了动态程序设计范型而Floyd为了构建层次化自顶向下的扫描器发明了递归协程序作为抽象结构。Floyd希望能发现语言支持的新范型抽象。这说明了抽象是用来支持相对应的设计方法也就是问题求解的方法。
到六十年代集成电路的兴起增强了计算机的能力操作系统出现了不少新技术并变得强大复杂。典型的技术有多道程序设计、分时、实时、多处理器技术等等。70年代操作系统的设计进一步发展形成了UNIX操作系统成为当今主机操作系统的基础。80年代商业计算和微处理器时代到来出现了一批微机和工作站操作系统代表的是MS-DOSLinux、Solaris 和Windows等。90年代随着计算机网络和网络就是计算机的推动下在主机和微机操作系统的基础上中间件或网络化操作系统逐渐成为系统软件的新的增长点。进入新世纪后以iOS和Android代表的移动操作和主机操作系统向数据中心扩展的云操作系统形成了云端计算的软件基础设施的基本格局。
操作系统中的三个基本元素是抽象、机制和策略。而其抽象的基本设计原则是机制与策略的分离、共性的沉淀。典型的例子有进程和进程管理、线程和并发、调度、内存管理、进程间通信、I/O管理、虚拟化、分布文件系统、分布共享内存、安全与隐私抽象-Ownership等等。在实现这些抽象的过程中人们发现并设计了计算的原理和法则例如局部性原理、名字映射、分而治之、信息隐藏等等。与实现抽象密切相关系统软件与计算平台的演进紧密相关例如在网络化时代操作系统的API是网络操作的API而在云边端的时代操作系统通过协议软件、RPC等来集成。Barbara Lis-kov讨论了系统、语言和抽象的关系指出抽象对系统组织的作用例如用进程和软件层次来组织复杂系统。为了应对操作系统设计中可靠性、安全性、可配置、可扩展和多处理器程序设计等挑战微软的Singularity OS的首要任务开发新的抽象包括平台的抽象指令集、操作系统和应用统一可扩展的体系结构和一阶的应用抽象。特别的是应用抽象递归的应用到操作系统自身包括内核和其他OS构件。Singularity OS的后继Midori OS支持了微软西海岸和亚洲的自然语言搜索服务。Midori表明了合理的抽象和软件栈能在内存、类型和并发安全之上构建系统和应用性能和安全并不是对立的。
操作系统中的三个基本元素是抽象、机制和策略。而其抽象的基本设计原则是机制与策略的分离、共性的沉淀。典型的例子有进程和进程管理、线程和并发、调度、内存管理、进程间通信、I/O管理、虚拟化、分布文件系统、分布共享内存、安全与隐私抽象-Ownership等等。在实现这些抽象的过程中人们发现并设计了计算求解的复杂性应对的原理和法则例如局部性原理、名字映射、分而治之、信息隐藏等等。与实现抽象密切相关系统软件与计算平台的演进紧密相关例如在网络化时代操作系统的API是网络操作的API而在云边端的时代操作系统通过协议软件、RPC等来集成。Barbara Liskov讨论了系统、语言和抽象的关系指出抽象对系统组织的作用例如用进程和软件层次来组织复杂系统。为了应对操作系统设计中可靠性、安全性、可配置、可扩展和多处理器程序设计等挑战微软的Singularity OS的首要任务开发新的抽象包括平台的抽象指令集、操作系统和应用统一可扩展的体系结构和一阶的应用抽象。特别的是应用抽象递归的应用到操作系统自身包括内核和其他OS构件。Singularity OS的后继Midori OS支持了微软西海岸和亚洲的自然语言搜索服务。Midori表明了合理的抽象和软件栈能在内存、类型和并发安全之上构建系统和应用性能和安全并不是对立的。
回顾软件学科发展在认知空间中人们一方面不断的建立抽象一方面不断的在计算平台上实现抽象两者相辅相成螺旋上升与此同时使用抽象的方法和对高层抽象的需要促进了方法和技术的发展。例如结构化程序设计开创了程序设计得到的程序具有良好的结构在这个指导思想下问题求解可以看作是一系列的分解过程即从一个较高层的过程初步的加入细节得到较低层的抽象从而完成整个程序。逐步精化和层次化的程序结构是结构化程序设计的基本原理。在结构化程序设计的基础上当程序员在某个抽象层次上使用下一层次提供的抽象时并不需要考虑底层的实现细节。然而高级程序设计语言不可能以内嵌的方式提供问题求解需要的所有抽象需要一种方式可以从内嵌类型构造不同层次抽象的能力。这些动机促使了抽象数据类型的出现。抽象数据类型用抽象对象上一组操作的方式定义了该类抽象对象即用类型上的操作来定义新类型。它一方面封装了底层操作抽象的细节又构造了一组新的类型抽象。如图结构化抽象与THE OS、C与UNIX、面向对象与CORBA和EJB、服务化与Docker虚拟机交相辉映形成了以计算为手段的解平台提升并与结构化、对象化、构件化、服务化等软件开发方法携手同行成为人工科学边界物的基础。
回顾软件学科发展,在认知空间中,人们一方面不断的建立抽象,一方面不断的在计算平台上实现抽象,两者相辅相成,螺旋上升;与此同时使用抽象的方法和对高层抽象的需要促进了软件开发方法和技术的发展。例如结构化程序设计开创了程序设计得到的程序具有良好的结构在这个指导思想下问题求解可以看作是一系列的分解过程即从一个较高层的过程初步的加入细节得到较低层的抽象从而完成整个程序。逐步精化和层次化的程序结构是结构化程序设计的基本原理。在结构化程序设计的基础上当程序员在某个抽象层次上使用下一层次提供的抽象时并不需要考虑底层的实现细节。然而高级程序设计语言不可能以内嵌的方式提供问题求解需要的所有抽象需要一种方式可以从内嵌类型构造不同层次抽象的能力。这些动机促使了抽象数据类型的出现。抽象数据类型用抽象对象上一组操作的方式定义了该类抽象对象即用类型上的操作来定义新类型。它一方面封装了底层操作抽象的细节又构造了一组新的类型抽象。如图结构化抽象与THE OS、C与UNIX、面向对象与CORBA和EJB、服务化与Docker虚拟机交相辉映形成了以计算为手段的解平台提升并与结构化、对象化、构件化、服务化等软件开发方法携手同行成为人工科学边界物的基础。
软件发展的核心是管理复杂性。从平台空间到应用空间的认知与问题求解鸿沟是作为解决方案的软件来提供或弥补的,相应的软件形态也在逐步的演变丰富。在计算机诞生后五十年中,软件的表象发生数次变化。从早期的“程序=数据结构+算法”的初级抽象,到“软件=程序+文档”结构化程序设计关注在于管理结构复杂性。进入网络化时代后交互复杂性和规模复杂性日益突出体系结构加设计模型抽象、服务加组合抽象为管理这些类复杂性应运而生。进入大数据时代后知识复杂性和领域复杂性需要纳入软件软件在程序加文档的基础上需要抽象知识、数据和能力。软件的发展从微观上看从40年代到60年代解决基础问题到80年代管理结构复杂性为主到本世纪初管理交互复杂性为主到近来以管理异构、互联的规模复杂性和社会技术复杂性。建立、实现、使用抽象的循环迭代不断往复推进着软件技术的发展。
抽象是从制品的角度来认识、构造和演进软件。而软件作为人类的智力产品与这条主线相配合组织和管理制品在生命周期中的过程复杂性是极为重要的也构成了一条与抽象相配合的辅线。它的演进与软件的应用、平台和认知空间的演进互联互动从早期的作坊式生产组织方式、企业化生产组织方式发展到网络化智能化时代的社会化生产方式。企业化生产组织方式主要有软件过程1970、CMM1988、SCRUM1995、RUP2000和外包2001社会化生产方式有开源1997、Git2005、StackOverflow2007和DevOps2008
抽象是从制品的角度来认识、构造和演进软件。而软件作为人类的智力产品与这条主线相配合组织和管理制品在生命周期中的过程复杂性是极为重要的也构成了一条与抽象相配合的辅线。它的演进与软件的应用、平台和认知空间的演进互联互动从早期的作坊式生产组织方式、企业化生产组织方式发展到网络化智能化时代的社会化生产方式。企业化生产组织方式主要有软件过程1970、CMM1988、SCRUM1995、RUP2000和外包2001社会化生产方式有开源1997、Git2005、Stack Overflow2007和DevOps2008
\section{软件学科的内涵、发展规律和基本架构}
\subsection{内涵与学科特征}
软件作为计算平台上实现应用价值的解决方案,是最粹的人工制品,其内涵特征包括了三个方面[4]
软件作为计算平台上实现应用价值的解决方案,是最粹的人工制品,其内涵特征包括了三个方面:
\begin{itemize}
\item [-] 功能性:以何种结构和行为
\item [-] 目的性:达成什么应用目的
@ -93,27 +111,27 @@ Computer一词历史上出现在1613年用来指完成演算或计算的人
\end{itemize}
软件学科是以软件为研究对象研究设计和使用软件及其规律的学科。其核心内容是以计算为工具的问题求解方法论目标是达成效能、效率和价值的统一知识体系包括了理论、方法、工具、环境和生态。N. Wirth在“软件工程简史”一文中指出“如果说我们能从过去学到什么那就是计算机科学本质上是方法论学科。它开发并教育在广泛不同应用的共性受惠的知识和技术”。我们认为在这个意义上软件学科实质上就是Wirth所说的计算机科学。之所以我们使用了软件科学是因为有了时代的扩展参见第二篇引言
软件学科是以软件为研究对象研究设计和使用软件及其规律的学科。其核心内容是以计算为工具的问题求解方法论目标是达成效能、效率和价值的统一知识体系包括了理论、方法、工具、环境和生态。N. Wirth在“软件工程简史”一文中指出 “如果说我们能从过去学到什么那就是计算机科学本质上是方法论学科。它开发并教育在广泛不同应用的共性受惠的知识和技术”。我们认为在这个意义上软件学科实质上就是Wirth所说的计算机科学的主体。之所以我们使用了软件科学,是因为有了时代的扩展(参见第二篇引言)。
软件的功能性、目的性和适应性,使得软件学科呈现出了艺术、科学和工程共存的学科特征。这源自于软件本身融合了人类活动、数学物理规律约束的计算模型和装置、以及面向应用价值的工程设计。例如,软件的算法设计是艺术,而算法分析是科学;程序设计是艺术而程序正确性是科学;进一步软件开发是工程,而软件分解与抽象及其正确性是艺术与科学。软件之目的性是其工程属性的来源,而功能性的设计及设计的柔性孕育了多样的艺术性,软件最终运行的计算平台的物理和自然属性内生了软件发展遵循的科学规律。而艺术、科学和工程在软件发展的不同阶段和侧面会相互渗透乃至相互转换。归根到底,其目的性价值、软硬平台与外部环境所形成的功能及界面适应性是其核心,也形成了软件成为万能集成器和粘合剂的基础设施地位。而这一特性,也形成了软件作为核心的不同层次栈组成计算载体,包括语言、平台、结构和框架。
软件的功能性、目的性和适应性,使得软件学科呈现出了艺术、科学和工程共存的学科特征。这源自于软件本身融合了人类活动、数学物理规律约束的计算模型和装置、以及面向应用价值的工程设计。例如,软件的算法设计是艺术,而算法分析是科学;程序设计是艺术而程序正确性是科学;进一步软件开发是工程,而软件分解与抽象及其正确性是艺术与科学。软件之目的性是其工程属性的来源,而功能性的设计及设计的柔性孕育了多样的艺术性,软件最终运行的计算平台的物理和自然属性内生了软件发展遵循的科学规律。而艺术、科学和工程在软件发展的不同阶段和侧面会相互渗透乃至相互转换。归根到底,其目的性表征的价值、软硬平台与外部环境所形成的功能及界面适应性是其核心,也形成了软件成为万能集成器和粘合剂的基础设施地位。而这一特性,也形成了软件作为核心的不同层次栈组成计算载体,包括语言、平台、结构和框架。
\subsection{发展的基本规律}
随着网络时代的到来,软件网构化和服务化,解耦和绑定的周期性出现,驱动力主次的周期性变化,使得软件变化成为常态。“变是不变”形成了软件发展的规律。我们从两个方面来认识软件学科发展的规律:第一,本学科发展的驱动力是什么?第二,本学科的研究方法论是什么。
随着网络时代的到来,软件网构化和服务化,解耦和绑定的周期性出现,驱动力主次的周期性变化,使得软件方法和技术体系的变化成为常态,正所谓“变是不变的真理”。我们从两个方面来认识软件学科发展的规律:第一,本学科发展的驱动力是什么?第二,本学科的研究方法论是什么。
\subsubsection{发展的驱动力}
软件是刚性约束和超级柔性的产物。平台和应用目的可计算、复杂性和正确性形成了软件需要遵循的刚性约束,而内在的各种方法学引导,功能和适应性设计则形成了系统的柔性多样,也给予了软件学科无穷的发展活力。作为人工制品的界面物属性,软件学科发展的外部驱动力来自于两个方面:不断增长的应用需求和不断增强的计算平台;而其内在驱动力来自于其核心问题的解决,即软件的效率和质量,即提高软件生产率,保障软件质量,降低软件成本,以及不断发展的人本属性,包括人的认知规律和人力资源管理的深化与提高。
软件是兼具刚性约束和柔性适应的产物。平台和应用目的可计算、复杂性和正确性形成了软件需要遵循的刚性约束,而内在的各种方法学引导、功能和适应性设计则造就了软件的柔性多样,也给予了软件学科无穷的发展活力。作为人工制品的界面物属性,软件学科发展的外部驱动力来自于两个方面:外在驱动力来自于不断增长的应用需求和不断增强的计算平台;内在驱动力来自于其核心问题的解决,即软件的效率、质量和成本,即提高软件生产率、保障软件质量、降低软件成本,以及不断发展的人本属性,包括人的认知规律和人力资源管理的深化与提高。
\textbf{外在驱动力}
回顾软件发展的历史,可以看到软件的外在驱动力主要来自于两个方面。第一个方面是来自于计算平台的发展,简称平台驱动力;第二个方面是应用需求的增长,简称应用驱动力。平台的变迁形成了软件所依赖的平台空间;而应用的增长形成软件所解决的问题空间。在平台空间和问题空间之间,形成了软件作为界面物所需具有的功能、目的和适应形成的认知空间。软件的发展是三个空间变化、渗透和互动的产物。
回顾软件发展的历史,可以看到软件学科发展的外在驱动力主要来自于两个方面。第一个方面是来自于计算平台的发展,简称平台驱动力;第二个方面是应用需求的增长,简称应用驱动力。平台的变迁形成了软件所依赖的平台空间;而应用的增长形成软件所解决的问题空间。在平台空间和问题空间之间,形成了软件作为界面物所需具有的功能、目的和适应形成的认知空间。软件的发展是三个空间变化、渗透和互动的产物。
应用和平台的诉求,应用拉动,平台提高,推动软件的发展。从应用驱动力的角度,软件的范围扩展,渗透力增强。不断增长的应用诉求拉动了软件技术从早期的科学计算应用,扩展到了等各类不同应用,软件学科的无可比拟的渗透力变得空前的强大,软件的形态、开发方法和运行形态等诸多方面发生了巨大的变化。从平台驱动力的角度,计算平台从Von Neumann计算机到网络就是计算机、从端网云是计算机到全球泛在计算形成了从封闭、静态环境单机计算平台到开放、动态环境网络计算平台的态势造就了软件发展的不竭动力使得软件所能提供的解决方案的解空间更趋科学、高效。在应用驱动力和平台驱动力的联合作用下软件正走向“定义一切”。
应用和平台的诉求,应用拉动,平台提高,推动软件的发展。从应用驱动力的角度,软件的应用范围不断扩展,渗透力不断增强。不断增长的应用诉求拉动了软件技术从早期的科学计算应用,扩展到了等各类不同应用,软件学科的无可比拟的渗透力变得空前的强大,软件的形态、开发方法和运行形态等诸多方面发生了巨大的变化。从平台驱动力的角度,计算平台从von Neumann计算机到网络就是计算机、从端网云是计算机到全球泛在计算形成了从封闭、静态环境单机计算平台到开放、动态环境网络计算平台的态势造就了软件发展的不竭动力使得软件所能提供的解决方案的解空间更趋科学、高效。在应用驱动力和平台驱动力的联合作用下软件正走向“定义一切”。
\textbf{内在驱动力}
作为计算平台上问题解决方案的方法论,软件学科需要阐明一些基本问题,这些基本问题的解决支撑了软件学科发展,即:可计算性理论,解决问题能不能在计算平台上求解的问题;算法设计与分析,解决问题能不能在计算平台上高效能行求解的问题;软件方法和技术,解决问题能不能有效控制复杂性;软件基础理论,解决软件能不能可信的问题。前两个问题解决问题的能行求解;第三个问题解决复杂性的工程控制方法;第四个问题评价获得的解是否符合价值观,达到目的。我们认为,作为问题求解的方法学,提高求解效能(单位成本的软件生产率和软件质量)是软件发展内在驱动力,而抽象和复杂性控制成为学科发展的核心要素。
作为计算平台上问题解决方案的方法论,软件学科需要阐明一些基本问题,这些基本问题的解决支撑了软件学科发展,即:可计算性理论,解决问题能不能在计算平台上求解的问题;算法设计与分析,解决问题能不能在计算平台上高效能行求解的问题;软件方法和技术,解决问题能不能有效控制复杂性;软件基础理论,解决软件能不能可信的问题。前两个问题解决问题的能行求解;第三个问题解决复杂性的工程控制方法;第四个问题评价获得的解是否符合应用价值取向,达到目的。我们认为,作为问题求解的方法学,提高求解效能(单位成本的软件生产率和软件质量)是软件发展的内在驱动力,而基于抽象的复杂性控制成为学科发展的核心要素。
从技术角度看,灵活、可变、适应性是软件不变的需求。软件在语言上追求更具表达能力;在方法上符合人类思维,易构造,易维护;在系统上更高效可靠。围绕抽象和复杂性控制,软件学科形成了从模式化、形式化、自动化到智能化的基本手段,由软件结构、开发结构和组织结构组成的工程模型走向开放化。
从技术角度看,灵活、可变、适应性是软件不变的需求。软件在语言上追求更具表达能力;在方法上符合人类思维、易构造、易维护;在系统上更高效可靠。围绕抽象和复杂性控制,软件学科形成了从模式化、形式化、自动化到智能化的基本手段,由软件结构、开发结构和组织结构组成的工程模型走向开放化。
\subsubsection{学科方法}
@ -139,11 +157,9 @@ Computer一词历史上出现在1613年用来指完成演算或计算的人
\end{itemize}
\subsection{软件学科的基本架构}
从目前的一级学科划分看,软件学科横跨了计算机科学与技术,软件工程、网络空间安全等三个一级学科。特别是,与计算机软件与理论二级学科和软件工程一级学科关系密切。
出于不同目的考虑,学科可有不同的划分。从目前我国人才培养一级学科划分看,软件学科横跨了计算机科学与技术,软件工程、网络空间安全等三个一级学科。特别是,与计算机软件与理论二级学科和软件工程一级学科关系密切。与本国际本科计算教育学科相比软件学科横跨了ACM/IEEE计算教程等五个学科即计算机科学、计算机工程、软件工程、信息技术、信息系统。它们的覆盖关系如图1-X所示。
与本科生的计算教育学科相比软件学科横跨了ACM/IEEE计算教程等五个学科即计算机科学、计算机工程、软件工程、信息技术、信息系统。它们的覆盖关系如图1-X所示。
我们着眼于软件学科发展历程的回顾重新梳理就现状划分了三个子领域程序设计语言与理论、系统软件、软件工程。其中程序设计语言与理论的核心内容是建立抽象系统软件的核心内容是实现抽象软件工程的核心内容是使用抽象。它们与我国目前一级学科、ACM/IEEE计算学科的关系如图1-X所示。
我们着眼于软件学科发展历程的回顾重新梳理就现状划分了三个子领域即程序设计语言与理论、系统软件、软件工程。其中程序设计语言与理论的核心内容是建立抽象系统软件的核心内容是实现抽象软件工程的核心内容是使用抽象。它们与我国目前一级学科、ACM/IEEE计算学科的关系如图1-X所示。
软件强大的渗透性,使得软件和产业紧密相联,并产生了软件产业。软件的问题解决方案和人工制品特性、软件发展的外部驱动力决定了其形成产业的必然,而强大的产业需求不断地拉动软件的发展,软件学科与软件产业相互促进,共生共荣。
@ -151,7 +167,7 @@ Computer一词历史上出现在1613年用来指完成演算或计算的人
本章通过梳理软件发展的脉络,指出了软件是以计算为核心手段实现应用目标和价值的解决方案。可编程是软件的基本特征,建立抽象、实现抽象和使用抽象是软件发展的主线。不断增长的应用需求和不断增强的计算平台构成了软件发展的外部驱动力,而控制复杂性、提高单位成本的软件生产率和软件质量是其发展的内在驱动力。软件作为最为复杂的人工制品,软件学科是以软件为研究对象,通过科学方法、实验方法和设计方法等途径,研究设计和使用软件及其规律的学科。
第一篇的后续几章分别介绍程序设计语言与理论、系统软件、软件工程、软件产业等方面进一步阐述学科领域的内涵和外延、关注解决科学问题,以及对应的发展历程,现状和存在的主要矛盾。目的是从各方面来阐述软件发展的学科特性,把握学科现状和发展规律,为展望学科的未来发展奠定理性思考的基础。
第一篇的后续几章分别程序设计语言与理论、系统软件、软件工程、软件产业等方面进一步阐述学科领域的内涵和外延、关注解决科学问题,以及对应的发展历程,现状和存在的主要矛盾。目的是从各方面来阐述软件发展的学科特性,把握学科现状和发展规律,为展望学科的未来发展奠定理性思考的基础。
\section{参考文献}

36
Ch2-6-DataManagement.tex Executable file → Normal file
View File

@ -1,23 +1,29 @@
大数据时代,我们用“以数据为中心的计算”这一说法来表达计算技术的发展趋势:数据在计算体系中的地位越来越重要,数据不再仅仅是算法处理的对象,也不再仅仅是依附于某种功能软件而存在,数据是组织的资产而独立存在,而且数据越积越多、规模越来越大,形成一种数据平台。
在某种程度上,数据平台隔离了上层基于机器学习的数据建模和推理应用与下层大数据的存储与计算设施。这种分离增加了上层应用系统的稳定性。虽然在目前阶段,很多组织的数据还不够大,自己保存和运维的压力和成本还不是很高,所以往往倾向于自己运营。但当数据达到一定规模后,将会消耗海量的计算、存储、网络等资源,这时就必须放在云计算平台上了。更进一步,为降低成本,组织也不需要自己维护大数据处理与分析系统,把数据拉回来到自己的系统中进行处理了。大数据分析可以依赖云计算平台上的大数据分析服务,直接在共享的公共大数据集上开展各类大数据处理与分析
在某种程度上,数据平台隔离了上层基于机器学习的数据建模和推理应用与下层大数据的存储与计算设施。这种分离增加了上层应用系统的稳定性。新一代大数据管理与分析系统也是一类系统软件具有如下特征多种数据模型并存多种计算模型融合系统可伸缩弹性扩展能力强。首先多种数据模型并存是指可以支持关系、文本、图、KV等多种数据模型的存储与访问系统能够根据应用特征甚至运行负载的情况进行模型的转化支持自适应优化。其次多计算模型融合是指高效支持批处理、流计算等多种计算模型计算系统要能将多种计算模型进行深度的融合而非简单地将两套或多套系统进行集成避免数据的反复迁移提高效率同时能够做到批流交互支持复杂应用和深度分析。最后系统要能够高效利用底层的云计算资源面向云计算平台上的虚拟资源构建效率高、弹性扩展能力强的系统能够实时进行可伸缩调整提高资源利用率在软件系统层提升从资源到性能的转换效率
数据管理的角度看新一代大数据管理与分析系统具有如下特征多种数据模型并存多种计算模型融合系统可伸缩弹性扩展能力强。首先多种数据模型并存是指可以支持关系、文本、图、KV等多种数据模型的存储与访问系统能够根据应用特征甚至运行负载的情况进行模型的转化支持自适应优化。其次多计算模型融合是指高效支持批处理、流计算等多种计算模型计算系统要能将多种计算模型进行深度的融合而非简单地将两套或多套系统进行集成避免数据的反复迁移提高效率同时能够做到批流交互支持复杂应用和深度分析。最后系统要能够高效利用底层的云计算资源面向云计算平台上的虚拟资源构建效率高、弹性扩展能力强的系统能够实时进行可伸缩调整提高资源利用率在软件系统层提升从资源到性能的转换效率
应用角度看未来主流应用将从联机事务处理OLTP、联机分析处理OLAP走向联机机器学习OLML。机器学习等人工智能应用能够从大数据中挖掘深度知识将成为大数据管理与分析系统上的一类重要应用。机器学习系统将不再像现在这样一类模型对应一组数据而是成为一个同时支持多种机器学习模型的大规模数据平台。此外降低大数据应用的门槛非常迫切平民化数据科学成为一种趋势实现平民化数据学科的有效途径就是提供丰富易用的工具从数据采集数据整理到数据分析和模型训练等这方面的研究实践活动非常活跃成果大量涌现。未来期待大数据应用开发方法学的成果能够统领这个方向的研究
应用角度看高时效可扩展的大数据管理与分析系统未来将支持应用从联机事务处理OLTP、联机分析处理OLAP走向联机机器学习OLML。机器学习等人工智能应用能够从大数据中挖掘深度知识将成为大数据管理与分析系统上的一类重要应用。机器学习系统将不再像现在这样一类模型对应一个工具而是成为一个同时支持多种机器学习模型的大规模开放平台
数据生态的角度看,围绕数据的产生、加工、分析、利用乃至交易形成了相互依存又相互独立的生态系统结构。一方面这些数据为软件系统的智能化提供基础数据支撑,另一方面智能化服务软件又进一步贡献新的数据,进入数据平台。数据生态中涉及多个方面,如用户、商业公司、政府等,需要平衡各方利益、确保可持续发展
从数据工程的角度看,降低大数据应用的门槛非常迫切,平民化数据科学成为一种趋势,实现平民化数据学科的有效途径就是提供丰富易用的工具,从数据采集,数据整理到数据分析和模型训练等,这方面的研究实践活动非常活跃,成果大量涌现。未来,期待大数据应用开发方法学的成果能够统领这个方向的研究。
从软件形态的角度看,软件所呈现出的泛在化和持续演化的特性都与数据密切相关。软件的泛在化应用以及人机物融合使得我们所能够获得的数据越来越全面地覆盖了物理世界及人类生活的方方面面。软件的持续演化有赖于持续的数据收集以及数据驱动的智能化演化决策,同时也有赖于软件功能定义的数据化。此外,软件将越来越多地将来自广大用户的群智(例如使用数据反馈)融合到软件自身的持续演进中,这也是通过用户数据的收集和分析来实现的。
从系统论的角度看,未来面向复杂应用场景(如智慧城市)的软件需要多源异构的数据来支撑背后的智能决策。这些数据本身来自于很多不同的软件系统以及人机物三个方面的要素,跨越了既有的系统边界,体现了复杂系统特性。汇聚大数据之后产生的一些非预设的系统行为乃至服务业态体现了复杂系统的涌现特性。
由此可见,数据,软件,用户将以一种新的关系共存,需要重新考虑超越传统软件质量之外的与数据紧密相关的诸如隐私保护、平等(非歧视)以及信息普惠等价值观的话题
本章列出数据管理和数据工程的若干重要挑战、主要研究内容与研究趋势\footnote{陈红、陈普川、陈跃国、卢卫、张峰、张孝参与本章内容的讨论与撰写}
\section{重大挑战问题}
数据管理与数据工程的挑战问题包括两个方面。首先,在数据管理方面,主要表现在如何管理大数据(§6.1.1)、如何利用新硬件混合架构来实现大数据的管理(§6.1.2)。在数据工程方面,主要有异构数据整理(§6.1.3)、数据分析(§6.1.4)和数据安全与隐私保护(§6.1.5)等挑战。
\subsection{大数据管理的挑战}
大数据具有大容量、多类型、快变化、低质量的4V特征。大数据管理已不像传统数据库时代去追求使用关系数据库来解决所有数据管理的问题,而是探索从数据存储、数据组织与存取、语言处理、应用等几个维度对各个传统数据库管理系统进行解耦解耦后的各个子系统依据大数据的4V数据特征各自独立发展用户可根据实际应用的需要采用松耦合的方式对各个子系统进行组装量身定制自己的大数据管理系统。大数据管理系统技术目前还在快速进化之中还没有成型。管理好4V的数据是对大数据管理系统的基本要求。从这个基本点出发可以归纳出大数据管理系统的若干技术挑战
大数据具有大容量、多类型、快变化、低质量的4V特征。大数据管理已不像传统数据库时代去追求使用关系数据库来解决所有数据管理的问题而是探索从数据存储、数据组织与存取、语言处理、应用等几个维度对各个传统数据库管理系统进行解耦解耦后的各个子系统依据大数据的4V数据特征各自独立发展用户可根据实际应用的需要采用松耦合的方式对各个子系统进行组装量身定制自己的大数据管理系统。大数据管理系统技术目前还在快速进化之中还没有成型。管理好4V的数据是对大数据管理系统的基本要求。从这个基本点出发可以归纳出大数据管理系统的若干技术挑战
第一多数据模型的统一管理。i数据模型是数据管理的核心数据结构、数据操作、完整约束是构成数据模型的三大要素。关系模型有单一的关系数据结构、封闭的关系操作集合、灵活的关系完整性约束而大数据管理中的其他数据模型包括键值对、图、文档等虽然数据结构定义清晰但缺少数据模型中数据操作和数据约束两大要素的定义亟待理论上的突破。ii关系数据库有严格的关系数据理论和模式分解算法辅助数据建模如何对大数据进行有效数据建模尚缺少理论和技术支撑。iii) 大数据多源、异构的特点,使得大数据管理系统无法采用单一数据模型进行管理,多数据模型并存并统一管理,需要系统从语言处理、数据组织与存取、数据存储等多个层次进行重新设计与优化。
第二新型系统架构。大数据的大容量和快变化特征要求大数据管理系统具备高可扩展性。针对大容量特点采用“分而治之”的思想将数据进行分片每个分片部署到指定的节点上进行管理。针对快变化的特点当数据快速增加时可以通过增加节点的数量使系统仍然具备较低的响应时间。在此背景下大数据管理系统架构面临如下挑战i容错。一方面大数据管理中的存储节点、计算节点已经不局限于传统分布式数据库中的高性能服务器可以是普通服务器甚至是普通的PC机器可靠性有限。更重要地是节点数量的增加整个系统出现节点故障的可能性增大。如何从容错的角度设计可靠的系统架构不影响数据存储、数据操纵、数据运维等管理的正确性和高效性。ii去中心化。大数据管理系统是分布式的中心节点可能会成为访问的瓶颈。一方面中心节点的故障会造成整个系统的瘫痪另一方面中心节点负载过重也会影响系统的可扩展性和高效性如何研究去中心化的大数据管理系统架构突破单点瓶颈实现系统的高可扩展性和高效性。iii) 自适应优化。一方面集群环境下存储节点、计算节点的硬件能力可能存在较大差异需要研究异构集群环境下的自适应优化。另一方面负载任务的多变性和复杂性要求研究多数据模型下的自适应优化。vi)与其他技术的融合。新硬件技术与人工智能技术的发展,研究如何使用新硬件和人工智能技术,优化大数据管理系统的各个模块,提升系统的可扩展性、可靠性、高效性。
第二,多计算模型的深度融合。大数据管理系统更需要高效支持批处理、流计算等多种计算模型,将多种计算模型进行深度的融合,而非简单地将两套或多套系统进行集成,避免数据的反复迁移,提高效率,同时能够做到批流交互,支持复杂应用和深度分析。为此,需要研究
第三新型系统架构。大数据的大容量和快变化特征要求大数据管理系统具备高可扩展性。针对大容量特点采用“分而治之”的思想将数据进行分片每个分片部署到指定的节点上进行管理。针对快变化的特点当数据快速增加时可以通过增加节点的数量使系统仍然具备较低的响应时间。在此背景下大数据管理系统架构面临如下挑战i容错。一方面大数据管理中的存储节点、计算节点已经不局限于传统分布式数据库中的高性能服务器可以是普通服务器甚至是普通的PC机器可靠性有限。更重要的是节点数量的增加整个系统出现节点故障的可能性增大。如何从容错的角度设计可靠的系统架构不影响数据存储、数据操纵、数据运维等管理的正确性和高效性。ii去中心化。大数据管理系统是分布式的中心节点可能会成为访问的瓶颈。一方面中心节点的故障会造成整个系统的瘫痪另一方面中心节点负载过重也会影响系统的可扩展性和高效性如何研究去中心化的大数据管理系统架构突破单点瓶颈实现系统的高可扩展性和高效性。iii) 自适应优化。一方面,集群环境下,存储节点、计算节点的硬件能力可能存在较大差异,需要研究异构集群环境下的自适应优化。另一方面,负载任务的多变性和复杂性,要求研究多数据模型下的自适应优化。
\subsection{新硬件与混合架构的挑战}
数据管理系统的实现受计算机软件技术和硬件技术以及应用三方面的影响。随着新硬件及各种混合架构的出现,支持数据管理与数据工程的底层硬件正在经历巨大的变革,各类新型加速设备、混合架构出现也在逐渐改变数据管理和数据工程中的设计,并带来了巨大挑战。
@ -33,7 +39,7 @@
\subsection{异构数据整理的挑战}
数据整理是在挖掘提炼数据价值的过程中需要进行的前期的数据预处理工作。它看似不足轻重实则非常重要。有调查研究表明很多大数据分析任务80\%以上的工作花费在数据整理上,这给数据分析带来了巨大的人力成本。很多分析设想因为承担不起前期巨大的数据整理工作而最终被放弃。更重要的是,由于缺少系统性和理论性的支撑,数据整理的质量千差万别,这给数据分析的结果带来了很大的不确定性,大大影响了大数据价值的挖掘与提炼。
与数据仓库时代的ETL只关注业务系统内的数据不同数据整理技术通常需要帮助用户将其拥有的数据与外部的一些数据源进行关联和数据融合。融合过程中面临着比较大的数据集成难题伴随着大量的数据质量问题如数据项缺失、不一致、重复、错位、异常值等。而很多情况下这些数据集成和数据质量方面的问题又与具体的应用场景关系密切很难形成通用的、一体化的数据整理解决方案。需要针对不同问题和典型场景,研究系列的数据整理工具,而这些工具的适用性就面临很多挑战性问题
与数据仓库时代的ETL只关注业务系统内的数据不同数据整理技术通常需要帮助用户将其拥有的数据与外部的一些数据源进行关联和数据融合。融合过程中面临着比较大的数据集成难题伴随着大量的数据质量问题如数据项缺失、不一致、重复、错位、异常值等。而很多情况下这些数据集成和数据质量方面的问题又与具体的应用场景关系密切很难形成通用的、一体化的数据整理解决方案。因此,如何从不同的应用场景中抽象出数据整理的共性需求,在新的数据整理的方法论指导下,系统地研究数据整理工具和平台,在未来会越来越重要,也必将面临很多挑战
数据准备服务于企业内部所有的数据使用者,以对数据处理技术不熟悉的业务用户为主。这些用户缺少数据管理与数据处理知识,但对业务熟悉,对数据背后的语义更清楚,他们是企业机构大数据价值发现的主力。如何针对这类业务型数据分析人员的需求和特点,提供高效的数据整理工具,是数据整理技术面临的一大挑战。这即包括数据整理工具的易用性,有包括工具在执行数据整理任务过程中的执行性能和被整理后数据的有效性。数据整理工具适用性和易用性之间通常还存在一定的矛盾,如何利用一些自动化的手段,降低用户使用工具的难度,根据场景自动优化配置数据整理工具,会是数据整理面临的一项重要难题。
@ -47,7 +53,7 @@
再者,交互式数据分析的效果评价也是很有挑战的事情。由于交互式分析过程中分析人员往往存在分析目的不明确的问题,分析任务要在交互过程中不断调整,这为评价交互式分析算法和系统的好坏带来很多挑战。很多研究,需要借鉴人机交互领域的一些方法去衡量交互式分析解决方案的效果。因此,交互式分析也是人机交互和数据分析的学科交叉,需要技术和设计两个方面的支撑与紧密结合。
最后,交互式数据分析的复杂性为分析系统的设计和架构带来了很多挑战。需要在可视化、人机交互、高性能分析处理、数据库等多层面综合考虑,很多环节还需要跨层的紧密结合。该领域的研究难度也比较大,通常只有构建出可用的系统原型,才能够有效验证交互式数据分析算法和系统的优劣。
最后,交互式数据分析的复杂性为分析系统的设计和架构带来了很多挑战。需要在可视化、人机交互、高性能数据处理、数据库等多层面综合考虑,很多环节还需要跨层的紧密结合。该领域的研究难度也比较大,通常只有构建出可用的系统原型,才能够有效验证交互式数据分析算法和系统的优劣。
\subsection{数据隐私保护与数据安全的挑战}
数据安全与隐私保护问题长期以来一直受到人们的广泛关注。尤其是近年来大数据和人工智能技术的高速发展,数据外包到云平台上的需求与日俱增,各类应用对数据共享的呼声日益强烈,人们日常生活和出行对于基于位置的服务的依赖性逐步提高,这些都使得数据安全和隐私保护问题变得愈加突出和复杂。虽然学术界和工业界在隐私保护与数据安全方面已经取得了一些可喜的进展,但面对大数据的应用需求和应用场景,还是显得力不从心。目前数据隐私和安全问题存在于大数据收集、存储、管理、使用的各个阶段,如何抵御非法用户的恶意攻击和隐私窃取;如何防止数据被非法篡改或删除,导致错误的查询和分析结果;如何避免合法用户利用数据之间的关联关系,通过反复搜索推演出数据隐私;如何防止人们在使用数据服务时暴露自身的偏好、位置、轨迹等隐私信息,都是亟需解决的关键问题,也是关系到大数据应用前景的重要现实问题。这里面的重要技术挑战包括:
@ -67,22 +73,24 @@
\subsection{图数据管理}
针对规模巨大的图数据按照对图数据管理的抽象程度可以被分成两类。低层次抽象的提供编程接口的图数据管理系统针对图数据管理中的基本操作设计并实现相应的编程接口用户利用这些编程接口来实现相应的管理功能高层次抽象的描述性查询语言用户将相应的管理需求用描述性查询语言表达系统解析这些描述性查询语句并生成相应的查询计划来进行执行处理实现包括图搜索、基于图的社区发现、图节点的重要性和相关性分析、图匹配查询等查询和分析需求。新的研究问题还包括异构计算环境下的图数据管理、多源流式图数据管理、RDF知识图谱构建和推理等。
\subsection{新硬件数据管理}
新硬件技术的发展为数据管理技术带来新的挑战,也带来明显的机遇。作为系统软件,数据库底层需要针对新硬件的发展做出适应性调整,充分利用新硬件带来的便利,同时避免新硬件自身约束导致的新瓶颈。目前研究较多的新硬件包括高性能和专用处理器、高速网络、和非易失性内存等。针对高性能和专用处理器数据库底层核心算法需要充分考虑多核并行的能力重新设计连接、排序等基本操作。图形处理器GPU、现场可编程门阵列FPGA等专用处理器具备更大规模的数据并行操作能力从而提升数据的向量处理效率支持数据库内核范围内的机器学习等任务。传统分布式数据库或者并行数据库在高速网络环境中网络传输不在是瓶颈需要设计新的分布式连接方法和分布式并发控制策略等。而非易失存储的高速和持久化能力对数据库系统结构层面结合方式和恢复机制等带来新的研究课题。
近年,计算机体系结构的研究异常活跃,新进展层出不穷。新架构和新硬件技术的发展为数据管理技术带来新的挑战,也带来明显的机遇。作为系统软件,数据库底层需要做出适应性调整,充分利用新架构和新硬件带来的便利,同时避免新瓶颈。目前研究较多的包括高性能和专用处理器、高速网络、和非易失性内存,以及包括各种混合架构等。针对高性能和专用处理器数据库底层核心算法需要充分考虑多核并行的能力重新设计连接、排序等基本操作。图形处理器GPU、现场可编程门阵列FPGA等专用处理器具备更大规模的数据并行操作能力从而提升数据的向量处理效率支持数据库内核范围内的机器学习等任务。传统分布式数据库或者并行数据库在高速网络环境中网络传输不在是瓶颈需要设计新的分布式连接方法和分布式并发控制策略等。而非易失存储的高速和持久化能力对数据库系统结构层面结合方式和恢复机制等带来新的研究课题。
\subsection{内存数据管理}
相对于以磁盘为主要存储介质的传统数据库内存数据库带来多个量级的性能提升内外存数据交换不再是主要性能代价而关注CPU特性对内存操作的影响如CPU中的缓存、指令和数据的预取、共享数据结构等重点研究上述变化在数据组织、数据索引、事务机制、查询优化等方面的不同。在数据组织方面内存数据库中数据可以按照其处理器核进行划分同一个划分中数据操作串行减少并发控制带来的各种代价也可以采用所有处理器核都可以访问全部数据的方式。内存数据库索引设计主要考虑索引结点的大小和CPU缓存大小相关,从而在索引操作过程中提升CPU缓存的命中率同时内存索引结构的设计需要考虑多核环境中的并发查询和更新减少内存数据结构中并发锁的使用减低索引维护代价。内存数据库的事务处理和并发控制机制使用多版本并发控制协议通过保存不同版本从而支持无阻塞高效率的读取操作或采用乐观并发机制提高效率。
\subsection{多源数据集成}
多源数据集成,指为多个异构的数据源提供统一的存取方法。多源数据集成需要解决两个核心问题:数据集成的精确性以及查询处理的效率。首先,须研究实体匹配的问题,即判断多个字符串或元组是否对应同一个实体。为此需要定义两个字符串或元组相似度的度量标准,如基于字符序列的度量标准、基于集合的度量标准以及混合度量标准。实体匹配方法还需要具备可扩展性,以处理大规模的数据集。其次,须解决模式匹配问题,其目标是建立不同模式到一个统一的集成模式之间的映射。模式匹配的研究方法包括基于实例的匹配,基于模式信息的匹配,以及混合匹配等。近来的一个趋势是采用机器学习或深度学习方法来提高模式匹配的准确度。最后,多源数据集成还包括查询改写和查询优化。查询改写研究形式上不一致的两个查询是否等价,以及一个查询是否可以在一组视图上执行。数据集成系统中的查询优化重点是自适应的查询处理,即查询处理器可以在运行时动态修改查询计划。
\subsection{数据整理}
数据整理是为了使数据能够更好地服务于数据分析而对数据进行的审查和转换的过程,它是整个数据分析流程中最占用精力的过程。从技术上讲,数据整理包含了前期数据解析与结构化处理、数据质量评估与数据清洗、数据集成和提纯等过程。由于问题的复杂性,数据整理过程通常不是完全自动化的,而是需要用户介入的反复迭代和交互的过程。数据可视化、用户反馈与交互在整个过程中都发挥了重要作用。如何开展有针对性的研究工作,并系统化地集成各方面相关研究工作形成数据整理方面整体上的研究和应用影响力从事相关领域的研究学者应充分利用庞大的Python开源社区PyData投入系统化的数据准备工具研制中将研究成果更好地应用在实际场景中或许是一条较为可行的技术路线。
数据整理是为了使数据能够更好地服务于数据分析而对数据进行的审查和转换的过程,它是整个数据分析流程中最占用精力的过程。从技术上讲,数据整理包含了前期数据解析与结构化处理、数据质量评估与数据清洗、数据集成和提纯等过程。由于问题的复杂性,数据整理过程通常不是完全自动化的,而是需要用户介入的反复迭代和交互的过程。数据可视化、用户反馈与交互在整个过程中都发挥了重要作用。如何开展有针对性的研究工作,提出数据整理方法论,并系统化地集成相关工具形成数据整理方面整体上的研究和应用影响力从事相关领域的研究学者应充分利用庞大的Python开源社区PyData投入系统化的数据准备工具研制中将研究成果更好地应用在实际场景中或许是一条较为可行的技术路线。
\subsection{数据分析}
从系统角度,交互式分析对大数据分析处理的性能要求极高如何利用好新硬件如GPU, FPGA, NVM, RDMA等来加速大数据分析至关重要。在数据分析处理层面,还可以利用用户在交互分析时,需要花时间去理解数据分析的结果,利用这个时间完成数据的预取和预计算操作,把最有可能的下一步分析任务的结果提前算出来,或者采用近似计算方法,给出统计分析结果的上下界,并随着数据分析处理的进行,不断更新计算结果,让分析结果随着用时的增加更为精确。如何根据一些常见的数据分析类型,设计相关的评测基准,让不同交互式数据分析解决方案之间有更好的可比性,也是很值得研究的方向。再有就是解决具体分析任务时,如何设计有效的交互界面,结合数据模式和数据空间的特点,设计有效的数据交互方式,让数据和分析流程都能更好地通过可视化方式,引导用户以较低的代价参与到数据分析的整个流程中。
从系统角度交互式分析对大数据处理的性能要求极高如何利用好新硬件如GPU, FPGA, NVM, RDMA等来加速大数据分析至关重要。在数据处理层面还可以利用用户在交互分析时需要花时间去理解数据分析的结果利用这个时间完成数据的预取和预计算操作把最有可能的下一步分析任务的结果提前算出来或者采用近似计算方法给出统计分析结果的上下界并随着数据处理的进行不断更新计算结果让分析结果随着用时的增加更为精确。如何根据一些常见的数据分析类型设计相关的评测基准让不同交互式数据分析解决方案之间有更好的可比性也是很值得研究的方向。再有就是解决具体分析任务时如何设计有效的交互界面结合数据模式和数据空间的特点设计有效的数据交互方式让数据和分析流程都能更好地通过可视化方式引导用户以较低的代价参与到数据分析的整个流程中。
\subsection{数据可视化}
数据可视化利用计算机图形学、数据分析、用户交互界面等技术通过数据建模等手段为用户提供有效的数据呈现方式。数据可视化能够帮助用户迅速理解数据定位问题。数据可视化技术可以从不同维度来刻画如可视化后台的数据类型、不同类型的可视化交互技术等。数据可视化技术的进展通常针对不同的数据类型展开图数据的海量规模包括节点和边以及有限的可视空间限制成为图数据可视化的主要挑战主要研究侧重于图简化的思路通过边聚集或者点聚集构建不同层次的图同时引入交互策略支持用户对其感兴趣的部分进一步动态分析时空数据是包含时间维度和空间维度的数据其空间维度通常和地理系统进行结合重点研究采用属性可视化技术展示对象随着时空维度变化如将事件流和地理流结合的Flowmap、时间-空间-事件等信息的三维立方体方式等;数据仓库中多维数据可视化则着重更加友好呈现数据,利用散点图、平行坐标等方式提高用户对整体分布和不同维度之间关系的理解。
\subsection{数据隐私}
数据隐私保护技术主要利用以密码学为基础的加密、签名、协议等技术,以统计学为手段的匿名化技术、模糊化技术等,和基于概率分析的差分隐私技术等,为用户数据提供隐私保证。大数据背景下潜在隐私泄露方式更加多元,主要研究内容可以包括以下三方面,一是大数据隐私保护理论,包括隐私定义与搜索能力之间的关系、支持数据隐私的安全搜索机理、隐私保护方法评测基准等。二是数据存储、查询和发布中的隐私保护技术,包括基于隐私识别的数据加密算法、带密检索机制、动态数据的安全连续发布、具有复杂关联的敏感数据反推演策略等。三是数据服务中的个人隐私保护,包括社交网络环境下的个性化隐私度量及保护手段,数据服务中对用户偏好、地理位置、行动轨迹等信息的隐藏策略,及其与服务质量之间的关系度量等。
数据隐私保护技术主要利用以密码学为基础的加密、签名、协议等技术,以统计学为手段的匿名化技术、模糊化技术以及基于概率分析的差分隐私技术等,为用户数据提供隐私保证。大数据背景下潜在隐私泄露方式更加多元,主要研究内容可以包括以下三方面,一是大数据隐私保护理论,包括隐私定义与搜索能力之间的关系、支持数据隐私的安全搜索机理、隐私保护方法评测基准等。二是数据存储、查询和发布中的隐私保护技术,包括基于隐私识别的数据加密算法、带密检索机制、动态数据的安全连续发布、具有复杂关联的敏感数据反推演策略等。三是数据服务中的个人隐私保护,包括社交网络环境下的个性化隐私度量及保护手段,数据服务中对用户偏好、地理位置、行动轨迹等信息的隐藏策略,及其与服务质量之间的关系度量等。
\subsection{数据安全}
数据安全的研究主要是利用现代密码学算法对数据进行主动保护,研究内容包括可搜索加密、密文计算、完整性验证、基于属性加密的访问控制和基于角色的访问控制、安全审计、身份验证等,保证数据“专人专用”,防止攻击者或黑客窃取到重要信息。数据安全的研究旨在解决海量数据规模、多样化数据类型给检索和存储带来的巨大压力,比如说通过加密技术解决云服务所带来的敏感外包数据的安全存储与查询问题,以及通过安全计算协议解决大数据环境下人工智能的高速发展所带来的数据安全共享计算的难题,包括优化同态加密、多方安全计算的高昂通信代价等。总的来说,数据安全的研究内容更侧重于在实际应用场景下对敏感数据进行主动保护,同时保证高可用性,探索并设计多种巧妙的、可扩展的轻量级机制与安全协议。
数据安全研究主要是利用现代密码学算法对数据进行主动保护。大数据背景下,海量规模数据和多样化类型数据给数据的检索和存储都带来巨大的压力,传统数据安全技术可能失效。
主要研究内容可以包括以下三方面,一是大数据安全保护模型,包括攻击者行为形式化、大数据完整性、真实性和可用性定义、大数据访问控制方法等。二是数据存储、访问和处理中的安全保护技术,包括基于属性的身份鉴别、同态认证、基于属性的访问控制、零知识证明、函数加密以及通过安全计算协议解决大数据环境下人工智能高速发展所带来的数据安全共享计算的难题,包括优化同态加密及多方安全计算的高昂通信代价等。三是大数据安全保护动态化管理,包括用户失效证书管理、访问权限更新、应对数据权属变更的代理重加密、支持临时授权的访问控制等。
\section{本章小结}
在“以数据为中心的计算”计算时代,数据在计算体系中的重要性凸显。数据不再是依附软件(业务)而存在的,数据本身可以是独立存在的。这给数据管理和数据工程带来新的挑战和机遇。一方面数据不仅仅支撑业务的运行,即使在业务活动结束后还要继续保存,因此,数据会越积越多,给数据的管理带来挑战。另一方面,数据只有利用才有价值,围绕数据价值的提升,需要有方法学和工具的支撑。
在“以数据为中心的计算”计算时代,数据在计算体系中的重要性凸显。数据不再是依附软件(业务)而存在的,数据本身可以是独立存在的。这给数据管理和数据工程带来新的挑战和机遇。一方面数据不仅仅支撑业务的运行,即使在业务活动结束后还要继续保存,因此,数据会越积越多,需要新的支撑平台。另一方面,数据只有利用才有价值,围绕数据价值的提升,需要有方法学和工具的支撑。

BIN
fig1-1/1-5.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB