《软件工程》教学课件CH9-UML概述_第1页
《软件工程》教学课件CH9-UML概述_第2页
《软件工程》教学课件CH9-UML概述_第3页
《软件工程》教学课件CH9-UML概述_第4页
《软件工程》教学课件CH9-UML概述_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程软件工程 UML概述概述 陈巧丽陈巧丽 UML面向对象分析与设计面向对象分析与设计 nUML把把Booch, Rumbaugh和和Jacobson 等各自独立的等各自独立的OOA和和OOD方法中最优秀的方法中最优秀的 特色组合成一个统一的方法。特色组合成一个统一的方法。 nUML的特点:的特点: v统一标准统一标准 v面向对象面向对象 v可视化,表示能力强大可视化,表示能力强大 v独立于过程独立于过程 v容易掌握使用容易掌握使用 UML的定义的定义 nUML定义有两个主要组成部分:定义有两个主要组成部分: q 语义:用自然语言描述语义:用自然语言描述 q 表示法:定义表示法:定义UML

2、的可视化标准表示符号的可视化标准表示符号 n使用使用 UML 时,要从不同的角度观察系统,为此时,要从不同的角度观察系统,为此 定义了概念定义了概念 “视图视图”。视图是对系统的模型在某。视图是对系统的模型在某 方面的投影,注重于系统的某个方面。方面的投影,注重于系统的某个方面。 1)结构视图:描述系统的静态结构,可根据它结构视图:描述系统的静态结构,可根据它 确定重要的设计:类、包和子系统。确定重要的设计:类、包和子系统。 2)实现视图:描述处于开发环境中的静态软件实现视图:描述处于开发环境中的静态软件 成分的组织(源程序、构件、数据文件、可成分的组织(源程序、构件、数据文件、可 执行程序等

3、)。执行程序等)。 3)行为视图:描述系统在运行时的并发性,包行为视图:描述系统在运行时的并发性,包 括任务、线程、进程及其相互作用。括任务、线程、进程及其相互作用。 软件体系结构的软件体系结构的 4+1 视图模型视图模型 4)环境视图:描述处于运行环境中的各种可执环境视图:描述处于运行环境中的各种可执 行程序是如何映射到底层平台或计算结点上行程序是如何映射到底层平台或计算结点上 的。的。 n体系结构中主要的元素包括:体系结构中主要的元素包括: q 主要的类,如为业务实体建模的类。主要的类,如为业务实体建模的类。 q 将行为赋予类的机制,如协同。将行为赋予类的机制,如协同。 q 模式与框架。模

4、式与框架。 q 层次与子系统。层次与子系统。 q 接口以及主要的进程控制或线程控制。接口以及主要的进程控制或线程控制。 nUML 的三个主要组成元素的三个主要组成元素 v 基本构造块基本构造块 v 组织构造块的规则组织构造块的规则 v 运用于整个运用于整个 UML 的公共机制的公共机制 UML的构成的构成 nUML包括三种基本构造块:事物、关系和图。包括三种基本构造块:事物、关系和图。 类名类名 属性属性 操作操作 open( ) close( ) move( ) display( ) origin size Window 1) 类类 2)接口接口 描述一个类或构件的服务(操作)。描述一个类或

5、构件的服务(操作)。 3)协作协作 描述合作完成某个特定任务的一组类描述合作完成某个特定任务的一组类 及其关联的集合,用于对使用情形的实现建模。及其关联的集合,用于对使用情形的实现建模。 4)用例用例 表示系统想要实现的行为,不关心这表示系统想要实现的行为,不关心这 些行为是怎样实现的。些行为是怎样实现的。 ISpelling Place Order Order Management 用例用例 协作协作 实现实现 5)主动类主动类 它至少拥有一个进程或线程,故能够它至少拥有一个进程或线程,故能够 启动控制活动。启动控制活动。 suspend() flush() EventManager 6)构

6、件构件 系统中物理系统中物理 7) 的、可替代的部件。的、可替代的部件。 7)节点节点 系统在运行系统在运行 时存在的物理元素。时存在的物理元素。 Orderform .java 数据库数据库 服务器服务器 应用应用 服务器服务器 课程课程 管理管理 成绩成绩 管理管理 UML 事物事物行为事物行为事物 8)交互交互 由在特定环境中共同完成一定任由在特定环境中共同完成一定任 务的一组对象之间交换的消息组成。务的一组对象之间交换的消息组成。 p:Person:Company Assign(development) 消息消息 有名对象有名对象 匿名对象匿名对象 9)状态机状态机 描述了一个对象或一

7、个交互在生存描述了一个对象或一个交互在生存 周期内响应事件所经历的状态序列。周期内响应事件所经历的状态序列。 initializingcommand idle Keypress Finished Exit UML 事物事物分组事物分组事物 10)包包 用户接口用户接口 包包 业务对象业务对象 包包 数据库包数据库包 应用包应用包 UML 事物事物注释事物注释事物 11)注释注释 依附于一个元素或一组元素之上,对依附于一个元素或一组元素之上,对 其进行约束或解释的简单符号。其进行约束或解释的简单符号。 CashAccount presentValue() See policy8-5- 96.do

8、c for details about these algorithm s. UML 关系关系 1)依赖依赖 两个事物之间的语义关系,其中一个事两个事物之间的语义关系,其中一个事 物发生变化会影响另一个事物的语义。物发生变化会影响另一个事物的语义。 CourseSchedule add(c:Course) remove(c:Course) Course Iterator 2)关联关联 一种描述一组对象之间连接的结构关一种描述一组对象之间连接的结构关 系。系。 v聚合是一种特殊类型的关联,描述了整体和聚合是一种特殊类型的关联,描述了整体和 部分间的结构关系。部分间的结构关系。 3)泛化泛化 一种

