软件生态系统_生态系统管理软件
软件生态系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“生态系统管理软件”。
从软件产品线到软件生态系统
摘要:软件产品线公司日益把他们的平台扩大到组织边界之外,实际上转变为软件生态系统。这篇文章,我们讨论软件生态系统的新趋势,并概述采用软件生态系统方法的关键概念和影响。我们定义软件生态系统的概念,并介绍分类。最后,探讨企业以软件生态系统方式构建软件的影响。
1.介绍
软件产品线被视为是组织内部软件复用最成功的方法。许多公司已经显著改善其研发的效率,他们的产品系列增加了一个数量级,为他们的产品系列提供统一的用户体验,通过共享的软件组件和相关的软件变化,来提供产品的不同配置。由于这些优点,产品线对公司有很大的商业影响,公司努力应用技术,从商业角度看,一个成功的产品线能为公司提供“S曲线”增长。
在早期的研究,我们已经报道了产品线的范围不断扩大,但是主要在组织内部。因为公司广泛采用产品线,产品线范围不断进化。但是,产品线没有理由在组织边界停止扩张。产品线的架构和共享软件,在本文其他章节被称为平台,也可以提供给公司外部的第三方。一旦公司决定向组织外部提供平台,这个公司就从软件产品线转换为软件生态系统。
公司为什么会转向软件生态系统,至少有两个原因。
第一,公司可能意识到为了满足用户需求开发的大量功能,远远超过合理时间和研发投资带来的可接受的投资回报。对于web服务企业、作为整体的软件行业,市场在“赢者通吃”原则的基础上运行,因此,长期成果的关键策略是建立一个庞大的客户群。
第二,大规模定制趋势,需要为成功的软件应用程序提供研发投资。尤其在web上(例如web服务器混搭),也在其他领域,例如移动设备。用户需要个性化定制,使每个用户有一个满足他特殊需求的独一无二的配置。用外部的开发组件或应用程序扩展产品,为促进大量定制提供有效的机制。
前面提到的是一些软件生态系统出现的驱动力。例如,已经初步成功的web应用程序企业,平台化应用程序,并把它开放给第三方开发者。企业不能自己开发,但这些开发者能够利用平台提供功能,满足用户群的需求。
虽然公司采用软件生态系统有不同的原因,由一些令人信服的论据可以解释目前的趋势: 1.为现有的用户提高核心产品价值 2.增加对新用户的吸引力
3.增强应用平台的“粘性”,也就是说,很难改变应用平台 4.通过生态系统中的开放式创新来加速创新 5.与生态系统合作伙伴协作,共同分担创新成本 6.由生态系统中的伙伴开发平台功能
7.通过与生态系统合作伙伴共同维护,降低总所有成本
本文更详细的讨论了软件生态系统的新兴趋势、关键概念的概述和采用软件生态系统的影响。本文有三方面的贡献,首先说明了软件生态系统与日俱增的重要性。其次,它定义了软件生态系统的概念。第三,讨论企业采用软件生态系统构建软件的影响。
本文是在作者参与观察和进行大量的软件生态系统的研究的基础上报道的。
提供了几个现有的产品和公司的例子,但没有提供详细的参考资料。所有的例子是众所周知的行业,并且可以方便地使用互联网搜索引擎中找到。本文报道的工作是基于可公开获得的信息。在本文的其余部分安排如下。接下来的部分定义更详细的软件生态系统的概念,并提供软件生态系统的分类。随后,下一节将讨论公司从软件产品线的软件生态系统转型的影响。第四节,当采用软件生态系统的方法,公司在方法和过程的后果,最后,第5节,总结。
2.软件生态系统的分类
生态系统的概念源于生态学。维基百科定义的生态系统为包括在一个地区所有的植物,动物和微生物(生物因素)和所有的非生物物理(生物的)环境因素共同起作用的自然单元[4]。
虽然上面是一个很好的定义,它是不适合本文的讨论,因此,我们从人类生态系统的概念开始。一个人类的生态系统是由参与者,参与者之间的连接,物理或非物理因素的连接之间的交易。在本文的讨论中,我们进一步区分商业生态系统和社会生态系统。在商业生态系统中的参与者都是企业,供应商和客户,因素是商品和服务,以及交易包括金融交易,同时也包括信息和知识的共享,查询,售前和售后联系方式等。社会生态系统包括参与者,他们的社会关系和各种形式的信息的交换。
一个软件生态系统包括一套软件解决方案,在相关的社会或商业生态系统和提供这些解决方案的组织中,参与者能够,支持和自动执行活动和交易。当然,一个软件生态系统也是一个生态系统,特别是一个商业生态系统,因此,商品和服务是能为活动和交易提供支持或自动执行的软件解决方案和软件服务。
例如,对于一个小企业,活动是员工的实时跟踪,就业数据的需要。一个例子交易一家企业对另一个企业的支付。这些活动和交易可以得到支持,例如,即任务是简化的和较少的努力的或自动的,例如,任务是由软件解决方案执行的,无需任何人的参与。第三类是,要么是不可能的,或没有软件解决方案非常昂贵的任务启用。在线社交网络的出现,是一个新的可能性启用的例子。
尽管Web 2.0的背景下,软件的生态系统得到显著关注,但这一类的生态系统已经存在了几十年。特别说明的是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。
特性
这个分类中有以下特点:
以软件生态系统为基础的操作系统是域名独立的,并假设第三方开发人员构建为客户提供价值的应用程序。
在桌面和手机的情况下,每个想要运行为生态系统开发的应用程序的设备,都为其安装操作系统。因此,有操作系统的设备的销量,严重影响操作系统生态系统的成功。
操作系统通常优化的单机应用的部署,并为跨应用集成和组成提供支持。
操作系统供应商提供的开发工具的生态系统,以简化开发人员所采用的运作体系。操作系统供应商提供的开发工具的生态系统,以简化开发人员所采用的运作体系。
成功因素
这类的成功因素如下:
1.操作系统生态系统的成功,是由建立在它之上的应用程序决定的。因此,成功的关键因素是,开发者在操作系统之上构造应用程序时,尽量简化其工作
2.虽然操作系统提供通用功能,但是为了吸引开发者,它需要不断的扩展其功能集。操作系统一个重要的成功或失败的因素是,能够包含早期的商品化功能,而不疏远现有的开发者。
3.最后,也是最重要的成功因素是,使用该操作系统和开发者可获利的用户的数量。挑战
这一类需要解决下面的挑战
1.不同硬件配置的复杂性很容易使效率降低。对于台式机、移动设备和各种类型的设备,由于物理配置的不同,应用程序很容易不兼容。尤其在硬件功能发生快速进化的移动领域,个别设备开发最新最大功能和老设备向后兼容,是很难维持平衡的。
2.在Microsoft Windows平台获得巨大利益后,它单独在web和移动领域处于领导地位,业内出现倦意。因此,为了争取主导地位,可能要牺牲主导平台的直接经济利益,如诺基亚决定开源Symbian/60系列平台。
应用程序为中心的软件生态系统
在某种程度上,以应用程序为中心的软件生态系统与一操作系统为中心的生态系统是相反的。这一类是特定领域,通常从市场上成功的应用程序开始,而且这些应用程序没有生态系统的支持。公司在领域中成功的第一步是,创建大量的用户群,并且有稳健的财务基础。
市场上应用程序的成功往往会产生大量的特殊需求,公司由于的有限研发资源和商业模式通常不允许用户子集的特殊应用,因此无法满足这些需求。对于这个问题,公司通常会提供API,那么用户能聘请软件工程师来扩展具有用户特定的功能应用程序。一旦公司通过提供APIs来开放应用程序,应用程序就会变为一个特定领域的平台,第三方开发者可以在此之上扩建为其他应用程序,为用户子集增加价值。假设公司从应用程序成功转变到平台,那么软件生态系统的建立为第二阶段的快速发展奠定了基础。
桌面上,以应用程序为中心的软件生态系统的成功例子,如已经出现多年的微软的Office套件和Autodesk公司的AutoCAD产品,公司的平台及在这平台之上有第三方开发者创建的解决方案,已经创造了巨大价值。但是,最近几年的新趋势,尤其在web上,web2.0的软件服务区,许多公司只要获得足够大的客户群,就会进行软件生态系统战略。例如SalesForce, eBay 和Facebook公司,这些公司先成功创立了一个大量用户使用的应用程序,然后把应用平台开放给第三方开发者。有趣的是,目前还没有建立在移动计算平台上的应用程序生态系统。
由许多公司不断改进其产品,已成为软件生态系统的平台,给经营策略,架构,开发流程和研发部门带来了许多改变。
特点
这一类的特点如下:
1. 如上所述,应用程序平台通常是从一个成功的在线应用程序开始。
2. 平台提供者经常提供托管服务或其他技术,为用户在第三方开发者能和平台间带来无缝体验。
3. 在操作系统的生态系统,开发者构建自己的应用程序。与这不同,在平台上,第三方的应用程序开发者扩展特定领域的功能。
4. 为了实现无缝集成和为用户增加价值,在平台和扩展间深度集成,以便数据、工作流和用户体验。成功因素
这类的成功因素如下:
1.应用程序软件生态系统最重要的成功因素是大量的用户或这些用户有扩展平台添加功能的前景。虽然“酷”起到重要作用,商业案例驱动第三方开发者,即潜在客户池。
2.假设第一个因素是满足的,平台公司应该简化第三方开发者的工作,允许他们使用通用的流行的开发环境、稳定的接口、web应用程序、容易的部署和集成的平台。
3.虽然大多数的应用平台公司专注于提供数据的访问,提供扩展数据模型的解决方案和工作流程。从用户角度来看,相同用户体验架构的集成对于无缝集成是重要的。
4.第三方开发者需要付费的用户,平台公司就要提供可行的通道,使用户看到第三方开发者的贡献。
挑战
这一类需要解决下面的挑战
1.应用平台的主要挑战是产品战略和平台战略的冲突。整个公司都关注产品战略,该公司已享受了第一次成功。现在需要向平台战略转变,这两种战略都产生深远的改变。从产品战略的角度来看,平台战略并不为用户推动新的价值,因为它主要使第三方开发者创造价值。其次,平台战略限制了改变API、用户界面和数据模型的自由,尤其是,由于最初平台战略的相对优先级尚未充分确定,平台公司很可能造成二元断裂。
2.博客和新闻上的轶事证据表明,为第三方开发者建立一个可行的商业模型是一个可望而不可及的目标,对于大多数的软件生态系统来说是很难实现的。对于应用程序为中心的生态系统,应用平台有其自身的优点吸引用户是另一大挑战。由于这些,添加功能来扩展平台的用户数量降低了。
终端用户编程的软件生态系统
相较于前两个,软件生态系统的第三类是比较小的和不太重要的。另一方面,软件平台上已经很长时间是神圣的,例如,提供的配置和组合环境是直观的,那么终端用户可以自己创建所需的应用程序。
大多数终端编程的生态系统采取特定领域的编程语言(DSL)、或者图形、或者文字。实际上,DSL捕获相关应用程序的特定领域平台的人变化和组合点,通过工具公开这些以便配置和组合。由于大量的工作需要创造DSL和它周围的工具,因此最终用户可以创建应用程序的空间是有限的。一种观点是,这一类的软件生态系统比应用程序的软件生态系统(应用程序为中心的软件生态系统比操作系统为中心生态系统更窄更集中)。但是,往往很惊奇的看到,搜限制的终端用户如何超越DSL预期范围创建应用程序。
终端用户编程的生态系统的例子有Microsoft Excel、Lego Mindstorms(乐高头脑风暴)and 基于流的混搭创建工具,例如Yahoo!管道和微软的Popfly。同样,观察到在移动领域没有成功的最终用户编程软件生态系统。
特点
这一类的特点如下:
1.这一类主要集中在应用程序开发人员,他们对领域有很好的理解,但没有计算机科学或工程的学位。因此,这一群人不能理解计算和编程的基础知识。
2.虽然存在例外,假设处理和呈现数据流,web的最终用户编程环境是基于管道和过滤器体系的。
3.从软件工程师的角度来看,终端用户编程往往关注预先创建的积木的创造性的组合,而不是从根本上创建新的功能。
成功因素
这类的成功因素如下:
1.成功的关键因数是,最终用户自己通过创建一个独特的解决方案产生的价值金额。如果独特解决方案的价值不足够,生态系统将难以成功。
2.实际有小的用户子集创建应用程序,提供有效的共享应用程序的方法,以便更多的用户采用、调整和使用这些解决方案,这是至关重要的。又有这一类的生态系统的经济利益很低,最终用户参与应用程序创建和共享的动力是他们的身份和地位。
挑战
这一类需要解决下面的挑战
1.目前为止,最大的挑战是模块化应用领域,为了最终用户能以小的指令理解和直观地创建应用程序,简化最终用户的理解。许多领域太复杂,以至于不能创建满足大量用户的有特定的语言、相关的配置、组成环境的领域。
2.该最终用户创建的的生态系统领域必须是足够稳定的,可以减少维护创建这个领域的工具基础设施的工作量。