UML建模讲课讲稿_第1页
UML建模讲课讲稿_第2页
UML建模讲课讲稿_第3页
UML建模讲课讲稿_第4页
UML建模讲课讲稿_第5页
已阅读5页,还剩264页未读 继续免费阅读

下载本文档

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

文档简介

1、UML建模UML建模建模n一种系统开发方法应由建模语言和开发过一种系统开发方法应由建模语言和开发过程组成。程组成。 n建模语言是设计的表示符号建模语言是设计的表示符号,而过程则是描而过程则是描述如何进行开发所需的步骤。述如何进行开发所需的步骤。nUML的开发过程包括需求获取、系统分析、的开发过程包括需求获取、系统分析、系统设计、实现和测试系统设计、实现和测试5个步骤。个步骤。确定系统边界n在确定参与者和用例的过程中也就确定的在确定参与者和用例的过程中也就确定的了系统的边界,了系统的边界,n用例是系统之中的,用例是系统之中的,n参与者是系统外部的。参与者是系统外部的。(1)识别参与者一般地,可以

2、通过以下问题去寻找用例图中的参与者:一般地,可以通过以下问题去寻找用例图中的参与者:n谁是系统的主要使用者?谁是系统的主要使用者?n谁从系统获取信息?谁从系统获取信息?n谁向系统输入信息?谁向系统输入信息?n谁从系统中删除信息?谁从系统中删除信息?n谁需要系统支持他们的日常工作?谁需要系统支持他们的日常工作?n谁来维护、管理系统使其能正常工作?谁来维护、管理系统使其能正常工作?n系统需要控制哪些硬件?系统需要控制哪些硬件?n系统需要与其他哪些系统交互?系统需要与其他哪些系统交互?n对系统产生的结果感兴趣的是哪些人或哪些事物?对系统产生的结果感兴趣的是哪些人或哪些事物?(1)识别参与者n除把直接

3、使用系统的人员确认为参与者外。除把直接使用系统的人员确认为参与者外。n凡是与系统进行信息交换(包括数据信息凡是与系统进行信息交换(包括数据信息和控制信息交换)的外部事物均可被确认和控制信息交换)的外部事物均可被确认为参与者。为参与者。n外部事物指的是:人员、设备、外部系统、外部事物指的是:人员、设备、外部系统、事件。事件。识别用例基于参与者识别用例基于参与者识别用例nl l)识别出与系统有关的参与者。)识别出与系统有关的参与者。n2 2)对每个参与者,识别出他们发起或参加)对每个参与者,识别出他们发起或参加的过程。的过程。n3 3)对每个参与者,识别出向他们传递信息)对每个参与者,识别出向他们

4、传递信息的过程。的过程。n可列一个表可列一个表为编制用例准备一个表参与者参与者向向参与者参与者传递信息传递信息的的服务或服务或事件事件用例名用例名简短的描简短的描述述业务目标业务目标参与者职责用例n参与者名:参与者名:customer(客户)(客户)n参与者职责:参与者职责:定货、退还定货、查询定单。定货、退还定货、查询定单。n参与者检查问题:参与者检查问题:使用系统主要功能;使用系统主要功能;对系统运行结果感兴趣。对系统运行结果感兴趣。 参与者职责用例从发货者(从发货者(Shipper)识别)识别n发货者要求系统提供什么功能?仓库存储物品的管理;仓库存储物品的管理;发货处理。发货处理。n发货

5、者需要做什么?从所有的定单中按顺序挑选出优先级较高的定单来发货;从所有的定单中按顺序挑选出优先级较高的定单来发货;在发货单上签上发货的品名、数量。在发货单上签上发货的品名、数量。n 发货者需要阅读、创建、销毁、更新或存储系统的某些信息吗?是,发货者需要阅读、更新仓库存储物品信息和顾客信息。是,发货者需要阅读、更新仓库存储物品信息和顾客信息。n 系统中的事件一定要告知发货者吗?仓库有关物品短缺(发货者报告)仓库有关物品短缺(发货者报告)识别用例n通常,在确定用例前应考虑以下问题:通常,在确定用例前应考虑以下问题:n参与者需要使用系统吗?参与者需要使用系统吗?n对于各个参与者,哪些任务会涉及到系统

6、?对于各个参与者,哪些任务会涉及到系统?n系统与参与者之间有哪些交互?系统与参与者之间有哪些交互?n系统需要何种输入输出?输入从何处来?输系统需要何种输入输出?输入从何处来?输出到何处去?出到何处去?识别用例n用例将支持和维护的系统功能是什么?用例将支持和维护的系统功能是什么?n必须提醒参与者的系统事件有哪些?必须提醒参与者的系统事件有哪些?n参与者必须提醒系统事件有哪些?怎样把参与者必须提醒系统事件有哪些?怎样把这些事件表示成用例中的功能?这些事件表示成用例中的功能?用例的粒度n不要把用例划分的过大,也不要把用例划不要把用例划分的过大,也不要把用例划分得过于琐碎细小。分得过于琐碎细小。n通常

7、通常,用例的行为都是用事件流描述,并且用例的行为都是用事件流描述,并且会产生显著的目标。这是用例粒度的底线。会产生显著的目标。这是用例粒度的底线。n即每个用例都应当是一个完成有意义的业即每个用例都应当是一个完成有意义的业务目标的事件流集合。务目标的事件流集合。 用例过细输入用户名输入密码用户提交提示出错系统正确登录一般认为合适的把握购买CD顾客登陆确定关系n确定确定用例的最后一个步骤就是描述关系。用例的最后一个步骤就是描述关系。n关系包括:关系包括:参与者与用例之间的关系参与者与用例之间的关系用例之间的关系用例之间的关系参与者之间的关系。参与者之间的关系。n关系类型包括:关系类型包括:关联关系

