update Ch1-5

This commit is contained in:
DanHaoPKU 2019-12-09 21:46:35 +08:00
parent ed226aa4b4
commit c8fc8834e0
1 changed files with 8 additions and 8 deletions

View File

@ -63,27 +63,27 @@
本小节以操作系统产品、办公软件产品、中间件产品、工业软件产品为典型代表,概述以产品化为特征的软件产业生态产生与发展过程。
操作系统是构建现代软件产业生态的重要基石。20世纪60年代操作系统软件开始逐渐从计算机硬件中独立出来出现了产品化萌芽。例如OS/360操作系统能运行在一系列用途与价位不同的IBM System/360大型机上具有了现代操作系统的独立性和产品化的特征但仍然依附于特定厂商也并未形成产业。1969年贝尔实验室开发开放源码的Unix操作系统得到了广泛的应用。之后基于Unix的源代码大量类Unix系统被研发出来可用于多种计算机硬件。市场上形成了多种独立的操作系统软件产品。例如加州大学伯克利分校研发的BSD以及此后的FreeBSD、NetBSD、OpenBSD等衍生产品。20世纪70年代后期IBM公司推出的个人电脑PC催生了面向个人的软件使用场景为软件产业的发展提供了广阔的空间80年代微软通过与IBM公司的合作成功研制了面向个人计算机的桌面操作系统MS-DOS成为当时在IBM PC上最常用的操作系统也带来了大量的软件应用场景推动了第一波信息化浪潮促进软件产业的发展和壮大。同期MacOS在苹果公司Macintosh计算机上也得到广泛应用。1983年嵌入式实时操作系统RTOSVxWorks由美国WindRiver公司研发具有高性能的内核以及友好的用户开发环境以其良好的可靠性和卓越的实时性至今仍被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。20世纪90年代微软公司自行研发新操作系统Windows通过图形化界面来替换其原有的字符界面为主的DOS系列操作系统并持续推出更新版本直到今天仍占有大量桌面操作系统市场份额。1991年芬兰裔美国软件工程师Linus Torvalds基于Unix研发了Linux操作系统具有轻量级微内核的设计和良好的可移植性随后由不同的厂商或开源社区参与研发形成了Redhat、CentOS、Debian、Ubuntu等多种发行版本。在多个软件厂商和开发社区的参与下Linux操作系统在软件产业中建立起独特的地位并且在多种开源或共享软件协议下形成了付费与免费并存、闭源与开源并存、商业与社区并存的产业格局。这也是当今开源软件相关产业的特点之一。
操作系统是构建现代软件产业生态的重要基石。20世纪60年代操作系统软件开始逐渐从计算机硬件中独立出来出现了产品化萌芽。例如OS/360操作系统能运行在一系列用途与价位不同的IBM System/360大型机上具有了现代操作系统的独立性和产品化的特征但仍然依附于特定厂商没有形成规模化生产。1969年贝尔实验室开发开放源码的Unix操作系统得到了广泛的应用。之后基于Unix的源代码大量类Unix系统被研发出来可用于多种计算机硬件。市场上形成了多种独立的操作系统软件产品。例如加州大学伯克利分校研发的BSD以及此后的FreeBSD、NetBSD、OpenBSD等衍生产品。20世纪80年代微软通过与IBM公司的合作成功研制了面向个人计算机的桌面操作系统MS-DOS成为当时在IBM PC上最常用的操作系统也带来了大量的软件应用场景推动了第一波信息化浪潮促进软件产业的发展和壮大。同期MacOS在苹果公司Macintosh计算机上也得到广泛应用。1983年嵌入式实时操作系统RTOSVxWorks由美国WindRiver公司研发具有高性能的内核以及友好的用户开发环境以其良好的可靠性和卓越的实时性至今仍被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。20世纪90年代微软公司自行研发新操作系统Windows通过图形化界面来替换其原有的字符界面为主的DOS系列操作系统并持续推出更新版本直到今天仍占有大量桌面操作系统市场份额。1991年芬兰裔美国软件工程师Linus Torvalds基于Unix研发了Linux操作系统具有轻量级微内核的设计和良好的可移植性随后由不同的厂商或开源社区参与研发形成了Redhat、CentOS、Debian、Ubuntu等多种发行版本。在多个软件厂商和开发社区的参与下Linux操作系统在软件产业中建立起独特的地位并且在多种开源或共享软件协议下形成了付费与免费并存、闭源与开源并存、商业与社区并存的产业格局。这也是当今开源软件相关产业的特点之一。
当前操作系统软件产业中各类操作系统产品具有不同的特点或应用场景。例如在移动智能终端操作系统领域源于谷歌的Android操作系统以其开放性吸引了众多手机设备厂商开发出多个Android定制版本而苹果公司的iOS则在其独立的经营下形成了相对封闭的发展模式以其优良的性能获得了市场的认可。两者形成了各自产业发展模式。可见在某一细分的领域往往存在多个产品形成市场竞争同时也因不同产品各自的特点形成了市场互补。产品的多样性以及标准化等特性为操作系统产业乃至整个软件产业的繁荣提供了重要的支撑各类软件能够在通用的操作系统软件上运行是其他各个子产业发展的基础。
办公软件是一种重要的服务于日常信息处理的共性应用软件产品\footnote{在我国,办公软件也被归入基础软件。}。由于办公软件产品的普及各类信息的记录与处理有了便捷高效的平台。其中最为知名的办公软件包括文字处理、电子表格、演示等。早期的办公软件国外有Word Prefect、Lotus123等而国内则有WPS等都具有广泛的应用和深刻的商业影响。随着信息处理的需求越来越大人们对办公软件的易用性要求也日益提升推动者各厂商对软件产品的设计不断改进。在操作系统进入图形化“视窗”时代后相应的办公软件也开启了“所见即所得”WYSIWYG的新阶段大大提升用户体验并反过来对操作系统的效率和稳定性提出新的要求。办公软件与操作系统一样,也在产品逐渐成熟和商业模式逐步清晰的背景下,进入按许可进行销售的软件产品商业模式
办公软件是一种重要的服务于日常信息处理的共性应用软件产品\footnote{在我国,办公软件也被归入基础软件。}。由于办公软件产品的普及各类信息的记录与处理有了便捷高效的平台。其中最为知名的办公软件包括文字处理、电子表格、演示等。早期的办公软件国外有Word Prefect、Lotus123等而国内则有WPS等都具有广泛的应用和深刻的商业影响。随着信息处理的需求越来越大人们对办公软件的易用性要求也日益提升推动者各厂商对软件产品的设计不断改进。在操作系统进入图形化“视窗”时代后相应的办公软件也开启了“所见即所得”WYSIWYG的新阶段大大提升用户体验并反过来对操作系统的效率和稳定性提出新的要求。各主要厂商的办公软件产品逐渐成熟,稳步发展,相互竞争,形成细分的子领域和相对独立的子产业
中间件是一种重要的基础软件。中间件与操作系统、数据库系统并称为三大系统软件但相比于操作系统和数据库中间件产品出现得更晚。一般认为中间件是网络环境下处于操作系统等系统软件和应用软件之间的一种起连接作用的分布式软件。1968年出现的将应用软件与系统服务分离的IBM CICS交易事务控制系统可以看作是中间件产品的萌芽。它在面向最终用户的应用功能与面向机器的系统服务之间提供了中间层的封装使得各个层次的关注点更加集中。到20世纪90年代互联网的出现使网络应用和分布式应用登上历史舞台而其中涉及通信、协同等源于异构性的大量共性问题复杂性越来越高需要专门的软件产品来处理。一般认为AT\&T公司贝尔实验室于1990年推出的用于解决分布式交易事务控制的交易中间件Tuxedo是中间件产品诞生的标志。此后消息中间件、应用服务器中间件、应用集成中间件企业服务总线ESB等、业务架构中间件业务流程管理BPM等等各类中间件产品迅速发展起来。典型的中间件厂商包括国外企业IBM、Oracle、BEA等开源产品组织Apache、JBoss、JOnAs等以及国内企业金蝶、东方通、中创、普元等形成了相互竞争、相互补充的繁荣生态。可见中间件产品的发展过程也是软件技术相关领域日益复杂和细分的结果。
中间件是一种重要的基础软件。中间件与操作系统、数据库系统并称为三大系统软件但相比于操作系统和数据库中间件产品出现得更晚。一般认为中间件是网络环境下处于操作系统等系统软件和应用软件之间的一种起连接作用的分布式软件。1968年出现的将应用软件与系统服务分离的IBM CICS交易事务控制系统可以看作是中间件产品的萌芽。它在面向最终用户的应用功能与面向机器的系统服务之间提供了中间层的封装使得各个层次的关注点更加集中。到20世纪90年代互联网的出现使网络应用和分布式应用登上历史舞台而其中涉及通信、协同等源于异构性的大量共性问题复杂性越来越高需要专门的软件产品来处理。一般认为AT\&T公司贝尔实验室于1990年推出的用于解决分布式交易事务控制的交易中间件Tuxedo是中间件产品诞生的标志。此后消息中间件、应用服务器中间件、应用集成中间件企业服务总线ESB等、业务架构中间件业务流程管理BPM等等各类中间件产品迅速发展起来。典型的中间件厂商包括国外企业IBM、Oracle、BEA等开源产品组织Apache、JBoss、JOnAs等以及国内企业金蝶、东方通、中创、普元等形成了相互竞争、相互补充的繁荣生态。可见中间件产品的发展过程也是软件技术相关领域日益复杂和细分的结果。
工业软件是一类典型的面向领域的应用软件是支撑传统工业企业信息化、提升传统工业企业管理水平的重要软件产品簇。工业软件按涉及的工业业务领域可分为研发设计类软件和业务运营管理类软件。最早的面向工业生产及其信息化的独立软件开发商在20世纪六七十年代出现80年代更便宜的个人电脑和通用操作系统逐步普及企业信息化的门槛得以大幅降低工业软件逐渐开始普及并开始功能细分。随着工业生产和研发复杂性提升各个研发领域如计算机辅助设计CAD、辅助分析CAE、辅助制造CAM、辅助工艺规划CAPP、产品数据管理PDM、产品全生命周期管理PLM等涌现了大量的商业化软件产品为相关业务领域带来了显著的生产力优势很快在各个行业得到普及。在业务运营和管理领域早期的软件更多集中于管理信息系统MIS重点在于以数字化的形式来记录企业管理过程中产生的原始数据以及简单的业务流程。为了更好利用以手工为主的企业既有流程企业资源规划ERP等软件产品诞生逐渐形成了以计算机软件为中心的企业级管理系统。它不仅仅是对既有业务流程的自动化而是包含了诸如财务预测、生产能力、资源调度等更具有价值的软件功能同时对企业经营管理方式产生了深刻的影响。工业软件产品的销售已不限于单个系统的售卖与安装还包括行业解决方案、业务流程优化、最佳实践培训等业务咨询和服务能力的传播形成了更加丰富的商业模式。
由此可见,以产品化为特征的软件产业代表着早期桌面化的市场需求,软件企业通过销售软件使用许可的形式向各类用户提供商用软件产品,并基于这些软件产品深刻影响到人们的生产生活。由于软件产品复制的边际成本非常低以至于可被忽略这一完全不同于传统产业的特性,知识产权保护成为软件产业中的重要企业战略决策\cite{RePEc:unm:umamer:1995006}。同时,大量用户的特殊需求要求软件企业提供大量的定制功能,因此咨询与实施成为软件产品部署的重要方式,同时也促进企业采用支持可变性建模的开发方法开发面向特定领域的系列软件产品,使得产品化的软件生态更加丰富。随着云计算、移动计算等技术的发展和普及,一些以销售软件产品为主的软件企业开始向云化、服务化转型。软件产业逐步进入以服务化为主要特征的新阶段。
由此可见,以产品化为特征的软件产业销售软件使用许可为主要形式,针对不断细化的软件使用需求,研发出各类软件产品,作为商品向用户销售,并基于这些软件产品深刻影响到人们的生产生活。由于软件产品复制的边际成本非常低以至于可被忽略这一完全不同于传统产业的特性,知识产权保护成为软件产业中的重要企业战略决策\cite{RePEc:unm:umamer:1995006}。同时,大量用户的特殊需求要求软件企业提供大量的定制功能,因此咨询与实施成为软件产品部署的重要方式,同时也促进企业采用支持可变性建模的开发方法开发面向特定领域的系列软件产品,使得产品化的软件生态更加丰富。随着云计算、移动计算等技术的发展和普及,一些以销售软件产品为主的软件企业开始向云化、服务化转型。软件产业逐步进入以服务化为主要特征的新阶段。
\subsection{以服务化为特征的软件产业生态}
互联网技术的发展与普及,使得软件产品从依赖于拷贝安装转变为通过网络、按需索取成为可能。软件功能进一步细分为前端以人机交互为主和后端以业务逻辑处理为主两大部分。随着大量的业务逻辑迁移到后端,对后端的计算、存储能力提出了更高的技术要求,逐步发展出了云计算技术与平台;而互联网的广泛可达能力,带来了巨量的普通用户,形成了丰富的互联网应用。
在以服务化为特征的软件产业生态中,软件的核心价值主要以网络服务的形式呈现。作为产业生态的主体,软件企业大量采用云计算技术提升用户服务能力;同时,软件的用户能够在各类终端上通过网络按需访问所需要的服务。此时,软件可以根据用户的需求,以按次、按量等方式计费使用,出现了服务租赁这种新的商业模式。以由于软件的服务化、远程化、轻量化带来了具有良好的伸缩性和互操作性,因此,服务化的软件极大地推动了软件产业生态的繁荣。从企业而言,软件的部署和运维得到良好的控制;从用户而言,轻量化的运行提升了使用体验。受限于篇幅,本节仅以社交类软件和云计算服务为例介绍具有典型服务特征的新型软件产业生态。
社交类软件体现了人和人之间的连接。这一天然的人际链接的需求在互联网普及之前只能通过传统的社交方式来完成。互联网的发展使得社交活动发展到一个完全不同的高度这也催生了一大批以社交为主营业务的软件公司。社交类软件最早以即时消息服务IM的形式出现例如国外的ICQ、AIM、MSN以及国内的OICQQQ的前身。由于和社交关系深度绑定这类软件具有极强的粘性一旦占据优势地位就非常难于被其他软件所替代早期盈利模式比较单一。
社交类软件体现了人和人之间的连接。这一天然的人际链接的需求在互联网普及之前只能通过传统的社交方式来完成。互联网的发展使得社交活动发展到一个完全不同的高度这也催生了一大批以社交为主营业务的软件公司。社交类软件最早以即时消息服务IM的形式出现例如国外的ICQ、AIM、MSN以及国内的OICQQQ的前身。由于和社交关系深度绑定,这类软件具有极强的粘性,一旦占据优势地位就非常难于被其他软件所替代,但其功能受到当时技术环境的制约也相对单一。
互联网模式的变革也为新的社交软件形态的产生带来了新的机会例如Web2.0时代的到来在线交流变得更加便捷也催生了诸如Facebook、Twitter以及国内的微博等社交类网站的兴起。它们不再局限于通讯录中的固定的联系人而是使得互不相识的人际互动变得更加频繁甚至还出现了以陌生人社交为主要业务软件产品以及面向职业人士的LinkedIn等软件产品。移动互联网的兴起是另一次变革的浪潮,由于智能手机的用户普及率高且便于随身携带等特点通过智能手机随时在线使用社交媒体软件成为可能。这催生了新一代的社交类产品如微信、Telegram、Line、WhatsApp等的繁荣。传统的即时消息服务软件例如QQ等也扩展出游戏等增值服务并加入更广泛社交的能力。围绕这些应用软件形成了大量外围软件服务涉及电子商务、在线支付、招聘择业、娱乐游戏、社会信息服务、在线通讯等众多领域几乎涉及了社会生活的方方面面。可以说在新型软件技术的支撑下社交软件产业生态已经影响到当今社会的主要生活方式。
互联网模式的变革也为新的社交软件形态的产生带来了新的机会例如Web2.0时代的到来在线交流变得更加便捷也催生了诸如Facebook、Twitter以及国内的微博等社交类网站的兴起。它们不再局限于通讯录中的固定的联系人而是使得互不相识的人际互动变得更加频繁甚至还出现了以陌生人社交为主要业务软件产品以及面向职业人士的LinkedIn等软件产品。移动互联网的兴起带来另一场变革。智能手机的用户普及率高且便于随身携带,使得通过智能手机随时在线使用社交媒体软件成为可能。这催生了新一代的社交类产品如微信、Telegram、Line、WhatsApp等的繁荣。传统的即时消息服务软件例如QQ等也扩展出游戏等增值服务并加入更广泛社交的能力。围绕这些应用软件形成了大量外围软件服务涉及电子商务、在线支付、招聘择业、娱乐游戏、社会信息服务、在线通讯等众多领域几乎涉及了社会生活的方方面面。可以说在新型软件技术的支撑下社交软件产业生态已经影响到当今社会的主要生活方式。
云计算服务是新型服务化软件背后的重要技术支撑提供了大规模并行化定制化的服务能力。虚拟化技术Virtualization是云计算服务的基础。虚拟化本身可以以软件产品形式出现但对外提供服务化能力将计算机的各种实体资源如CPU、内存、磁盘空间、网络适配器等进行抽象、转换后以虚拟设备的方式呈现出来并可供分割、组合为一个或多个计算机环境。自20世纪60年代以来虚拟化能力随着桌面计算和服务器架构的日益发展不断发展完善面向不同的底层硬件资源和上层应用需求出现了以KVM、VirtualBox、VMware ESX、Xen等多种虚拟化软件产品进而出现了用于虚拟环境管理的OpenStack、Amazon EC2等产品。基于虚拟化技术许多厂商如Amazon、微软、Google、百度、阿里巴巴、华为等提供了不同层次的在线服务包括基础设施即服务IaaS、平台即服务PaaS、软件即服务SaaS。基础设施即服务提供在线计算资源和基础设施比如Amazon、阿里巴巴、华为等厂商的云服务器租赁等服务。平台即服务提供在线的应用开发和发布解决方案提升应用开发和运行的灵活性比如Google App Engine、微软Azure、Force.com等。软件即服务是在线化的软件形态面向最终软件用户以在线服务的形式提供面向领域的软件功能比如SalesForce的CRM系统、Cisco的WebEx等。不同厂商在推出相应的云计算服务时往往会提供IaaS、PaaS、SaaS中的一层或多层服务建立起各自的服务生态而不同软件厂商的软件产品和服务间相互竞争、相互补充进而构成更加复杂的云计算服务软件产业生态。
@ -96,9 +96,9 @@
\subsection{开发视角的软件产业生态}
软件开发是软件产业的重要环节,软件开发者是软件产业生态的重要参与者。从软件开发的视角来看,软件生产的方式不断演进,带来了软件产业的发展和变革。软件产业的发展离不开软件开发工具与环境以及软件开发过程与方法的进步,同时,软件开发相应的工具、环境、方法、技术也形成了富有特色的子产业,并形成一种推动软件产业本身发展的重要动力。软件开发工具软件既是软件产业中用于软件产品开发的工具,同时也是构成软件产业重要组成部分的一类软件产品,具有典型的两面性。本节将从软件开发活动所形成的软件产业的角度,回顾软件工具\index{软件工具}与软件开发方法的产业影响,分析不同阶段软件开发技术对软件产业发展的支撑。
软件开发是软件产业的重要环节,软件开发者是软件产业生态的重要参与者。从软件开发的视角来看,软件生产的方式不断演进,带来了软件产业的发展和变革。软件产业的发展离不开软件开发工具与环境以及软件开发过程与方法的进步,同时,软件开发相应的工具、环境、方法、技术也形成了富有特色的子产业,并形成一种推动软件产业本身发展的重要动力。软件开发工具既能用来开发软件产品,同时其自身也是一类软件产品,构成软件产业重要组成部分。本节将从软件开发活动所形成的软件产业的角度,回顾软件工具\index{软件工具}与软件开发方法的产业影响,分析不同阶段软件开发技术对软件产业发展的支撑。
从产业发展规律而言,规模化的软件生产是软件产业产生和发展的重要条件。而软件工具的产生对提升软件开发、运行、维护等过程的效率具有重要的作用,是规模化软件生产的前提。早期的软件工具主要是特定计算机主机上的专用程序。汇编语言和高级程序设计语言出现后,汇编程序、解释程序、编译程序等工具大大提升了软件开发效率\cite{百科全书}。到20世纪六十年代随着软件工程思想的发展软件工具开始覆盖软件开发的各个过程出现了需求分析工具、设计工具、编程工具、测试工具以及项目管理工具、配置管理工具等多种计算机辅助软件工程\index{计算机辅助软件工程}CASE工具并出现了工具箱(toolkit)的思想。随着工具种类的增加,软件开发过程中所用到的工具的单独使用不再能满足复杂软件开发过程的需要,工具间的交互和集成需求催生了软件开发环境\index{软件开发环境}。软件开发环境可以看成是通过集成机制集成了多种软件工具的软件在软件开发过程中能极大提升软件开发的效率和质量因此越来越受到业界的重视。各类集成开发环境IDE\index{集成开发环境}与开发套件、插件被研制出来。从20世纪八九十年代起宝蓝Borland、国际商用机器IBM、微软Microsoft等多家软件企业推出了各自的开发工具软件和开发环境以及我国“七五”“八五”国家科技攻关项目研制的集成化开发环境“青鸟”系统不仅包括以编程为中心的开发调试工具还提供软件版本管理、配置管理、团队协作、需求和设计建模、项目管理等特性形成了多种工具和环境在市场中的协同与竞争局面。直至今日各类开发工具以及开发环境软件仍然是软件产业的重要组成部分。可见软件技术的进步推动着软件开发工具产业的持续发展而开发工具产业生态的兴盛也支撑着软件技术的不断提升与改进。
从产业发展规律而言,规模化的软件生产是软件产业产生和发展的重要条件。而软件工具的产生对提升软件开发、运行、维护等过程的效率具有重要的作用,是规模化软件生产的前提。早期的软件工具主要是特定计算机主机上的专用程序。汇编语言和高级程序设计语言出现后,汇编程序、解释程序、编译程序等工具大大提升了软件开发效率\cite{百科全书}。到20世纪六十年代随着软件工程思想的出现和发展,软件工具开始覆盖软件开发的各个过程,出现了需求分析工具、设计工具、编程工具、测试工具以及项目管理工具、配置管理工具等多种计算机辅助软件工程\index{计算机辅助软件工程}CASE工具并出现了工具箱(toolkit)的思想。随着工具种类的增加,软件开发过程中所用到的工具的单独使用不再能满足复杂软件开发过程的需要,工具间的交互和集成需求催生了软件开发环境\index{软件开发环境}。软件开发环境可以看成是通过集成机制集成了多种软件工具的软件在软件开发过程中能极大提升软件开发的效率和质量因此越来越受到业界的重视。各类集成开发环境IDE\index{集成开发环境}与开发套件、插件被研制出来。从20世纪八九十年代起宝蓝Borland、国际商用机器IBM、微软Microsoft等多家软件企业推出了各自的开发工具软件和开发环境以及我国“七五”“八五”国家科技攻关项目研制的集成化开发环境“青鸟”系统不仅包括以编程为中心的开发调试工具还提供软件版本管理、配置管理、团队协作、需求和设计建模、项目管理等特性形成了多种工具和环境在市场中的协同与竞争局面。直至今日各类开发工具以及开发环境软件仍然是软件产业的重要组成部分。可见软件技术的进步推动着软件开发工具产业的持续发展而开发工具产业生态的兴盛也支撑着软件技术的不断提升与改进。
与此同时开源集成开发环境随着Java等语言的兴起而不断发展形成以开源和协作为特色的软件产业生态并派生出特有的商业模式。Eclipse是一个典型的例子。Eclipse最初由IBM公司主导开发并于2001年开源随后转由非盈利组织Eclipse基金会管理至今。Eclipse项目架构设计灵活其开源引起了广泛的关注并得到上百家大型软件企业的参与与贡献。围绕Eclipse这个开源集成开发环境开源社区的开发者和参与开源社区贡献的软件企业纷纷为该产品开发插件并得到集成和推广。在此基础上Eclipse衍生出了MyEclipse等商用版本以及IBM Rational Software Architect等多种工具软件。此类工具面向软件开发者的不同开发需求提供不同层次的解决方案和开发环境。这类软件生态往往以开源为核心通过良好设计的、具有可扩展性的软件体系结构构展现了软件的良好生命力并且在开源环境下不断发展同时采用合适的开源许可证允许衍生出商业产品并通过商业产品的应用与开源版本实现协同的演进。