业务层复用:软件复用的必然趋势

在现代商业社会,软件开发过程,尤其是行业应用软件的开发过程已经完全不再是软件发展早期许多人所追求的那种艺术创 作过程,而是尽可能地朝着工业化、标准化的方向发展。而软件复用正是人们朝着这一方向努力的一个重要表现。而今,软件复用经过多年发展,已经进入一个新的 层次。

为什么中式快餐难以取得像麦当劳、肯德基这样席卷全球的发展攻势?为什么中国的连锁餐馆里大厨的工资甚至要高于店 长的工资,而且即使这样,我们在同一品牌下的不同中式连锁餐馆用餐时的体验还存在着较大偏差呢?而在全世界任何一家肯德基买到的汉堡却都是一样的味道。这 就是因为中餐的操作流程不具备大范围可复用的特点,而西式快餐则可以实现流水线式的工厂化生产。

因此,对于软件开发,如果能够实现在满足个性化需求的同时实现工业化生产,那么软件开发的效率和软件实施的成功 率将取得巨大突破。然而,个性化和工业化似乎是一对不可调和的矛盾。于是人们在许多年前就展开了对软件复用的研究,希望找出各种软件之间通用的部分,把它 们提取出来,通过概要贴切地描述事物,忽视次要的细节来加以抽象,然后重复使用。而记者在第四届中国软件技术大会现场明显体会到,软件复用技术已经从前期 的技术层面的复用发展到业务层面的复用,以SOA为代表的业务层复用技术已经真正进入务实阶段,成为程序员最为关心的话题之一。

技术层面的复用

国内著名的计算机软件工程领域研究专家杨芙清教授曾发表论文指出: 探讨应用系统的本质,可以发现其中通常包含三类成分: ①通用基本构件: 是特定于计算机系统的构成成分,如基本的数据结构、用户界面元素等,它们可以存在于各种应用系统中; ②领域共性构件: 是应用系统所属领域的共性构成成分,它们存在于该领域的各个应用系统中; ③应用专用构件: 是每个应用系统的特有构成成分。应用系统开发中的重复劳动主要在于前两类构成成分的重复开发。

正是由于应用系统存在这种本质,越靠底层的部分越容易复用,所以人们在软件复用方面的研究和应用经历了从底层到 高层的过程,先后经历了库函数、面向对象、软件构件、开发框架等等。目前各种开发框架,尤其是开源框架已经得到广泛应用,它是对系统整体结构设计的刻划, 包括全局组织与控制结构,构件间通信、同步和数据访问的协议,设计元素间的功能分配、物理分布,设计元素集成,伸缩性和性能,设计选择等。

由于开发框架本身的通用性造成其组件粒度比较小,抽象程度比较高,所以,近来又出现了对领域工程方面的研究。它 是为一组相似或相近系统的应用工程建立基本能力和必备基础的过程,覆盖了建立可复用软件构件的所有活动。领域工程对领域中系统地进行分析,识别这些应用的 共同特征和可变特征,对刻划这些特征的对象和操作进行选择和抽象,形成领域模型,依据领域模型产生出领域中应用共同具有的体系结构(即特定领域的软件构 架)或生成过程,并以此为基础识别、开发和组织可复用构件。这样,当开发同一领域中的新应用时,可以根据领域模型,确定新应用的需求规约,根据特定领域的 软件构架形成新应用的设计,并以此为基础选择可复用构件进行组装,从而形成新系统。由于适用领域的具体化,使得其可复用的组件粒度比较大,其可复用的软件 构件包括: 领域模型、领域构架、领域特定的语言、代码生成器和代码构件等。

领域工程有助于产生具有较高可复用性的构件,而且通过产生构架定义了复用的时机和复用的上下文。这样就对开发者复用这些构件提供了有力的支持,使得复用变得规范、系统和高效。

业务层面的复用

