《软件工程》教学课件CH9-UML概述577.pptx
-
资源ID:90056753
资源大小:1.15MB
全文页数:99页
- 资源格式: PPTX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
《软件工程》教学课件CH9-UML概述577.pptx
软件工程软件工程UML概述概述陈巧丽陈巧丽 UML面向对象分析与设计面向对象分析与设计nUML把把 Booch,Rumbaugh和和 Jacobson等等各各自自独独立立的的OOA和和OOD方方法法中中最最优优秀秀的的特色组合成一个统一的方法。特色组合成一个统一的方法。nUML的特点:的特点:v统一标准统一标准v面向对象面向对象v可视化,表示能力强大可视化,表示能力强大v独立于过程独立于过程v容易掌握使用容易掌握使用UML的定义的定义nUML定义有两个主要组成部分:定义有两个主要组成部分:q 语义:用自然语言描述语义:用自然语言描述q 表示法:定义表示法:定义UML的可视化标准表示符号的可视化标准表示符号n使用使用 UML 时,要从不同的角度观察系统,为此时,要从不同的角度观察系统,为此定义了概念定义了概念“视图视图”。视图是对系统的模型在某。视图是对系统的模型在某方面的投影,注重于系统的某个方面。方面的投影,注重于系统的某个方面。结构视图结构视图结构视图结构视图行为视图行为视图行为视图行为视图实现视图实现视图实现视图实现视图环境视图环境视图环境视图环境视图用例视图用例视图用例视图用例视图为最终用户做什么为最终用户做什么为最终用户做什么为最终用户做什么系统静态结构系统静态结构系统静态结构系统静态结构程序员提供什么程序员提供什么程序员提供什么程序员提供什么软件组织与管理软件组织与管理软件组织与管理软件组织与管理系统集成人员如何组织系统集成人员如何组织系统集成人员如何组织系统集成人员如何组织与控制系统与控制系统与控制系统与控制系统系统工程师如何配置系统工程师如何配置系统工程师如何配置系统工程师如何配置和运行系统和运行系统和运行系统和运行系统系统拓扑、交付、安系统拓扑、交付、安系统拓扑、交付、安系统拓扑、交付、安装、操作、通信装、操作、通信装、操作、通信装、操作、通信分析员或测分析员或测分析员或测分析员或测试员试员试员试员系统任务控制与管理系统任务控制与管理系统任务控制与管理系统任务控制与管理(性能,可伸缩性性能,可伸缩性性能,可伸缩性性能,可伸缩性,吞吐量吞吐量吞吐量吞吐量)行为行为行为行为1)结构视图:描述系统的静态结构,可根据它结构视图:描述系统的静态结构,可根据它确定重要的设计:类、包和子系统。确定重要的设计:类、包和子系统。2)实现视图:描述处于开发环境中的静态软件实现视图:描述处于开发环境中的静态软件成分的组织(源程序、构件、数据文件、可成分的组织(源程序、构件、数据文件、可执行程序等)。执行程序等)。3)行为视图:描述系统在运行时的并发性,包行为视图:描述系统在运行时的并发性,包括任务、线程、进程及其相互作用。括任务、线程、进程及其相互作用。软件体系结构的软件体系结构的 4+1 视图模型视图模型4)环境视图:描述处于运行环境中的各种可执环境视图:描述处于运行环境中的各种可执行程序是如何映射到底层平台或计算结点上行程序是如何映射到底层平台或计算结点上的。的。5)用例视图:包括若干关键场景或用例。在初用例视图:包括若干关键场景或用例。在初用例视图:包括若干关键场景或用例。在初用例视图:包括若干关键场景或用例。在初始和细化阶段用来帮助发现和设计体系结构。始和细化阶段用来帮助发现和设计体系结构。始和细化阶段用来帮助发现和设计体系结构。始和细化阶段用来帮助发现和设计体系结构。在构造阶段用来验证各种不同视图。在文档在构造阶段用来验证各种不同视图。在文档在构造阶段用来验证各种不同视图。在文档在构造阶段用来验证各种不同视图。在文档中用来表明其他视图是如何工作的。中用来表明其他视图是如何工作的。中用来表明其他视图是如何工作的。中用来表明其他视图是如何工作的。UMLUML分析建模着重系统的用例模型和结构分析建模着重系统的用例模型和结构分析建模着重系统的用例模型和结构分析建模着重系统的用例模型和结构模型,设计建模着重行为模型,实现模型和模型,设计建模着重行为模型,实现模型和模型,设计建模着重行为模型,实现模型和模型,设计建模着重行为模型,实现模型和环境模型上。环境模型上。环境模型上。环境模型上。n体系结构中主要的元素包括:体系结构中主要的元素包括:q 主要的类,如为业务实体建模的类。主要的类,如为业务实体建模的类。q 将行为赋予类的机制,如协同。将行为赋予类的机制,如协同。q 模式与框架。模式与框架。q 层次与子系统。层次与子系统。q 接口以及主要的进程控制或线程控制。接口以及主要的进程控制或线程控制。nUML 的三个主要组成元素的三个主要组成元素v 基本构造块基本构造块v 组织构造块的规则组织构造块的规则v 运用于整个运用于整个 UML 的公共机制的公共机制UML的构成的构成nUML包括三种基本构造块:事物、关系和图。包括三种基本构造块:事物、关系和图。UML事物事物结构事物结构事物 类名类名属性属性操作操作open()close()move()display()originsizeWindow1)类类2)接口接口 描述一个类或构件的服务(操作)。描述一个类或构件的服务(操作)。3)协作协作 描述合作完成某个特定任务的一组类描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模。及其关联的集合,用于对使用情形的实现建模。4)用例用例 表示系统想要实现的行为,不关心这表示系统想要实现的行为,不关心这些行为是怎样实现的。些行为是怎样实现的。ISpellingPlace OrderOrderManagement用例用例协作协作实现实现5)主动类主动类 它至少拥有一个进程或线程,故能够它至少拥有一个进程或线程,故能够启动控制活动。启动控制活动。suspend()flush()EventManager6)构件构件 系统中物理系统中物理7)的、可替代的部件。的、可替代的部件。7)节点节点 系统在运行系统在运行 时存在的物理元素。时存在的物理元素。Orderform.java数据库数据库服务器服务器应用应用服务器服务器课程课程管理管理成绩成绩管理管理UML 事物事物行为事物行为事物8)交互交互 由在特定环境中共同完成一定任由在特定环境中共同完成一定任务的一组对象之间交换的消息组成。务的一组对象之间交换的消息组成。p:Person:CompanyAssign(development)消息消息有名对象有名对象匿名对象匿名对象9)状态机状态机 描述了一个对象或一个交互在生存描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列。周期内响应事件所经历的状态序列。initializingcommandidleKeypressFinishedExitUML 事物事物分组事物分组事物10)包包用户接口用户接口包包业务对象业务对象包包数据库包数据库包应用包应用包UML 事物事物注释事物注释事物11)注释注释 依附于一个元素或一组元素之上,对依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。其进行约束或解释的简单符号。CashAccountpresentValue()See policy8-5-96.doc for details about these algorithms.UML 关系关系1)依赖依赖 两个事物之间的语义关系,其中一个事两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。物发生变化会影响另一个事物的语义。CourseScheduleadd(c:Course)remove(c:Course)CourseIterator2)关联关联 一种描述一组对象之间连接的结构关一种描述一组对象之间连接的结构关系。系。v聚合是一种特殊类型的关联,描述了整体和聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。部分间的结构关系。3)泛化泛化 一种一般化一种一般化特殊化的关系。特殊化的关系。employeremployee0.1*EventConsoleWindowDialogBoxControl依赖依赖泛化泛化关联关联 Windowopen()close()move()display()handleEvent()4)实现实现 类之间的语义关系,其中的一个类指定类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。了由另一个类保证执行的契约。两种情况出现实现关系:两种情况出现实现关系:a.在接口和实现它们的类或构件之间;在接口和实现它们的类或构件之间;b.用例和它们的协作之间。用例和它们的协作之间。Place OrderOrderManagement用例用例协作协作实现实现类类属性属性操作操作对象对象属性属性操作操作接口接口用例用例构件构件节点节点状态机状态机包包注释注释依赖依赖关联关联泛化泛化实现实现聚合聚合复合复合 模型中主要的图形元素模型中主要的图形元素UML 模型的图形模型的图形Use CaseDiagramsUse CaseDiagrams用例图用例图用例图用例图ScenarioDiagramsScenarioDiagrams协作图协作图StateDiagramsStateDiagrams构件图构件图ComponentDiagramsComponentDiagrams部署图部署图StateDiagramsStateDiagrams对象图对象图ScenarioDiagramsScenarioDiagrams状态图状态图Use CaseDiagramsUse CaseDiagrams顺序图顺序图StateDiagramsStateDiagrams类图类图类图类图活动图活动图模型模型1.用例图用例图n用例图展现了一组用例、参与者以及它们间的关用例图展现了一组用例、参与者以及它们间的关系。系。n可以用用例图描述系统的静态使用情况,它定义可以用用例图描述系统的静态使用情况,它定义了系统的功能需求,但这是从系统的外部观看系了系统的功能需求,但这是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。统功能,并不描述系统内部对功能的具体实现。n在对系统行为组织和建模方面,用例图的是相当在对系统行为组织和建模方面,用例图的是相当重要的。重要的。查询商品价格查询商品价格顾客顾客库存系统库存系统售货员售货员总账系统总账系统查询商品信息查询商品信息预售商品预售商品网上销售商品网上销售商品打折销售商品打折销售商品出售商品出售商品查询商品成分查询商品成分商品查询商品查询售货管理售货管理说明说明顾客持所欲购买的商品至收银台结帐,店员刷商品条码顾客持所欲购买的商品至收银台结帐,店员刷商品条码后,根据数量及单价计算总金额商品售出后,商品编码、后,根据数量及单价计算总金额商品售出后,商品编码、单价、总金额存入电脑,数据记载到单价、总金额存入电脑,数据记载到“库存系统库存系统”和和“总帐系统总帐系统”中(含预售、网络购物、打折销售)。中(含预售、网络购物、打折销售)。事件流事件流基本事件流基本事件流刷条码刷条码?结算金额结算金额?付款付款?扣库存扣库存?记入日记账记入日记账?打印发票打印发票异常事件流异常事件流 第一异常事件流第一异常事件流顾客结帐后更换商品顾客结帐后更换商品 第二异常事件流第二异常事件流顾客将已售商品退回顾客将已售商品退回特殊需求特殊需求 第一个特殊需求第一个特殊需求允许退货允许退货,并将退回商品加回库存并将退回商品加回库存 第二个特殊需求第二个特殊需求记录顾客的性别,年龄记录顾客的性别,年龄,供后续统计分析用供后续统计分析用用例规格说明:销售商品用例规格说明:销售商品用例规格说明:销售商品用例规格说明:销售商品2.类图类图n类图展示了一组类、接口和协作及它们间的关系。类图展示了一组类、接口和协作及它们间的关系。n类图没有时间概念,是概念数据模型(如类图没有时间概念,是概念数据模型(如E-R 图)图)的一种延伸。的一种延伸。n用类图说明系统的静态结构视图,包含主动类的用类图说明系统的静态结构视图,包含主动类的类图类图专注于系统的静态处理视图。专注于系统的静态处理视图。n系统可有多个类图,单个类图仅表达了系统的一系统可有多个类图,单个类图仅表达了系统的一个方面,要在高层给出类的主要职责,在低层给个方面,要在高层给出类的主要职责,在低层给出类的属性和操作。出类的属性和操作。n类图是从系统构成角度来描述系统。类图是从系统构成角度来描述系统。n类的表示:类的表示:类的名称类的名称类的名称类的名称属性属性属性属性属性属性属性属性:数据类型数据类型数据类型数据类型属性属性属性属性:数据类型数据类型数据类型数据类型=初值初值初值初值操作操作操作操作操作操作操作操作(参数表参数表参数表参数表):):):):结果类型结果类型结果类型结果类型限定关联限定关联类类1 1类类2限定词限定词关联名称关联名称角色角色1角色角色2聚合、引用和重复度聚合、引用和重复度0.*0.10.*整体整体 类名类名部分部分 类名类名2部分部分 类名类名1 10.1聚合聚合简单引用简单引用复合聚合复合聚合双方捆绑双方捆绑关联名关联名类类 1类类 2关联类名关联类名属性属性操作操作角色角色 1角色角色 2关联类关联类泛化关系泛化关系超类超类子类子类1子类子类2操作操作抽象类抽象类操作操作雇员雇员雇员标识雇员标识:char姓名姓名:char职务职务:char工资工资:long项目项目项目标识项目标识项目名称项目名称参与参与开始日期开始日期结束日期结束日期任务任务任务标识任务标识任务名称任务名称任务费用任务费用技能技能技能标识技能标识技能名称技能名称团队团队团队标识团队标识承担工作承担工作部门部门部门标识部门标识部门名称部门名称客户客户客户标识客户标识客户名称客户名称客户地址客户地址客户电话客户电话客户代表客户代表0.*0.*10.*1.*10.*1.*1.*110.*11.*0.*1.*3.对象图对象图n对象图展示了一组对象及它们间的关系。对象图展示了一组对象及它们间的关系。n用对象图说明类图中类的对象实例的数据用对象图说明类图中类的对象实例的数据结构和静态快照,即在某一时刻,一组对结构和静态快照,即在某一时刻,一组对象的状态及其关系。象的状态及其关系。n对象图表达了系统的静态设计视图或静态对象图表达了系统的静态设计视图或静态过程视图,除了现实和原型的方面因素外,过程视图,除了现实和原型的方面因素外,它与类图作用是相同的。它与类图作用是相同的。c:公司公司名称名称=“=“研发研发”d2:部门部门d1:部门部门名称名称=“=“销售销售”d3:部门部门名称名称=“=“打印机销售打印机销售”:联系信息联系信息地址地址=“清华产业楼清华产业楼411”p:人员人员姓名姓名=“=“郑人杰郑人杰”雇员标识雇员标识=6037职务职务=“=“销售副总销售副总”经理经理连接连接 link属性值属性值对象对象匿名对象匿名对象4.包图包图 n包图表明包及其之间的依赖类图。包图表明包及其之间的依赖类图。n包是对模型中涉及的元素分组所得的结果,包是对模型中涉及的元素分组所得的结果,是具有特定语义的一个子集,必须保证低是具有特定语义的一个子集,必须保证低耦合、高内聚。耦合、高内聚。n广义地讲,包可以包含类、接口、构件、广义地讲,包可以包含类、接口、构件、节点、协作、用例等,还可以内嵌其他子节点、协作、用例等,还可以内嵌其他子包。包。n包之间的访问权限通过输出(输出品)和包之间的访问权限通过输出(输出品)和导入(进口货)设置,虚箭头导入(进口货)设置,虚箭头 从源包到目标包。从源包到目标包。5.构件图构件图n构件图展现了一组构件之间的组织和依赖,用于构件图展现了一组构件之间的组织和依赖,用于对源代码、可执行的发布、物理数据库等的系统对源代码、可执行的发布、物理数据库等的系统建模。建模。n构件图表示系统的静态实现视图。构件图表示系统的静态实现视图。CourseCourseOfferingStudentProfessorCourse.dllPeople.dll课程课程用户用户Register.exeBilling.exe课表系统课表系统6.部署图部署图n部署图展现了对运行时处理节点以及其中构件的部署图展现了对运行时处理节点以及其中构件的配置每一节点代表一个计算单元。配置每一节点代表一个计算单元。n它描述系统硬件的物理拓扑结构它描述系统硬件的物理拓扑结构(包括网络布包括网络布局和构件在网络上的位置局和构件在网络上的位置),以及在此结构上执,以及在此结构上执行的软件(即运行时软构件在节点中的分布情况)行的软件(即运行时软构件在节点中的分布情况)。n用部署图说明系统结构的静态环境视图,即说明用部署图说明系统结构的静态环境视图,即说明分布、交付和安装的物理系统。分布、交付和安装的物理系统。注册注册服务器服务器数据库数据库宿舍宿舍客户机客户机图书馆图书馆客户机客户机主排课主排课客户机客户机8.活动图活动图n活动图是一种特殊的状态图,描述要做的活动图是一种特殊的状态图,描述要做的活动、执行这些活动的顺序以及工作流。活动、执行这些活动的顺序以及工作流。它对于系统的功能建模特别重要,强调对它对于系统的功能建模特别重要,强调对象间的控制流程。象间的控制流程。n高层活动图用于表示任务。即用于分析用高层活动图用于表示任务。即用于分析用例,理解涉及多个用例的工作流、多线程例,理解涉及多个用例的工作流、多线程及并行,显示相互联系的行为整体,还可及并行,显示相互联系的行为整体,还可用于业务过程建模,对系统的功能建模。用于业务过程建模,对系统的功能建模。低层活动图用于表示类的方法。低层活动图用于表示类的方法。按订单供货按订单供货接订单接订单开发票开发票结清订单结清订单快速交付快速交付正常交付正常交付收款收款起点起点分叉分叉活动活动分支分支合并合并汇合汇合结束结束 紧急订单紧急订单 非紧急订单非紧急订单变迁变迁9.状态图状态图n状态图展示了一个特定对象的所有可能状状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态态以及由于各种事件的发生而引起的状态间的转移。间的转移。n一个状态图描述了一个状态机,用状态图一个状态图描述了一个状态机,用状态图说明系统的动态视图。说明系统的动态视图。n状态图对于接口、类或协作的行为建模尤状态图对于接口、类或协作的行为建模尤为重要,可用它描述用例实例的生存周期。为重要,可用它描述用例实例的生存周期。Project对象的状态图对象的状态图注册注册预售预售开发开发系统系统分析分析系统系统设计设计程序程序编码编码软件软件测试测试系统系统部署部署单元测试与调试单元测试与调试维护维护新新projectproject完完开始开始结束结束10.交互图交互图n交互图展现了按一定的目的进行一种交互,它由交互图展现了按一定的目的进行一种交互,它由在一个上下文中的一组对象及它们之间交互的信在一个上下文中的一组对象及它们之间交互的信息组成。息组成。n交互图可用于描述一个用例的行为。顺序图和协交互图可用于描述一个用例的行为。顺序图和协作图都是交互图,它们可以相互转换。作图都是交互图,它们可以相互转换。n如果希望查看单个对象跨用例的行为如果希望查看单个对象跨用例的行为,要使用状要使用状态图。态图。n如果希望查看跨用例跨线程的行为,要使用活动如果希望查看跨用例跨线程的行为,要使用活动图。图。10-1 顺序图顺序图n顺序图展现了一组对象和由这组对象收发顺序图展现了一组对象和由这组对象收发的消息,用于按时间顺序对控制流建模。的消息,用于按时间顺序对控制流建模。n对象表述为虚垂线顶端的矩形小框。对象表述为虚垂线顶端的矩形小框。n垂线是对象的生命线,说明对象的生命。垂线是对象的生命线,说明对象的生命。n生命线之间的箭头表示消息。消息出现的生命线之间的箭头表示消息。消息出现的次序自上而下。次序自上而下。n消息箭头可以回到同一条生命线,指明自消息箭头可以回到同一条生命线,指明自调用,即对象发给自己的消息。调用,即对象发给自己的消息。移动电话系统的用例图移动电话系统的用例图移动用户移动用户移动网络移动网络与对方通话与对方通话下载图符下载图符下载铃声下载铃声管理电话本管理电话本移动电话系统的顺序图移动电话系统的顺序图:移动用户移动用户:移动按键移动按键:移动显示移动显示:移动手机移动手机:移动基站移动基站按数字键按数字键显示按键号码显示按键号码按发送键按发送键连接基站连接基站建立连接建立连接连接成功连接成功显示连接成功显示连接成功10-2 协作图协作图n协作图展现了一组对象,这组对象之间的连接以协作图展现了一组对象,这组对象之间的连接以及这组对象收发的消息。及这组对象收发的消息。n它强调收发消息的对象结构组织,按组织结构对它强调收发消息的对象结构组织,按组织结构对控制流建模。控制流建模。n协作图中的协作不是参与者与系统之间的交互,协作图中的协作不是参与者与系统之间的交互,而是系统内部某一个用例中各个对象之间信息传而是系统内部某一个用例中各个对象之间信息传递的方式。递的方式。n消息上所附编号指明执行顺序。消息上所附编号指明执行顺序。移动电话系统的协作图移动电话系统的协作图:移动用户移动用户1:按数字键按数字键3:按发送键按发送键:移动按键移动按键2:显示按键号码显示按键号码:移动显示移动显示:移动手机移动手机:移动基站移动基站4:连接基站连接基站5:建立连接建立连接6:连接成功连接成功7:显示连接成功显示连接成功*RUP(Rational Unified Process统一开发过程统一开发过程)的分析)的分析/设计工作流设计工作流n分析和设计工作流的目的是研究欲采用的实现环境和系统构件分析和设计工作流的目的是研究欲采用的实现环境和系统构件的效用,的效用,定义软件的组织结构,把需求获取结果转化为实现规定义软件的组织结构,把需求获取结果转化为实现规格。格。n为实现这种转化,必须理解需求,采用最佳实现策略将其翻译为实现这种转化,必须理解需求,采用最佳实现策略将其翻译为系统设计。为系统设计。n为此,首先是建立健壮的软件体系结构,设计出易于理解、开为此,首先是建立健壮的软件体系结构,设计出易于理解、开发和演进的系统,然后调整这个设计,使之适应实现环境。发和演进的系统,然后调整这个设计,使之适应实现环境。n最后结果是产生一个对象模型,即设计模型。最后结果是产生一个对象模型,即设计模型。定义初始体系结构定义初始体系结构早期细化迭代早期细化迭代分析行为分析行为设计设计实时构件实时构件设计设计数据库数据库设计构件设计构件细化体系结构细化体系结构细化迭代细化迭代可选可选实时实时非实时非实时1)定义一个初始的体系结构定义一个初始的体系结构v建立一个初始的系统体系结构草图。定义建立一个初始的系统体系结构草图。定义一组初始的重要体系结构元素。一组初始的重要体系结构元素。一组初始分析机制。一组初始分析机制。系统的初始分层和组织。系统的初始分层和组织。在当前迭代过程中处理的用例实现。在当前迭代过程中处理的用例实现。v从重要的构件用例中确定类。从重要的构件用例中确定类。v确定类之间的交互作用,修改用例实现。确定类之间的交互作用,修改用例实现。2)细化体系结构细化体系结构v建立从分析到设计的自然转移,并标识:建立从分析到设计的自然转移,并标识:从分析元素中确定适当的设计元素。从分析元素中确定适当的设计元素。从相关分析机制中确定适当的设计机制。从相关分析机制中确定适当的设计机制。v保持体系结构的一致性和完整性,确保:保持体系结构的一致性和完整性,确保:将当前迭代中标识的新的设计元素与已有的将当前迭代中标识的新的设计元素与已有的设计元素集成在一起。设计元素集成在一起。在设计中尽早地、最大限度地复用可获得的在设计中尽早地、最大限度地复用可获得的构件和设计元素。构件和设计元素。v描述系统运行的组织和实施体系结构。描述系统运行的组织和实施体系结构。v组织实现模型以实现设计到实现无缝转移。组织实现模型以实现设计到实现无缝转移。3)分析行为分析行为v将用例提供的行为描述转变为一系列可作为设将用例提供的行为描述转变为一系列可作为设计基础的元素。计基础的元素。v在分析行为时,主要注重于如何能够提供要求在分析行为时,主要注重于如何能够提供要求的功能,较少关心系统的非功能需求。的功能,较少关心系统的非功能需求。4)设计构件设计构件v找出设计元素如何实现要求行为的细节,细化找出设计元素如何实现要求行为的细节,细化设计元素的定义。设计元素的定义。v根据新的设计元素来细化和更新用例实现。根据新的设计元素来细化和更新用例实现。v当设计演进后,进行设计评审。当设计演进后,进行设计评审。5)设计实时构件设计实时构件v在实时的或交互式的上下文中,使用封装制品在实时的或交互式的上下文中,使用封装制品作为主要的设计元素。作为主要的设计元素。v设计实时构件与设计构件有相似的活动,但增设计实时构件与设计构件有相似的活动,但增加了封装设计活动,定义系统的并发控制线加了封装设计活动,定义系统的并发控制线程和它们之间的协议。程和它们之间的协议。6)设计数据库设计数据库v在设计中标识永久类并设计适当的数据库结构在设计中标识永久类并设计适当的数据库结构来存储永久类。来存储永久类。v定义一种存储和检索永久数据的机制和策略,定义一种存储和检索永久数据的机制和策略,以满足系统的性能需求。以满足系统的性能需求。n分析和设计工作流中的关键制品:分析和设计工作流中的关键制品:1)设计模型设计模型 由类的协作构成。这些类的协作由类的协作构成。这些类的协作可能集成为包或子系统。包是对类的逻辑分可能集成为包或子系统。包是对类的逻辑分组,是为了减少系统的复杂性。组,是为了减少系统的复杂性。2)分析模型分析模型 是设计的抽象和泛化,它提供系是设计的抽象和泛化,它提供系统的功能描述,忽略了系统如何工作的细节。统的功能描述,忽略了系统如何工作的细节。3)软件体系结构文档软件体系结构文档 涵盖系统不同的体系结涵盖系统不同的体系结构视图。构视图。实现工作流实现工作流n实现工作流的目的是实现工作流的目的是q 建立代码的分层结构;建立代码的分层结构;q 从构件(源文件、二进制文件、可执行文件或从构件(源文件、二进制文件、可执行文件或其他文件)角度来实现类和对象;其他文件)角度来实现类和对象;q 对开发出来的构件进行单元测试;对开发出来的构件进行单元测试;q 将个人和开发团队开发的结果集成到可执行系将个人和开发团队开发的结果集成到可执行系统中。统中。n单元测试仅对单个构件进行。集成测试和系统测单元测试仅对单个构件进行。集成测试和系统测试在测试工作流中执行。试在测试工作流中执行。构造实现模型构造实现模型集成每个子系统集成每个子系统集成系统集成系统制定集成计划制定集成计划实现构件实现构件可用于单元测试的构件可用于单元测试的构件可用于集成的可用于集成的实现子系统实现子系统 针对这个针对这个 迭代过程迭代过程 的更多的的更多的 系统构造系统构造 针对这针对这 个迭代个迭代 过程的过程的 更多的更多的 子系统子系统构造构造 针对这个针对这个 迭代过程迭代过程 的更多的的更多的 要实现的要实现的构件构件 n实现模型是在细化阶段通过不断迭代,不断使用实现模型是在细化阶段通过不断迭代,不断使用更大规模的集成构造建立起来的。更大规模的集成构造建立起来的。n对于每一次迭代,要求做到:对于每一次迭代,要求做到:1)确定要实现哪一个子系统,以及在当前迭代中子确定要实现哪一个子系统,以及在当前迭代中子系统的集成顺序。系统的集成顺序。2)对于每一个子系统,确定实现每个类的顺序,以对于每一个子系统,确定实现每个类的顺序,以及子系统集成的计划。及子系统集成的计划。3)实现设计模型中的类和对象,包括编写源代码、实现设计模型中的类和对象,包括编写源代码、改写已有构件、编译、链接和执行,及时反馈设改写已有构件、编译、链接和执行,及时反馈设计中可能的缺陷。计中可能的缺陷。4)修改有缺陷的源代码,进行单元测试以验证这些修改有缺陷的源代码,进行单元测试以验证这些变更。最后进行代码评审。变更。最后进行代码评审。5)指定专人负责将所有新的和已变更的构件集成为指定专人负责将所有新的和已变更的构件集成为一个新的实现子系统版本。在团队环境,集成将一个新的实现子系统版本。在团队环境,集成将产生一系列构造,对每个构造由集成测试员进行产生一系列构造,对每个构造由集成测试员进行集成测试。集成测试。6)将发布的子系统集成到系统。最终的构造即为系将发布的子系统集成到系统。最终的构造即为系统。由系统测试员进行系统测试。统。由系统测试员进行系统测试。n实现工作流的关键制品有:实现工作流的关键制品有:1)实现子系统实现子系统 构件和其他实现子系统的集成。它是构件和其他实现子系统的集成。它是将实现模型细分为更小的部分,并使其构造化。将实现模型细分为更小的部分,并使其构造化。2)构件构件 可以是一块程序代码,或是包含信息的文件。可以是一块程序代码,或是包含信息的文件。构件可以由其他构件聚合而成。构件可以由其他构件聚合而成。3)集成构造计划集成构造计划 定义构件和子系统的实现顺序,详定义构件和子系统的实现顺序,详细描述系统集成时要建立的构造。细描述系统集成时要建立的构造。n实现与设计的关系紧密。在设计元素和实现元素之间有非常实现与设计的关系紧密。在设计元素和实现元素之间有非常明显的跟踪链接。明显的跟踪链接。创建良好设计的原则创建良好设计的原则设计原则设计原则1:分治分治n软件系统分解为子系统软件系统分解为子系统v 分布式系统可以分解为客户机和服务器;分布式系统可以分解为客户机和服务器;v 系统可以分解为一系列子系统;系统可以分解为一系列子系统;v子系统可以分解为一个或多个包;子系统可以分解为一个或多个包;v包可以分解为类;包可以分解为类;v类可以分解为方法。类可以分解为方法。设计原则设计原则2:尽可能增加内聚尽可能增加内聚n不同内聚类型:优先级从高到低排序不同内聚类型:优先级从高到低排序7)功能内聚功能内聚:模块只执行单一计算并返回结果,没:模块只执行单一计算并返回结果,没有副作用。如函数过程。有副作用。如函数过程。6)层内聚层内聚:相关服务放在一起,并有严格的层次结:相关服务放在一起,并有严格的层次结构,高层服务可访问低层服务,反之不可。如分构,高层服务可访问低层服务,反之不可。如分层结构。层结构。5)通信内聚通信内聚:访问或操作同一数据的过程放在一个:访问或操作同一数据的过程放在一个类中,这些过程可以互相通信。如某个类设计。类中,这些过程可以互相通信。如某个类设计。4)顺序内聚顺序内聚:存在一系列过程,其中一个过程向另:存在一系列过程,其中一个过程向另一个过程提供输入,这些过程放在一起,形成顺一个过程提供输入,这些过程放在一起,形成顺序内聚。如消息序列。序内聚。如消息序列。3)过程内聚过程内聚:几个一次调用的过程放在一起,但其:几个一次调用的过程放在一起,但其中一个过程的输出不一定是另一个过程的输入,中一个过程的输出不一定是另一个过程的输入,形成过程内聚。如调用结构。形成过程内聚。如调用结构。2)时间内聚时间内聚:程序执行过程中同一阶段内完成的操:程序执行过程中同一阶段内完成的操作放在一起,达到时间内聚。作放在一起,达到时间内聚。1)实用程序内聚实用程序内聚:逻辑上不能纳入其他内聚类型的:逻辑上不能纳入其他内聚类型的相关实用程序放在一起,形成实用程序内聚。如相关实用程序放在一起,形成实用程序内聚。如可复用的过程或类。可复用的过程或类。设计原则设计原则3:尽可能降低耦合尽可能降低耦合n模块间存在相互依赖关系即为耦合。不同耦合类模块间存在相互依赖关系即为耦合。不同耦合类型从高向低排列有:型从高向低排列有:9)内容耦合内容耦合:一个构件在不被察觉的情况下修改另:一个构件在不被察觉的情况下修改另一个构件内部的数据,应始终避免。一个构件内部的数据,应始终避免。8)公共耦合公共耦合:一组构件使用了全局数据,就产生公:一组构件使用了全局数据,就产生公共耦合。应通过封装降低公共耦合。共耦合。应通过封装降低公共耦合。7)控制耦合控制耦合:一个过程通过标志、开关或命令显式:一个过程通过标志、开关或命令显式地控制另一个过程的动作,就产生控制耦合。降地控制另一个过程的动作,就产生控制耦合。降低的方法是采用多态操作。低的方法是采用多态操作。6)标记耦合标记耦合:在一个操作的参数表中将类作为参数,:在一个操作的参数表中将类作为参数,就产生标记耦合。降低标记耦合的方法可以传递就产生标记耦合。降低标记耦合的方法可以传递简单变量或使用接口做参数。简单变量或使用接口做参数。5)数据耦合数据耦合:在一个操作的参数表中用简单变量或:在一个操作的参数表中用简单变量或简单的类(如简单的类(如string)作为参数,就产生数据耦)作为参数,就产生数据耦合。应通过减少参数个数降低耦合。合。应通过减少参数个数降低耦合。4)例程调用耦合例程调用耦合:一个例程(或类操作)调用另一:一个例程(或类操作)调用另一个例程,就产生例程调用耦合。如果出现例程调个例程,就产生例程调用耦合。如果出现例程调用序列,降低的方法是编写一个例程将这个调用用序列,降低的方法是编写一个例程将这个调用序列封装起来。序列封装起来。3)类型使用耦合类型使用耦合:类将实例变量或本地变量声明为:类将实例变量或本地变量声明为另一个类时,就产生类型(嵌套)使用耦合。降另一个类时,就产生类型(嵌套)使用耦合。降低该耦合的方法是将变量的类型声明为包含所需低该耦合的方法是将变量的类型声明为包含所需操作的最通用的类或接口。操作的最通用的类或接口。2)包含包含/引入耦合引入耦合:当一个构件引入(:当一个构件引入(import)一)一个包时就产生引入耦合,当一个构件包含个包时就产生引入耦合,当一个构件包含(include)另一个构件时,就产生包含耦合。)另一个构件时,就产生包含耦合。1)外部耦合外部耦合:模块对外部系统,如操作系统、共享:模块对外部系统,如操作系统、共享库或硬件有依赖关系时就产生外部耦合。可通过库或硬件有依赖关系时就产生外部耦合。可通过信息隐蔽减少这种依赖关系。信息隐蔽减少这种依赖关系。设计原则设计原则4:尽可能提高抽象层次尽可能提高抽象层次n设计应隐藏或推迟考虑细节以降低复杂性。设计应隐藏或推迟考虑细节以降低复杂性。q类是包含过程抽象的数据抽象。类是包含过程抽象的数据抽象。q父类和接口可进一步提高抽象层次。父类和接口可进一步提高抽象层次。q类中公有操作越少,抽象程度越高。类中公有操作越少,抽象程度越高。q类中所有变量都是私有,抽象程度达到最高。类中所有变量都是私有,抽象程度达到最高。n抽象可确保在设计时不必关心不必要的细节,能抽象可确保在设计时不必关心不必要的细节,能把握问题的本质并做出重要的决策。把握问题的本质并做出重要的决策。设计原则设计原则5:尽可能提高可复用性尽可能提高可复用性n可以在算法、类、过程、框架和完整应用程序的可以在算法、类、过程、框架和完整应用程序的级别上创建可复用性。级别上创建可复用性。n复用构件的机制包括复用构件的机制包括过程调用过程调用和和继承父类继承父类。设计原则设计原则6:尽可能复用已有的设计和代码尽可能复用已有的设计和代码n复用已有的设计是对可复用性设计的补充。通过复用已有的设计是对可复用性设计的补充。通过复用可从以往对可复用构件的投资中获益。复用可从以往对可复用构件的投资中获益。设计原则设计原则7:灵活性设计灵活性设计n积极预测将来可能在实现和功能上的变化,并为积极预测将来可能在实现和功能上的变化,并为此采取相应措施。此采取相应措施。n在设计中引入灵活性的方法有:在设计中引入灵活性的方法有:q 降低耦合并提高内聚(易于提高替换能力)降低耦合并提高内聚(易于提高替换能力)q 建立抽象(创建有多态操作的接口和父类)建立抽象(创建有多态操作的接口和父类)q 不要将代码写死(消除代码中的常数)不要将代码写死(消除代码中的常数)q 抛出异常(由操作的调用者处理异常)抛出异常(由操作的调用者处理异常)q 使用并创建可复用的代码使用并创建可复用的代码设计原则设计原则8:预计过期