软考(系统架构师)-软件架构设计之构件
考题分析
构件部分题目主要集中在基础知识部分,是比较重要的部分,论文曾经也出现过
构件概念
构件又称为组件,是一个自包容、可复用的程序集,它具有规范的接口规约和显式的语境依赖。构件中的接口是一个已命名的一组操作的集合
构件和对象的区别
对象:一个实例单元,具有唯一的标志;可能具有状态,此状态外部可见;封装了自己的状态和行为
构件:是独立部署单元;可作为第三方的组装单元;没有(外部的)可见状态
构件系统架构中细分概念
构件:一组通常需要同时部署的原子构件。构件和原子构件之间的区别在于,大多数原子构件永远都不会被单独部署,尽管它们可以被单独部署
原子构件:一个原子构件是一个模块和一组资源。大多数原子构件都属于一个构件家族,一次部署往往涉及整个家族
模块:一组类和可能的非面向对象的结构体,比如过程或者函数
资源:一个类型化的项的固定集合,可以包含代码资源
构件分类
独立而成熟的构件:该类构件得到了实际运行环境的多次检验,隐藏了所有接口,用户只需用规定好的命令进行使用
有限制的构件:提供了接口,指出了使用的条件和前提
适应性构件:进行了包装或使用了接口技术,对不兼容、资源冲突等进行了处理,可以直接使用
装配的构件:在安装时,已经被装配在操作系统等,使用“胶水代码”就可以进行连接
可修改的构件:可以进行版本替换,实现构件的替换
构件复用
构件的复用步骤:检索和提取构件、理解和评价构件、修改构件、组装构件
检索与提取构件方法
基于关键字:特点是树形或有向无回路结构
刻面(Facet)检索法:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特性
超文本检索法:基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档
构件组装
构件组装过程的层次
构件组装过程的三个层次包括:定制、集成、扩展
定制(Customization):构件组装过程的第一个层次,主要关注根据特定需求对构件进行个性化的调整和修改
集成(Integration):构件组装过程的第二个层次,主要关注将多个定制好的构件组合成一个完整的软件系统
扩展(Extension):构件组装的第三个层次,主要关注在现有软件系统的基础上增加新的功能或构件
构件组装的方式
构件组装包含三个方式:顺序组装、层次组装、叠加组装
顺序组装:通过按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件
层次组装:发生在一个构件直接调用由另一个构件所提供的服务时,被调用构件的“提供”接口必须和调用构件的“请求”接口兼容,否则就需要编写“胶水代码”实现转换
叠加组装:发生在两个或两个以上构件放在一起来创建一个新构件的时候。新构件合并了原构件的功能,对外提供了新的接口
构件组装的技术
构件组装的技术包括:基于功能的构件组装技术、基于数据的构件组装技术和面向对象的构件组装技术
构件组装接口不兼容
构件组装时经常会面临接口不兼容的问题,一般有三种,包括:参数不兼容、操作不兼容、操作不完备
参数不兼容:接口每一侧的操作有相同的名字,但参数类型或参数个数不相同
操作不兼容:提供接口和请求接口的操作名不同
操作不完备:一个构件的提供接口是另一个构件请求接口的一个子集,或者相反
针对上述不兼容情况,必须通过编写适配器构件来解决不兼容的问题
构件失配
构件失配是由于待复用构件对最终系统的体系结构和环境的假设与实际情况不同而导致的冲突。包括:由构件引起的失配、由连接子引起的失配、由于系统成分对全局体系结构的假设存在引起的失配
由构件引起的失配:由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起
由连接子引起的失配:由于系统对构件交互协议、连接子数据模型的假设存在冲突引起
构件标准
构件标准包括三类:COBRA、J2EE、DNA 2000
COBRA
CORBA核心组件和技术特性包括:接口定义语言IDL、对象请求代理ORB、互操作协议GIOP/IIOP和动态调用和序列化
接口定义语言IDL包括六种元素:模块定义、类型定义、常量定义、异常、接口描述和值类型。接口描述是一个IDL文件最核心的内容,模块定义将被映射为Java语言中的包和C++语言中的命名空间
伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求
对象请求代码ORB(Object Request Broker):是分布对象系统中的软总线,解释调用并负责查找实现该请求的对象,将参数传递给找到的对象,并调用方法返回结果。客户方不需要了解服务对象的位置、通信方式、实现、激活或存储机制
对象适配器(Object Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便它们使用ORB内部的某些功能
J2EE
J2EE包括三种Bean:会话Bean、实体Bean和消息驱动Bean
会话Bean:实现业务逻辑,负责完成服务端和客户端的交互
实体Bean: 描述了存储数据库表中的一行稳定持久的数据,实现O/R映射,简化数据库开发工作
消息Bean: 处理并发和异常访问
题目演练
2022年11月
在构件的定义中,()是一个已命名的一组操作的集合
A 接口 B 对象 C 函数 D 模块