8、、包含关系、扩展关系和泛化关系。关联关系、包含关系、扩展关系和泛化关系。库存管理用例图登陆入库处理出库处理库存查询库存统计销售出库调拨出库库管员盘点处理采购入库退货入库登陆入库处理出库处理库存查询库存统计销售出库调拨出库库管员盘点处理采购入库退货入库登陆入库处理出库处理库存查询库存统计销售出库调拨出库库管员盘点处理采购入库退货入库登陆入库处理出库处理库存查询库存统计销售出库调拨出库库管员盘点处理采购入库退货入库登陆出库处理库存查询库存统计销售出库调拨出库库管员盘点处理退货入库盘亏处理盘盈处理调拨入库采购入库入库处理发现包含关系n系统分析员应该检查模型中的每个用例,系统分析员应该检查模型中的每个

9、用例,提炼出公共的部分,创建单独的用例,并提炼出公共的部分,创建单独的用例,并用用包含包含关系与基本用例连接。关系与基本用例连接。n这样会降低原来的用例复杂性,增加用例这样会降低原来的用例复杂性,增加用例的复用性。的复用性。发现扩展关系n系统分析员检查每个用例,如果发现一个系统分析员检查每个用例,如果发现一个用例比较大,并且其中既包含了一般处理用例比较大,并且其中既包含了一般处理又包含了特殊处理,那么就应该将特殊处又包含了特殊处理,那么就应该将特殊处理的部分提取出来,创建单独的用例,并理的部分提取出来,创建单独的用例,并且用扩展关系连接这个用例与相关的用例。且用扩展关系连接这个用例与相关的用例

10、。n这样会降低原来的用例复杂性,处理更简这样会降低原来的用例复杂性,处理更简单。单。参与者泛化关系n有时参与者之间存在有时参与者之间存在一些共性,为了便于一些共性,为了便于描述参与者之间的区描述参与者之间的区别,使用参与者泛化别,使用参与者泛化关系来描述参与者之关系来描述参与者之间的关系。间的关系。用来判断应使用哪种关系的规则:n当处理一般与特殊的关系时,采用泛化关当处理一般与特殊的关系时,采用泛化关系。系。n当避免两个或多个例出现重复描述时,采当避免两个或多个例出现重复描述时,采用包含关系用包含关系n当描述用例的当描述用例的某种异常某种异常动作。动作。采用采用扩展扩展关关系系用例的优化n用例

11、是否有重复的功能出现(合并)用例是否有重复的功能出现(合并)n是否有功能上的包含(合并)是否有功能上的包含(合并)n优化原则:优化原则:n独立独立n集中集中用例的优化合并合并n同类或相似的用例合并同类或相似的用例合并例:电子邮件撰写、邮件查看、合同录入、合同修改、例:电子邮件撰写、邮件查看、合同录入、合同修改、合同删除、合同查看合同删除、合同查看n功能性合并功能性合并文档录入(电子邮件撰写、合同录入)文档录入(电子邮件撰写、合同录入)文档查看(邮件查看、合同查看)文档查看(邮件查看、合同查看)n业务性合并业务性合并邮件管理、合同管理邮件管理、合同管理用例的优化拆分拆分对较大的或复杂的用例对较大

12、的或复杂的用例用例描述,描述到了第四级,仍无法描述清楚,用例描述,描述到了第四级,仍无法描述清楚,需用例拆分需用例拆分主流主流子流子流分支流分支流子分支流子分支流用例的优化n拆分例子拆分例子n管理用户包括处理:添加用户、修改用户管理用户包括处理:添加用户、修改用户信息、删除用户、查找用户、修改用户口信息、删除用户、查找用户、修改用户口令、变更用户级别令、变更用户级别n拆分为:维护用户信息、管理用户权限两拆分为:维护用户信息、管理用户权限两个用例(按业务相关性)个用例(按业务相关性)3.定义用例的优先级n定义用例的优先级是为了区分需求的优先定义用例的优先级是为了区分需求的优先级。级。n区分用例的

13、优先级是为了确定哪些用例要区分用例的优先级是为了确定哪些用例要先行开发,哪些用例要放在随后的迭代工先行开发,哪些用例要放在随后的迭代工作中开发。作中开发。n区分的依据是前面活动生成的概要用例模区分的依据是前面活动生成的概要用例模型、补充需求说明和术语表。型、补充需求说明和术语表。4.用例描述n详细具体的描述一个用例还要使用用例描详细具体的描述一个用例还要使用用例描述。述。n用例描述是采用自然语言描述一个用例的用例描述是采用自然语言描述一个用例的功能。功能。n通过用例的事件流完全可以描述系统的功通过用例的事件流完全可以描述系统的功能性需求。能性需求。结构化的用例描述文本n描述一个用例,应说明以下