9、一般化一种一般化特殊化的关系。特殊化的关系。 employeremployee 0.1 * Event ConsoleWindowDialogBoxControl 依赖依赖 泛化泛化 关联关联 Window open() close() move() display() handleEvent() 4)实现实现 类之间的语义关系,其中的一个类指定类之间的语义关系,其中的一个类指定 了由另一个类保证执行的契约。了由另一个类保证执行的契约。 两种情况出现实现关系:两种情况出现实现关系: a.在接口和实现它们的类或构件之间;在接口和实现它们的类或构件之间; b.用例和它们的协作之间。用例和它们的协作

10、之间。 Place Order Order Management 用例用例 协作协作 实现实现 类类 属性属性 操作操作 对象对象 属性属性 操作操作 接口接口 用例用例 构件构件 节点节点 状态机状态机 包包 注释注释 依赖依赖关联关联泛化泛化实现实现 聚合聚合复合复合 模型中主要的图形元素模型中主要的图形元素 UML 模型的图形模型的图形 Use Case Diagrams Use Case Diagrams Scenario Diagrams Scenario Diagrams 协作图协作图 State Diagrams State Diagrams 构件图构件图 Component D

11、iagrams Component Diagrams 部署图部署图 State Diagrams State Diagrams 对象图对象图 Scenario Diagrams Scenario Diagrams 状态图状态图 Use Case Diagrams Use Case Diagrams 顺序图顺序图 State Diagrams State Diagrams 活动图活动图 模型模型 1. 用例图用例图 n用例图展现了一组用例、参与者以及它们间的用例图展现了一组用例、参与者以及它们间的 关系。关系。 n可以用用例图描述系统的静态使用情况,它定可以用用例图描述系统的静态使用情况,它定

12、义了系统的功能需求,但这是从系统的外部观义了系统的功能需求,但这是从系统的外部观 看系统功能,并不描述系统内部对功能的具体看系统功能,并不描述系统内部对功能的具体 实现。实现。 n在对系统行为组织和建模方面,用例图的是相在对系统行为组织和建模方面,用例图的是相 当重要的。当重要的。 查询商品价格查询商品价格 顾客顾客 库存系统库存系统 售货员售货员 总账系统总账系统 查询商品信息查询商品信息 预售商品预售商品 网上销售商品网上销售商品 打折销售商品打折销售商品 出售商品出售商品 查询商品成分查询商品成分 商品查询商品查询 售货管理售货管理 说明说明顾客持所欲购买的商品至收银台结帐,店员刷商品条

13、码顾客持所欲购买的商品至收银台结帐,店员刷商品条码 后,根据数量及单价计算总金额商品售出后,商品编码、后,根据数量及单价计算总金额商品售出后,商品编码、 单价、总金额存入电脑,数据记载到单价、总金额存入电脑,数据记载到“库存系统库存系统”和和 “总帐系统总帐系统”中(含预售、网络购物、打折销售)。中(含预售、网络购物、打折销售)。 事件流事件流 基本事件流基本事件流刷条码刷条码? ? 结算金额结算金额? ?付款付款? ?扣库存扣库存? ?记入日记账记入日记账? ?打印发票打印发票 异常事件流异常事件流 第一异常事件流第一异常事件流顾客结帐后更换商品顾客结帐后更换商品 第二异常事件流第二异常事件

14、流顾客将已售商品退回顾客将已售商品退回 特殊需求特殊需求 第一个特殊需求第一个特殊需求允许退货允许退货, , 并将退回商品加回库存并将退回商品加回库存 第二个特殊需求第二个特殊需求记录顾客的性别,年龄记录顾客的性别,年龄, ,供后续统计分析用供后续统计分析用 2. 类图类图 n类图展示了一组类、接口和协作及它们间的关系。类图展示了一组类、接口和协作及它们间的关系。 n类图没有时间概念,是概念数据模型(如类图没有时间概念,是概念数据模型(如E- -R 图)的一种延伸。图)的一种延伸。 n用类图说明系统的静态结构视图,包含主动类的用类图说明系统的静态结构视图,包含主动类的 类图类图专注于系统的静态

15、处理视图。专注于系统的静态处理视图。 n系统可有多个类图,单个类图仅表达了系统的一系统可有多个类图,单个类图仅表达了系统的一 个方面,要在高层给出类的主要职责,在低层给个方面,要在高层给出类的主要职责,在低层给 出类的属性和操作。出类的属性和操作。 n类图是从系统构成角度来描述系统。类图是从系统构成角度来描述系统。 n类的表示:类的表示: 限定关联限定关联 类类1 1类类2限定词限定词 关联名称关联名称 角色角色1角色角色2 聚合、引用和重复度聚合、引用和重复度 0.* 0.1 0.* 整体整体 类名类名 部分部分 类名类名2部分部分 类名类名1 1 0.1 聚合聚合 简单引用简单引用 复合聚

16、合复合聚合 双方捆绑双方捆绑 关联名关联名 类类 1 类类 2 关联类名关联类名 属性属性 操作操作 角色角色 1 角色角色 2 关联类关联类 泛化关系泛化关系 超类超类 子类子类1子类子类2 操作操作 抽象类抽象类 操作操作 雇员雇员 雇员标识雇员标识: char 姓名姓名: char 职务职务: char 工资工资: long 项目项目 项目标识项目标识 项目名称项目名称 参与参与 开始日期开始日期 结束日期结束日期 任务任务 任务标识任务标识 任务名称任务名称 任务费用任务费用 技能技能 技能标识技能标识 技能名称技能名称 团队团队 团队标识团队标识 承担工作承担工作 部门部门 部门标识

