基于构件的开发
构件与软件重用
构件(componet,又称组件)是一个功能相对独立的、具有可复用价值的软件单元。在面向对象方法中,一个构件有一组对象构成,包含了一些协作的类的集合,他们共同工作来提供一种系统功能。
软件重用
可重用性(可复用性)是指系统和(或)其组成部分能在其他系统中重复使用的程度。软件开发的全生命周期都有可复用价值,包括项目的组织、软件需求、设计、文档、实现、测试方法和测试用例,都是可以被重复利用和借鉴的有效资源。可重用性体现在软件的各个层次,通用的、可重用性高的软件模块往往已经由操作系统或开发工具提供,如通用库、标准组件和标准模板库等,他们并不需要程序员重新开发。
软件重用(软件复用)是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的过程。软件重用的形式大体可以分为垂直式重用和水平式重用。水平式重用是重用不同应用领域中的软件元素,如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的水平式重用机制。垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。由于在两个截然不同的应用领域之间进行软件重用潜力不大,所以垂直式重用受到广泛关注。
垂直式重用活动的主要关键点在于领域分析:根据应用领域的特征和相识性,预测软件构件的可重用性。一但根据领域分析确认了软件构件的可重用价值,即可进行软件构件的开发,并对具有可重用价值的软件构件做一般化处理,使他们能够适应新的类似的应用领域。然后将软件构件和他们的文档存入可重用构件库,成为可供未来开发项目使用的可重用资源。
软件重用的范围不仅涉及源程序代码,Caper Jones定义了10种可能重用的软件要素,分别是项目计划、成本估计、架构、需求模型和规格说明、设计、源程序代码、用户文档和技术文档、用户界面、数据结构和测试用例。
有一个组织叫做基于面向对象技术的重用(Reuse Based on Object-Oriented Techniques, REBOOT)开发了支持重用的两种过程模型,分别是为重用开发和利用重用进行开发。该组织还开发了一系列工具,称为REBOOT环境。它们强调的一个原则是“未来重用者的需求,就是对可重用构件的信心”。开发者的倾向是抵制重用,因为他们缺乏这种信心。为了克服这种状态,REBOOT推荐一种文档结构,包括测试信心和重用者的经验。
美国国防部的一项称为可适应、可靠性的软件技术(Software Technology for Adaptable, Reliable Software,STARS)关注过程、架构和重用三者的集成。STARS认为软件产品线开发的软件周期应该包括过程驱动、软件架构、领域工程、可重用构件库这四个概念。
系统的软件重用由可重用的资产(构件)的开发、管理、支持和重用4个过程组成。工作在重用资产开发过程中的是构件开发者和领域工程师,工作在应用项目开发过程中的是应用工程师。如果要系统地实施重用,需要遵循以下原则:
(1)需要高层领导支持,并需要有长期的经费支持。
(2)为了渐进地推行系统的重用,需要规划和调整系统的架构、开发过程、组织结构,并以小规模的先行项目为典型示范,而后在铺开。
(3)为了重用,先规划架构及其逐步实施的过程。
(4)过渡到明确的重用组织机构,将可重用构件的创建工作与重用工作分离开,并且提供明确的支持职能。
(5)在真实的环境中,进行可重用构件的创建和改进工作。
(6)要将应用系统和可重用构件作为一个经济核算的产品整体进行管理,应当注重公用构件在应用系统及其子系统领域中的高盈利作用。
(7)要认识到单独的对象技术或者单独的构件技术是不够的。
(8)采用竞赛和更换负责人的办法,进行开发单位的文化建设和演化。
(9)对基础设施、重用教育、技巧培训,要投资和持续地改进。
(10)要采用度量方法测量重用过程,并要优化重用程序。
构件标准
构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。可以认为构件是一个封装的代码模块或大粒度额运行时模块,也可以将构件理解为具有一定功能、能够独立工作或与其他构件组合起来协调工作的对象。
对于构件,应当按可重用的要求进行设计、实现、打包、编写文档。构件应当是内聚的,并具有相当稳定的、公开的接口。为了使构件更切合实际、更有效地被重用,构件应当具备可变性,以提高其通用性。构件应向重用者提供一些公共特性,另一方面还要提供可变的特性。针对不同的应用系统,只需要对其可变部分进行适当的调整,重用者要根据重用的具体需要,改造构件的可变特性,即客户化。需要进行客户化的构件称为抽象构件,而可以直接重用的构件称为具体构件。通用性越好,其被重用的面就越广。变化性越好,构件就越易于调整,以便适用于具体的应用环境。
为了将不同软件生产商在不同软硬件平台上开发的构件组装成一个应用系统,必须解决异构平台各构件间的互操作问题,目前已出现了一些支持互操作的构件标准,3个主要流派为OMG(Object Management Group,对象管理集团)的CORBA(Common Object Request Broker Architecture,公共对象请求代理)、Microsoft 的COM(Common Object Model,构件对象模型)/DCOM(Distributed Component Object Model,分布式构件对象模型)和Sun的EJB(Enterprise JavaBean,企业JavaBean)。
CORBA是由OMG制定的一个工业标准,其主要目标是提供一种机制,使得对象可以透明地发出请求和获得应答,从而建立起一个异质的分布式应用环境。CORBA技术规范的主要内容包括接口定义语言、接口池、动态调用接口、对象适配器等。
EJB是用于开发和部署多层结构的、分布式的、面向对象的java应用系统的跨平台的构建架构。
Microsoft的分布式DCOM扩展可COM,使其能偶支持在局域网、广域网甚至Internet上不同计算机的对象之间通信。