14、细节:描述一个用例,应说明以下细节:n用例名用例名n前置条件(前置条件(PrePreConditionsConditions)n后置条件(后置条件(Post-ConditionsPost-Conditions)n扩充点(扩充点(Extension PointsExtension Points)n事件流事件流n基流(基流(Basic FlowBasic Flow)n分支流(分支流(SubflSubflowsows)(可选)(可选)n替代流(替代流(Alternative FlowsAlternative Flows)5.确定用户界面n确定参与者如何启动用例,以及用例以什确定参与者如何启动用例,以

15、及用例以什么形式向参与者提供信息,么形式向参与者提供信息,n是在构造用户界面的原型。是在构造用户界面的原型。n这项活动的输入是:用例模型、详细描述这项活动的输入是:用例模型、详细描述的用例描述。的用例描述。n活动的结果是用户界面的简图。活动的结果是用户界面的简图。n目的是为参与者确定用户界面的外观和感目的是为参与者确定用户界面的外观和感觉。觉。逻辑用户界面设计n用户界面设计人员逐一检查用例,用户界面设计人员逐一检查用例,为需要为需要构造用户界面的用例确定适当的界面元素。构造用户界面的用例确定适当的界面元素。n如菜单、工具栏、对话框等。如菜单、工具栏、对话框等。界面设计人员通过访谈参与者,n请他

16、们回答下面的问题:请他们回答下面的问题:n需要哪些界面元素来启动用例?需要哪些界面元素来启动用例?n用户界面元素之间如何相关?用户界面元素之间如何相关?n用户界面看起来应该是什么样的?用户界面看起来应该是什么样的?n应该如何处理这些用户界面元素?应该如何处理这些用户界面元素?n针对所涉及的业务领域,用户对用户界面针对所涉及的业务领域,用户对用户界面元素有何特殊要求?元素有何特殊要求?n参与者喜欢用哪些用户界面元素完成工作?参与者喜欢用哪些用户界面元素完成工作?界面设计人员通过访谈参与者,n参与者可以激发哪些动作?参与者可以激发哪些动作?n在激发用例的动作前需要哪些指南?在激发用例的动作前需要哪

17、些指南?n参与者向系统提供什么信息?参与者向系统提供什么信息?n系统向参与者提供什么信息?系统向参与者提供什么信息?n每项输入输出的长度和类型是什么?每项输入输出的长度和类型是什么?n用户界面设计人员要确保每个用例都可以用户界面设计人员要确保每个用例都可以通过其用户界面元素进行访问。通过其用户界面元素进行访问。建立用例模型时应注意的问题n在大型的软件开发过程中,用例图可以在大型的软件开发过程中,用例图可以分层建立。分层建立。n在建模的开始阶段,注意保持用例图是在建模的开始阶段,注意保持用例图是对系统功能需求的高层次刻画,不要对它对系统功能需求的高层次刻画,不要对它进行过细的分解。进行过细的分解

18、。7.用例的组织n较大的系统往往包含许多用例,为了更好较大的系统往往包含许多用例,为了更好的理解和管理它们,我们可以通过两种方的理解和管理它们,我们可以通过两种方式进行组织:式进行组织:n用用“包(包(Package)”来组织:来组织:n用用例的级别层次关系来组织。用用例的级别层次关系来组织。产品分销系统用例图总体图 销售中心结算中心销售网点系统维护配送中心公用部分查询统计产品分销系统用例图销售中心子系统 产品资料管理 采购管理 虚拟库存维护 批销管理 预订管理 供货商信息管理 客户信息管理第二阶段系统分析系统分析n面向对象系统分析的基本任务是:运用面面向对象系统分析的基本任务是:运用面向对象

19、方法,对问题域和系统责任进行分向对象方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域以及系产生正确的认识,找出描述问题域以及系统责任所需的类及对象,定义这些对象系统责任所需的类及对象,定义这些对象的属性和操作,以及它们之间的静态和动的属性和操作,以及它们之间的静态和动态关系。态关系。n最终产生一个符合用户需求,并能够直接最终产生一个符合用户需求,并能够直接反应问题域和系统责任的问题域模型及其反应问题域和系统责任的问题域模型及其详细说明。详细说明。系统分析具体来说,分析阶段的活动主要是:具体来说,分析阶段的活动

20、主要是:n识别对象;识别对象;n为对象分类;为对象分类;n确定类的属性和操作;确定类的属性和操作;n确定类之间的关系:确定类之间的关系:n确定对象之间的交互:确定对象之间的交互:n确定对象的状态变化等。确定对象的状态变化等。1.识别对象n识别对象并不是从零开始的工作,应该最识别对象并不是从零开始的工作,应该最大限度地利用已有的劳动成果。比较典型大限度地利用已有的劳动成果。比较典型的可利用的资料有。的可利用的资料有。用例模型和用例描述。用例模型和用例描述。术语表。权威的术语定义集合。术语表。权威的术语定义集合。课程注册系统的术语表n课程课程 课程目录课程目录n职员职员 财务系统财务系统n年级年级

21、 教授教授n学期成绩单学期成绩单 名册名册n学生学生 教学日历教学日历发现对象n从用例模型和用例描述中找出名词来。从用例模型和用例描述中找出名词来。n但名词可能是参与者、对象和对象属性,但名词可能是参与者、对象和对象属性,所以还要区别它们。所以还要区别它们。n参与者通常比较容易区别,区别对象和对参与者通常比较容易区别,区别对象和对象属性可以通过分析是否有行为,象属性可以通过分析是否有行为,n对象是有行为的,而属性只是单纯的信息。对象是有行为的,而属性只是单纯的信息。三种对象类型n分析模型中最常用的三种对象类型,它们分析模型中最常用的三种对象类型,它们是:是:实体(实体(Entity)边界(边界

22、(Bountary)控制(控制(Control)实体对象n实体对象主要的任务是装载信息,同时也实体对象主要的任务是装载信息,同时也具有相关的行为,但是这部分行为主要包具有相关的行为,但是这部分行为主要包括那些和实体对象自身信息直接相关的操括那些和实体对象自身信息直接相关的操作。作。可以找到实体对象的几个办法考虑解决问题所需要的全部数据和行为,考虑解决问题所需要的全部数据和行为,然后将数据按相关性分组。然后将数据按相关性分组。识别出重要的名词,并将它们作为实体对识别出重要的名词,并将它们作为实体对象,然后确定每一个实体对象包含的数据象,然后确定每一个实体对象包含的数据和行为。和行为。列出所有的数

23、据、行为以及听起来很重要列出所有的数据、行为以及听起来很重要的名词,然后将数据和行为分配到不同类的名词,然后将数据和行为分配到不同类型的实体对象中。型的实体对象中。识别实体对象可参考下列问题:n识别实体对象可参考下列问题:识别实体对象可参考下列问题:该对象是否是某个问题中的重要的名词?该对象是否是某个问题中的重要的名词?该对象是否包含用来解决系统问题的重要的该对象是否包含用来解决系统问题的重要的信息?信息?该对象是否包含可以解决系统问题的计算或该对象是否包含可以解决系统问题的计算或者验证逻辑?者验证逻辑?边界对象n边界对象用于描述拟建系统内部运作与外边界对象用于描述拟建系统内部运作与外部环境之

24、间的交互。部环境之间的交互。n边界对象主要用于描述三种类型的内容:边界对象主要用于描述三种类型的内容:拟建系统和用户的界面,拟建系统和用户的界面,拟建系统和外部系统的接口拟建系统和外部系统的接口拟建系统与设备的接口。拟建系统与设备的接口。边界对象n通过检查在用例图中的参与者与用例之间通过检查在用例图中的参与者与用例之间的关系,我们可以识别出边界对象。的关系,我们可以识别出边界对象。n通常,在分析模型中,每一对参与者用通常,在分析模型中,每一对参与者用例都构成了一个边界对象。例都构成了一个边界对象。识别边界对象的可参考下列问题:n识别边界对象的可参考下列问题:识别边界对象的可参考下列问题:该对象

25、是否描述了必须显示的信息以及必须该对象是否描述了必须显示的信息以及必须提供的服务?提供的服务?该对象是否包含所有的接口设计细节?该对象是否包含所有的接口设计细节?该对象是否描述了与外部系统的交互?该对象是否描述了与外部系统的交互?控制对象n控制对象用于描述对一个用例所特有的事控制对象用于描述对一个用例所特有的事件流的控制行为。件流的控制行为。n控制对象相当于协调人控制对象相当于协调人n它自己通常不处理具体的任务,但它知道它自己通常不处理具体的任务,但它知道那些类有能力完成具体的任务。那些类有能力完成具体的任务。n通常一个用例对应一个控制类。通常一个用例对应一个控制类。识别控制对象可参考下列问题

26、:n是否对业务逻辑进行控制?是否对业务逻辑进行控制?n是否将业务逻辑提交给实体对象?是否将业务逻辑提交给实体对象?顺序图中的边界对象,控制对象和实体对象 : 实体对象 : 用户 : 边界对象 : 控制对象输入信息请求处理处理建立连接数据处理2.描述对象的协作关系n我们还需要详细了解对象在系统中的行为我们还需要详细了解对象在系统中的行为和责任。和责任。n责任是响应消息的能力。消息被要求者提责任是响应消息的能力。消息被要求者提出,责任由响应者承担。出,责任由响应者承担。n确定责任主要根据责任和消息的简明对应确定责任主要根据责任和消息的简明对应关系,所谓找出责任是根据消息的要求定关系,所谓找出责任是

27、根据消息的要求定义责任,即用责任满足消息所提出的要求。义责任,即用责任满足消息所提出的要求。对象的行为n对象的行为是通过系统中对象之间的交互对象的行为是通过系统中对象之间的交互以及对象内部状态的转化来表现的。以及对象内部状态的转化来表现的。n对象间通过发送消息而产生交互。对象间通过发送消息而产生交互。n同时在一个对象的生命周期内也存在状态同时在一个对象的生命周期内也存在状态的转移以及对事件的响应。的转移以及对事件的响应。系统动态分析n动态分析的主要任务包括动态分析的主要任务包括n分析用例的实现过程分析用例的实现过程( (要求有详细的用例描要求有详细的用例描述述) ),从而更好地理解业务流程以及

28、为发现,从而更好地理解业务流程以及为发现类打好基础;类打好基础;n用于进行动态分析的用于进行动态分析的UMLUML图包括顺序图、协作图包括顺序图、协作图、活动图和状态图。图、活动图和状态图。系统动态分析n建立交互图建立交互图n交互图表现的是参与者与系统以及系统内交互图表现的是参与者与系统以及系统内部对象之间的交互,部对象之间的交互,n将消息加进交互图时,是在向接收消息的将消息加进交互图时,是在向接收消息的对象指定职责。对象指定职责。顺序图与事件流n用例的事件流中通常有一个基本事件流和用例的事件流中通常有一个基本事件流和多个分支事件流、替代事件流。多个分支事件流、替代事件流。n每个事件流应用一个

29、顺序图描述。每个事件流应用一个顺序图描述。场景和用例n用例中的场景描述可以是形成系统对象图用例中的场景描述可以是形成系统对象图的一个出发点。它对于系统中对象的发现的一个出发点。它对于系统中对象的发现有极大的帮助。有极大的帮助。n每个场景代表了用例的一个实例。每个场景代表了用例的一个实例。对象状态分析n状态图针对单个对象建模,通过分析单个状态图针对单个对象建模,通过分析单个对象的内部状态转换来了解一个对象的行对象的内部状态转换来了解一个对象的行为。为。n对于有多种内部状态的对象,状态图可以对于有多种内部状态的对象,状态图可以显示对象如何从一种状态过渡到另外一种显示对象如何从一种状态过渡到另外一种

30、状态,以及对象在不同状态中的不同行为。状态,以及对象在不同状态中的不同行为。n通过分析某一对象的状态变化,为设计此通过分析某一对象的状态变化,为设计此对象的操作提供依据。对象的操作提供依据。步骤n分析一个对象的状态可采用下列:分析一个对象的状态可采用下列:n首先要确定该对象有那些状态是问题域所关心首先要确定该对象有那些状态是问题域所关心的。当对象处于这些状态中时会有哪些动作。当的。当对象处于这些状态中时会有哪些动作。当然,我们只识别哪些问题域所关心的对象的状态。然,我们只识别哪些问题域所关心的对象的状态。n分析对象生命周期,确定对象活动分析对象生命周期,确定对象活动“历程历程”;n确定对象生命

31、周期划分策略;确定对象生命周期划分策略;n按策略划分阶段描述对象的生命周期;按策略划分阶段描述对象的生命周期;n获取一系列候选状态;获取一系列候选状态;n针对每一个候选状态,分析出对象在此状态下针对每一个候选状态,分析出对象在此状态下的动作。的动作。确定状态图的两种方法:n检查类的属性:考虑一个类的实例在属性检查类的属性:考虑一个类的实例在属性值不同时如何表现,因为如果对象的行为值不同时如何表现,因为如果对象的行为表现不同,则其状态也不同。表现不同,则其状态也不同。n例:某培训班的人数属性例:某培训班的人数属性n人人n人人某培训班状态图检查类的关联n检查类的关联:看看关联多重性中带检查类的关联

32、:看看关联多重性中带0 0的关联,的关联,0 0表示这个关联是可选的。表示这个关联是可选的。n关联存在和不存在时类的实例是否表现相同?如关联存在和不存在时类的实例是否表现相同?如果不同,则可能有多种状态果不同,则可能有多种状态n雇员和公司雇员和公司n雇员(多重性:雇员(多重性:0 0 )失业(状态)失业(状态)n雇员(多重性:雇员(多重性:1 1 )有工作(状态)有工作(状态)状态与属性打开关闭透支do/ 通知客户取钱 结余小于0 存款 结余小于0 客户请求关闭检查结余 结余小于0达30天以上 最后应对得到的对象进行核查n可从对象的状态确定性和状态间的互斥性可从对象的状态确定性和状态间的互斥性

33、两个方面进行核查。两个方面进行核查。n所谓对象的状态确定性是指每个状态都可所谓对象的状态确定性是指每个状态都可以由对象某些数据属性的组合来唯一确定。以由对象某些数据属性的组合来唯一确定。n状态间的互斥性是指对象的不同状态间必状态间的互斥性是指对象的不同状态间必须是互斥的,这样对象的状态才具有确定须是互斥的,这样对象的状态才具有确定性。性。原则n原则上一般只对复杂的类创建状态图。原则上一般只对复杂的类创建状态图。n如果类对象有多种状态,每种状态中的表如果类对象有多种状态,每种状态中的表现又大不相同,则可能要对其创建状态图。现又大不相同,则可能要对其创建状态图。n实际情况是,许多类根本就不需要状态

34、图。实际情况是,许多类根本就不需要状态图。n状态图仅用于文档,而不用于生成代码。状态图仅用于文档,而不用于生成代码。从从ROSEROSE模型产生代码时,没有任何代码是模型产生代码时,没有任何代码是从状态图的信息中产生的。从状态图的信息中产生的。3.创建类图n创建类图的工作主要包括:创建类图的工作主要包括:n创建类创建类n标识类之间的关系标识类之间的关系分析类的概念n分析模型中的所有类都是分析模型中的所有类都是”分析类分析类”。n从设计视角看待,从设计视角看待, “分析类分析类”忽略实现细节,忽略实现细节,相当粗略。相当粗略。n“分析类分析类”是为定义设计类做准备的。是为定义设计类做准备的。确定

35、“分析类”n这个步骤就是确定一组备选的、能够执行这个步骤就是确定一组备选的、能够执行用例中行为的用例中行为的“分析类分析类”。n在确定在确定“分析类分析类”时,使用三种不同的构时,使用三种不同的构造型识别和提取潜在的造型识别和提取潜在的“分析类分析类”,它们,它们是:是:n实体类、控制类、边界类。实体类、控制类、边界类。确定“分析类”n边界类:每个参与者和用例的交互存在一个对边界类:每个参与者和用例的交互存在一个对应的边界类。应的边界类。n控制类:一般一个用例对应一个控制类。控制类:一般一个用例对应一个控制类。n实体类:这个主要看用例里面用到的持久的数实体类:这个主要看用例里面用到的持久的数据

36、对象。用到数据库对象时,可能就使用了实据对象。用到数据库对象时,可能就使用了实体类。体类。类的获取n类的获取有两种办法:类的获取有两种办法:n从用例模型和用例描述中找出名词,有从用例模型和用例描述中找出名词,有4种种名词:参与者、类、类的属性、其他描述名词:参与者、类、类的属性、其他描述性名词。性名词。n能够找出实体类能够找出实体类类的获取n另一种是检查交互图中的对象,研究对象另一种是检查交互图中的对象,研究对象具有的共同属性和操作来发现类。具有的共同属性和操作来发现类。n如果采用第二种方法创建类图,需要先创如果采用第二种方法创建类图,需要先创建交互图。建交互图。获取边界类n分析参与者与用例对

37、,找出边界类分析参与者与用例对,找出边界类边界类的复用控制类的考虑n如果不同用例包含的任务之间有比较紧密如果不同用例包含的任务之间有比较紧密的联系,某些控制类可以参与多个用例实的联系,某些控制类可以参与多个用例实现。现。n当用例事件流非常简单的情况下,控制类当用例事件流非常简单的情况下,控制类的必要性明显降低。的必要性明显降低。实体类的考虑n实体类的适用范围和生命周期可能超越特实体类的适用范围和生命周期可能超越特定的用例事件流。定的用例事件流。n实体类通常不是某一特定用例所专有的。实体类通常不是某一特定用例所专有的。n如果实体类如果实体类B仅仅被另一个类仅仅被另一个类A,并且实体,并且实体类类

38、B不具有明显的行为特征,那么,可以考不具有明显的行为特征,那么,可以考虑将实体类虑将实体类B作为类作为类A的属性。的属性。无类间关系的分析类图.识别分析类操作n分析类在顺序图里要承担一定的分析类在顺序图里要承担一定的“职责职责”n“职责职责”是对其他对象发送来的消息的响是对其他对象发送来的消息的响应。也可能是对外部的响应,也可能是维应。也可能是对外部的响应,也可能是维护自身信息所必要的护自身信息所必要的“职责职责”。n这种行为在分析类演化成设计类时,它可这种行为在分析类演化成设计类时,它可能对应一个或多个具体的类的能对应一个或多个具体的类的“操作操作”。找出分析类的“操作”n通常有两种方法为类

39、识别通常有两种方法为类识别操作操作:n第一是责任驱动法第一是责任驱动法n第二是通过交互图第二是通过交互图 责任驱动法识别类“操作”责任驱动主要基于两个概念:责任驱动主要基于两个概念:第一,一个对象在系统中负有一定的责任,例第一,一个对象在系统中负有一定的责任,例如它要获得特定的信息(了解的责任)和为其如它要获得特定的信息(了解的责任)和为其他对象提供特定的信息(做的责任);他对象提供特定的信息(做的责任);第二,一个对象与其他对象合作来提供所要求第二,一个对象与其他对象合作来提供所要求的服务。的服务。责任驱动法识别类“操作”n1)责任驱动法为类识别)责任驱动法为类识别“操作操作”n 责任分析的

40、一种有用技术责任分析的一种有用技术CRC(ClassResponsibilityCollaboration)卡技术。)卡技术。为类分配操作CRC卡 类的名称类的名称类的名称类的名称责任责任1 1责任责任1 1的协作者的协作者对该类的描述对该类的描述责任责任2 2责任责任2 2的协作者的协作者责任责任3 3责任责任3 3的协作者的协作者CRC卡用交互图描述用例来为类识别“操作”n面向对象系统是通过对象间相互发送消息面向对象系统是通过对象间相互发送消息来完成系统功能的。来完成系统功能的。n这些对象间传递的消息就可以映射为对象这些对象间传递的消息就可以映射为对象的操作。的操作。消息和操作n消息和消息

41、和操作操作的概念不同的概念不同n操作操作”对发送过来的对发送过来的“消息消息”的响应,也的响应,也就是说它要满足就是说它要满足“消息消息”的具体要求。的具体要求。n“消息消息”和和“操作操作”并不存在一一对应的并不存在一一对应的关系,已有的关系,已有的“职责职责”就可能满足新的就可能满足新的“消息消息”的要求。的要求。下面几个问题有助于寻找类的操作:有哪些类会与该类交互,包括该类本身?有哪些类会与该类交互,包括该类本身?该类接收哪些类(包括自己)发送的消息,该类接收哪些类(包括自己)发送的消息,收到消息之后进行什么处理?收到消息之后进行什么处理?该类向哪些类发送消息,消息的内容是什该类向哪些类

42、发送消息,消息的内容是什么,在发送之前该类需要做什么处理?么,在发送之前该类需要做什么处理?该类中需要哪些操作来维持自身属性的一该类中需要哪些操作来维持自身属性的一致性、完整性,以及自身属性的更新?致性、完整性,以及自身属性的更新?简要标识分析类的“操作”n同样要给同样要给“操作操作”起一个易于理解的名字,起一个易于理解的名字,通常要比较简短,通常要比较简短,分析类操作的设计n一个类的操作太多或太少都是不合适的,一个类的操作太多或太少都是不合适的,太多说明这个类过于复杂,这时要特别分太多说明这个类过于复杂,这时要特别分析一下这个类是否有很高的内聚,通常情析一下这个类是否有很高的内聚,通常情况下

43、应该将过于复杂的类拆成多个较小的况下应该将过于复杂的类拆成多个较小的类。类。n如果类中的操作太少,有时甚至没有操作,如果类中的操作太少,有时甚至没有操作,全部都是属性,这时应该分析这个类,判全部都是属性,这时应该分析这个类,判断其是否能够合并到其他类中。断其是否能够合并到其他类中。.识别分析类属性n“分析类分析类”要能执行相应的操作,它要依赖要能执行相应的操作,它要依赖于两方面的内容:于两方面的内容:n一方面是利用它自己保存的信息;一方面是利用它自己保存的信息;n另一方面是利用其他的类另一方面是利用其他的类 。n类自己所能够保存的信息就是它的属性。类自己所能够保存的信息就是它的属性。获得属性的

44、渠道n属性的来源有许多。获得属性的渠道有几个:属性的来源有许多。获得属性的渠道有几个:n通过查看用例文档,寻找名词。通过查看用例文档,寻找名词。n通常,在用例文档中用名词表示属性,如通常,在用例文档中用名词表示属性,如“图图书的出版社、价格等书的出版社、价格等”。n这些名词中有些是对象;有些是参与者;有些这些名词中有些是对象;有些是参与者;有些是属性。确定是对象还是属性,答案在于要实是属性。确定是对象还是属性,答案在于要实现的功能。现的功能。获得属性的渠道n通过查看文档,发现系统要收集的信息,通过查看文档,发现系统要收集的信息,这些信息就是类的属性。这些信息就是类的属性。如为了下订单而如为了下

45、订单而搜集的供货商的姓名、电话及银行帐号等。搜集的供货商的姓名、电话及银行帐号等。n如果已经定义了数据库结构,则数据库如果已经定义了数据库结构,则数据库表中的字段就是属性。表中的字段就是属性。认定一个属性的策略认定一个属性的策略有:认定一个属性的策略有:按一般常识这个类应该具有哪些属性?按一般常识这个类应该具有哪些属性?在当前的问题域中类应该具有什么属性?在当前的问题域中类应该具有什么属性? 根据系统责任的要求,这个类应该具有哪些属性?根据系统责任的要求,这个类应该具有哪些属性? 建立这个类是为了保存和管理哪些信息?建立这个类是为了保存和管理哪些信息?类为了在服务中实现其功能,需要增设哪些属性

46、?类为了在服务中实现其功能,需要增设哪些属性? 有哪些需要区别的状态,是否需要增加一个属性有哪些需要区别的状态,是否需要增加一个属性来区别这些状态?来区别这些状态?认定一个属性的基本原则。n要确认它相对于相应对象或类的每一个要确认它相对于相应对象或类的每一个实例都是适用的。实例都是适用的。n认定的属性应当是一种相对的原子概念,认定的属性应当是一种相对的原子概念,也就是说,不依赖于并列的其他属性就可也就是说,不依赖于并列的其他属性就可以被理解。以被理解。属性的特点n类的属性不宜太多,如果某个类的属性太类的属性不宜太多,如果某个类的属性太多,最好将其分解成更小的类。多,最好将其分解成更小的类。n同

47、样,属性也不要太少,太少的情况下应同样,属性也不要太少,太少的情况下应进行类的合并。进行类的合并。属性的类型n属性的类型指属性值的类型。属性的类型指属性值的类型。n可以是基本数据类型,例如整数、实数、可以是基本数据类型,例如整数、实数、布尔型、字符串型等,也可以是用户自定布尔型、字符串型等,也可以是用户自定义的类型。义的类型。n分析阶段一般不需要确定属性的类型分析阶段一般不需要确定属性的类型6.描述类之间的关系n类之间的关系有关联关系、聚合关系、组类之间的关系有关联关系、聚合关系、组合关系、泛化关系、依赖关系。合关系、泛化关系、依赖关系。n通常按照以下步骤对类之间的关联建模:通常按照以下步骤对

48、类之间的关联建模:n1)找出关系。有的类只和其他一个类有关)找出关系。有的类只和其他一个类有关系,而有些类同时和其他多个类存在关系。系,而有些类同时和其他多个类存在关系。n在一个面向对象系统中,不存在完全独立在一个面向对象系统中,不存在完全独立的类。的类。类之间的关系n2)命名关系。最好给每个关系取一个名字)命名关系。最好给每个关系取一个名字以标识出类之间的关系。以标识出类之间的关系。n通常可以使用动词和动词短语来标识关系。通常可以使用动词和动词短语来标识关系。类之间的关系n3)设置关联重数。关联的重数)设置关联重数。关联的重数(MulhpliCity)依赖于系统的具体需求,)依赖于系统的具体

49、需求,要根据需求文档的上下文进行分析。要根据需求文档的上下文进行分析。n在系统分析阶段,不必特别地考虑重数。在系统分析阶段,不必特别地考虑重数。类之间的关系n)设置关联的其他特性。如果需要的话,)设置关联的其他特性。如果需要的话,可以为每个关联设置关联角色名、构造型、可以为每个关联设置关联角色名、构造型、限定符等细节。限定符等细节。n在上述步骤中,最关键的是第一步在上述步骤中,最关键的是第一步找找出类之间的关联关系。出类之间的关联关系。寻找关系的具体方法如下:n要寻找关系,可以检查交互图,大多数关系信息要寻找关系,可以检查交互图,大多数关系信息已经在交互图中列出。已经在交互图中列出。n(1)(

50、1)如果一个类向另一个类发出消息,则它们必有如果一个类向另一个类发出消息,则它们必有关系,并且通常是关联或依赖关系。关系,并且通常是关联或依赖关系。n(2 2)检查类的整体和部分关系。)检查类的整体和部分关系。任何由其他类组任何由其他类组成的类都参与聚合成的类都参与聚合.n(3 3)检查类的泛化关系,寻找相似对象的不同点,)检查类的泛化关系,寻找相似对象的不同点,将不同的部分下降为特殊的类,将共性的部分上将不同的部分下降为特殊的类,将共性的部分上升为基础类,两者之间的关系确定为泛化关系。升为基础类,两者之间的关系确定为泛化关系。 发现类关系 课程注册管理员 : 注册管理员数学18 : 课程3.