17、部门标识 部门名称部门名称 客户客户 客户标识客户标识 客户名称客户名称 客户地址客户地址 客户电话客户电话 客户代表客户代表 0.* 0.* 1 0.* 1.* 1 0.* 1.* 1.* 1 1 0.* 1 1.* 0.* 1.* 3. 对象图对象图 n对象图展示了一组对象及它们间的关系。对象图展示了一组对象及它们间的关系。 n用对象图说明类图中类的对象实例的数据用对象图说明类图中类的对象实例的数据 结构和静态快照,即在某一时刻,一组对结构和静态快照,即在某一时刻,一组对 象的状态及其关系。象的状态及其关系。 n对象图表达了系统的静态设计视图或静态对象图表达了系统的静态设计视图或静态 过程

18、视图,除了现实和原型的方面因素外,过程视图,除了现实和原型的方面因素外, 它与类图作用是相同的。它与类图作用是相同的。 c: 公司公司 名称名称=“=“研发研发” d2: 部门部门d1: 部门部门 名称名称=“=“销售销售” d3: 部门部门 名称名称=“=“打印机销售打印机销售” : 联系信息联系信息 地址地址=“清华产业楼清华产业楼411” p: 人员人员 姓名姓名=“=“郑人杰郑人杰” 雇员标识雇员标识= =6037 职务职务=“=“销售副总销售副总” 经理经理 连接连接 link 属性值属性值 对象对象 匿名对象匿名对象 4. 包图包图 n包图表明包及其之间的依赖类图。包图表明包及其之

19、间的依赖类图。 n包是对模型中涉及的元素分组所得的结果,包是对模型中涉及的元素分组所得的结果, 是具有特定语义的一个子集,必须保证低是具有特定语义的一个子集,必须保证低 耦合、高内聚。耦合、高内聚。 n广义地讲,包可以包含类、接口、构件、广义地讲,包可以包含类、接口、构件、 节点、协作、用例等,还可以内嵌其他子节点、协作、用例等,还可以内嵌其他子 包。包。 n包之间的访问权限通过输出(输出品)和包之间的访问权限通过输出(输出品)和 导入(进口货)设置,虚箭头导入(进口货)设置,虚箭头 从源从源 包到目标包。包到目标包。 年个 控控制制器器 微微软软窗窗口口 基基本本图图形形 窗窗口口系系统统

20、窗窗口口核核心心 基基本本图图形形 核核心心 图图形形核核心心 图图组组件件 编编辑辑器器 图图组组件件 见、 、 、 5. 构件图构件图 n构件图展现了一组构件之间的组织和依赖,用构件图展现了一组构件之间的组织和依赖,用 于对源代码、可执行的发布、物理数据库等的于对源代码、可执行的发布、物理数据库等的 系统建模。系统建模。 n构件图表示系统的静态实现视图。构件图表示系统的静态实现视图。 Course Course Offering Student Professor Course.dll People.dll 课程课程 用户用户 Register.exe Billing.exe 课表系统课表

21、系统 6. 部署图部署图 n部署图展现了对运行时处理节点以及其中构件的部署图展现了对运行时处理节点以及其中构件的 配置每一节点代表一个计算单元。配置每一节点代表一个计算单元。 n它描述系统硬件的物理拓扑结构它描述系统硬件的物理拓扑结构 ( 包括网络布局包括网络布局 和构件在网络上的位置和构件在网络上的位置) ,以及在此结构上执行,以及在此结构上执行 的软件(即运行时软构件在节点中的分布情况)。的软件(即运行时软构件在节点中的分布情况)。 n用部署图说明系统结构的静态环境视图,即说明用部署图说明系统结构的静态环境视图,即说明 分布、交付和安装的物理系统。分布、交付和安装的物理系统。 注册注册 服

22、务器服务器 数据库数据库 宿舍宿舍 客户机客户机 图书馆图书馆 客户机客户机 主排课主排课 客户机客户机 8. 活动图活动图 n活动图是一种特殊的状态图,描述要做的活动图是一种特殊的状态图,描述要做的 活动、执行这些活动的顺序以及工作流。活动、执行这些活动的顺序以及工作流。 它对于系统的功能建模特别重要,强调对它对于系统的功能建模特别重要,强调对 象间的控制流程。象间的控制流程。 n高层活动图用于表示任务。即用于分析用高层活动图用于表示任务。即用于分析用 例,理解涉及多个用例的工作流、多线程例,理解涉及多个用例的工作流、多线程 及并行,显示相互联系的行为整体,还可及并行,显示相互联系的行为整体

23、,还可 用于业务过程建模,对系统的功能建模。用于业务过程建模,对系统的功能建模。 低层活动图用于表示类的方法。低层活动图用于表示类的方法。 按订单供货按订单供货 接订单接订单 开发票开发票 结清订单结清订单 快速交付快速交付正常交付正常交付收款收款 起点起点 分叉分叉 活动活动 分支分支 合并合并 汇合汇合 结束结束 紧急订单紧急订单 非非紧急订单紧急订单 变迁变迁 9. 状态图状态图 n状态图展示了一个特定对象的所有可能状状态图展示了一个特定对象的所有可能状 态以及由于各种事件的发生而引起的状态态以及由于各种事件的发生而引起的状态 间的转移。间的转移。 n一个状态图描述了一个状态机,用状态图

