软件生态系统
从软件产品线到软件生态系统 摘要:软件产品线公司日益把他们的平台扩大到组织边界之外, 实际上转 变为软件生态系统。 这篇文章, 我们讨论软件生态系统的新趋势,并概述采用软件生态系统方法的关键概念和 影响。 我们定义软件生态系统的概念,并介绍分类。最后,探讨企业以软件生态系统方式构建软件的影响。 1.介绍 软件产品线被视为是组织内部软件复用最成功的方法。许多公司已经显着改善其研发的效率,他们的产 品系列 增加了一个数量级,为他们的产品系列提供统一的用户体验,通过共享的软件组件和相关的软件 变化,来提供 产品的不同配置。由于这些优点,产品线对公司有很大的商业影响,公司努力应用技术, 从商业角度看,一个 成功的产品线能为公司提供“S曲线”增长。 在早期的研究,我们已经报道了产品线的范围不断扩大,但是主要在组织内部。因为公司广泛采用 产品 线, 产品线范围不断进化。 但是,产品线没有理由在组织边界停止扩张。 产品线的架构和共享软件, 在本 文其他章节被称为平台,也可以提供给公司外部的第三方。一旦公司决定向组织外部提供平台,这 个公司就从 软件产品线转换为软件生态系统。 公司为什么会转向软件生态系统,至少有两个原因。 第一, 公司可能意识到为了满足用户需求开发的大量功能,远远超过合理时间和研发投资带来的可 接受的投资回报。对于web服务企业、作为整体的软件行业,市场在“赢者通吃”原则的基础上运行, 因 此,长期成果的关键策略是建立一个庞大的客户群。 第二,大规模定制趋势,需要为成功的软件应用程序提供研发投资。尤其在web上(例如web服务 器混搭),也在其他领域,例如移动设备。用户需要个性化定制,使每个用户有一个满足他特殊需求的 独一无 二的配置。用外部的开发组件或应用程序扩展产品,为促进大量定制提供有效的机制。 前面提到的是一些软件生态系统出现的驱动力。例如,已经初步成功的web应用程序企业,平台化 应用程序,并把它开放给第三方开发者。企业不能自己开发,但这些开发者能够利用平台提供功能,满 足用户 群的需求。 虽然公司采用软件生态系统有不同的原因,由一些令人信服的论据可以解释目前的趋势: 1.为现有的用户提高核心产品价值 2.增加对新用户的吸引力 3.增强应用平台的“粘性”,也就是说,很难改变应用平台 4.通过生态系统中的开放式创新来加速创新 5.与生态系统合作伙伴协作,共同分担创新成本 6.由生态系统中的伙伴开发平台功能 7.通过与生态系统合作伙伴共同维护,降低总所有成本 本文更详细的讨论了软件生态系统的新兴趋 势、关键概念的概述和采用软件生态系统的影响。 本文有三方面的贡献,首先说明了软件生态系统与日俱增的 重要性。其次,它定义了软件生态系统的概 念。第三,讨论企业采用软件生态系统构建软件的影响。 本文是在作者参与观察和进行大量的软件生态系统的研究的基础上报道的。 提供了几个现有的产品和公司的例子, 但没有提供详细的参考资料。 所有的例子是众所周知的行业, 并且可以方便地使用互联网搜索引擎中找到。本文报道的工作是基于可公开获得的信息。在本文的其余 部分安 排如下。接下来的部分定义更详细的软件生态系统的概念,并提供软件生态系统的分类。随后, 下一节将讨论 公司从软件产品线的软件生态系统转型的影响。第四节,当采用软件生态系统的方法,公 司在方法和过程的后 果,最后,第5节,总结。 2.软件生态系统的分类 生态系统的概念源于生态学。 维基百科定义的生态系统为包括在一个地区所有的植物, 动物和微生 物 (生物因素)和所有的非生物物理(生物的)环境因素共同起作用的自然单元[4]。 虽然上面是一个很好的定义,它是不适合本文的讨论,因此,我们从人类生态系统的概念开始。一 个人 类的生态系统是由参与者,参与者之间的连接,物理或非物理因素的连接之间的交易。在本文的讨 论中,我们 进一步区分商业生态系统和社会生态系统。在商业生态系统中的参与者都是企业,供应商和 客户,因素是商品 和服务,以及交易包括金融交易,同时也包括信息和知识的共享,查询,售前和售后 联系方式等。社会生态系 统包括参与者,他们的社会关系和各种形式的信息的交换。 一个软件生态系统包括一套软件解决方案, 在相关的社会或商业生态系统和提供这些解决方案的组 织 中,参与者能够,支持和自动执行活动和交易。当然,一个软件生态系统也是一个生态系统,特别是 一个商业 生态系统,因此,商品和服务是能为活动和交易提供支持或自动执行的软件解决方案和软件服 务。 例如,对于一个小企业,活动是员工的实时跟踪,就业数据的需要。一个例子交易一家企业对另一 个企 业的支付。 这些活动和交易可以得到支持, 例如,即任务是简化的和较少的努力的或自动的, 例如, 任务 是由软件解决方案执行的,无需任何人的参与。第三类是,要么是不可能的,或没有软件解决方案 非常昂贵的 任务启用。在线社交网络的出现,是一个新的可能性启用的例子。 尽管Web的背景下,软件的生态系统得到显着关注,但这一类的生态系统已经存在了几十年。特 别说明 的是20世纪90年代初,当不同的公司为谋取桌面操作系统的霸主地位,获得最具影响力和数量 最多的第 三方开发者的支持被确认为关键,像IBM和微软等公司明确做到这一层面。 上面的例子说明了一个操作系统为中心的操作系统。 软件的生态系统存在于多个领域, 图1中提出 的 分类法目的是在二维空间组织这些生态系统中。第一个维度很好的描述了抽象层次,在软件生态系统 包括三 层,即操作系统,应用程序和终端用户编程定义的。第二个维度捕获计算产业中占主导地位的计 算平台,例如 桌面,Web和移动方面的发展。 虽然有人可能会争辩在桌面之前,大型机和微型计算机就已存在,在普适计算时代,除了手机,可 以定 义其他平台,绝大部分的软件开发发生在这个分类中定义的范围。下面,我们更详细地讨论每个类 别。 操作系统为核心的软件生态系统 这类是第软件生态系统明确识别和管理的地方,有:Windows,Linux和苹果的OS X。虽然 Windows 是目前占主导地位的操作系统,在90年代初,它与IBM的OS/2和Mac OS是竞争市场。在最近几年, Linux和苹果的OS X都分别在服务器和客户端桌面获得了市场份额。 在web上,几个平台都渴望成为web的操作系统。 在服务器方面, 可用的平台包括谷歌 AppEngine, 雅虎的开发,Coghead和Bungee实验室。所有平台都假定使用在客户端浏览器,可能有一 个或多个插 件。 对于移动设备,多个平台已存在并且已经成功,如20世纪90年代的Palm OS。然而,在过去的几 年中,竞争已经白热化, 目前争夺主导地位的平台, 包括塞班/诺基亚60系列,iPhone和谷歌的 Android。 特性 这个分类中有以下特点: 以软件生态系统为基础的操作系统是域名独立的, 并假设第三方开发人员构建为客户提供价值的应 用程 序。 在桌面和手机的情况下,每个想要运行为生态系统开发的应用程序的设备,都为其安装操作系统。 因 此,有操作系统的设备的销量,严重影响操作系统生态系统的成功。 操作系统通常优化的单机应用的部署,并为跨应用集成和组成提供支持。 操作系统供应商提