51、加入学生报账系统顺序图借以确定类图关联关系的协作图确定类图的关联发现类之间的关系n除了上述方法外,除了上述方法外,n判断两个类之间到底有没有关联关系,要判断两个类之间到底有没有关联关系,要看它们之间是否存在下表中的关系:看它们之间是否存在下表中的关系:判断两个类之间到底有无关联关系分分 类类举举 例例A A在物理上是在物理上是B B的一部分的一部分主板主板主机主机A A在逻辑上是在逻辑上是B B的一部分的一部分销售项条目销售项条目销售项销售项A A在物理上包含在在物理上包含在B B中依赖于中依赖于B B商品项商品项商品架商品架A A在逻辑上包含于在逻辑上包含于B B中中车次车次火车时刻表火车时

52、刻表A A是对是对B B的描述的描述天气预报天气预报天气天气A A是事务是事务B B或报告或报告B B的一个记录项的一个记录项项目项目考试考试A A为为B B所知为所知为B B所记录录入所记录录入B B中为中为B B所捕获所捕获订票单一一航班旅客名单订票单一一航班旅客名单A A是是B B的一个成员的一个成员教师教师教研室教研室A A是是B B的一个组织单元的一个组织单元系系大学大学A A使用或管理使用或管理B B汽车驾驶员汽车驾驶员汽车汽车A A与与B B相互通信相互通信顾客顾客售货员售货员A A与一个事务与一个事务B B有关联有关联顾客顾客支付项支付项A A是一个事务,是一个事务,B B也是

