1.5.7 基于构件的开发模型
基于构件的开发是指利用预先包装的构件来构造应用系统。构件可以是组织内部开发的,也可以是现有的商业成品构件(Commercial Off-The-Shelf,COTS)。基于构件的软件工程(Component Based Software Engineering,CBSE)强调使用可复用的软件“构件”来设计和构造基于计算机的系统。
通常来讲,构件是计算机软件中的一个模块化的构造块。OMG统一建模语言规范是这样定义构件的:“系统中模块化的、可部署的和可替换的部件,该部件实现封装并暴露一系列接口。”
国际上第一本软件构件专著《构件化软件——超越面向对象编程》给出的构件定义是:“一个构件是一个组装单元,它具有约定式规范的接口,以及明确的依赖环境。构件可以被独立部署,由第三方组装。”
一种基于构件的开发模型如图1.15所示,包括系统开发、构件开发与维护两部分。

图1.15 基于构件的开发模型
从表面上看,CBSE似乎类似于传统软件工程或面向对象的软件工程。事实上,CBSE软件团队针对每一系统需求并不急于进行设计,而是询问如下问题。
(1)现有的商业成品构件是否能够实现该需求?
(2)内部开发的可复用构件是否能够实现该需求?
(3)可用构件的接口与待构造系统的体系结构是否相容?(https://www.daowen.com)
团队可以试图修改或去除那些不能用COTS或自有构件实现的系统需求。如果不能修改或删除这些需求,则必须应用软件工程方法构造满足这些需求的新构件。
基于构件的开发模型中,需求分析与设计建模活动开始于识别可选构件,这些构件有些设计成通用的软件模块,有些设计成面向对象的类或软件包。不考虑构件的开发技术,基于构件的开发模型由以下步骤组成:
(1)对该问题领域的基于构件的可用产品进行研究和评估;
(2)考虑构件集成的问题;
(3)设计软件体系结构(或称架构)以容纳这些构件;
(4)将构件集成到体系结构中;
(5)进行充分的测试以保证功能正常。
软件复用是提高软件生产率及软件质量的最有效的途径,而基于构件的软件开发比面向对象的软件开发实现了更大粒度的软件复用,能够最大限度地减少重复劳动、缩短开发周期、降低开发成本,从而使软件生产率得到提高。由于已有的构件大都经过了很长时间的运行和测试,在质量方面比新开发的软件更有保证,同时,软件构件技术有助于软件设计的标准化和设计风格的改进与统一,进而提高系统间的互操作性,软件可靠性和可维护性可以得到增强。
构件技术的研究和实践,能够积累和共享相关知识,使软件在灵活性和标准化等方面均得到改善,有助于实现软件开发的工程化、工业化和产业化。