24、一个状态图描述了一个状态机,用状态图 说明系统的动态视图。说明系统的动态视图。 n状态图对于接口、类或协作的行为建模尤状态图对于接口、类或协作的行为建模尤 为重要,可用它描述用例实例的生存周期。为重要,可用它描述用例实例的生存周期。 Project对象的状态图对象的状态图 注册注册预售预售 开发开发 系统系统 分析分析 系统系统 设计设计 程序程序 编码编码 软件软件 测试测试 系统系统 部署部署 单元测试与调试单元测试与调试 维护维护 新新project project完完 开始开始 结束结束 10. 交互图交互图 n交互图展现了按一定的目的进行一种交互,它由交互图展现了按一定的目的进行一种

25、交互,它由 在一个上下文中的一组对象及它们之间交互的信在一个上下文中的一组对象及它们之间交互的信 息组成。息组成。 n交互图可用于描述一个用例的行为。顺序图和协交互图可用于描述一个用例的行为。顺序图和协 作图都是交互图,它们可以相互转换。作图都是交互图,它们可以相互转换。 n如果希望查看单个对象跨用例的行为如果希望查看单个对象跨用例的行为, , 要使用状要使用状 态图。态图。 n如果希望查看跨用例跨线程的行为,要使用活动如果希望查看跨用例跨线程的行为,要使用活动 图。图。 10-1 顺序图顺序图 n顺序图展现了一组对象和由这组对象收发顺序图展现了一组对象和由这组对象收发 的消息,用于按时间顺序

26、对控制流建模。的消息,用于按时间顺序对控制流建模。 n对象表述为虚垂线顶端的矩形小框。对象表述为虚垂线顶端的矩形小框。 n垂线是对象的生命线,说明对象的生命。垂线是对象的生命线,说明对象的生命。 n生命线之间的箭头表示消息。消息出现的生命线之间的箭头表示消息。消息出现的 次序自上而下。次序自上而下。 n消息箭头可以回到同一条生命线,指明自消息箭头可以回到同一条生命线,指明自 调用,即对象发给自己的消息。调用,即对象发给自己的消息。 移动电话系统的用例图移动电话系统的用例图 移动用户移动用户 移动网络移动网络 与与对方通话对方通话 下载图符下载图符 下载铃声下载铃声 管理电话本管理电话本 移动电

27、话系统的顺序图移动电话系统的顺序图 : 移动用户移动用户 : 移动按键移动按键 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站 按按数字键数字键 显示按键号码显示按键号码 按按发送键发送键 连接基站连接基站 建立连接建立连接 连接成功连接成功 显示连接成功显示连接成功 10-2 协作图协作图 n协作图展现了一组对象,这组对象之间的连接以协作图展现了一组对象,这组对象之间的连接以 及这组对象收发的消息。及这组对象收发的消息。 n它强调收发消息的对象结构组织,按组织结构对它强调收发消息的对象结构组织,按组织结构对 控制流建模。控制流建模。 n协作图中的协作不是参与者与系统之间的交

28、互,协作图中的协作不是参与者与系统之间的交互, 而是系统内部某一个用例中各个对象之间信息传而是系统内部某一个用例中各个对象之间信息传 递的方式。递的方式。 n消息上所附编号指明执行顺序。消息上所附编号指明执行顺序。 移动电话系统的协作图移动电话系统的协作图 : 移动用户移动用户 1: 按数字键按数字键 3: 按发送键按发送键 : 移动按键移动按键 2: 显示按键号码显示按键号码 : 移动显示移动显示 : 移动手机移动手机 : 移动基站移动基站 4: 连接基站连接基站 5: 建立连接建立连接6: 连接成功连接成功 7: 显示连接成功显示连接成功 *RUP(Rational Unified Pro

29、cess统一开发过程统一开发过程)的分析的分析 /设计工作流设计工作流 n分析和设计工作流的目的是研究欲采用的实现环境和系统构件分析和设计工作流的目的是研究欲采用的实现环境和系统构件 的效用,的效用,定义软件的组织结构,把需求获取结果转化为实现规定义软件的组织结构,把需求获取结果转化为实现规 格。格。 n为实现这种转化,必须理解需求,采用最佳实现策略将其翻译为实现这种转化,必须理解需求,采用最佳实现策略将其翻译 为系统设计。为系统设计。 n为此,首先是建立健壮的软件体系结构为此,首先是建立健壮的软件体系结构,设计出易于理解、开设计出易于理解、开 发和演进的系统,然后调整这个设计,使之适应实现环

30、境。发和演进的系统,然后调整这个设计,使之适应实现环境。 n最后结果是产生一个对象模型,即设计模型。最后结果是产生一个对象模型,即设计模型。 定义初始体系结构定义初始体系结构 早期细化迭代早期细化迭代 分析行为分析行为 设计设计 实时构件实时构件 设计设计 数据库数据库 设计构件设计构件 细化体系结构细化体系结构 细化迭代细化迭代 可选可选实时实时非实时非实时 1)定义一个初始的体系结构定义一个初始的体系结构 v建立一个初始的系统体系结构草图。定义建立一个初始的系统体系结构草图。定义 一组初始的重要体系结构元素。一组初始的重要体系结构元素。 一组初始分析机制。一组初始分析机制。 系统的初始分层

31、和组织。系统的初始分层和组织。 在当前迭代过程中处理的用例实现。在当前迭代过程中处理的用例实现。 v从重要的构件用例中确定类。从重要的构件用例中确定类。 v确定类之间的交互作用,修改用例实现。确定类之间的交互作用,修改用例实现。 2)细化体系结构细化体系结构 v建立从分析到设计的自然转移,并标识:建立从分析到设计的自然转移,并标识: 从分析元素中确定适当的设计元素。从分析元素中确定适当的设计元素。 从相关分析机制中确定适当的设计机制。从相关分析机制中确定适当的设计机制。 v保持体系结构的一致性和完整性,确保:保持体系结构的一致性和完整性,确保: 将当前迭代中标识的新的设计元素与已有的将当前迭代