53、一个事务,两者之间有关联也是一个事务,两者之间有关联支付项支付项销售项销售项A A是是B B的一个实例的一个实例北京北京城市城市A A被被B B所拥有所拥有公共汽车公共汽车公共汽车公司公共汽车公司关系查找策略n关系查找的一种策略是从一个用例,找出关系查找的一种策略是从一个用例,找出与这几个类存在的关系,然后再寻找另外与这几个类存在的关系,然后再寻找另外一个用例中的关系,直到穷尽了所有的用一个用例中的关系,直到穷尽了所有的用例为止。例为止。注意n还有一点需要注意的是,两个类之间可能还有一点需要注意的是,两个类之间可能同时存在多种不同的关系。不能因为已经同时存在多种不同的关系。不能因为已经找到了两

54、个类之间的一种关系而忽略了它找到了两个类之间的一种关系而忽略了它们存在的其他关系。们存在的其他关系。关联关系n对于关联关系太多的类要特别注意。对于关联关系太多的类要特别注意。n设计良好的应用系统的目标之一是减少系设计良好的应用系统的目标之一是减少系统中的关联。统中的关联。n关联关系太多的类很难复用,维护工作量关联关系太多的类很难复用,维护工作量也会很大。也会很大。n如果相关联的其他某个类改变,则这个类如果相关联的其他某个类改变,则这个类就可能会受到影响。就可能会受到影响。两个类的关联关系n两个类的关联关系可以是单向的,也可以两个类的关联关系可以是单向的,也可以是双向的。是双向的。n相对而言,单

