《系统架构设计师教程(第2版)》第5章-软件工程基础知识-06-基于构件的软件工程(CBSE)

文章目录

  • 1. 构件和构件模型
    • 1.1 特征
    • 1.2 构件模型
      • 1.2.1 构件模型概述
      • 1.2.2 构件模型包含要素
        • 1)接口
        • 2)使用信息
        • 3)部署
      • 1.2.3 容器理论
  • 2. CBSE过程
    • 2.1 主要活动包括
    • 2.2 与传统的软件开发过程的不同
  • 3. 构件组装
    • 3.1 组装方式
      • 1)顺序组装
      • 2)层次组装
      • 3)叠加组装
    • 3.2 构件不兼容
      • 1)构件不兼容的情况
      • 2)解决方法

  • 基于构件的软件工程 (Component-Based Software Engineering)
  • 重点:从编程软件偏移到组装软件系统(工程师的焦点从“实现”变成了“集成”)
  • 基础:假定在很多大型软件系统中存在足够多的共性,从而使得开发可复用软件组件来满足这些共性是值得的。

1. 构件和构件模型

  • 构件:是一个独立的软件单元,可以与其他构件构成一个软件系统

1.1 特征

  • 可组装型
    对于可组装的构件,所有外部交互必须通过公开定义的接口进行。同时它还必须对自身信息的外部访问。
  • 可部署性
    软件必须是自包含的,必须能作为一个独立实体在提供其构件模型实现的构件平台上运行。构件总是二进制形式,无须在部署前编译。

自包含:指一个模块、组件或系统能够独立地运行和测试,而不依赖于其他模块、组件或系统。

  • 文档化
    构件必须是完全文档化的,用户根据文档来判断构件是否满足需求。
  • 独立性
    构件应该是独立的,应该可以在无其他特殊构件的情况下进行组装和部署,如确实需要其他构件提供服务,则应显示声明。
  • 标准化
    构件标准化意味着在 CBSE过程中使用的构件必须符合某种标准化的构件模型。

1.2 构件模型

1.2.1 构件模型概述

  • 概述:
    • 构件模型定义了构件实现、文档化以及开发的标准
    • 构件模型提供了一组被构件使用的通用服务
      • 平台服务:允许构件在分布式环境下通信和互操作
      • 支持服务:是很多构件需要的共性服务(如身份认证服务)
  • 主流的构件模型:Web Services 模型、 Sun公司的EJB 模型、微软的.NET模型

中间件实现共性的构件服务,并提供这些服务的接口

1.2.2 构件模型包含要素

1)接口
  • 构件通过构件接口来定义
  • 构件模型实现:
    • 规定应如何定义构件接口
    • 在接口定义中应该包含的要素(如操作名、参数以及异常等)
2)使用信息
  • 作用:为使构件远程分布和访问,必须给构件一个特定的、全局唯一的名字或句柄
  • 构件元数据
    • 概述:是构件本身相关的数据(如构件的接口和属性信息)
    • 作用:用户可以通过元数据找到构件提供的服务
  • 构件模型实现:包括访问构件的元数据的特定方法

    构件是通用实体,在部署的时候,必须对构件进行配置来适应应用系统。

3)部署
  • 构件模型实现:包括
    • 规格说明:指出应该如何打包构件使其部署成为一个独立的可执行实体
    • 部署信息:包含有关包中内容的信息和它的二进制构成的信息。

1.2.3 容器理论

为了利用构件模型基础设施提供的服务,可以认为构件被部署在一个容器中。容器是支持服务的一个实现加上一个接口定义,构
件必须提供该接口定义以便和容器整合在一起。

2. CBSE过程

  • 概述:是支持基于构件组装的软件开发过程

成功的构件复用需要一个经过裁剪、适配的开发过程

2.1 主要活动包括

  • 系统需求概览
  • 识别候选构件
  • 根据发现的构件修改需求
  • 体系结构设计
  • 构件定制与适配
  • 组装构件,创建系统

2.2 与传统的软件开发过程的不同

  • CBSE 早期需要完整的需求,以便尽可能多地识别出可复用的构件

而增量式开发中,早期并不需要完整的需求。

  • 在过程早期阶段根据可利用的构件来细化和修改需求

如果构件不满足需求,最好能改需求。

  • 在系统体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动
    • 可能需要为某些构件寻找备用构件
    • 可能修改构件以适合功能和架构的要求
  • 开发就是将已经找到的构件集成在一起的组装过程
    • 包括:
      • 将构件与构件模型基础设施集成在一起
      • 开发适配器来协调不匹配的构件接口(可选)
      • 额外的功能(可选)

在 CBSE 中,体系结构设计阶段特别重要。在这个阶段,将选择一个构件模型和一个实现平台。而模型和平台也决定和限制了可选构件的范围。

3. 构件组装

  • 构件组装:指将构件直接集成或是用专门编写的“胶水代码”整合在一起,来创造一个系统或另一个构件的过程。
  • 选择组装方式必须考虑:
    • 系统所需要的功能性需求、非功能性需求
    • 当系统发生改变时,一个构件能被另一个构件替代的难易程度。

3.1 组装方式

1)顺序组装

  • 使用:顺序组装两个构件,成为一个新构件
    • 需要特定的胶水代码,来保证两个构件的组装
    • 上一个构件的输出,与下一个构件的输入相兼容。
  • 适用于:作为程序元素的构件或是作为服务的构件。

2)层次组装

  • 概述:一个构件直接调用由另一个构件所提供的服务
    • 被调用构件为调用构件提供所需的服务

    被调用构件的“提供”接口必须和调用构件的“请求”接口兼容。

  • 使用:
    • 如果接口相匹配,则调用构件可以直接调用被调用构件
    • 否则就需要编写专门的胶水代码来实现转换。

3)叠加组装

  • 概述:两个或两个以上构件放在一起来创建一个新构件
    • 新构件合并了原构件的功能,从而对外提供了新的接口。
    • 外部应用可以通过新接口来调用原有构件的接口
    • 原有构件不互相依赖,也不互相调用
  • 适合于:构件是程序单元或者构件是服务的情况

3.2 构件不兼容

1)构件不兼容的情况

  • 参数不兼容
    接口每一侧的操作有相同的名字,但参数类型或参数个数不相同。
  • 操作不兼容
    提供接口和请求接口的操作名不同。
  • 操作不完备
    一个构件的提供接口是另一个构件请求接口的一个子集,或者相反。

2)解决方法

  • 解决方案:编写适配器
  • 实现方法:
    • 适配器构件使两个可复用构件的接口相一致
    • 适配器构件将一个接口转换为另外一个接口

在这里插入图片描述

你可能感兴趣的:(#,软考架构师笔记,系统架构,软件工程,系统架构设计师教程,第2版,清华版,基于构建的软件工程)