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

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

大家好,欢迎来到IT知识分享网。

  • 基于构件的软件工程 (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)解决方法

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

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151644.html

(0)
上一篇 2025-03-12 17:05
下一篇 2025-03-12 17:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信