软件工程整理ppt

上传人:hy****d 文档编号:242872249 上传时间:2024-09-10 格式:PPT 页数:193 大小:1.11MB
返回 下载 相关 举报
软件工程整理ppt_第1页
第1页 / 共193页
软件工程整理ppt_第2页
第2页 / 共193页
软件工程整理ppt_第3页
第3页 / 共193页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件工程,第,8,章 面向对象建模,1,内容摘要,用况建模,静态建模,动态建模,物理体系结构建模,2,内容摘要,用况建模,静态建模,动态建模,物理体系结构建模,3,用况建模,用况建模是用于描述一个系统应该做什么的建模技术,用况建模不仅用于新系统的需求获取,还可用于已有系统的升级。用况模型用用况图来描述,用况图展示了各类外部执行者与系统所提供的用况之间的连接。一个用况是系统所提供的一个功能(也可以说是系统提供的某一特定用法)的描述,执行者,是指那些可能使用这些用况的人或外部系统,执行者与用况的连接表示该执行者使用了那个用况,用况图给出了用户所感受到的系统行为,但不描述系统如何实现该功能,用况通常用普通正文描述,也可以用活动图来描述,4,任何一个涉及到系统功能活动的人都会用到用况模型,客户,:用况模型指明了系统的功能,描述了系统能如何使用。用况建模时客户的积极参与是十分重要的,开发者,:用况模型帮助他们理解系统要做什么,同时为以后的其他模型建模、结构设计、实现等提供依据,集成测试和系统测试人员,:根据用况来测试系统,以验证系统是否完成了用况指定的功能,5,用况建模步骤,创建用况模型的步骤包括:,1,定义系统,2,确定执行者,3,确定用况,4,描述用况,5,定义用况间的关系,6,确认模型,6,用况模型由用况图组成,用况图展示了执行者、用况以及它们之间的关系。用况通常用正文形式来描述,一个用况模型可由若干幅用况图组成。一幅用况图包含的模型元素有系统、执行者、用况,以及表示它们间的不同关系,如关联、扩展、包含、泛化等,7,用况图,电话订购系统用况图,客户,售票员,送货员,主管,r,建立,信用,供应,订单,安排,支付,提供,客户数据,产生,订单,信用卡,支付,现金,支付,设置,订单,请求,目录,电话订购,include,include,include,extend,核对,身份,8,一,.,定义系统,用况图中的矩形框代表系统,系统的用况画在矩形框内,代表系统之外的执行者画在矩形框外,9,二,.,确定执行者,执行者是指与系统交互的人或其他系统,执行者代表一种角色,而不是具体的某个人,执行者可分成主执行者和副执行者:,主执行者使用系统的主要功能,例如,保险系统中主执行者处理保险的注册和管理,副执行者处理系统的辅助功能,例如,管理数据库、通信、备份以及其他管理等系统维护,10,执行者还可分为主动执行者和被动执行者:,主动执行者开始一个用况,被动执行者从不开始用况,只是参与一个或多个用况,11,我们可以通过回答下列问题来确定执行者:,谁使用系统的主要功能(主执行者)?,谁需要从系统中得到对他们日常工作的支持?,谁需要维护、管理和维持系统的日常运行(副执行者)?,系统需要控制哪些硬件设备?,系统需要与哪些其他系统交互?,哪些人或哪些系统对系统产生的结果(值)感兴趣?,12,三,.,确定用况,1.,用况的特征,用况总是被执行者启动的(,initiated,),执行者必须直接或间接地指示系统去执行用况,用况向执行者提供值,这些值必须是可识别的,用况是完整的,一个用况必须是一个完整的描述,用况是一个类型,而不是实例,用况的实例称为场景(,scenario,),13,2.,寻找用况,可以通过让每个执行者回答以下问题来寻找用况:,执行者需要系统提供哪些功能?执行者需要系统做什么?,执行者是否需要读、创建、删除、修改或储存系统中的某类信息?,执行者是否要被系统中的事件提醒,或者执行者是否要提醒系统中某些事情?从功能观点看,这些事件表示什么?,执行者的日常工作是否因为系统的新功能(尤其是目前尚未自动化的功能)而被简化或提高了效率?,14,另外还有一些不是目前的执行者回答的问题:,系统需要哪些输入,/,输出?谁从系统获取信息?谁为系统提供信息?,与当前系统(可能是人工系统而不是自动化系统)的实现有关的主要问题是什么?,对同一个项目,不同的开发者选取的用况数是不一样的。例如一个,10,个人年规模的项目,有人选取了,20,个用况,而在一个类似的项目中,有人选用了,100,个用况,似乎,20,个太少,而,100,个太多,希望在项目规模和用况数之间保持均衡,15,四,.,用况的描述,用况通常用正文(,text,)来描述,也可用活动图来描述,用况的正文描述应包括以下内容:,用况的目的:用况的最终目的是什么?它试图达到什么?,用况是如何启动(,initiate,)的:哪个执行者在什么情况下启动用况的执行?,执行者和用况之间的消息流:用况与执行者之间交换什么消息或事件来通知对方改变或恢复信息?描述系统与执行者之间的主消息流是什么?以及系统中哪些实体被使用或修改?,16,用况中可供选择的流:用况中的活动可根据条件或异常(,exception,)有选择地执行,如何通过给执行者一个值来结束用况:描述何时可认为用况已结束,17,执行者的简要描述,如,客户,:向公司订购商品的人,客户代表,:公司处理客户请求的雇员,库存系统,:记录公司库存的软件,用况的简要描述,如,订购货物,:客户创建一个新的请求商品的订单,并为那些商品付费,取消订单,:客户取消一个已经存在的订单,18,用况的详细描述,前置条件和后置条件,前置条件和后置条件表示用况开始和结束的条件,事件流,(,flow of events,),事件流是一系列陈述句,它是从执行者的角度看,列出用况的各个步骤,用况描述中可以包含条件、分支和循环,例如:订购货物用况的描述如下,19,用况名称,:订购货物,参与的执行者,:客户、客户代表,前置条件,:一个合法的客户已经登录到这个系统,事件流,:,当客户选择订购货物时,用况开始,客户输入他的姓名和地址,如果客户只输入邮编,系统将给出州和城市名,当客户输入产品代码,a.,系统给出产品描述和价格,b.,系统往客户订单中添加该物品的价格,循环结束,20,5.,客户输入信用卡支付信息,6.,客户选择提交,7.,系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息。如果客户提交的信息不正确,系统将提示客户修改。,8.,当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单,ID,,用况也就结束了。如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到第,5,步;如果选择取消,用况结束。,后置条件,:如果订单没有被取消,它将保存在系统中,并做上标记,21,其他需求,在用况中还可描述一些特殊的需求,这些需求常常是非功能性需求,如可用性、安全性、可维护性、负载、性能、自动防故障、数据需求等。,如订购货物用况的其他需求:,前置条件,:,(略),事件流,:,(略),特殊需求,:,系统必须在一秒内响应客户的输入,后置条件,:,(略),22,事件流可分为两部分:,基本路径,基本路径是运转正常时的路径,是一系列没有分支和选择的简单陈述句,可选路径,可选路径是指不同于基本路径而允许不同的事件序列的路径。,对于明显有可能随时发生的事情来说,可选路径非常有效。,23,如订购货物用况的基本路径:,事件流,:,基本路径,当客户选择订购货物时,用况开始,客户输入他的姓名和地址,当客户输入产品代码时,a.,系统给出产品描述和价格,b.,系统往客户订单中添加该物品的价格,循环结束,4.,客户输入信用卡支付信息,5.,客户选择提交,6.,系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息,7.,当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单,ID,,用况结束,24,如果在订购货物用况中,客户可以在提交订单前随时取消订单,其可选路径如下:,可选路径,:,在选择提交前的任何时候,客户都可以选择,cancel,。这次订购没有被保存,用况结束。,在基本路径第,6,步,如果有任何不正确的信息,系统提示客户去修改这些信息。,在基本路径第,7,步,如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到基本路径第,4,步;如果选择取消,用况结束。,25,五,.,确定用况之间的关系,extend,26,include,27,六,.,确认模型,对用况模型进行评审,以确认该模型是用户所需的,28,网上购物系统的,案例说明,客户通过相应的网址访问网上购物系统,进入系统后,客户即可通过多级分类目录逐级浏览商品的名称、规格、单价、图片等信息,直至阅,浏览,某个商品的详细技术指标。浏览过程中,客户可随时将需要的商品放到购物车内,系统可显示购物车内已选购的商品、单价、数量及价格,客户还可随时删去购物车内尚未结账的任何商品。,当客户选择好所需的商品后,可要求结账,此时,系统首先要求客户注册,/,登录(对新客户需先注册,填写客户信息,然后登录;对老客户只需通过用户名和密码直接进行登录即可),然后根据购物车中所选的商品形成初始的订单,同时选择支付方式,填写相关的派送信息,如送货地址、建议的送货时间段等,此时即可提交订单,系统向客户返回一个订单号。,29,系统提供网上在线支付和货到现金支付两种支付方式。网上在线支付方式由专门的网上支付系统实现在线支付,需根据网上支付系统的要求填写相关的账户信息,如账号、密码等,并进行扣款,网上在线支付的结果或者是付款成功,或者是付款失败。货到现金支付方式由送货员在送达商品时向客户收取现金。客户还可通过订单号查询自己订单的当前状态,如已提交未付款、已发货已付款等,并允许取消尚未发货的订单。,系统业务员将客户提交的订单交由物流系统或快递公司向客户发货,又称派送,物流系统或快递公司送达商品后对未付款的客户收款,并将客户签收单返回给系统业务员,系统业务员负责更新订单的状态,以便跟踪和了解订单的执行情况。,30,本案例,作了简化,,假定:,客户所订的商品不存在缺货的情况,物流系统或快递公司向客户送货、收款(只对未付款的客户),以及向系统业务员返回客户签收单都不属于本案例的网上购物系统,不能取消已发货的订单,本案例中不包括对商品信息、客户信息的创建和维护,本案例中不考虑客户拒收的情况,假定系统业务员不能取消客户的订单,假定在提交订单时只确定了支付方式,并未实际付款。在提交订单后,当客户选择网上付款操作时才由系统链接相关的网上支付系统实现真正的支付,31,用况建模实例,1.,识别执行者,使用网上购物系统的人,客户,系统业务员,与网上购物系统交互的其他外部系统,实现网上在线支付功能的网上支付系统,创建和维护客户信息的客户信息管理系统,创建和维护商品信息的商品信息管理系统,32,网上购物系统的执行者及其简要描述:,客户:使用该系统在网上购物的人,系统业务员:完成订单状态更新的人,网上支付系统:实现网上在线支付的软件系统,客户信息管理系统:创建和维护客户信息的软件系统,商品信息管理系统:创建和维护商品信息的软件系统,33,2.,识别用况,客户使用网上购物系统的功能,:,商品信息浏览,网上在线订购,订单查询,注册,/,登录,支付,系统业务员使用系统的功能,:,订单状态更新,34,进一步的说明,:,由于注册,/,登录具有相对独立性,又可以被多个用况引用,因此,将其作为一个独立的用况,客户订购过程中会多次在购物车中添加商品、删除商品、显示购物车内的商品,可以将其合并成一个购物车管理的用况,由于商品信息有不同的详细程度,可以有多种多级分类目录的浏览方案,商品信息浏览功能相对独立,因此将其作为一个用况,称为商品信息浏览,网上在线订购是网上购物系统的主要功能,显然是一个用况。由于选购商品时都需要浏览商品信息,并在购物车中添加、删除商品,所以,网上在线订购用况包含了购物车管理用况和商品信息浏览用况,35,本案例中有网上在线支付和货到现金支付两种支付方式,通常可以标识出支付、网上在线支付和货到现金支付个用况,后个用况都继承支付用况。考虑到本案例对货到现金支付方式的处理比较简单,可以取消“货到现金支付”用况,此时,将上述个用况简化成个主要实现网上在线支付的用况“支付”,本案例的订单管理只包括订单查询、订单状态更新、取消订单等简单功能,可将其合并成一个用况,称为订单管理。如果订单管理还包括其他更多的功能,也可将其拆分成几个用况,由于选择支付方式和填写送货信息都比较简单,不作为独立的用况,36,网上购物系统的用况及其简要描述如下。,注册,/,登录:对新客户需先注册,即填写客户信息,然后进行,登录,;对老客户或系统业务员,只,需登录,即输入用户名和密码,并经校验合格即可,网上在线订购:在线订购商品,包括商品浏览、购物车管理、选择支付方式、填写送货信息等,商品信息浏览:显示商品信息,购物车管理:在购物车中添加商品、删除商品、显示购物车内的商品,支付:分为网上在线支付和货到现金支付,在采用网上在线支付时,调用网上支付系统,输入且确认账户信息,并进行扣款,网上支付系统返回付款成功或付款失败信息,供系统下一步决策使用,订单管理:订单查询、订单状态更新、取消订单等,37,用况之间的关系,客户只能查询或取消自己的订单,所以客户在查询或取消订单前必须先登录,以确定其身份,修改订单状态应该由授权的系统业务员进行操作,所以,系统业务员也必须登录后才可修改订单状态,网上在线订购在要求结账时,需注册,/,登录,网上在线订购用况和订单管理用况都使用了注册,/,登录用况,由进一步说明得知“,网上在线订购用况包含了购物车管理用况和商品信息浏览用况,”,38,网上购物系统,用况图,网上购物系统,支付,网上,支付系统,商品信息浏览,网上,在线订购,购物车,管理,include,include,商品信息管理系统,系统业务员,客户信息,管理系统,注册,/,登录,订单管理,客户,include,include,39,用况的描述, 网上在线订购用况的描述,用况名称:网上在线订购,参与的执行者:客户,前置条件:一个客户已进入网上购物系统,事件流:,基本路径,1.,当客户进入网上购物系统时,用况开始,2,显示商品目录,3.,以任意次数和合理的次序重复如下事件流,直至出现结账事件流,a.,浏览商品信息,b.,订购商品,b.1,将商品和数量添加到购物车,b.2,显示购物车中每个商品的名称、型号、数量、单价、金额,以及总价,c.,删除商品,c.1,删除购物车中的商品,c.2,显示购物车中每个商品的名称、型号、数量、单价、金额,以及总价,d.,显示购物车中的商品,循环结束,40,4.,结账,5.,注册,/,登录,6.,根据购物车中已选的商品,创建订单,7.,设置支付方式,8.,填写派送信息,9.,提交订单或退出,a.,提交订单,同时返回给客户一个订单,ID,,用况结束,b.,退出订购,订单未被保存,用况结束,可选路径:,在选择提交订单前的任何时候,客户都可以退出系统,这次订购没有被保存,用况结束。,后置条件:如果订单提交成功,订单将保存在系统中,并标记为已提交未付款状态,41,说明,客户进入网上购物系统时,默认系统自动为客户提供了一辆购物车,第,3,步表示客户可以以合理的次序和次数重复执行浏览、添加、删除、显示商品等操作,其中,第,3.a,步指未细化的“商品信息浏览”用况,第,3.b,、,3.c,、,3.d,步是对“购物车管理”用况的描述,当客户选择了结账,首先进行注册登录,登录成功后系统自动根据购物车的内容生成初始的订单,然后,客户选择支付方式,填写派送信息等。最后提交订单,系统返回一个订单号,并结束用况,客户也可通过退出网上购物来结束用况,此时,订单不被保存,42, 订单管理用况的活动图描述,客户成功登陆后系统自动显示该客户的订单列表,客户可选择列表中的订单号,查看该订单的信息和执行状态,客户在查看某订单的信息和状态后,执行取消该订单的操作。本案例规定只能取消未发货的订单,对已付款的订单,还应给予退款。为避免客户误操作,通常在处理取消订单操作时应提醒客户确认,本活动图中省略了确认步骤。,系统业务员成功登陆后可以由系统自动显示所有的订单列表,然后选择列表中的订单号,查看该订单的信息并修改其状态,系统业务员也可以输入需查询或修改状态的订单的号码,如果订单库中存在与该订单号匹配的订单,则认为是有效订单号,允许进行查询或修改状态操作。本活动图给出的是后一种处理方式。,43,订单管理用况的活动图,退出,系统业务员统支付,输入订单号,失败,显示订单列表,成功,客户,登录,继续,取消订单,未发货,已发货,退款,置订单状态,为已取消,已付款,未付款,退出,继续,置订单状态,为新状态,无效,订单号,报错,有效,订单号,显示,订单状态,查询订单,继续,修改,订单状态,显示订单状态,退出,44,内容摘要,用况建模,静态建模,动态建模,物理体系结构建模,45,静态建模(类和对象建模),类和对象模型的基本模型元素有类、对象以及它们之间的关系。系统中的类和对象模型描述了系统的静态结构,在,UML,中用类图和对象图来表示,46,类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛化、实现等。类图是一种静态模型,它是其他图的基础。一个系统可以有多张类图,一个类也可出现在几张类图中,对象图是类图的一个实例,它描述某一时刻类图中类的特定实例以及这些实例之间的特定链接。对象图使用了与类图相同的符号,只是在对象名下附加下划线,对象名后可接以冒号和类名,即,object-name:class-name,47,对象名 :类名,属性名,=,值,操作,类名,属性名 :类型,操作,聚集,组合,关联,泛化,依赖,实现,48,类图和对象图,实例,Triangle,Point,1,3,(a),point1:Point,x=0.0,y=1.0,point2:Point,x=3.0,y=1.0,point3:Point,x=3.0,y=5.0,triangle:Triangle,PartOf,PartOf,PartOf,(b),49,确定类,1.,标识类,这里介绍一种类,责任,协作者(,class,responsibility,collaborator,,简称,CRC,)技术。,CRC,实际上是一组表示类的索引卡片,每张卡片分成三部分,它们分别描述类名、类的责任和类的协作者,类名:,协作者:,责任:,50,(1),标识候选的对象类,通常陈述中的名词或名词短语是可能的候选对象,它们以不同的形式展示出来,如:,1),外部实体(如,其他系统、设备、人员),他们生产或消费计算机系统所使用的信息,2),物件(如,报告、显示、信函、信号),它们是问题信息域的一部分,3),发生的事情或事件(如,性能改变或完成一组机器人移动动作),它们出现在系统运行的环境中,51,4),角色(如:管理者、工程师、销售员),他们由与系统交互的人扮演,5),组织单位(如:部门、小组、小队),他们与一个应用有关,6),场所(如:制造场所、装载码头),它们建立问题和系统所有功能的环境,7),构造物(如,四轮交通工具、计算机),它们定义一类对象,或者定义对象的相关类,52,回答下列问题来识别候选对象:,是否有要储存、转换、分析或处理的信息?,是否有外部系统?,是否有模式(,pattern,)、类库和构件等?,是否有系统必须处理的设备?,是否有组织部分(,organizational parts,),?,业务中的执行者扮演什么角色?这些角色可以看作类,如客户、操作员等。,53,(,2,)筛选对象类,确定最终对象类,我们可以用以下选择特征来确定最终的对象:,1),保留的信息:仅当必须记住有关候选对象的信息,系统才能运作时,则该候选对象在分析阶段是有用的,2),需要的服务:候选对象必须拥有一组可标识的操作,它们可以按某种方式修改对象属性的值,3),多个属性:在分析阶段,关注点应该是,“,较大的,”,信息(仅具有单个属性的对象在设计时可能有用,但在分析阶段,最好把它表示为另一对象的属性),54,4),公共属性:可以为候选的对象定义一组属性,这些属性适用于该类的所有实例,5),公共操作:可以为候选的对象定义一组操作,这些操作适用于该类的所有实例,6),必要的需求:出现在问题空间中的外部实体以及对系统的任何解决方案的实施都是必要的生产或消费信息,它们几乎总是定义为需求模型中的类,55,对象和类还可以按以下特征进行分类:,1),确切性(,tangibility,):类表示了确切的事物(如,键盘或传感器),还是表示了抽象的信息(如,预期的输出)?,2),包含性(,inclusiveness,):类是原子的(即不包含任何其他类),还是聚合的(至少包含一个嵌套的对象)?,3),顺序性(,sequentiality,):类是并发的(即,拥有自己的控制线程),还是顺序的(被外部的资源控制)?,56,4),持久性(,persistence,):类是短暂的(即,它在程序运行期间被创建和删除)、临时的(它在程序运行期间被创建,在程序终止时被删除)、还是永久的(它存放在数据库中)?,永久对象(,persistent object,):其生存周期可以超越程序的执行时间而长期存在的对象。,5),完整性(,integrity,):类是易被侵害的(即,它不防卫其资源受外界的影响),还是受保护的(该类强制控制对其资源的访问)。,基于上述分类,,CRC,卡的内容可以扩充,以包含类的类型和特征,57,类的类型:(如:设备,角色,场所,,),类的特征:(如:确切的,原子的,并发的,,),协作者:,责任:,类名:,CRC,卡,58,2.,标识责任,责任是与类相关的属性和操作,简单地说,责任是类所知道的或要做的任何事情,(,1,),标识属性,属性表示类的稳定特征,即为了完成客户规定的目标所必须保存的类的信息,一般可以从问题陈述中提取出或通过对类的理解而辨识出属性。分析员可以再次研究问题陈述,选择那些应属于该对象的内容,同时对每个对象回答下列问题:,“,在当前的问题范围内,什么数据项(复合的和,/,或基本的)完整地定义了该对象?,”,59,(,2,),定义操作,操作定义了对象的行为并以某种方式修改对象的属性值。操作可以通过对系统的过程叙述的分析提取出来,通常叙述中的动词可作为候选的操作。类所选择的每个操作展示了类的某种行为,操作大体可分为三类:,以某种方式操纵数据的操作(如,增加、删除、重新格式化、选择),完成某种计算的操作,为控制事件的发生而监控对象的操作,60,3.,标识协作者,一个类可以用它自己的操作去操纵它自己的属性,从而完成某一特定的责任,一个类也可和其他类协作来完成某个责任。如果一个对象为了完成某个责任需要向其他对象发送消息,则我们说该对象和另一对象协作。协作实际上标识了类间的关系,为了帮助标识协作者,可以检索类间的类属关系。如果两个类具有整体与部分关系(一个对象是另一个对象的一部分),或者一个类必须从另一个类获取信息,或者一个类依赖于(,depends-upon,)另一个类,则它们间往往有协作关系,61,4.,复审,CRC,卡,在填好所有,CRC,卡后,应对它进行复审。复审应由客户和软件分析员参加,复审方法如下:,1),参加复审的人,每人拿,CRC,卡片的一个子集。注意,有协作关系的卡片要分开,即,没有一个人持有两张有协作关系的卡片,2),将所有用况,/,场景分类,3),复审负责人仔细阅读用况,当读到一个命名的对象时,将令牌(,token,)传送给持有对应类的卡片的人员,62,4),收到令牌的类卡片持有者要描述卡片上记录的责任,复审小组将确定该类的一个或多个责任是否满足用况的需求。当某个责任需要协作时,将令牌传给协作者,并重复,4,),5),如果卡片上的责任和协作不能适应用况,则需对卡片进行修改,这可能导致定义新的类,或在现有的卡片上刻画新的或修正的责任及协作者,这种做法持续至所有的用况都完成为止,63,UML,对属性的描述,UML,中,描述一个属性的语法如下:,visibility,opt,/,opt,attribute-name,: type,opt,multiplicity,opt,= initial-value,opt,property-string,opt,其中带下标,opt,或,opt,的部分表示该部分是任选的,visibility,(可见性):表示该属性在哪个范围内可见(即可使用),见下表,64,符号,种类,语义,+,Public,(公共的),任何能看到这个类的类都能看到该属性,#,Protected,(受保护的),这个类或者它的任何子孙类都能看到该属性,Private,(私有的),只有这个类自身能看到该属性,Package,(包的),在同一个包中的任何类能看到该属性,可见性,65,attribute-name,:表示属性名。,type,(类型):用来指明属性值的类型,multiplicity,(重数):用来指出该属性可能的值的个数以及它们的排列次序和唯一性。值的个数写在方括号,( ),中,其形式是:,minimum.maximum,。,maximum,可以是,“,*,”,,表示,“,无限,”,。当值的个数是单一值(如值的个数是,3,)时,可写成,3.3,或简写成,3,。典型的写法有:,0.1,,,1,(表示,1.1,),,*,(表示,0.*,),,1.*,,,1.3,。当重数缺省时,隐含表示重数为,1,。当一个属性有多个值时,可在值的个数后面指明值元素的排列次序和唯一性,排列次序和唯一性写在花括号,( ),中,可使用的关键字如下表所示,其默认值是,set,,即无序且值元素唯一,66,关键字,排列次序和唯一性,set,无序,值元素唯一,bag,无序,值元素不唯一,ordered set,有序,值元素唯一,list(or sequence),有序,值元素不唯一,67,initial-value,(初值):在创建一个类的实例对象时,应对其属性赋值,如果类中对某属性定义了初值,那么该初值可作为创建对象时该属性的默认值,property-string,(特征字符串):用来明确地指明该属性可能的候选值,如红,黄,绿指出该属性可枚举的值只能是红、黄、绿,68,属性还可以定义为类属性(,class attribute,) ,表示被这个类的所有实例对象共享该属性的值。类属性是这个类的名字空间中的全局变量。类属性用下划线来指明。,maxCount:Integer=0,jobID:Integer,create()jobID=maxCount+,schedule(),Job,类属性,实例属性,类操作,实例操作,69,“,发票”类的属性,Invoice,+ amount : Real,+ date : Date = Current date,+ customer : String,+ specification : String,- administrator : String=“unspecified”,-,maxCount : Integer=0,- numberOfInvoices : Integer,+ status : Status = unpaid unpaid, paid,Create(),numberOfInvoices= maxCount+1,70,UML,对操作的描述,UML,中描述一个操作的语法如下:,visibility,opt,operating-name,(,parameter-list,),: return-type,opt, property-string ,opt,操作可见性的含义与属性中的含义相同。,参数表是用逗号分隔的形式参数序列,描述一个参数的语法如下:,direction,opt,parameter-name,:,type,multiplicity,opt,= default -value,opt,其中:,direction,(方向):用来指明参数信息流的方向,71,方向的取值,关键字,语义,in,传递值的输入参数,该参数的改变对调用者是无效的,out,输出参数,没有输入值,其最终值对调用者是有效的,inout,一个可以修改的输入参数,其最终值对调用者是有效的,return,调用的返回值,该值对调用者是有效的,语义上与,out,参数没有不同,但在一串表达式中使用时,return,是有效的,72,type,和,multiplicity,的含义与属性中的含义相同,default,value,(默认值)是在操作的调用者未提供参数时,用它作为该参数的值,类也可以定义类操作(,class operation,)。通常操作是在该类的对象实例上被调用的,而类操作可以在没有对象实例的情况下被调用,但此时只允许访问类属性,73,Figure,Size : Size,Pos : Position,+ draw(),+ resize( percentX : Integer=25 , percentY : Integer = 25 ),+ returnPos() : Position,74,类之间的关系,75,1.,关联,关联描述了系统中对象之间或其他实例之间的连接。关联的种类主要有二元关联,多元关联,受限关联,聚集(,aggregation,)和组合(,composition,),76,(1),二元关联,二元关联表示为在两个类之间用一条直线连接,直线上可写上关联名,有首都,国家,城市,工作于,公 司,员 工,雇佣,关联通常是双向的,77,关联的两端可加上重数(,multiplicity,) ,表示该类有多少个对象可与对方的一个对象关联,驾驶,人,轿车,驾驶员,公车,工作于,公 司,员 工,雇佣,*,1,工作于,公 司,员 工,雇佣,*,*,关联的两端还可加上角色名(,role,),78,允许一个类与自身关联,*,雇佣 *,工作于,工人,1.*,老板,0.1,管理,公 司,员 工,雇佣关联的链,公司,A,张三,公司,B,李四,公司,A,王五,公司,C,张三,链是关联的实例,79,一个类的对象在不同的关联中扮演不同的角色,保险公司,人,保险合同,保险单,0.1,1,表示为,表达,0.*,1,有,涉及,婚姻,丈夫,妻子,0.*,1.*,涉及,有,保险客户,80,(2),多元关联,三个或三个以上的类之间可以互相关联,项目,程序语言,程序员,81,CAD,程序,:,项目,C :,语言,记账系统,:,项目,COBOL :,语言,张三,:,开发人员,三元关联对象图,82,(,3,),受限关联,(,qualified association,):受限关联用于一对多或多对多的关联。限定符(,qualifier,)用来区分关联,“,多,”,端的对象集合,它指明了在关联,“,多,”,端的某个特殊对象,目录,文件,0.*,ordered,有序关联,目录,文件,文件名,受限关联,83,(,4,),聚集和组合,聚集,(,aggregation,),是表示整体,-,部分关系的一种关联,它的,“,部分,”,对象可以是任意,“,整体,”,对象的一部分,聚集,成员,* *,组,个人,84,组合,(,composition,):,组合是一种更强形式的关联,代表整体的组合对象有管理它的部分对象的特有责任,如部分对象的分配和解除分配。组合关联具有强的物主身份,即,“,整体,”,对象拥有,“,部分,”,对象,,“,部分,”,对象生存在,“,整体,”,对象中,*,窗口,正文,对话框,按钮,菜单,*,*,*,85,(,5,),关联类,:,UML,中可以把关联定义成类,该关联的每个链都是这个类的实例,关联类,用户,工作站,授权,优先级,特权,开始一个时间片,*,授权,*,86,(,6,),导航性(,navigability,), 选课 ,学生,课程,(,a,)课程到学生的导航, 选课 ,学生,课程,(,c,)学生与课程间的双向导航, 选课 ,学生,课程,(,b,)学生到课程的导航,87,导航性,88,2.,泛化,泛化指出类间的,“,一般,特殊关系,”,(,is-a,),一般类定义了它的特殊类的公共属性和操作,对一般类扩展一些属性和,/,或操作后,可以特化(,specialize,)成特殊类,一般类是特殊类的父类,特殊类是一般类的子类,特殊类可以继承一般类的属性和操作,子类可以定义自己的属性和操作,也可重新定义父类中的操作,但重新定义的操作必须与父类具有相同的操作特征(,signature,),89,泛化和继承,显示,计算面积,四边形,显示,六边形,显示,三角形,多边形,显示,边数,顶角座标,长,宽,矩形,计算面积,90,泛化是一种分类学关系,一个一般类可以从不同的维或方面将其特化(,specialization,)成不同的特殊类集合,用一个类元(用作分类符)来表示一个维或方面,代表一个维度的一组泛化称为泛化集(,generalization set,)。在泛化集中可对其元素应用约束,在,UML,中提供以下约束,见下表,91,泛化集的约束,符号,含义,Disjoint,(不相交),泛化集中的类元是互斥的,Overlapping,(交迭),泛化集中的类元不是互斥的,Complete,(完全的),泛化集中的类元完全覆盖特化的维,Incomplete,(不完全的),泛化集中的类元不完全覆盖特化的维,92,泛化集的约束,医生,人,男人,工人,女人,教师,overlapping,incomplete,disjoint,complete,:职业,:职业,:职业,:性别,:性别,93,3.,实现,:,实现关系将一个模型元素(如类)连接到另一个模型元素(如接口),后者(如接口)是行为的规约(,specification,),前者(如类)必须至少支持(通过继承或直接声明)后者的所有操作。可以认为前者是后者的实现,泛化和实现都可以将一般描述与具体描述联系起来。其区别是,泛化是同一语义层上的元素之间的连接,通常在同一模型内;而实现是不同语义层中的元素之间的连接,它通常建立在不同的模型内,如设计类到分析类是一种实现关系,94,实现关系,interface,choiceBlock,setDefault,(,choice:Choice,),getChoice,(),:Choice,RadioButtonArray,setDefault,(,choice:Button,),getChoice,(),:Button,PopUpMenu,setDefault,(,choice:String,),getChoice,(),: String,Button,Choice,String,1.*,1.*,1.*,choice,choice,choice,95,4.,依赖,:,依赖指出两个或多个模型元素之间语义上的关系。它表示被依赖元素的变化会要求或指示依赖元素的改变,依赖关系用一个虚线箭头表示,箭头上可附加含关键字的版型,关键字用来指明依赖的种类。在,UML2,0,中的依赖种类如下:,Access,(访问),,bind,(绑定),,call,(调用),,create,(创建),,derive,(派生),,instantiate,(实例化),,permit,(允许),,realize,(实现),,refine,(精化),,send,(发送),,substitute,(替换),,trace,(追踪依赖),,use,(使用),96,Scheduling Engine,依赖关系,Box Office,use,97,5.,约束和派生,(,constraint & derivation,),约束是用自然语言或指定形式语言中的文本表达的语义条件或限制,它用,“,正文字符串,”,形式表示。约束可以附加到任何模型元素上,如前面有关泛化的约束有:不相交、交迭、完全的、不完全的,98,*,*,*,保险,公司,人,公司,保险,合同,xor,*,*,*,保险,公司,人,公司,保险,合同,目录,文件,0.*,ordered,99,1.*,成员,1,1,党派领袖,1,subset,政治家,党派,关联的约束关系,100,self.employer=,self.boss.employer,0.1,工人,*,老板,0.1,公 司,员 工,*,雇员,雇主,101,Cost-price,Sales-price,/profit,Article,profit = Sales-price - Cost-price ,Invoice,+ amount : Real,+ date : Date = Current date,+ customer : String,+ specification : String,- administrator : String=“unspecified”,- maxCount : Integer=0,- numberOfInvoices : Integer,+ status : Status = unpaid,unpaid, paid,102,关联也可以被派生或约束,1 *, person.employer=person.department.employer ,*,1,employer,employer,department,worksForDepartment,/worksForCompany,1,*,公司,部门,人,103,模板,(,Templates,),模板是一个参数化的模型元素,使用它时参数必须在建模时绑定到实际值。模板的同义词是参数化元素。模板类不是一个直接可用的类,因为它有未绑定的参数,必须将它的参数绑定到实际值,以生成实际的类,104,bind,Array,element:Tn,T,n:integerExpression=2,Array,element:Tn,T,n:integerExpression=2,Array,colorArray,模板,(,a,),(,c,),(,b,),105,一个模板类可以是一个一般类的子类,这意味着由绑定该模板而形成的所有类都是给定类(一般类)的子类,作为子类的模板,106,在使用模板生成实际类时,还可在绑定的类中附加特征(,feature,),TopTenList,Array,element:Tn,T,n:integerExpression=2,show:Date,host:person,对绑定的类添加属性,bind,107,静态建模实例,1.,标识候选对象,外部实体:客户,系统业务员,网上购物系统,物流系统,网上支付系统,客户信息管理系统,商品信息管理系统,需要存储、处理的信息:商品的名称、规格、单价,购物车中的物件,订单的订单项(即选购的商品)、支付信息、送货信息。由此可导出候选对象是商品,购物车,订单,108,2.,筛选候选对象,物流系统:未出现在用况图中,删除,网上支付系统:仅作为外部执行者完成网上在线支付功能,删除,客户信息管理系统和商品信息管理系统:只是作为外部执行者参与创建和维护客户信息和商品信息,本案例并不关心这些外部系统的具体细节,删除,系统业务员:在本案例中主要作为修改订单状态的输入者,其自身没有属性,删除,109,网上购物系统:代表本案例的完整系统,所有信息的显示、操作界面等都由网上购物系统来展示,保留,称为“,网上商城,”,客户,、,商品,、,购物车,、,订单,:有明确的属性和操作,保留,考虑到一份订单可以由多个订单项组成,一辆购物车可以放多件物品,因此增加,订单项,和,物件,两个对象,110,3.,标识属性和操作,111,类名,订单,商品,订单项,物件,属性,订单号,订单时间,客户名,订单项, ,/,总金额,送货地址,电话,执行状态,货号,名称,单价,型号,规格,产地,商品名称,型号,单价,数量,/,金额,商品名称,型号,单价,数量,/,金额,操作,设置支付方式,设置订单状态,填写派送信息,显示订单,取消订单,提交订单,退出订购,显示商品,查询货号,显示订单项,显示物件,112,4.,确定类之间的关系,网上商城拥有多件商品和购物车,并能从网上商城查到所有的商品信息,任意多个客户可以到网上商城订购商品,网上商城能查到所有的注册客户信息,一个客户可以拥有多份订单,客户可以查看自己的全部未到货订单,一份订单由多个订单项组成,一个客户只有一辆购物车,一辆购物车可以放多件物件,从购物车可以查到车内所有的物件,一个订单项或物件对应一个商品,但一个商品可对应多个订单项或购物车中的多个物件,113,网上购物系统的类图,*,*,*,*,*,*,*,1,1,1,1,1,1,1,1,1,商品,网上商城,客户,购物车,物件,订单,订单项,114,内容摘要,用况建模,静态建模,动态建模,物理体系结构建模,115,动态建模,动态建模用来描述系统的动态行为,显示对象在系统运行期间不同时刻的动态交互。,UML,中用状态机图、活动图、顺序图、通信图和协作图来建立动态模型,116,状态机图,状态机图通常是对类描述的补充,它说明该类的对象所有可能的状态,以及哪些事件将导致状态的改变。状态机图描述了对象的动态行为,是一种对象生存周期的模型,117,画状态机图的步骤,1,)列出对象具有的所有状态,状态分为起始状态、结束状态和中间状态。一张状态机图可以有一个起始状态和若干个(可以为,0,)结束状态,2,)标识导致状态转换的事件,当一个对象接收到某个事件时,会导致从一个状态转换到另一个状态,称为状态迁移(,transition,),3,)为状态和迁移定义状态变量和动作,在状态迁移和,/,或处于某个状态中时都可能需要执行一些相应的动作,综合这些动作,使得对象完成相应的功能,118,状态名,状态变量,活动,状态,迁移,起始状态,结束状态,状态机图的基本符号,119,电梯升降的状态机图,Moving up,do/moving to floor,Moving down,do/moving to floor,Idle,timer=0,do/increase timer,arrived,arrived,go down (floor),Moving to,First floor,go up(floor),timer=time-out,arrived,go up(floor),On,first floor,120,状态,一个状态由状态名、状态变量和活动三部分组成,状态变量是状态机图所显示的类的属性,也可以是临时变量,活动部分列出了处于该状态时要执行的事件和动作,121,有三个标准事件:,entry,,,exit,和,do,Entry,和,exit,事件用于指明进入和退出该状态时的特定动作,do,事件用于指明处于该状态中时执行的动作,活动区中事件的语法如下:,event-name,opt,(argument list ),opt,guard-condition,opt,/activity-expression,opt,其中,事件名可以是包括三个标准事件(,entry,exit,do,)在内的任何事件,参数表表示该事件所需的参数,警戒条件是一布尔表达式,动作表达式是该事件将被执行的动作,122,login,login time=current time,entry/type “login”,do/get use_name,do/get password,help/display help,exit/login(use_name,password),login,状态,123,自动售货机状态机图,idle,Collecting money,Coins in(amount)/,add to balance,test and compute,Do:test item and compute change,Do:dispense item,Do:make change,Select(item),change, 0,change,= 0,124,状态迁移,1.,状态迁移,引起状态迁移的原因通常有两种:,当标在迁移箭头上的事件出现时会引起状态的迁移。此时,首先执行引起迁移的事件中的动作,然后迁移到新的状态,执行新状态中的内部动作(包括,entry,、,exit,、,do,以及用户定义的动作)。在执行,do,或用户定义的动作时,可以被外部的事件(将导致该状态的迁移)中断,但,entry,动作和,exit,动作是不能被中断的,并且它们总是要执行完的,125,当状态机图中相应的迁移上未指明事件时,表示当位于迁移箭头源头的状态中的内部动作(包括,entry,、,exit,、,do,以及用户定义的动作)全部执行完后,该状态迁移被自动触发,126,自动售货机状态机图,idle,Collecting money,Coins in(amount)/,add to balance,test and compute,Do:test item an
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!