32、中标识的新的设计元素与已有的 设计元素集成在一起。设计元素集成在一起。 在设计中尽早地、最大限度地复用可获得的在设计中尽早地、最大限度地复用可获得的 构件和设计元素。构件和设计元素。 v描述系统运行的组织和实施体系结构。描述系统运行的组织和实施体系结构。 v组织实现模型以实现设计到实现无缝转移。组织实现模型以实现设计到实现无缝转移。 3)分析行为分析行为 v将用例提供的行为描述转变为一系列可作为将用例提供的行为描述转变为一系列可作为 设计基础的元素。设计基础的元素。 v在分析行为时,主要注重于如何能够提供要在分析行为时,主要注重于如何能够提供要 求的功能,较少关心系统的非功能需求。求的功能,较

33、少关心系统的非功能需求。 4)设计构件设计构件 v找出设计元素如何实现要求行为的细节,细找出设计元素如何实现要求行为的细节,细 化设计元素的定义。化设计元素的定义。 v根据新的设计元素来细化和更新用例实现。根据新的设计元素来细化和更新用例实现。 v当设计演进后,进行设计评审。当设计演进后,进行设计评审。 5)设计实时构件设计实时构件 v在实时的或交互式的上下文中,使用封装制在实时的或交互式的上下文中,使用封装制 品作为主要的设计元素。品作为主要的设计元素。 v设计实时构件与设计构件有相似的活动,但设计实时构件与设计构件有相似的活动,但 增加了封装设计活动,定义系统的并发控制增加了封装设计活动,

34、定义系统的并发控制 线程和它们之间的协议。线程和它们之间的协议。 6)设计数据库设计数据库 v在设计中标识永久类并设计适当的数据库结在设计中标识永久类并设计适当的数据库结 构来存储永久类。构来存储永久类。 v定义一种存储和检索永久数据的机制和策略,定义一种存储和检索永久数据的机制和策略, 以满足系统的性能需求。以满足系统的性能需求。 n分析和设计工作流中的关键制品:分析和设计工作流中的关键制品: 1)设计模型设计模型 由类的协作构成。这些类的协作可由类的协作构成。这些类的协作可 能集成为包或子系统。包是对类的逻辑分组,能集成为包或子系统。包是对类的逻辑分组, 是为了减少系统的复杂性。是为了减少

35、系统的复杂性。 2) 分析模型分析模型 是设计的抽象和泛化,它提供系是设计的抽象和泛化,它提供系 统的功能描述,忽略了系统如何工作的细节。统的功能描述,忽略了系统如何工作的细节。 3) 软件体系结构文档软件体系结构文档 涵盖系统不同的体系结涵盖系统不同的体系结 构视图。构视图。 实现工作流实现工作流 n实现工作流的目的是实现工作流的目的是 q 建立代码的分层结构;建立代码的分层结构; q 从构件(源文件、二进制文件、可执行文件或从构件(源文件、二进制文件、可执行文件或 其他文件)角度来实现类和对象;其他文件)角度来实现类和对象; q 对开发出来的构件进行单元测试;对开发出来的构件进行单元测试;

36、 q 将个人和开发团队开发的结果集成到可执行系将个人和开发团队开发的结果集成到可执行系 统中。统中。 n单元测试仅对单个构件进行。集成测试和系统测单元测试仅对单个构件进行。集成测试和系统测 试在测试工作流中执行。试在测试工作流中执行。 构造实现模型构造实现模型 集成每个子系统集成每个子系统 集成系统集成系统 制定集成计划制定集成计划 实现构件实现构件 可用于单元测试的构件可用于单元测试的构件 可用于集成的可用于集成的 实现子系统实现子系统 针对这个针对这个 迭代过程迭代过程 的更多的的更多的 系统构造系统构造 针对这针对这 个迭代个迭代 过程的过程的 更多的更多的 子系统子系统 构造构造 针对

37、这个针对这个 迭代过程迭代过程 的更多的的更多的 要实现的要实现的 构件构件 n实现模型是在细化阶段通过不断迭代,不断使用实现模型是在细化阶段通过不断迭代,不断使用 更大规模的集成构造建立起来的。更大规模的集成构造建立起来的。 n对于每一次迭代,要求做到:对于每一次迭代,要求做到: 1)确定要实现哪一个子系统,以及在当前迭代中子确定要实现哪一个子系统,以及在当前迭代中子 系统的集成顺序。系统的集成顺序。 2)对于每一个子系统,确定实现每个类的顺序,以对于每一个子系统,确定实现每个类的顺序,以 及子系统集成的计划。及子系统集成的计划。 3)实现设计模型中的类和对象,包括编写源代码、实现设计模型中

38、的类和对象,包括编写源代码、 改写已有构件、编译、链接和执行,及时反馈设改写已有构件、编译、链接和执行,及时反馈设 计中可能的缺陷。计中可能的缺陷。 4)修改有缺陷的源代码,进行单元测试以验证这些修改有缺陷的源代码,进行单元测试以验证这些 变更。最后进行代码评审。变更。最后进行代码评审。 5)指定专人负责将所有新的和已变更的构件集成为指定专人负责将所有新的和已变更的构件集成为 一个新的实现子系统版本。在团队环境,集成将一个新的实现子系统版本。在团队环境,集成将 产生一系列构造,对每个构造由集成测试员进行产生一系列构造,对每个构造由集成测试员进行 集成测试。集成测试。 6)将发布的子系统集成到系