55、向的关联更容易建立和维护,相对而言,单向的关联更容易建立和维护,同时也更有利于类的复用。同时也更有利于类的复用。表现类之间关系的手段n表现类之间关系的手段是绘制类图。表现类之间关系的手段是绘制类图。n逻辑上每个用例对应一张完整的类图。类逻辑上每个用例对应一张完整的类图。类图有两种,图有两种,n简略的类图突出了类之间的关系简略的类图突出了类之间的关系n详细的类图用标准方式描述了类,在描述详细的类图用标准方式描述了类,在描述类之间的关系的同时,还展示了每个类的类之间的关系的同时,还展示了每个类的属性和职责。属性和职责。某银行系统类图 类的构造型n类的构造型可以将类进行分类,并且有助类的构造型可以将

56、类进行分类,并且有助于理解每个类的职责,于理解每个类的职责,n不同构造型的类具有不同的职责。不同构造型的类具有不同的职责。n类的构造型写在括号类的构造型写在括号 之中。之中。第三阶段类的设计与实现系统设计及实现n面向对象的分析是确定了某个特定问题域面向对象的分析是确定了某个特定问题域中的对象,以及各种各样的关系。中的对象,以及各种各样的关系。n面向对象的设计是将分析阶段获得的模型面向对象的设计是将分析阶段获得的模型变成抽象的系统实现方案的过程。变成抽象的系统实现方案的过程。系统设计及实现n在设计阶段对分析模型进行扩展并将模型在设计阶段对分析模型进行扩展并将模型进一步细化,同时还要考虑技术细节和

