当前位置: 首页 > news >正文

系统架构设计师备考第27天——基于构件的软件工程

一、构件和构件模型

1. 构件定义与特征
  • 定义:构件是独立的软件单元,通过接口与其他构件交互,支持复用和组装。
  • 关键特征
    • 可组装性:所有交互通过公开接口进行,禁止直接内部访问。
    • 可部署性:自包含的二进制实体,无需编译即可在构件平台(如EJB、.NET)运行。
    • 文档化:完整文档说明功能和使用条件。
    • 独立性:可独立组装部署,依赖需显式声明。
    • 标准化:符合主流构件模型(Web Services、EJB、.NET)。
2. 构件模型要素

构件模型规范包含三类要素:

  1. 接口:定义操作名、参数、异常等交互规则。
  2. 使用信息
    • 全局唯一标识符(如句柄)。
    • 元数据(接口、属性)支持服务发现。
    • 配置机制适应不同应用场景。
  3. 部署:打包规范(如二进制构成、依赖说明)。
3. 构件模型服务
  • 平台服务:支持分布式通信(如远程调用)。
  • 支持服务:通用功能(如身份认证、事务管理)。
  • 容器机制:构件运行环境,提供中间件服务(如连接池、安全控制)。

考点提示:构件模型的核心是接口标准化服务抽象化,需掌握EJB/.NET的区别。


二、CBSE过程

1. 与传统开发过程的差异
CBSE过程传统过程
早期需完整需求以识别构件增量开发,需求逐步细化
根据可用构件调整需求需求固定,设计后再实现
体系结构设计后二次构件搜索设计后直接进入编码阶段
开发=构件组装+胶水代码开发开发=从零编写代码
2. 关键活动步骤
  1. 系统需求概览:明确功能与非功能需求。
  2. 识别候选构件:从库中筛选可用构件(COTS或自研)。
  3. 需求调整:根据构件可用性修改需求(例如说服用户接受替代方案)。
  4. 体系结构设计:选择构件模型(如微服务架构),约束构件范围。
  5. 构件定制与适配:修改构件或开发适配器解决接口不兼容。
  6. 组装与测试:集成构件,编写胶水代码,验证系统功能。

考点提示:体系结构设计阶段是核心,决定了构件选择范围和技术栈(如中间件平台)。


三、构件组装

1. 组装方式
类型适用场景关键机制
顺序组装数据流处理(如ETL管道)胶水代码衔接输入/输出接口
层次组装服务调用(如API层调用数据库层)接口直接匹配或适配器转换
叠加组装合并功能(如支付+日志构件组合成新服务)新接口封装原构件,内部无依赖
2. 接口不兼容问题与解决
  • 参数不兼容:操作名相同但参数类型/数量不一致 → 适配器转换数据类型
  • 操作不兼容:接口操作名不同 → 适配器映射操作名
  • 操作不完备:接口功能子集/超集 → 适配器补充缺失操作
3. 组装设计考量
  • 功能性:满足业务需求。
  • 非功能性:性能、可维护性。
  • 可替换性:构件更换成本(如接口标准化程度)。

考点提示:叠加组装适合构建复合服务,层次组装需警惕循环依赖。


四、重点考点与常见考题

  1. 构件模型要素
    考题:下列哪项不是构件模型的必备要素?
    A. 接口定义 B. 部署规范 C. 源代码开放 D. 元数据管理
    答案:C(构件为二进制,无需源码)。

  2. CBSE过程 vs 传统过程
    考题:CBSE过程中为何需早期完整需求?
    答案:为最大化识别可复用构件,降低开发成本。

  3. 组装方式选择
    考题:某系统需整合独立支付与日志服务,应选哪种组装方式?
    答案:叠加组装(合并功能,新接口封装)。

  4. 适配器作用
    考题:解决构件接口“操作不完备”问题的方案是?
    答案:编写适配器补充缺失操作。

  5. 体系结构设计重要性
    考题:CBSE中哪个阶段限制了可选构件范围?
    答案:体系结构设计(选择平台和模型)。


总结

CBSE通过复用构件加速开发,核心在于:

  • 构件标准化(接口、部署、文档)
  • 过程迭代(需求→构件匹配→架构设计→组装)
  • 组装技术(顺序/层次/叠加 + 适配器解决兼容问题)
    掌握构件模型选择(如EJB/.NET)、胶水代码开发及接口适配策略,是应对系统集成类案例题的关键。
http://www.dtcms.com/a/388889.html

相关文章:

  • Centos下安装docker
  • OpenAPI 规范:构建高效 RESTful API 指南
  • 基于 AForge.NET 的 C# 人脸识别
  • SQLite与ORM技术解析
  • vue动态时间轴:交互式播放与进度控制
  • Java I/O三剑客:BIO vs NIO vs AIO 终极对决
  • AI 在视频会议防诈骗方面的应用
  • nest.js集成服务端渲染(SSR)
  • AI如何“听懂人话”?从语音识别到语义理解的最后一公里
  • 鸿蒙:Preferences持久化实现方案
  • 常温超导新突破!NixCu-O7材料设计引领能源革命(续)
  • 常温超导新突破!NixCu-O7材料设计引领能源革命
  • C++,C#,Rust,Go,Java,Python,JavaScript的性能对比
  • 《从崩溃到精通:C++ 内存管理避坑指南,详解自定义类型 new/delete 调用构造 / 析构的关键逻辑》
  • 鸿蒙:父组件调用子组件的三种方案
  • AppTest邀请测试 -邀请用户
  • 从零开始的云计算生活——第六十五天,鹏程万里,虚拟化技术
  • Java 开发指南:将 PDF 转换为多种图片格式
  • 【C++革命】董翔箭头函数库(xiang_arrow):在main函数里定义函数的终极方案
  • Ubuntu显示No operation system found
  • 【深度学习新浪潮】音频大模型方面有哪些最新的研究进展?
  • 第3节 创建视频素材时间线到剪映(Coze扣子空间剪映小助手零基础教程)
  • Unifi AP 网络路由取消使用 无线 Meshing
  • 计算机网络基础(四) --- TCP/IP网络结构(网络层) (上)
  • AR巡检与区块链融合:工业智能化的新引擎
  • Product Hunt 每日热榜 | 2025-09-18
  • WPF 字符竖向排列的排版格式(直排)显示控件
  • 多色零件自动化分拣与追溯系统案例和项目落地全计划
  • 自动化面试常见问题(英文版)
  • Kettle Carte 服务实战:从作业提交到日志监控全流程自动化(附 Shell 脚本)