软件构件与中间件技术

作者:林慧苹(北京大学软件与微电子学院) 日期:2021-07-24

1. 为什么需要软件构件

软件构件的核心目标是实现 投入少、质量高、时间短 的软件开发。其主要途径包括:

  • 更有效的软件生产:提高移植性、功能性、维护性、可靠性和易用性
  • 软件复用:通过复用现有构件,提高开发效率和软件质量

软件构件技术以 构件 + 构件之间的关系 为核心,适应 网络环境 下的软件分布式开发。

传统行业中的构件概念

传统行业(如机械、建筑、计算机硬件)通过 标准化零部件 实现复用,这种模式是软件产业工程化的必由之路。

2. 软件复用的历史与方法

软件复用的产生

  • 1968 年 NATO 软件工程会议上,McIlroy 提出了 “大量生产的软件构件” 的概念
  • 面向对象技术逐步成为主流,为软件复用提供了技术支持
  • 软件复用被视为解决软件危机、提高软件生产效率和质量的现实可行途径

软件复用的主要方法

  • 产品复用:复用已有的软件构件,通过集成(组装)得到新系统
  • 过程复用:复用已有的软件开发过程,使用可复用的应用生成器自动或半自动生成系统
    • 过程复用依赖于软件自动化技术的发展,目前只适用于一些特殊应用领域
    • 产品复用是目前现实的、主流的途径

3. 软件构件的定义与特点

软件构件的定义

软件构件是 系统中可以明确辨识的构成成分,具有以下特点:

  • 可复用:可复用软件构件(Reusable Software Component: RSC)
  • 独立性:可以被独立部署,由第三方组装
  • 接口规范:具有约定式规范的接口,明确的依赖环境

构件的组成

  • 构件规约(Specification):关于构件的知识,包括功能信息、使用说明、运行环境信息等
  • 构件实现(Implementation):构件内部的代码实现体,描述如何完成构件功能

4. 领域工程与应用工程

领域工程

领域工程是获取可复用软件构件的主要途径,通过以下步骤实现:

  • 领域分析:建立领域需求定义、领域术语字典、领域面向对象分析模型
  • 领域设计:开发领域设计模型,如特定于领域的软件构架(DSSA)
  • 领域实现:实现领域构架和构件,并建立可复用构件库

应用工程

应用工程是利用领域工程结果进行软件开发的过程,包括:

  • 系统分析:根据领域分析模型和用户需求,固定变化性需求
  • 系统设计:以 DSSA 为基础,获取具体系统设计模型
  • 系统实现:集成构件与构架,实现最终应用系统

5. 构件的分类与实现模型

构件的分类

  • 领域构件:特定于应用领域的构件成分
  • 基础构件:特定于计算机系统的构件成分

实现模型

  • OMG 的 CCM 模型:将构件的接口与实现进行有效分离
  • 微软的 COM 模型:支持运行态的软件构件
  • SUN 的 EJB 模型:支持分布式对象技术

6. 构件的获取、管理与复用

构件的获取

  • 从头开发新构件
  • 从现有系统中提炼(领域工程)
  • 演化现有构件

构件的管理

  • 构件的描述、分类与检索:通过刻面分类法、属性-值分类等方式管理构件
  • 构件库管理系统:支持构件的描述、分类、检索和复用

7. 软件构件与面向对象的关系

  • 面向对象:对象是纯技术性的,不涉及独立性和封装性,几乎不被出售或部署
  • 软件构件:部署单元,基于构件技术的成功市场正在形成

8. 成功复用的特点

  • 将复用范围缩小在一个特定领域
  • 有一个良好的系统框架对应用系统进行支持
  • 构件接口明确

9. 总结

软件构件技术是解决软件危机、提高软件生产效率和质量的重要手段。通过领域工程和应用工程的结合,可以实现软件的高效复用和开发。