57、各进一步细化,同时还要考虑技术细节和各种限制条件。种限制条件。n设计的目的是开发出一个基于面向对象的设计的目的是开发出一个基于面向对象的可行的系统逻辑解决方案,以便编程人员可行的系统逻辑解决方案,以便编程人员能够很方便地将其转变成为程序代码。能够很方便地将其转变成为程序代码。系统的设计可以分为两个阶段:n系统总体设计阶段:系统总体设计阶段:主要包括如何把整个系统划分为多个包(子系主要包括如何把整个系统划分为多个包(子系统)的策略,以及描述多个包之间的依赖性和统)的策略,以及描述多个包之间的依赖性和通信机制等。通信机制等。n详细设计阶段:详细设计阶段: 主要是决定在实现过程中使用的类和关系的全主

58、要是决定在实现过程中使用的类和关系的全部定义,以及用于实现操作的各种方法的算法部定义,以及用于实现操作的各种方法的算法和接口。和接口。1.系统总体设计n对于一个复杂的软件系统,常需要进行体对于一个复杂的软件系统,常需要进行体系结构的设计,系统总体设计就是这样一系结构的设计,系统总体设计就是这样一种高层的结构设计。种高层的结构设计。定义并且设计子系统n在进行系统总体设计时,通常的做法是将在进行系统总体设计时,通常的做法是将一个软件系统组织成若干个子系统,子系一个软件系统组织成若干个子系统,子系统内还可以继续划分子系统或包。统内还可以继续划分子系统或包。n一个子系统是包含多个类、关系、操作、一个子

59、系统是包含多个类、关系、操作、事件和约束的一个包。事件和约束的一个包。n子系统与其他子系统之间还应该确定关系。子系统与其他子系统之间还应该确定关系。划分各个子系统 n这一步的主要任务是划分各个子系统、说这一步的主要任务是划分各个子系统、说明子系统之间的关系。具体如下:明子系统之间的关系。具体如下:n(1)划分各个子系统。划分各个子系统。n划分子系统的方式有:划分子系统的方式有:n可以按照功能划分可以按照功能划分n可以按照系统的物理布局划分可以按照系统的物理布局划分n可以按照软件层次划分子系统可以按照软件层次划分子系统按照功能划分三层体系结构 用户接口包 业务逻辑包 数据存取包定义各子系统之间的

60、关系 n当划分了各子系统后,还要确定子系当划分了各子系统后,还要确定子系统之间的关系,统之间的关系,n子系统之间的关系可以是子系统之间的关系可以是“请求一服请求一服务务”关系,也可以是平等的关系。关系,也可以是平等的关系。定义各子系统之间的关系n如果子系统的内容相互有联系,说明子系如果子系统的内容相互有联系,说明子系统之间的有依赖关系统之间的有依赖关系n在设计时,相关的子系统之间应该定义接在设计时,相关的子系统之间应该定义接口,依赖关系应该指向接口,口,依赖关系应该指向接口,定义各子系统之间的关系n如果两个子系统之间的关系过于密切,也如果两个子系统之间的关系过于密切,也就是说一个子系统的变化会

温馨提示

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

评论

0/150

提交评论