但是,上述的软件复用大多还是从技术角度出发的,例如J2EE组件框架只是一个以库、类和接口形式提供的基础架 构,最终构成应用的业务逻辑和表现/控制逻辑则要由建立在这个框架上的业务组件实现。而应用软件最终要解决的却是应用问题,或者说是业务问题,如果软件能 够在更高层次的业务层面上进行大范围复用,那么对提高软件开发效率的作用将会更大。由于大部分软件的生产过程是使软件产品从抽象级别较高的形态向抽象级别 较低的形态演化,所以较高级别的复用容易带动较低级别的复用,因而复用的级别越高,可得到的回报也越大。而如何实现这一点,正是软件开发各界当前最关心的 问题之一,由此也引发了技术人员对SOA架构、构件技术以及样本程序等的热衷。

但无论哪种技术,都依赖于首先形成一个个遵循一定业务规则、执行一定业务逻辑并管理一定数据的可在各种应用项目 中,或者某一领域内的各种项目中重复使用的组件。他们不同于Struts、JdonFramework、Hibernate这样的技术组件或者由技术组件 形成的框架,后者并不能解决特定的业务问题,而是为业务组件提供赖以生存的运行基础——一些核心底层机制,特别是组件的管理,如组件的创建、组件的获得、 组件的资源管理、组件的消亡等生命周期支持。例如,基于这些技术框架开发的样本程序就在一定程度上具有业务层复用的功能。样本程序可以集成行业领域系统开 发所需要用到的几乎所有横向组件和绝大部分业务对象,能够很好地指导不同的项目在统一技术标准上的实施,针对不同的客户需求,从平台中选择合适的横向组件 和业务组件进行组装,而这些组件都是经过长期验证的高可靠性的模块,这样就能最大程度地保证快速搭建的系统的可靠性。由于样本程序的指导性,使得项目经理 和程序员都能将大部分精力放在研究客户需求,满足业务逻辑上,而不用每天为技术问题焦头烂额。

从中可以看出,构件技术正呈现业务化的发展趋势。在构件化概念应用早期,以CORBA、微软的DCOM以及 Sun的EJB为代表。当时的构件复用体现在用户界面上的构件复用,这个层次上的构件应用确实对当时的软件开发起到了促进作用。但随着技术层次构件的积累 和成熟,企业应用开发迫切需要的不再是细粒度的技术构件,而是粗粒度的业务构件,以业务构件为中心的面向构件开发才能够真正提升开发速度、降低开发成本, 并改善软件质量。而且面向构件技术的构件业务化强调的是粗粒度的构件,是对一个完整业务功能的实现与复用,而这正是SOA中所关注的。

而且,高级的业务层面软件复用已经不是停留在软件编译之前的状态了,而是在软件编译后,甚至是运行状态下可以随 时即插即用的组件。例如SOA架构中的服务是可以根据业务逻辑的需要随时调用的,它提供了一种系统运行时动态改变其功能的方法,而不像技术组件在使用时, 需要技术人员导入组件包,然后混同已有代码一起重新编译。

因此,业务层软件复用技术将促进软件产业的变革,使软件产业真正走上工程化、工业化的发展轨道。软件复用将造成 软件产业的合理分工,专业化的构件或服务生产将可能成为独立的产业而存在,软件系统的开发将由软件系统集成商通过购买商用构件或者服务,集成组装而成。软 件复用所带来的产业变革将会带来更多的商业契机,形成新的增长点。

小资料:概念辨析

开发框架:即framework,它是某种应用的半成品,就是一组组件,供开发人员选用完成自己的系统。在某些方 面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。框架一般处在低层应用平台(如J2EE)和高层业 务逻辑之间的中间层。

构件技术:构件是一种软件开发技术,它的基本理念是将软件开发过程中会重复用到的部分封装起来,等到有新的同样的需求时调用。构件是应用开发层面的概念,适用于企业应用的开发。构件是SOA的实现形式。

SOA:SOA是一种表现形式,是通过服务对企业的应用需求进行展现。SOA注重将已经存在的应用系统进行集成,同时又可以根据标准规范新的应用系统的开发过程,使得企业内部甚至企业之间能够基于相同的服务框架实现信息和数据的共享与交互。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值