39、统。最终的构造即为系将发布的子系统集成到系统。最终的构造即为系 统。由系统测试员进行系统测试。统。由系统测试员进行系统测试。 n实现工作流的关键制品有:实现工作流的关键制品有: 1)实现子系统实现子系统 构件和其他实现子系统的集成。它是将构件和其他实现子系统的集成。它是将 实现模型细分为更小的部分,并使其构造化。实现模型细分为更小的部分,并使其构造化。 2)构件构件 可以是一块程序代码,或是包含信息的文件。可以是一块程序代码,或是包含信息的文件。 构件可以由其他构件聚合而成。构件可以由其他构件聚合而成。 3)集成构造计划集成构造计划 定义构件和子系统的实现顺序,详细定义构件和子系统的实现顺序,

40、详细 描述系统集成时要建立的构造。描述系统集成时要建立的构造。 n实现与设计的关系紧密。在设计元素和实现元素之间有非常实现与设计的关系紧密。在设计元素和实现元素之间有非常 明显的跟踪链接。明显的跟踪链接。 创建良好设计的原则创建良好设计的原则 设计原则设计原则1:分治分治 n软件系统分解为子系统软件系统分解为子系统 v 分布式系统可以分解为客户机和服务器;分布式系统可以分解为客户机和服务器; v 系统可以分解为一系列子系统;系统可以分解为一系列子系统; v子系统可以分解为一个或多个包;子系统可以分解为一个或多个包; v包可以分解为类;包可以分解为类; v类可以分解为方法。类可以分解为方法。 设

41、计原则设计原则2:尽可能增加内聚尽可能增加内聚 n不同内聚类型:优先级从高到低排序不同内聚类型:优先级从高到低排序 7)功能内聚功能内聚:模块只执行单一计算并返回结果,没模块只执行单一计算并返回结果,没 有副作用。如函数过程。有副作用。如函数过程。 6)层内聚层内聚:相关服务放在一起,并有严格的层次结相关服务放在一起,并有严格的层次结 构,高层服务可访问低层服务,反之不可。如分构,高层服务可访问低层服务,反之不可。如分 层结构。层结构。 5)通信内聚通信内聚:访问或操作同一数据的过程放在一个访问或操作同一数据的过程放在一个 类中,这些过程可以互相通信。如某个类设计。类中,这些过程可以互相通信。

42、如某个类设计。 4)顺序内聚顺序内聚:存在一系列过程,其中一个过程向另存在一系列过程,其中一个过程向另 一个过程提供输入,这些过程放在一起,形成顺一个过程提供输入,这些过程放在一起,形成顺 序内聚。如消息序列。序内聚。如消息序列。 3)过程内聚过程内聚:几个一次调用的过程放在一起,但其几个一次调用的过程放在一起,但其 中一个过程的输出不一定是另一个过程的输入,中一个过程的输出不一定是另一个过程的输入, 形成过程内聚。如调用结构。形成过程内聚。如调用结构。 2)时间内聚时间内聚:程序执行过程中同一阶段内完成的操程序执行过程中同一阶段内完成的操 作放在一起,达到时间内聚。作放在一起,达到时间内聚。

43、 1)实用程序内聚实用程序内聚:逻辑上不能纳入其他内聚类型的:逻辑上不能纳入其他内聚类型的 相关实用程序放在一起,形成实用程序内聚。如相关实用程序放在一起,形成实用程序内聚。如 可复用的过程或类。可复用的过程或类。 设计原则设计原则3:尽可能降低耦合尽可能降低耦合 n模块间存在相互依赖关系即为耦合。不同耦合类模块间存在相互依赖关系即为耦合。不同耦合类 型从高向低排列有:型从高向低排列有: 9)内容耦合内容耦合:一个构件在不被察觉的情况下修改另:一个构件在不被察觉的情况下修改另 一个构件内部的数据,应始终避免。一个构件内部的数据,应始终避免。 8)公共耦合公共耦合:一组构件使用了全局数据,就产生

44、公:一组构件使用了全局数据,就产生公 共耦合。应通过封装降低公共耦合。共耦合。应通过封装降低公共耦合。 7)控制耦合控制耦合:一个过程通过标志、开关或命令显式:一个过程通过标志、开关或命令显式 地控制另一个过程的动作,就产生控制耦合。降地控制另一个过程的动作,就产生控制耦合。降 低的方法是采用多态操作。低的方法是采用多态操作。 6)标记耦合标记耦合:在一个操作的参数表中将类作为参数,:在一个操作的参数表中将类作为参数, 就产生标记耦合。降低标记耦合的方法可以传递就产生标记耦合。降低标记耦合的方法可以传递 简单变量或使用接口做参数。简单变量或使用接口做参数。 5)数据耦合数据耦合:在一个操作的参

45、数表中用简单变量或:在一个操作的参数表中用简单变量或 简单的类(如简单的类(如string)作为参数,就产生数据耦作为参数,就产生数据耦 合。应通过减少参数个数降低耦合。合。应通过减少参数个数降低耦合。 4)例程调用耦合例程调用耦合:一个例程(或类操作)调用另一:一个例程(或类操作)调用另一 个例程,就产生例程调用耦合。如果出现例程调个例程,就产生例程调用耦合。如果出现例程调 用序列,降低的方法是编写一个例程将这个调用用序列,降低的方法是编写一个例程将这个调用 序列封装起来。序列封装起来。 3)类型使用耦合类型使用耦合:类将实例变量或本地变量声明为:类将实例变量或本地变量声明为 另一个类时,就

