高级软件工程 第7章 基于构件的软件工程

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
细节也依赖于接口。即使实现细节不断变动,只要接口不变,客户类 就不需要变化。这大大降低了客户类与实现类之间的耦合度。
19
7.2 设计基于类的构件
基本设计原则
➢ 接口分离原则 (Interface Segregation Principle,ISP). “多个客户 专用接口要比一个通用接口好”。
✓ ISP原则建议设计者应该为每个主要的客户类型都设计一个特定的接 口。只有那些与特定客户类型相关的操作才应该出现在该客户的接口 说明中。
• 从功能上划分
3
构件的概念
• 通常来讲,构件是计算机软件中的一个模块化的 构造块。
✓ OMG 统一建模语言规范是这样定义构件的:“系统中模 块化的、可部署的和可替换的部件,该部件封装了实现并 暴露一系列接口。”
✓ 国际上第一本软件构件专著《构件化软件——超越面向对 象编程》(Szyperski)给出的构件定义:“一个构件是 一个组装单元,它具有约定式规范的接口,以及明确的依 赖环境。构件可以被独立部署,由第三方组装”。
15
构件接口的分类
16
7.2 设计基于类的构件
基本设计原则
➢ 开关原则 (The Open-Closed Principle, OCP). “一个模块(构件)应 该对外延具有开放性,对修改具有封闭性”。
✓ 即设计者应该采用一种无需对构件自身内部做修改就可以进行扩展的 方式来说明构件。
✓ 例如:画图的例子,传统的方法使用if-then-else语句根据不同的图 形类型,调用相应的方法,而面向对象采用子类覆盖父类的方法。
之间的隐含约定。
18
7.2 设计基于类的构件
基Fra Baidu bibliotek设计原则
➢ 依赖倒置原则 (Dependency Inversion Principle,DIP). “依赖于抽 象,而不依赖于具体实现” 。
✓ 在面向对象方法中,要面向接口编程,而不要面向类编程。 ✓ 一般情况下接口的变化概率相对要小,让客户类依赖于接口,实现的
来定义更为复杂的数据类型。
12
接口定义语言IDL
13
体系结构描述语言ADL
• ADL是一种描述实际系统体系结构的形式语法; • 构成元素:
构件 连接件 体系结构配置 • 比较有影响的ADL有C2、UniCon、MetaH、 Aesop、SADL、Rapide、Wright等。
14
构件接口的分类 • 内部接口 • 应用系统接口 • 平台接口
构件描述
• 构件定义 • 构件接口
构件系统
• 业务构件是最大粒度复用构件 • 业务构件组成构件子系统 • 构件子系统搭建成构件系统 • 构件库是其可用的资源支撑
构件技术
基于构件的软件架构
• 技术架构:软件基础设施架 构。
• 应用架构:基于软件基础设 施上的与应用领域相关的架 构。
构件类型
• 从粒度上划分
17
7.2 设计基于类的构件
基本设计原则
➢ Liskov 替换原则 (Liskov Substitution Principle ,LSP). “子类可 以替换他们的基类”。即将从基类导出的类传递给构件时,使用基类
的构件应该仍然能够正确完成其功能。 ✓ LSP原则要求源自基类的任何子类必须遵守基类与使用该基类的构件
• 接口定义语言IDL(Interface definition language)
• 体系结构描述语言ADL(Architecture description language)
11
接口定义语言IDL
• IDL用于描述接口的一种高级符号语言, IDL不涉及任何接口的实现细节。
• 特点:
(1) 是一种规范语言,看上去很像C语言; (2) 分离对象的接口和其实现; (3) 剥离了编程语言和对象的依赖性; (4) 提供了一套通用数据类型,并用这套数据类型
4
构件的概念
• 在面向对象软件工程环境中,构件包括一组协作 的类 。
• 在进行构件级设计时,需要对构件中的每个类进 行详细设计,包括属性、与实现相关的操作、所 有与其他设计类相互通信协作的接口(消息)。
computeJob
PrintJob
PrintJob
initiateJob
5
构件的概念
• 在传统软件工程环境中,一个构件就是程序的一 个功能要素。传统构件也称为模块。
业务构件2
构件子系统C 业务构件4
业务流程
数据模型
构件库
用户界面
权限控制
组织架构
其它构件
9
基于构件的软件架构
应用架构 技术架构
应用软件
用户和外部接口逻辑
核心业务相关逻辑
软件基础设施/构件架构
数据访问逻辑
构件执行/监控环境
软件技术 基础设施
技术环境
分布式运行环境/操作系统
10
描述构件接口的语言
• 模块接口语言MIL(Module interface language)
✓ 如果多个客户要求相同的操作,则这些操作应该在每个特定的接口中 都加以说明。
20
7.2 设计基于类的构件
基本设计原则
➢ 发布复用等价性原则 (Release Reuse Equivalency,REP). “复用 的粒度就是发布的粒度” 。
✓ 将可复用的类分组打包成能够管理和控制的包,并作为一个更新的版 本,而不是对每个类分别进行升级。
• 通常,构件具有以下三个角色之一:
(1) 控制构件:协调问题域中所有其他构件的调用; (2) 问题域构件:完成部分或全部用户的需求; (3) 基础设施构件:负责完成问题域中所需相关处理的功能。
Job management s ys tem
Read print job data
Select jobmgmt function
6
构件分类
按纵向分类
• 系统级构件 • 应用构件
按横向分类
• 界面构件 • 逻辑构件 • 数据访问构件
按粒度分类
• 业务构件 • 服务构件
纵向分类
横向分类
粒度分类
7
构件分类
构件
服务构件
业务构件
展现构件
逻辑构件
运算构件
按粒度分类
扩展构件 8
构件系统
构件子系统B 业务构件3
构件系统
构件子系统A
业务构件1
第7章 基于构件的软件工程
构件技术 设计基于类的构件 基于构件的开发模型 典型的构件模型
1
第7章 基于构件的软件工程
• 基于构件的软件工程(componentbased software engineering,CBSE) 是强调使用可复用的软件“构件”来设计 和构造基于计算机的系统的过程。
2
7.1 构件技术
相关文档
最新文档