第4.1讲: 软件组件技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入
领域工程
输出
D A1 C1 B2 B1 A2
应用系 统开发
领域工程师
领域可复用组件
需求分析员、 软件设计者......
高级软件工程
软件组件 14/61
高级软件工程
软件组件 17/61
三、与组件技术相关的过程 组件的获取:领域工程 组件的管理:组件管理工程 件的复用 应用 程 组件的复用:应用工程
应能够通过查询组件来确定它所支持的属性、方法和事件。
加载 存储态 静态 运行态
(7) 组件应可以在各种不同的环境中使用。 特性(5)、特性(6)和特性(7)不是组件的本质特性,但 如果没有它们,组件编程格变得非常困难。
2
高级软件工程
软件组件 13/61
高级软件工程
软件组件 16/61
组件实现模型:
组件、构架 组件 构架 获取
组件标准 化与描述
组件分类、 存储与检索
组件组装
软件组件技术 CASE技术
软件组件技术是软件复用的关键技术
高级软件工程
软件组件 8/61
什么是组件?
高级软件工程
软件组件 11/61
二、什么是软件组件
组件的关键特性2 (3) 组件必须能够嵌入容器, 而且必须为组件与容器之间提供通信机制。 (4) 组件技术必须支持属性、方法和事件 或者某种等价的通信方法。
数据访问系统
Web服务器 数据源驱动引擎 应用程序接口 仓库访问引擎
系统服务层
数据管理层
组件库 A
组件库 B
组件库 C
反馈
数据仓库
Web 日志 其它
元数据百度文库
数据存储层
数据提取 数据集成设施
元数据管理
数据转换层
高级软件工程
软件组件 27/61 什么是应用工程?
(3)组件的复用
利用领域工程结果进行软件开发的过程
软件组件 2/61
高级软件工程
软件组件 5/61
“管理变化性与复杂性 是基于组件软件开发的动力 是基于组件软件开发的动力” [Booch, 2001]
分析传统工业 如机械、建筑等行业 以及 计算机硬件产业 其成功的基本模式 是 符合标准的零部件(组件)生产、 基于标准零部件的产品生产(组装) 其中: 复用 是 必需的手段 组件 是 核心和基础 这种模式 也 是 产业工程化、工业化的必由之路 是 软件产业发展的必然途径
领域工程
现有系统
获取组件的途径: 从头开发新组件 从现有系统中提炼:领域工程 演化现有组件
领域 需求
领域 分析
领域 设计
领域 实现
可复用组件
领域模型 领域构架 组件代码
组件库
3
高级软件工程
软件组件 19/61
高级软件工程
软件组件 22/61
领域分析过程:
现有系统及规划 建立领域需求定义
确定领域中共同的需求 确定领域中需求的变化性 确定具有变化性的需求间的关系
高级软件工程
软件组件 1/61
高级软件工程
软件组件 4/61
一、动因
第六讲 组件技术
软件设计核心的变化:“算法+数据结构=程序” “软件体系结构的设计和规范” 目标:实现功能 保证软件质量,提高可靠性、可重用性、 可维护性 软件复用:以组件技术为核心 软件体系结构:组件 + 组件之间的关系
高级软件工程
变化性的绑定时间(Binding Time)
– 开发时 – 部署时 – 运行时
关系
– 依赖 – 互斥
高级软件工程
软件组件 15/61
高级软件工程
软件组件 18/61
(1)组件的获取
存在大量可复用的组件 是 复用的前提 据分析,大约10万个组件 才有可能满足一般用户的需求
领域工程中的活动与结果
分析领域需求 的共性及变化性 建立满足领域需求 的软件构架(DSSA) 在代码级实现 面向领域的组件
通常称为
应用工程
与一般开发过程不同的是 基于领域工程的应用工程过程中的每一阶段 皆可以从组件库中获得可复用的领域工程结果 并将其作为本阶段集成与开发的基础
5
高级软件工程
软件 = 程序 + 文档
文档
代码(程序)
软件组件 9/61
高级软件工程
软件组件 12/61
组件的关键特性3
(5) 组件技术应支持持久性属性。
在设计时应能够设置属性值,并在激活组件时, 能够将设置值作为属性的初始值。
源代码态
编译 目标码态
(6) 组件应描述其自身接口。 组件应描述其自身接口
这是软件复用与软件组件技术受到高度重视的根本原因
高级软件工程
软件组件 3/61
高级软件工程 软件复用思想的历史背景
软件组件 6/61
内 容
一、动因 二、什么是软件组件 三、与软件组件技术相关的过程
子程序的概念即体现了复用的思想
面向对象技术逐步成为主流技术 为软件复用提供了基本的技术支持
软件复用 被视为 解决软件危机 提高软件生产效率和质量 的 现实可行途径
建立与领域分析模型的可追踪性
从不同的角度(刻面)描述组件
复审
高级软件工程
软件组件 21/61
高级软件工程
刻面分类法:
软件组件 24/61
领域实现过程:
DSSA和组件的详细设计
DSSA和组件的实现 依据详细设计 重新实现 DSSA和组件 从现有系统中 利用再工程技术 提取DSSA和组件 对现有组件 进行包装
1.1
系统 分析
系统 设计
系统 实现
可复用组件
领域模型 领域构架 组件代码
1.4
组件库
高级软件工程
基于Web的用户界面 决策支持工具 系统管理工具
软件组件 26/61
高级软件工程
软件组件 29/61
应用层
思考题
什么是组件? 什么是组件 什么是领域工程? 什么是应用工程? 领域工程与应用工程的关系是什么?
如果没有特性(3),那就是在研究应用程序,而非研究组件; 如果没有特性(4),则组件技术毫无用处,因为此时无法与组件进 行通信;
从一般意义上讲 组件是 系统中可以明确辨识的构成成分 软件组件则是 软件系统中 具有一定意义的 相对独立的构成成分 组件是一个不透明的功能实现体 能够被第三方所组装,且符合一个组件模型
以如何具体实现组件为主要目标 与分布式对象技术充分结合 例如: OMG的CCM模型 微软的DCOM模型 SUN的EJB模型 这些实现模型将组件的接口与实现进行有效的分离 增加了复用的机会 与网络环境下大型软件系统的需要 相适应 支持运行态的软件组件
领域工程基本过程:
领域专家
领域模型/构架
最终用户
应用 应用 应用 应用 领域
活动 构架、组件生产 (领域工程) 领域 领域 领域 分析 设计 实现 再工程 应用系统集成组装 (应用工程) 组件 管理 分析 设计 实现 测试
领域工程的关键: 找出领域中不同系统之间需求的共性与变化性
需求的分类
– 必须的(Mandatory)需求 – 可选的(Optional)需求 – 多选 多选一的 的(Alternative)需求
1
高级软件工程
应用系统 领域 遗产软件 系统
软件组件 7/61
高级软件工程
软件组件 10/61
组件的关键特性1 (1) 组件必须是一个独立编译的程序。 它不能是函数库或源代码。
非 技 术 因 素
领域工程 软件再工程 软件构架技术 开放系统技术
软 件 过 程
(2) 必须能够集成组件以创建 必须能够集成组件以创建一个更大的程序。 个更大的程序。 无需访问组件的源代码 如果没有特性(1)和特性(2),那就是在研究函数库 技术,而非研究组件技术
(2)组件的管理 组件的描述、分类与检索
建立领域术语字典 确定术语 确定术语解释 确定同义词
建立领域面向对象分析模型
建立 面向对象 分析模型 建立与 领域需求定义间的 可追踪性
为什么需要组件管理: 阻碍复用的若干因素包括: 复 的若 素包括 没有足够的可复用资源 没有良好的分类模式,组件查找困难 没有良好的组件库支持
使用环境
功能
应用领域 层次
依据领域分析模型和DSSA 组织可复用组件库
复审
表示方法
...
4
高级软件工程
软件组件 25/61
高级软件工程
软件组件 28/61
组件之间的关系
精化关系 版本关系 包含关系 协作关系 等
应用工程中的活动与活动结果
可交付系统
系统模型 系统设计 软件系统
1.0
应用工程
用户 需求
复审
高级软件工程
软件组件 20/61
高级软件工程
软件组件 23/61
领域设计过程:
领域分析结果
组件的分类:
枚举分类: 通过定义一个层次结构 来描述组件
数据接口 部分
进行初步的领域设计
人机交互 部分 问题域 部分 控制接口 部分
属性-值分类: 为领域中的所有组件定义一组属性
结合设计模式,实现变化性
刻面分类法: