企业软件开发百月变迁
翻阅2002年至今的《程序员》,发现虽短短百月,企业开发市场却已经“换了人间”,不过这也正好符合软件行业的自身特点——快速更新、快速淘汰。
● 曾经几乎主导市场的Borland、Sybase 开发家族淡出我们的视线,曾经风靡企业开发领域的 Delphi、JBuilder、C++ Builder、PowerBuilder逐步成为开发团队中的“少数派”。
● 还在襁褓中的.NET高歌猛进,如今已经成为与Java分庭抗争的强者。
● Web Service 百月前还是热门概念,被鼓励用于解决企业异构系统间、企业与合作伙伴间应用协同问题,如果也已经被其他新的理念“调用”、“封装”,从众人瞩目的中心回到幕后,而SOA及Ent 2.0则将企业软件的设计思想作了颠覆,企业软件对于“变化”的关注重点再次从技术领域回归到业务领域。
● 企业开发技术标准化、企业对外服务标准化、过程标准化、企业软件项目外包等内容在这百月里明显增强,因为“世界是平的”的同时,企业如果不能够明确定位其在整个产业链的位置,在保证IT快速适应市场变化的同时将自身的IT系统基于标准化方式实施,则无异于把自己置身产业生态圈之外。
● 企业软件的客户端也已经从较为单一的简单 Web 应用、桌面应用,逐步向更加灵巧的阶段过渡,具有便捷更新机制的桌面应用、富客户端Web 应用、EDI、移动和嵌入式应用成为今天企业软件的主要接入(Endpoint)机制。
● 企业应从实变虚,服务器、显示、应用及服务变得“虚虚实实”。此外,从《程序员》这百期的内容看,关注的重点也从单纯的技术实现技巧、开发语言转向更为高层的架构讨论、行业趋势分析,这其间很多基础性的技术准备也与开源社区的成果引入企业开发密不可分。
开发语言的变迁
尽管作为软件行业相对稳定的领域,企业软件的开发语言也已经从C++ 和VB、VC、Object Pascal 逐步汇总到C# 与Java 两大阵营为主、多种语言专业领域辅助开发的混合模式。由于企业软件包括的内容越来越丰富,客户应用环境差异性更加明显,因此一个企业软件往往通过 C#、Java、C++ 完成其核心业务内容,动态语言协助完成各类前端机制,借助 WebService、XML等技术,各种语言开发的产品共同支撑企业业务运行。
这个变迁也反映在近两年的《程序员》杂志中,几乎每期都会提及SOA 技术以及跨语言平台的协同,例如:Ruby 调用Java 写的WebService,C# 通过WCF 与IBM MQ、云平台应用进行协同,而2002~2004的杂志中,我们看到的往往是DelphiObject Pascal、Java、.NET、PHP等一家语言从始至终完成一个应用。
开发平台的变迁
此消彼长的浏览器前端技术成为近两年杂志的新宠。受到业务快速更迭以及“在互联网上做买卖”的新趋势,企业软件的更新速度不断加快,但很多企业为了摆脱胖客户端更新的困扰,纷纷转向浏览器(包括移动浏览器)平台,因此浏览器端技术之争的战火不仅蔓延在互联网领域,企业软件(及企业移动软件)也是争端的一个主战场。互联网应用与企业应用在“面貌”上逐步趋同,可以说在摆脱了桌面的束缚后,企业软件也正把大量的计算从后台倾注到前端,配合“企业IT & 云”的混合结构,未来企业软件平台的主战场也将是浏览器。
作为专注企业软件的代表——SAP在与ORACLE、IBM不断竞争的过程中,开发战略从封闭逐步走向开放,借助NetWeaver 功能实现各组成间基于标准化技术的灵活配置。当然 SAP 的变化只是一个缩影,SOA支撑下的Ent 2.0使得企业软件开发焕然一新,新旧开发资产可以在“服务”的概念下互联互通,而且新业务上马、旧业务改造都可以在一个更宏观的角度进行“编排”,配合IBM、微软等厂家的产品,企业软件的开发人员逐步将关注点从技术领域转向“不是我不明白,这世界变化快”的业务市场。
同时,作为支持企业开发平台的关键,分布式组件技术已经从COM+、CORBA、早期的EJB 逐步过渡WCF、WS-*、EJB 3。回头看看《程序员》2003年中CORBA 与WS-*的争论,也已经在平台的变迁中见了分晓。企业中间件平台也在百期之内经历了一个起卧撑的过程,2002~2004年的杂志中涉及很少。此后,随着一批国产中间件企业的崛起、以及企业软件中个性化内容相对较多的特点,中间件技术一度成为杂志的明星,但随着 Google 为代表的Web 2.0互联网应用兴起,中间件技术又淡出杂志的重心。
百期之后,尽管PowerBuilder 在移动数据开发方面还有一席之地,但对于常规企业应用 PowerBuilder 和 Borland 家族成为企业软件开发平台的出局者,而曾经被视为“边角料”工作的Flash 技术逐步演化成 Flex 平台,在大型企业应用中成为与 ASP.NET、Zend PHP、JSP竞争的有力对手,开发平台从也从贯穿应用全部层次的“统一”平台,逐步演化多专业领域平台协作的局面,例如:以往一个 ERP 应用我们可能采用 Delphi 完成桌面客户端、Web 客户端、业务逻辑、资源访问等涉及该应用的全部功能,而今我们则会基于多个细分领域市场的开发平台协同完成一个企业系统,比如:用 Flex 平台完成前端设计、用.NET 或者 Java EE (Eclipse/NetBeans)完成中间逻辑,采用Altova 的XML 平台完成信息转换和服务转换工作。
另外,操作系统的变化更为明显,早期杂志中提及的系统往往是Windows 及FreeBSD、HP/AIX Unix、Solaris,而最近几年的内容则更多围绕Linux、WinNT 展开,从去年随着云端战争的揭幕,微软、Google、IBM、Amazon的云系统正在成为关注的新宠。
回想起来,每当有一个新理念、新技术诞生的时候,我们往往总会抓住“性能”与“安全”认为其不妥、不适合企业复杂应用,但企业开发平台的变迁一遍遍告诉我们——能更快适应变革需要的就拥有更强的生命力,HTML 如此、WS-*(包括最简单WebService)如此、动态语言与Java也是这样。
信息管理的变迁
纵观百期,关于企业信息的文章逐步从几个数据库产品关系引擎的比较,向全方位过渡,内容涵盖关系数据、商务智能、非关系数据、移动信息获取、空间及地理信息,近期云平台的数据服务及“云”库与企业既有信息的协同也成为新的热点。数据库市场自2005年变局后,SQL Server 2005、ORACLE 11g、DB2 Viper 为了适应企业不同的数据需要,一方面加强“自动管理”、“动态管理”、“热恢复”的特性,另外也结合企业应用的需要,着力在 XML 信息、移动信息、地理空间信息方面进行较力,产品特性的丰富也对企业应用产生较大影响,新一代企业软件在完成基本业务功能的同时,更强调随时、随处的信息按需获取,配合移动及嵌入领域开发平台的成熟,企业软件覆盖的范围从单纯的信息流扩展至信息流、决策流、物流、资金流和人流的综合体。
另外,如何管理分布在数据库、数据仓库之外的那些也许价值更高的非结构化信息也成为企业开发的热点,数据管理正在一步步向信息管理、内容管理、业务管理过渡。
开发管理的变迁
测试与调试的作用更加显著。早期的《程序员》中,测试与调试的内容相对很少,谈及企业开发时相关内容更少见,但随着企业软件规模的快速膨胀,企业软件团队也在自我反思和不断改进的过程中,大力引入各种测试技术、测试工具、测试方法,随着敏捷运动的兴起,结合企业软件中往往涉及大量产品(商用、开源、自开发)集成的现状,测试与调试不再是企业开发中“走走形式”的步骤,而是一个贯穿项目整个生命期的常态机制。
在过程方法上,杂志关注的重点逐步从CMM过渡到CMMI、敏捷,这也与企业软件开发过程的需要一致,从某个角度看企业开发既需要一定刚性的“八股式”过程指导,为了快速捕捉商机,往往还需要灵敏的一面,2006年之后的杂志中“敏捷”成为压倒性的主角,与此同时国内企业软件的开发团队也从“大兵团”作战变成“小分队”战术性作战或多个“小分队”协同作战的局面,软件过程方法的变向也只不过是水到渠成而已。
从实到虚的变迁
为了适应大型企业越来越不确定的 IT 应用扩展需求、满足几乎无限膨胀的信息处理容量、简化企业信息系统管理的复杂性,企业应用和服务正在从“实实在在”向“虚虚假假”过渡。随着微软、ORACLE、IBM在主流产品中纷纷增加相关特性,近两年的杂志也通过多篇文章介绍了虚拟化技术对于企业信息系统的重要性:
● 因为用户已经被IT“惯坏了”,所以企业应用的更新速度会更快;
● 企业IT面临的部署、分发、版本管理压力越来越大;
● 下一个业务的“金矿”将在何时、何处以何种规模出现具有不确定性。
为了解决这些问题,企业服务器、应用和管理都急切希望一个“弹性”的设计支持,此外多芯多核体系的变化,也为这种“弹性”的迁移提供更多可能,虚拟化技术的出现帮助企业能够更自如的规划自己的IT处理容量。
其他
百期前,我们往往会用“企业级”描述一个较大的项目,现在往往习惯用“国际级”描述,因为除了上述的变迁外,企业软件在从企业内部扩展到地球村之后,还在努力解决国际化和本地化的问题。
企业软件的设计语言也随着行业的发展,从早期版本的 UML过渡到 UML及领域语言(DSL)协同的阶段,开发工具除了完成简单的开发任务外,还将功能扩展至整个软件周期,其中一个基础就是设计、分析语言更加丰富。开发团队在UML之外采用DSL语言完成各特定领域的设计任务,并配合开发平台的相关机制作用到企业的信息系统中,可以说UML与DSL的这个协作关系,是围绕企业软件快速变化的特征同步发展起来的。
回首百期,企业软件正从单纯的做大,向更大、更高效、更可控、更国际化、更柔性的方向发展。█