46、产生类型(嵌套)使用耦合。降另一个类时,就产生类型(嵌套)使用耦合。降 低该耦合的方法是将变量的类型声明为包含所需低该耦合的方法是将变量的类型声明为包含所需 操作的最通用的类或接口。操作的最通用的类或接口。 2)包含包含/引入耦合引入耦合:当一个构件引入(:当一个构件引入(import)一一 个包时就产生引入耦合,当一个构件包含个包时就产生引入耦合,当一个构件包含 (include)另一个构件时,就产生包含耦合。另一个构件时,就产生包含耦合。 1)外部耦合外部耦合:模块对外部系统,如操作系统、共享:模块对外部系统,如操作系统、共享 库或硬件有依赖关系时就产生外部耦合。可通过库或硬件有依赖关系时

47、就产生外部耦合。可通过 信息隐蔽减少这种依赖关系。信息隐蔽减少这种依赖关系。 设计原则设计原则4:尽可能提高抽象层次尽可能提高抽象层次 n设计应隐藏或推迟考虑细节以降低复杂性。设计应隐藏或推迟考虑细节以降低复杂性。 q类是包含过程抽象的数据抽象。类是包含过程抽象的数据抽象。 q父类和接口可进一步提高抽象层次。父类和接口可进一步提高抽象层次。 q类中公有操作越少,抽象程度越高。类中公有操作越少,抽象程度越高。 q类中所有变量都是私有,抽象程度达到最高。类中所有变量都是私有,抽象程度达到最高。 n抽象可确保在设计时不必关心不必要的细节,能抽象可确保在设计时不必关心不必要的细节,能 把握问题的本质并

48、做出重要的决策。把握问题的本质并做出重要的决策。 设计原则设计原则5:尽可能提高可复用性尽可能提高可复用性 n可以在算法、类、过程、框架和完整应用程序的可以在算法、类、过程、框架和完整应用程序的 级别上创建可复用性。级别上创建可复用性。 n复用构件的机制包括复用构件的机制包括过程调用过程调用和和继承父类继承父类。 设计原则设计原则6:尽可能复用已有的设计和代码尽可能复用已有的设计和代码 n复用已有的设计是对可复用性设计的补充。通过复用已有的设计是对可复用性设计的补充。通过 复用可从以往对可复用构件的投资中获益。复用可从以往对可复用构件的投资中获益。 设计原则设计原则7:灵活性设计灵活性设计 n

49、积极预测将来可能在实现和功能上的变化,并为积极预测将来可能在实现和功能上的变化,并为 此采取相应措施。此采取相应措施。 n在设计中引入灵活性的方法有:在设计中引入灵活性的方法有: q 降低耦合并提高内聚(易于提高替换能力)降低耦合并提高内聚(易于提高替换能力) q 建立抽象(创建有多态操作的接口和父类)建立抽象(创建有多态操作的接口和父类) q 不要将代码写死(消除代码中的常数)不要将代码写死(消除代码中的常数) q 抛出异常(由操作的调用者处理异常)抛出异常(由操作的调用者处理异常) q 使用并创建可复用的代码使用并创建可复用的代码 设计原则设计原则8:预计过期预计过期 n积极预测将来可能在

50、技术和运行环境上的变化,积极预测将来可能在技术和运行环境上的变化, 并为此采取相应措施。并为此采取相应措施。 n在设计中应遵循的预计过期的规则有:在设计中应遵循的预计过期的规则有: q 避免使用早期发布的技术避免使用早期发布的技术 q 避免使用针对特定环境的软件库避免使用针对特定环境的软件库 q 避免使用软件库中未编档的或很少使用的功能避免使用软件库中未编档的或很少使用的功能 q 避免使用小公司或可能不提供长期支持的公司避免使用小公司或可能不提供长期支持的公司 提供的可复用构件或特殊硬件提供的可复用构件或特殊硬件 q 使用众多厂商支持的标准语言和技术使用众多厂商支持的标准语言和技术 设计原则设

51、计原则9:可移植性设计可移植性设计 n可移植性设计的主要目标是让软件在尽可能多的可移植性设计的主要目标是让软件在尽可能多的 平台上运行。实现可移植性的规则有:平台上运行。实现可移植性的规则有: q 避免使用特定环境的专有功能避免使用特定环境的专有功能 q 使用不依赖特定平台的程序设计语言使用不依赖特定平台的程序设计语言 q 小心使用可能依赖某一平台的类库小心使用可能依赖某一平台的类库 q 了解其他语言可能依赖特殊硬件结构的功能和了解其他语言可能依赖特殊硬件结构的功能和 文本文件的差异文本文件的差异 设计原则设计原则10:可测试性设计可测试性设计 n设计时采取措施使得测试易于进行。设计时采取措施

52、使得测试易于进行。 n可测试性设计的最重要的方法是保证代码的所有功可测试性设计的最重要的方法是保证代码的所有功 能都能脱离图形用户界面执行能都能脱离图形用户界面执行 设计原则设计原则11:防御性设计防御性设计 n为提高可靠性,应确保不引入任何缺陷,能够处理为提高可靠性,应确保不引入任何缺陷,能够处理 其他代码不适当使用构件引起的问题。其他代码不适当使用构件引起的问题。 n按契约设计是防御性设计技术,其核心思想:按契约设计是防御性设计技术,其核心思想: v 被调用操作为正常执行必须满足的被调用操作为正常执行必须满足的前置条件前置条件 (precondition):调用操作在调用一个操作时有调用操

