国家863软件专业孵化器昆明基地构件技术推广应用实践
昆明八六三软件孵化器有限责任公司
1 孵化器情况概述
2002年11月,科技部批复昆明市人民政府,同意建立国家863软件专业孵化器昆明基地(以下简称“昆明孵化器”),同年12月,昆明基地建设启动。遵循科技部“政府引导、市场推动、企业化运作”的基地建设宗旨,昆明基地于2003年先后组建昆明八六三软件孵化器有限责任公司及昆明艾普瑞软件评测有限公司作为基地的建设、运营公司主体。
昆明孵化器成立于2003年12月,随着2005年年初软件开发公共技术支撑平台的初步建成,开始面向社会招集入孵企业,主要以企业、项目和人才为对象,从政策、技术、渠道、资金等方面对软件企业进行孵化,目前有75家活跃在电子政务、烟草、金融、旅游、石油化工等各个国民经济领域的软件企业在孵(见表1)。
表1 国家863软件专业孵化器昆明基地概况
目前在孵企业的在职员工平均低于20人,大部分企业没有固定的具有知识产权的软件产品,均以行业应用进行定制性的项目研发为主,缺乏行业竞争优势,企业发展缓慢。
昆明孵化器现有正式员工16名,设有企业服务部、技术中心、软件评测部、数字媒体部、行政部、财务部。现有办公场地1100平方米,其中办公用房300平方米,服务用房800平方米。
2 企业面临的主要技术问题,以及推广构件技术的动机
2.1 企业面临的主要问题
构件技术是支持软件复用的核心技术。随着构件获取、构件模型、构件描述语言、构件分类检索、构件复合组装等研究领域的逐步成熟,构件技术已经走出实验室,被越来越多的软件企业采用。但是,国内外大量企业的实践显示,并非所有采用构件技术的企业都能够从软件复用中获益,许多企业在进行构件化技术改造的过程中遭遇到了挫折和失败。这些企业遇到的主要问题如下。
2.1.1 没有定义符合企业发展战略的复用策略
美国学者Lim的研究显示,创建一个用于复用的构件将比创建一个单次使用的软件模块多花费25%~1300%的成本。只有开发出来的构件可以被多次重复使用,才能够收回这些额外支出的成本,并进一步获得额外的收益,这就要求企业的复用策略必须符合企业的发展战略。但在很多情况下,复用活动仅由热衷于构件技术的技术人员发起和实施,缺乏高层决策者的参与,从而使得在复用上的大量投入因为不符合企业长期的发展战略而无法获得足够的回报。
2.1.2 无法在整个生命周期过程中发现复用的机会
只有在软件生命周期的所有活动中全面地考虑复用,才能更好地把握潜在的复用机会。由于缺乏这种全面的视野,某些软件模块经常在开发完成后才被发现具有复用价值,而当复用这些并非为复用而设计的模块时,通常需要做大量的适应性修改,不但可能会降低模块的质量,而且增加了开销,使企业难以从这种“事后复用”中获益。
2.1.3 没有建立有效的复用基础设施
复用基础设施包括相关的硬件、软件、工具、度量、组织结构、标准、工序等,是保证复用有序、高效进行的必要条件。缺乏有效的复用基础设施,使得许多企业的复用过程处于低效率的无序状态。
2.1.4 没有建立起鼓励复用的制度和文化
引入复用的同时,也引入了新的矛盾。例如,组织长远利益与项目当前利益的矛盾——在项目中开发未来可复用的构件是企业的长期投资,但是因此而导致的额外成本却违背了当前项目的近期利益。一些擅长构件技术的企业,却因为不能妥善地解决复用引入的矛盾,没有在组织内建立鼓励复用的制度和文化,导致复用无法在企业中长期存在和发展。
2.1.5 中小型企业因为无法满足组织级复用过程框架在技术、管理和资金投入上的要求,从而导致复用过程改进活动中途夭折
目前主流的组织级软件复用过程框架虽然在HP、IBM、美国国防部等大型软件组织中获得了成功,但是北京大学在北京中关村软件园所做的调查却显示,中小型企业因为受到技术、管理水平和资金投入的限制,使得这种重型的过程框架现阶段还难以在我国的企业中推广。例如,由于受到生存上的压力,专门实施生产者复用的组织机构(例如,专门从事可复用构件开发的基础研发小组)通常因为无法在短期内直接从市场上获取收益,从而在成立半年到两年后即被大量减员或者被取消,从而无法发挥其应有的职能。
导致上述问题的根本原因在于,没有从生命周期的各个环节系统化地考虑复用,没有建立起支持构件技术的系统化复用软件过程,复用只是组织内部分人员随意的、自发的实践;没有精心设计的、制度化的软件过程为复用实践提供指导和支持;或者虽然进行了复用过程改进的尝试,但是因为无法确定适合的过程框架,而导致效果不佳或失败。要使得软件企业能够从复用中切实地获益,不仅需要系统、深入地掌握构件技术,而且还应该实施定义适合的、满足复用需求并符合企业实际情况的软件过程。
昆明孵化器推广构件技术的目标是为引入构件技术、实践软件复用的中小型企业建立和改进适应复用需求的软件过程提供切实可行的框架和实用的支撑工具,从而使软件企业可以从软件复用中持续地获益。为了实现上述目标,将以现有的国内外软件过程标准为基础,结合基于构件的软件开发方法和我国企业的实际情况,从企业的组织结构、角色、活动和制品等方面系统研究项目级软件复用过程框架,研发支持复用过程的软件工具,并在国家863软件专业孵化器昆明基地的软件企业中宣传软件复用过程、推广试用相关工具,帮助软件企业从软件复用中持续地获益,这对于宣传推广软件复用技术、提高企业工程管理水平具有重要意义。
2.2 推广构件技术的动机
经过多年的发展,云南软件产业逐步形成了以平台软件、嵌入式软件、工具软件、应用软件为主的发展特色,以自主创新为主的原始开发和以集成应用创新为主的二次开发在本土软件开发中平分秋色。但由于云南软件企业数量和规模小,技术人才流动性大,企业一直走着从项目入手、从系统集成入手、从行业应用做起的路子,很难形成一定的规模和技术沉淀。企业生产和开发软件大多是从头开始,这样就不可避免地存在大量的重复劳动,如用户需求获取的重复,需求分析、设计的重复,编码实现的重复,测试工作的重复和文档工作的重复等。从经济角度看,这些重复增加了项目的人力成本和时间成本;从技术角度衡量,新代码构建的系统可靠性和稳定性都需要较长的磨合期,加大了系统运行的风险。
信息时代的来临,尤其是网络社会的发展缩短了时间和空间的距离,在信息技术发达的IT业尤其是软件行业,这种时、空差距的缩短更加剧了行业残酷的竞争,只要稍有规模的项目,参与竞争的就不会仅是当地一流的企业、抑或国内一流的企业,而是国际一流的企业。因而在这里没有省内一流的骄傲、没有国内一流的自豪,而只有一种危机感,那就是如果要赢得能奠定企业发展的规模性项目,就必须和国际一流企业站在一起,去竞争并赢得项目。而赢得项目的关键是什么?无外乎品质、价格、周期。一般情况下,质量和价格、工程周期总是呈反比的,而且越是小企业,越不具备大项目的规模化反应速度,云南的软件企业在这些问题上更是不具优势,处于行业链的下游。而云南的冶金、电力、交通、烟草、旅游等产业的高速发展又带来了巨大的信息化市场空间,提供了巨大的软件业商机,本土软件业在巨大的市场机会和自身薄弱的技术现实面前,突破之道何在?
软件复用研究于20世纪60年代提出,其核心技术——构件技术在20世纪80年代已越来越受重视,是迄今为止国际上公认的既能提高软件质量,又能缩短开发周期、降低软件开发成本的有效的技术选择;我国原信息产业部颁布的《信息产业科技发展“十一五”规划及2020年中长期规划纲要》中关于重大软件项目提出“深入研究构件、构件化软件开发和构件库管理技术,研发拥有自主知识产权的规模化软件开发工具,提高我国软件产出率”;科技部863信息技术主题“十五”期间将软件构件技术研究作为重大项目进行支持,“十一五”期间更是将构件技术、标准、构件库建设及构件库互联互通放在了重要的位置。以此得出结论,普及和提高软件企业构件技术水平,建设和运营具有地方行业特色的软件构件库是云南软件企业发展的关键环节。
软件企业掌握软件复用过程的关键技术——构件技术是企业提高软件产品质量和生产效率并降低成本的技术保障,但是有充足的、可供复用的构件才是构件技术能真正产生效益的关键。有效的软件复用是一个将组织问题、技术问题和经济问题完满协调解决的结果,但作为软件企业个体,不要说一个可供复用的构件库的建立、维护是漫长而花费巨大的,单是规范化的掌握这一技术便已不易。针对这样的现状,国家863软件专业孵化器昆明孵化器在“十五”期间,通过有计划地邀请国家863构件技术专家,免费对在孵软件企业进行了循序渐进的技术讲座,并筛选重点企业无偿进行实践辅导,同时持续建设并运营了基地的构件库,初步探索出构件技术企业推广应用和公共构件库建设经验;在“十一五”建设中,昆明孵化器将在现有公共软件技术支撑平台的基础上进一步开展相关研究,特别是关于企业构件技术的应用积累、地方特色构件库建设及运营的持续深入研究,同时扩大研究成果在软件企业中的应用,提升云南软件企业的市场竞争力。
3 构件技术推广应用的主要模式
昆明孵化器采用产学研相结合的组织结构,充分发挥北京大学的研究优势和863孵化器昆明基地的服务组织优势,密切结合云南省软件企业的实践经验和具体问题展开构件技术推广应用。
昆明孵化器与北京大学的相关人员组成构件技术推广项目组,项目组及时、深入地分析国际上的相关研究,借鉴国际先进技术,基于国内外软件过程的相关标准,结合构件技术和我国软件企业的特点和实际问题,研究符合云南软件企业的复用过程框架、模型、工具和培训推广教材体系,并在昆明863在孵软件企业中宣传复用过程、试用工具。具体方法如下:
第一,对学术界和产业界的研发现状做详尽的调研,及时、深入地寻找能够借鉴的方法,详细、具体地界定出构件技术在昆明推广应用的范围。
第二,针对云南软件企业的特点和实际需求,通过与企业的交流合作,分析曾经进行复用尝试的企业的经验、教训和最佳实践,借鉴国外相关研究成果,确定支持构件技术的系统化复用过程框架。
第三,结合北京大学的研究成果,设计适应不同企业需求的、注重实践的复用过程培训课程并编写配套的教材。
第四,选择致力于构件化技术改造的软件企业,为其提供复用过程的宣传培训,帮助企业建立其项目级复用过程。
第五,根据咨询服务中获得的企业反馈,对项目级复用过程框架、复用过程支持工具等研究成果进行调整、迭代。
3.1 构件技术提供方主要职责
(1)涉及软件构件技术推广的基础研究和相关工具研发,包括向从昆明孵化器在孵企业中遴选的骨干软件企业推广构件技术,研究建立面向实践、适于企业学习的构件技术培训课程和教材体系,研究适合中小型企业的项目级软件复用过程并研发相关支持工具,研究构件测试技术并建立第三方构件质量认证规范和机构,建立软件构件超市原型。
(2)协助进行项目成果的示范应用和推广。
3.2 活动组织方主要职责
(1)项目总体组织及管理,包括分工协调及进度控制等。
(2)参与项目的基础研究和相关工具研发,包括在孵软件企业的骨干软件企业遴选,构件技术推广,研究适合中小型企业的项目级软件复用过程并研发相关支持工具,研究构件测试技术,建立第三方构件质量认证规范和机构,建立软件构件超市原型,并为项目成果在企业的示范应用提供环境、资源和技术支持。
(3)协调并组织企业示范应用,推广项目研究成果。
3.3 技术应用企业主要职责
(1)确认特定领域的具体在建项目。
(2)组织基于构件技术的开发团队。
(3)结合实际在建项目,按照构件技术开发的具体实施步骤和方法进行构件技术推广应用。
(4)支撑相关软件企业构件技术的开发和掌握。
3.4 经费来源
昆明孵化器与北京大学合作在云南进行构件技术推广,为减轻试点企业的负担,整个推广培训涉及的费用都由昆明孵化器独立承担。昆明基地积极争取本地省、市科技主管部门的支持,通过申报科技计划项目获得部分项目经费,不足部分由昆明基地自行筹措,确实保障构件技术的推广和实施。
4 技术推广的过程
4.1 构件技术推广方式
2006年4月,昆明八六三软件孵化器有限责任公司与北京大学联合向昆明市科技局申报了市级科技计划项目“软件构件技术推广应用相关研究”。
该项目从2006年4月起在昆明开展了软件构件化技术应用与实践,旨在推广基于构件的软件开发方法(CBSD),促进软件企业由传统开发方式转向基于构件的工业化生产方式。北京大学采用构件技术指导昆明市示范企业在典型的应用领域项目中实施构件化技术改造,提炼一批领域专用或通用的构件。同时,在企业典型应用领域总结适应于企业的基于构件的软件开发方法,从而促进软件企业的发展,不断丰富昆明软件公共技术服务平台中的构件资源,为大范围的软件复用和软件工业化生产方式的推行奠定基础。
该项目由昆明八六三软件孵化器有限责任公司负责组织对外宣传工作和项目各个阶段的验收工作,并对示范企业进行项目实施的监督。北京大学提供技术支持和平台支持,对示范企业进行构件技术相关培训与指导,对项目实施的各个阶段进行监控。示范企业则采用CBSD进行项目开发,同时在企业中进行CBSD的技术改造,以提升企业技术能力。同时,该项目与昆明的高校合作,通过项目的实施,一方面培养了当地从事构件技术应用的人才,另一方面促进了当地高校吸收国际先进技术。本项目中参与构件技术应用示范项目的各方相辅相成、积极配合并互相监督,是本项目顺利实施的重要保证。
为了更好地探索软件构件技术的实践,我们选择了具有不同规模、不同资质的软件企业,并选择具有代表性的典型应用领域,在该领域这些企业已经有多个已实施的项目和一定的技术积累,基于这样的基础可以更好地展开构件技术应用示范。昆明构件推广示范企业概况如表2所示。
表2 昆明构件推广示范企业概况
在本项目中,为了将构件技术进一步推广,我们选择昆明理工大学参与该应用示范工作。通过与当地高校的合作与交流,培养了当地学校的人才,加强了本地高校与企业的合作,进一步保证了构件技术应用长期、顺利地实施,为构件技术大范围普及打下了基础。
按照目标和计划,本项目进行了相关的研发、研究和实践工作,在各方面均按要求完成了项目合同书所确定的各项要求。在昆明参加的构件技术推广应用的企业有南天电子信息研发中心、昆明锐祺电脑有限公司、昆明安泰得软件科技有限公司。它们分别在移动设备应用支撑平台、视图软件与工程质量控制领域进行了构件化技术改造,项目进展良好,企业已完成领域专用构件和通用构件的提取工作,本项目在帮助企业提高软件产品的开发效率与质量方面已初显成效,提升了企业的技术能力。
本项目从2006年4月启动至2007年5月完成,按照课题一年多的任务执行过程,基本可以将完成的任务划分为3个阶段。
(1)第一阶段:培训阶段。构件技术的思想、方法与技术在国内企业中还并未普及,在对众多软件企业的调查中发现很多企业还是停留在对构件技术相关的概念略知一二的水平上,因此进行构件技术应用示范的重要工作是进行广泛培训,将构件技术系列思想、方法与技术普及到软件企业中,使管理层人员采用软件构件技术相关思想、方法进行软件企业的管理,改进软件过程;使开发层人员采用软件构件技术进行软件的开发与复用资源的积累。同时,针对不同企业的特点,我们又有针对性地开展重点培训,以更好地为不同类型、不同规模的企业提供技术支持。
(2)第二阶段:实施阶段。在进行构件技术应用项目时,培训的目的是使企业掌握构件技术相关知识,但是为了能使企业运用构件技术的方法与思想进行实际项目的实践,仅仅进行技术方面的培训是不够的,在构件技术的实践中还会碰到很多问题,需要对这些实际的问题进行讨论和解决,并且在培训过程中,企业对于所培训内容的理解也不尽相同,在进行实践过程中,实施会有偏差。因此,在项目实施阶段,讨论与交流是开展构件技术实践的重要手段。我们在项目实施的每个阶段,邀请构件技术相关领域的专家,针对示范企业各个阶段的实际问题,组织了数十次的讨论交流,实地解决相关问题。在讨论交流中,企业一方面可以很好地消化所学的构件技术方法与思想,更好地在其示范项目中实践;另一方面企业在实施中碰到的问题以及这些问题的解决,很好地验证与实践了北京大学在构件技术方面的研究成果,促进了科研成果的转化,带动了双方向前发展。
(3)第三阶段:验收阶段。主要着重于构件技术推广应用工作的总结,帮助企业总结思想方法,以支持企业更好地、持续地采用构件技术思想方法进行软件开发;另外,昆明高校总结构件技术的思想方法,在学校中通过培养掌握该思想方法的学生或开设课程等方法,进一步推进构件技术的推广与应用。
4.2 构件技术推广取得的效果
作为改进生产方式的重要手段,构件技术和软件复用在我国产业界发挥着越来越重要的作用。随着引入构件技术的企业日益增加,企业迫切需要相应的过程指导。本项目满足了企业的这种现实需求,帮助企业按照定义良好的软件过程实践复用活动,从而使软件企业可以从软件复用中切实、持续地获益,对于提升软件企业的管理水平,实现从小作坊式的生产方式向工业化生产方式改进具有重要意义。
引入复用的同时,也引入了新的矛盾。例如,企业长远利益与项目当前利益的矛盾——在项目中为未来的项目开发可复用的构件是对企业长远利益的投资,但是为复用花费的额外时间可能导致项目的工期被延长。许多企业通过项目收益考察团队绩效,引入复用后如果不将复用纳入绩效考察的范围之内,那么很少会有人心甘情愿地为复用投入额外的成本。一些擅长构件技术的企业,却因为不能妥善地解决复用引入的矛盾,没有在组织内建立鼓励复用的制度和文化,导致复用无法在企业中长期存在和发展。
要使得软件企业能够从复用中切实地获益,不仅需要系统、深入地掌握构件技术,而且还应该实施定义良好的、满足复用需求的软件过程。本次昆明基地与北京大学合作推广构件技术的目标是为引入构件技术、实践软件复用的企业建立和改进适应复用需求的软件过程提供方法、技术上的指导和工具上的支持,并结合项目的研究成果在企业进行复用过程咨询和应用示范。
通过对示范企业进行软件构件技术的推广应用,达到了以下目标:
(1)研究和引入软件复用技术,提高软件企业软件生产效率,降低成本。
(2)利用软件构件技术对典型领域进行技术改造,提炼一批领域构件和基础构件,形成特定领域开发平台。
(3)探索、总结整理技术推广的经验,形成未来大范围推广的技术基础。
通过对软件企业的构件化技术改造,支持企业进行各领域开发平台的研制,同时在各企业的实际应用项目中取得了良好的市场和技术效益。通过本次构件技术应用推广工作,探索了一条在政府的领导和支持下,如何结合当地高校资源和企业实际情况,将先进的科研成果转化和应用的“产、学、研”有机结合的体系。
通过构件技术的推广,使得更多企业认识到构件技术可以为企业带来巨大的经济效益,因此越来越多的企业投入资源,采用构件技术进行企业技术改造。随着越来越多的企业采用基于构件的软件开发方法,势必会产生大量的可复用资源,而公共构件库与企业构件库提供了有效管理这些资源的平台,促进了企业更好地进行构件技术的推行,同时也进一步地丰富了构件库资源,使得企业之间可以更好地进行大范围的资源共享。通过构件技术的推广与应用,提升了企业的竞争实力,促进了软件工业化生产技术的实现和推广,提高了昆明软件产业的整体实力。
4.3 构件技术应用前景分析
软件复用和构件技术已经从学术界走入了产业界。包括国外的IBM、HP、MOTOROLA、NOKIA,国内的神州数码、联想亚信、长城软件等企业都已经先后引入了构件技术和软件复用,并取得了较好的效果。在未来的若干年中,激烈的市场竞争将迫使我国的软件企业将构件技术和软件复用作为改造其生产方式的主要手段。
实施软件复用的企业无不感受到支持构件技术的软件复用过程的重要性。随着希望引入构件技术、实践软件复用的企业不断增加,企业对支持构件技术的系统化复用软件生命周期过程框架提出了迫切的需求,尤其需要针对我国软件企业的特点,总结典型企业在实施复用过程中的经验、教训和最佳实践,为更多的企业建立复用过程提供指南。另外,随着企业对软件过程作用的重视,越来越多的企业根据国外著名的过程标准定义其组织级或项目级的软件过程,其中很多企业还取得了ISO 9000、CMM等过程标准的认证。在这些企业中引入复用过程时,企业最为关注的问题就是,复用过程是否与现有过程标准兼容,过去在现有过程上的投资是否可以在复用过程中得到保护。在为企业进行咨询服务时,首先需要让企业理解复用过程,明确过程的目标和实施方案,为此对培训课程和教材提出了需求。但是目前现有的复用过程教材主要以讨论原理为主,较少关注企业实践,不符合企业务实的特点。因此,从过程咨询服务市场上看,本项目中提出的与现有过程标准兼容的复用过程方案,以及一套专门针对企业需求的、注重实践的培训课程和教材具有广泛的市场空间。
软件工程环境对于促进人员对软件工程思想、方法的理解,提高生产效率,保证软件质量发挥着重要的作用。软件复用也同样需要过程和工具的辅助。但是,目前市场上却缺乏专门针对软件复用而设计的过程管理和项目管理工具。如果在复用过程中采用目前市场上已有的通用过程管理和项目管理工具,那么用户必须具备相当的复用过程知识,这对于我国的大多数软件企业而言都是难以满足的。因此,专门针对复用过程设计开发的过程管理工具具有广泛的市场空间。
5 经验总结
通过软件构件技术的推广实施,昆明孵化器与优秀示范企业共建软件构件技术支持中心,为云南省软件企业引入构件技术提供了良好的示范和经验,并为软件企业建立软件复用过程提供了切实可行的框架和实用的支撑工具,从而帮助软件企业可以从软件复用中持续地获益,对于宣传推广软件复用技术、提高企业工程管理水平具有重要意义。
6 对未来工作的展望
目前,昆明孵化器已建成了构件库及构件超市原型,与遴选企业共建构件技术支持中心,进一步推广实施构件开发技术。与此同时,昆明孵化器将与北京大学等院校更进一步合作,在基于领域构件技术方面进行更深入的研究和更广泛的实践。
昆明孵化器将继续进行构件技术的推广应用,不断吸收优秀软件企业,形成构件技术和复用过程示范骨干企业联盟,在此基础上进一步联合在构件技术方面有优势的科研机构、高校和软件企业,初步建立覆盖云南及周边地区的构件化技术协作网络;并通过软件构件超市,将生产者复用和消费者复用通过商业化操作联结在一体。