这是中国科学院梅宏院士为《企业软件化》一书写的推荐序言,链接在这里。
首先是软件的发展历史:
从软件制品的形态上看,软件发展大体上经历了三个阶段,即软硬一体化阶段、产品化阶段和网络化服务化阶段。当然,需要指出的是,这三个阶段尽管在时间上有先后,但并不对立,也难绝对分离,而是前后传承、交织,呈现出“包容式”的融合发展态势。
在软硬一体阶段:
在计算机诞生后的相当长一段时期内,实际上并没有“软件”的概念,计算机的运行是通过用机器语言和汇编语言编写程序的方式来直接操作硬件,即只有“程序”的概念。。。
所以,“程序”要早于“软件”,然而:
在高级程序设计语言出现后(1957年,IBM开发了第一个高级程序设计语言Fortran),“软件”才作为与“硬件”对应的词被提出,以程序和文档融合体的形态从硬件中分离出来,成为相对独立的制品。
而第一个实现软硬件解耦的产品是:
IBM 360系列机中,出现了最早的和硬件系统解耦的主机操作系统—OS/360。。。
也正是在这个时期,计算机作为一门专门学科开始形成并完善其学科体系,软件学科成型并得到快速发展,程序员也开始逐渐成为一个专门的职业。总体来看,在软硬一体化阶段,软件还是作为硬件的附属品存在,基本均是面向大型机/小型机设计。。。
而到了产品化、产业化阶段:
拉里·埃里森创办的甲骨文公司,被认为是历史上第一个“纯粹的”软件公司;而比尔·盖茨创办微软公司,则是软件发展历程中一个里程碑事件,标志着软件开始正式成为一个独立产业,并从此开始应用于几乎所有领域。在这个时期,软件主要以面向单机的“拷贝”产品形态存在,通过付费版权形式对外发售,几乎不再与硬件捆绑销售。
最后是网络化、服务化阶段:
在互联网环境下,软件的形态也发生了重大的变化, “软件即服务”(Software as a Service)开始成为一种非常重要的网络化软件交付形态和使用方式。
随着互联网及其延伸带来信息技术的普及应用,软件“无所不在”。。。正如互联网名人堂入选者、著名的网景公司(NetScape)创始人Marc Andreessen所说,软件正在吞噬人类世界(Software eats the world!)
那么:
当前,软件正在呈现出 “基础设施化”的趋势。
正如C++编程语言发明者Bjarne Stroustrup所说,人类文明运行在软件之上(Our civilization runs on software)。
因此,未来已来的,是“软件定义”的时代:
“软件定义”是近年来信息技术的热点术语。一般认为,软件定义的说法始于“软件定义的网络” (Software-Defined Network,SDN)。
为什么提出这个呢?其目的还是解耦:
2008年前后,斯坦福大学提出“软件定义网络”并研制了OpenFlow交换机原型。OpenFlow中,网络设备的管理控制功能从硬件中被分离出来成为一个单独的完全由软件形成的控制层,抽象了底层网络设备的具体细节,为上层应用提供了一组统一的管理视图和编程接口(Application Programming Interface,简称API),而用户则可以通过API对网络设备进行任意的编程从而实现新型的网络协议、拓扑架构而不需改动网络设备本身,满足上层应用对网络资源的不同需求。2011年前后,SDN逐渐被广泛应用于数据中心的网络管理,并取得了巨大的成功,重新“定义”了传统的网络架构,甚至改变了传统通信产业结构。
随后:
又陆续出现了软件定义的存储、软件定义的环境、软件定义的数据中心等。可以说,针对泛在化资源的“软件定义一切(Software-Defined Everything,SDX)”正在重塑传统的信息技术体系,成为信息技术产业发展的重要趋势。
所以,下面这一段就完全摘抄了,是精髓了:
实现SDX的技术途径,就是把过去的一体化硬件设施打破,实现“硬件资源的虚拟化”和“管理任务的可编程”,即,将传统的“一体式(monolithic)”硬件设施分解为“基础硬件虚拟化及其API + 管控软件”两部分:基础硬件通过API提供标准化的基本功能,进而在其上新增一个软件层替换“一体式”硬件中实现管控的“硬”逻辑,为用户提供更开放、灵活的系统管控服务。采取这种技术手段的直接原因,主要是互联网环境下新型应用对计算资源的共享需求,以云计算、大数据为代表的新型互联网应用要求硬件基础设施能够以服务的方式灵活提供计算资源,而目前的计算资源管理、存储管理、网络管理在很大程度上是与应用业务脱离的,几乎都是手工管理、静态配置、极少变动、分割运行,难以满足上层应用对计算资源个性定制、灵活调度、开放共享的需求。而要满足上述需求,就必须改变目前应用软件开发和资源管理各自分离的情况,使得计算资源能够根据应用需求自动管理、动态配置,因此,“软件定义”就成为一个自然选择。通过软件定义,底层基础设施架构在抽象层次上就能趋于一致。换言之,对于上层应用而言不再有异构的计算设备、存储设备、网络设备、安全设备导致的区别,应用开发者能根据需求更加方便、灵活地来配置和使用这些资源,从而可以为云计算、大数据、移动计算、边缘计算、泛在计算等信息应用按需“定义”出适用的基础资源架构。
需要指出的是,尽管“软件定义”是近期出现的热点概念,但其基于的资源虚拟化和管理可编程这两个核心原则,一直都是计算操作系统设计与实现的核心原则。计算机操作系统作为一种系统软件,向上为应用和用户和提供各种公共服务控制程序运行、改善人机界面,向下管理各类硬件资源。因此,从计算机系统用户的视角来看,操作系统就是一台软件定义的“计算机”;从软件研究者的视角,操作系统体现了“软件定义”之集大成。就这个意义上而言,所有的SDX在本质上都没有脱离操作系统的三层架构的范畴,均符合“硬件资源虚拟化”与“管理任务可编程”的技术原理。
最终:
无论是软件定义的网络、软件定义的存储、软件定义的数据中心还是其他“SDX”,就其技术本质而言,均意味着构造针对“X”的“操作系统”。
那么,需要面临的挑战是什么?
体系结构设计决策问题。
系统质量问题。
系统安全问题。
轻量的虚拟化技术。
原有系统到软件定义系统平滑过渡。
高度自适应的智能化软件平台。
How to do?可能要去看院士推荐做序的这一套书籍了,哈哈。
网友评论