53、作在调用一个操作时有 责任确保该操作的前置条件成立。责任确保该操作的前置条件成立。 v 被调用操作正常执行所得到的结果即为被调用操作正常执行所得到的结果即为后置条后置条 件件 (postcongdition):要求被调用操作在返回要求被调用操作在返回 前有责任保证这些后置条件成立。前有责任保证这些后置条件成立。 v 被调用操作在执行时确保不会被修改的被调用操作在执行时确保不会被修改的不变量不变量 (invariant)。 n前置条件、后置条件和不变式都是布尔表达式,其前置条件、后置条件和不变式都是布尔表达式,其 计算结果为假,表示有错误发生。计算结果为假,表示有错误发生。 n可以使用断言机制。

54、可以使用断言机制。 n在重要构件的边界(如层)应始终保留严格的断言在重要构件的边界(如层)应始终保留严格的断言 检测。检测。 设计模式设计模式 n设计模式是面向对象软件设计经验的总结。设计模式是面向对象软件设计经验的总结。 n设计模式系统地命名、解释和评价了面向对象系设计模式系统地命名、解释和评价了面向对象系 统中的一个重要的和重复出现的设计。统中的一个重要的和重复出现的设计。 n设计模式使人们可以简单方便地复用成功的设计设计模式使人们可以简单方便地复用成功的设计 和体系结构。和体系结构。 n设计模式描述了在特定场景下使用的解决一般设设计模式描述了在特定场景下使用的解决一般设 计问题的类和相互

55、通信的对象。计问题的类和相互通信的对象。 设计模式的四个基本要素设计模式的四个基本要素 模式名模式名 用于描述模式的名字,说明模式的问题、用于描述模式的名字,说明模式的问题、 解决方案和效果。解决方案和效果。 问题问题 说明在何种场合使用模式。要描述使用模说明在何种场合使用模式。要描述使用模 式的先决条件和特定设计问题。式的先决条件和特定设计问题。 解决方案解决方案 描述设计的成分、它们之间的相互关描述设计的成分、它们之间的相互关 系、各自的职责和合作方式。系、各自的职责和合作方式。 效果效果 描述模式使用的效果,包括对时间和空间描述模式使用的效果,包括对时间和空间 的衡量,以及对系统灵活性、

56、可扩充性、可移植的衡量,以及对系统灵活性、可扩充性、可移植 性的影响。性的影响。 设计模式的特性设计模式的特性 n灵活性灵活性 设计模式应是精巧的解决方法。设计模式应是精巧的解决方法。 n一般化一般化 设计模式不依赖于某一种特定的系统类设计模式不依赖于某一种特定的系统类 型、程序设计语言或应用领域。型、程序设计语言或应用领域。 n已验证已验证 设计模式已在某些面向对象系统中实践设计模式已在某些面向对象系统中实践 并已通过测试。并已通过测试。 n简单性简单性 设计模式通常较小,只有几个类。设计模式通常较小,只有几个类。 n可复用可复用 可在设计层次(不是编码层次)应用于可在设计层次(不是编码层次

57、)应用于 所有的系统。所有的系统。 n面向对象面向对象 设计模式以面向对象的形式出现。设计模式以面向对象的形式出现。 设计模式的类型设计模式的类型 n依据设计模式工作目的不同,模式可分为依据设计模式工作目的不同,模式可分为 q 创建型模式创建型模式(Creational pattern) q 结构型模式结构型模式(Structural pattern) q 行为型模式行为型模式(Behavioral pattern) n创建型模式创建型模式与对象的创建有关;与对象的创建有关; n结构型模式结构型模式处理类和对象的组合,将一组对象组处理类和对象的组合,将一组对象组 合成一个大的结构,例如复杂的用

58、户界面;合成一个大的结构,例如复杂的用户界面; n行为型模式行为型模式描述类或对象的交互和职责分配,定描述类或对象的交互和职责分配,定 义对象间的通信和复杂程序中的流控。义对象间的通信和复杂程序中的流控。 1、创建型模式、创建型模式 n创建型模式描述怎样创建一个对象。它隐藏对象创建型模式描述怎样创建一个对象。它隐藏对象 创建的具体细节,使用程序可不依赖具体的对象。创建的具体细节,使用程序可不依赖具体的对象。 因此当增加一个新对象时几乎不需要修改代码。因此当增加一个新对象时几乎不需要修改代码。 n创建型创建型类模式类模式将对象的部分创建工作延迟到子类,将对象的部分创建工作延迟到子类, 创建型创建

59、型对象模式对象模式将它延迟到另一对象中。将它延迟到另一对象中。 n这时,重点从定义固定的行为集合转向定义一个这时,重点从定义固定的行为集合转向定义一个 较小的基本行为集合,由这些行为可以组成许多较小的基本行为集合,由这些行为可以组成许多 更复杂的行为集合。更复杂的行为集合。 n模式的特点模式的特点 q 封装了系统中使用的类的具体信息;封装了系统中使用的类的具体信息; q 隐藏了这些类的实例如何创建、如何放在一隐藏了这些类的实例如何创建、如何放在一 起的(机制)。起的(机制)。 n系统关于这些对象所知道的只有由抽象类定义的系统关于这些对象所知道的只有由抽象类定义的 接口。接口。 n创建型类模式有

60、创建型类模式有Factory Method (工厂方法工厂方法)。 n创建型对象模式包括创建型对象模式包括Abstract Factory (抽象工抽象工 厂厂)、Builder (生成器生成器)、Prototype (原型原型)、 Singleton (单件单件)四种模式。四种模式。 2、结构型模式、结构型模式 n结构型模式处理类或对象的组合,即描述类和对结构型模式处理类或对象的组合,即描述类和对 象之间怎样组织起来形成大的结构,从而实现新象之间怎样组织起来形成大的结构,从而实现新 的功能。的功能。 n结构型结构型类模式类模式采用继承机制来组合类,如采用继承机制来组合类,如Adapter (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论