软件工程-第9-12章:三大模型_第1页
软件工程-第9-12章:三大模型_第2页
软件工程-第9-12章:三大模型_第3页
软件工程-第9-12章:三大模型_第4页
软件工程-第9-12章:三大模型_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

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

文档简介

面向对象方法学,基本原则:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。,面向对象方法以数据为主线,将数据和操作方法封装在对象中,通过消息请求对象主动执行它的内部操作,改变其内部私有数据。,1.面向对象方法四个要点,OO=Objects+Class+Inheritance+Communicationwithmessage,与人的思维方法一致稳定性好可重用性好较易开发大型软件产品可维护性好,2.面向对象方法的优点,3.面向对象建模,用面向对象方法开发软件,通常需要建立三种形式的模型:(1)对象模型:描述系统的数据结构(2)动态模型:描述系统的控制结构(3)功能模型:描述系统的功能,4.UML(UnifiedModelingLanguage),是OOAOOD发展的产物1995年10月:第一个公开版本UM0.81996年6月:UM改名为UML(UnifiedModelingLanguage),发布UML0.91996年底:UML占面向对象技术市场的85,成为可视化建模语言的工业标准现版本:UML2.0,UML的内容由五类图(9种图形)来定义:(1)用例图:从用户角度描述系统功能,(2)静态图:类图、对象图和包图,对象图和包图,(3)行为图、活动图,(4)交互图:顺序图、协作图,TicketServer,Kiosk,SalesTerminal,1,1,*,*,*,*,1,节点多重性,(5)实现图:配置图,对象模型与静态建模,现实世界,认识抽象,概念模型,信息世界,1.实体,一类图,术语标准、含义确切、名词或名词短语,可见性属性名:类型名=初值性质串+public-private#protected,可见性操作名(参数表):返回值类型性质串,2.类图中的关系,(1)关联:某种语义上的联系,依赖,一个元素以某种方式依赖于另一种元素,具有偶然性。,(2)依赖,聚合:对象是可以分离的,有各自的生命周期组合:为一种唇齿相依的关系。,都表示整体与部分的关系,(3)聚合、组合,组合和聚合示例,泛化与细化:都表示一般与特殊的关系,即“一般”元素是“特殊”关系的泛化。,(4)泛化、细化,(5)关联关系,标准关联,如老师类与学生类,只有一个类知道关联的存在,整体与局部的关系,如车与轮胎,拥有关系,如公司与员工,类的一个实例与另一个实例相关,两个类关联产生第三个类的实例,思想:降低软件复杂度从一对多转化成一对一从多对多转化成一对多,限定关联,二静态建模,任何建模语言都以静态建模机制为基础。静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。,UML的静态建模机制包括:用例图(Usecasediagram)类图(Classdiagram)对象图(Objectdiagram)包图(Packagediagram)构件图(Componentdiagram)配置图(Deploymentdiagram),1.类的识别,类识别是面向对象方法的难点,又是建模的关键。,关键是要定义类的“属性”及“操作”,常用的方法有:名词识别法实体识别法用例识别法分解与抽象技术,(1)名词识别法,识别问题域中的实体,实体的描述通常用名词、名词短语、名词性代词的形式出现。,用指定语言对系统进行描述从系统描述中标识名词、名词短语、名词性代词识别确定(取、舍)类,名词识别步骤:,用指定语言对系统进行描述,与领域专家共同合作完成遵循问题域中的概念和命名原则,识别确定类(取、舍),从系统描述中标识名词、名词短语、名词性代词,包括:可感知的事物、角色、事件、相互作用、人员、场所、组织、设备和地点等。,用指定语言对系统进行描述,识别确定(取、舍)类,从系统描述中标识名词、名词短语、名词性代词,去掉冗余类去掉不相干的类:与问题无关或关系不大的类。删除模糊类或独立性不强的类:边界定义不确切,或范围太广。操作不适宜作为对象类,系统存储、分析、处理的信息实体系统内部设备与系统交互的外部系统系统相关人员系统的组织实体,(2)实体识别法,例:购物超市管理系统顾客挑选商品后,由收款机收款,收款机读取商品上的条型码标签,并计算商品价格。收款机应保留所有交易的记录明细,以备帐务复查及汇总。,通过分析问题的陈述,确定以下几类实体:信息实体内部设备交互系统人员职责系统的组织实体:(不考虑),交易记录、商品、税务信息、销售记录、存货记录,:收款机、条型码扫描器。,:信用卡付款系统。,:收款员、顾客、会计、经理。,如用例的描述中出现哪些实体?用例执行过程中产生并存储哪些信息?与用例关联的角色向用例输入什么信息?用例又向该角色输出哪些信息?,(3)用例识别法,分解技术整体类、组合类单个类抽象技术建立抽象类、继承关系,(4)分解与抽象技术,2.医院病房监护系统,(1)问题描述为了对危重病人进行实时监护,随时了解病人病情,及时进行处理,建立病房监护系统。病症监视器安置在每个病床,通过网络将病人的病症信号(组合)实时传送到中央监护系统进行分析处理。在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异常时,系统会立即自动报警,并打印病情报告和更新病历。,请对系统需求进行分析!,经过初步的需求分析,得到系统功能要求:监视病员的病症(血压、体温、脉搏等)定时更新病历病员出现异常情况时报警。随机地产生某一病员的病情报告。,监视病情,更新病历,监视器网络值班护士医生病人病症监视中央监护系统报警信号标准病症信号库病历库病人病症信号病情报告标准病症信号病历中心值班室处理组合病症信号,分析确定类:去掉冗余类、去掉不相干的类、删除模糊的类或性质独立性不强的类、操作不适宜作为对象类,确定初始类:,值班护士医生病人病症监视中央监护系统报警信号标准病症信号库病历库病人病症信号病情报告病历标准病症信号,(2)确定系统的类,在需求分析阶段:类图是研究领域的概念在设计阶段:类图描述类之间的接口在实现阶段:类图描述系统中类的实现,3.类图的抽象层次和细化关系,类图的层次1.概念层2.说明层3.实现层,功能模型和用例建模,一用例图,用例图是用户能观察到系统功能的模型图用于静态建模阶段业务建模、需求建模,1.组件,系统,2.关系,实例:参与者之间的泛化关系参与者:经理,安全主管,保安用例:管理人事,批准预算,批准安全证书,监视周边参与者参与用例的情况分别是:经理参与用例管理人事和批准预算;安全主管参与用例批准安全证书;保安参与用例监视周边。,如果要求安全主管可以担任经理和保安的角色,这样,安全主管与经理,安全主管与保安之间存在泛化关系,安全主管就可以参与全部4个用例。但经理或者保安却不能担任安全主管的角色,也就不能参与用例批准安全证书。,include,包含用例是必不可少的,缺少包含用例,基用例就不完整;包含用例是必须执行的;包含用例执行不会改变基用例的行为。,(3)用例间关系包含,包含用例,基用例,扩展用例是可有可无的,缺少扩展用例,不影响基用例的完整性;扩展用例在一定条件下才会执行;扩展用例执行会改变基用例的行为。,extend,扩展用例,基用例,用例间关系扩展,表示一个用例使用另一个用例,use,使用用例,基用例,用例间关系使用,短途旅行中,司机要为汽车加油和吃饭。,include,extend,实例2用例之间扩展和包含关系,必不可少的必须执行的不会改变基用例行为的,总结:,可有可无的一定条件下执行的会改变基用例行为的,包含扩展,综合实例:演出售票系统,个人通过公用信息亭购买个人票,也可直接向售票员购买,但购买团体票只能通过售票员。售票系统需要信用卡付款服务的支持。另外在系统中提供一个安全监测机制。,用例Buytickets买个人票BuySubscription团购Makecharges付款Surveysales安全管理,BoxOffice,二用例建模,用例驱动的系统分析与设计方法已成为面向对象的系统分析与设计方法的主流。,UML用例模型一直被推荐为识别和捕获需求的首选工具!,1.作用描述系统的功能需求;宏观上的总体轮廓;典型用例的分析;,执行者所理解的系统功能需求;驱动了需求分析之后各阶段的开发工作;用于验证和检测所开发的系统。,2.如何建立用例模型?,1.定义系统,确定执行者和用例,描述关系,确认模型,确定范围、分析功能,2.,3.,4.,执行者:用户或系统用例:子系统或独立功能,关联、使用、扩展、泛化、依赖,模型与需求的一致性(用户与开发者共同完成),角色+系统,如何确定执行者:谁使用系统的主要功能、获得支持和服务?谁需要使用系统产生的结果(值)?谁维护管理系统的日常运行?系统需要控制哪些硬件设备?系统需要与其它哪些系统交互?,用例的启动者,3.确定执行者(Actor),(主执行者),(主要设备),(副执行者),(交互系统),(利益攸关方),用例是用户与系统之间的典型交互。,实现一个具体的用户目标;由执行者激活,并将结果值反馈给执行者;具有功能上的完整描述。,4.确定用例(usecase),用例特点:,执行者需要系统提供哪些功能?执行者是否对系统数据进行操作?现实系统存在的问题是什么?数据流跟踪(对数据的一类操作)?,如何确定用例:,5.用例之间的关系,系统的主要功能是:包括项目管理,资源管理和系统管理三大管理功能。项目管理包括项目的增加、删除、更新。资源管理包括对资源和技能的添加、删除和更新。系统管理包括系统的启动和关闭,数据的存储和备份等功能。,实例:项目与资源管理系统的Usecase图,(1)分析确定系统的执行者(角色),项目管理员、资源管理员、系统管理员、备份数据系统。,项目管理,资源管理和系统管理。,(2)确定用例,(3)对用例进行分解,画出下层的Usecase图,以及相互关系,画出相应的执行者描述模板、用例描述模版,对上层的用例进行分解,并将执行者分配到各层次的Usecase图中。,自顶向下不断细化,抽象出不同层次的UseCase图。,实例:医院病房监护系统,(1)问题描述为了对危重病人进行实时监护,随时了解病人病情,及时进行处理,建立病房监护系统。病症监视器安置在每个病床,通过网络将病人的病症信号(组合)实时传送到中央监护系统进行分析处理。在中心值班室里,值班护士使用中央监护系统对病员的情况进行监控,监护系统实时地将病人的病症信号与标准的病诊信号进行比较分析,当病症出现异常时,系统会立即自动报警,并打印病情报告和更新病历。,请对系统需求进行分析!,经过初步的需求分析,得到系统功能要求:监视病员的病症(血压、体温、脉搏等)定时更新病历病员出现异常情况时报警。随机地产生某一病员的病情报告。,监视病情,更新病历,病症监视器采集到的病症信号,格式化后实时的传送到中央监护系统。中央监护系统将病人的病症信号与标准的病症信号进行比较,出现异常时系统自动报警。出现异常时,系统自动更新病历并打印病情报告。值班护士可以查看病情报告并进行打印。医生可以查看病情报告,要求打印病情报告,也可以查看或要求打印病历。系统定期自动更新病历。,(2)需求分析系统功能,通过六个问题识别角色谁使用系统的主要功能?谁需要系统的支持以完成日常工作任务?谁负责维护、管理并保持系统正常运行?系统需要处理哪些硬设备?系统需要和哪些外部系统交互?谁(或什么)对系统运行产生的结果(值)感兴趣?,(3)建立系统的用例模型,值班护士、医生、病人,值班护士、医生,系统管理员,监护器,网络,报警系统,标准病症信号库、病历库,同(2),通过回答这六个问题以后,再进一步分析可以识别出本系统的四个角色:值班护士,医生,病人,标准病症信号库。,角色描述模板:,(4)识别用例,通过四个问题确定用例与系统实现有关的主要问题是什么?系统需要哪些输入/输出?这些输入/输出从何而来?到哪里去?执行者需要系统提供哪些功能?执行者是否需要对系统中的信息进行读、创建、修改、删除或存储?,通过分析可以初步识别出系统的用例为:中央监护,病症监护,提供标准病症信号,病历管理,病情报告管理。,顶层用例图为:,医院病房监护系统高层用例图,中央监护分解信号:将从病症监护器传送来的组合病症信号分解为系统可以处理的信号。比较信号:将病人的病症信号与标准信号比较。报警:如果病症信号发生异常(即高于峰值),发出报警信号。数据格式化:格式化处理后的数据。,(5)分解用例,病症监护信号采集:采集病症信号模数转化:将采集的模拟信号转化为数字信号信号数据组合:将采集到的脉搏,血压等信号数据组合为一组信号数据。采样频率改变:根据病人的情况改变监视器采样频率。,提供标准病症信号(此用例不分解)病历管理生成病历查看病历更新病历打印病历病情报告管理显示病情报告打印病情报告,分解的用例图,动态模型与动态建模,一、顺序图,用来表示用例中的行为顺序每条消息对应一个类操作或状态转换的事件展示在场景或用例的事件流中对象之间的交互按照时间顺序描述消息在对象间传递过程浏览顺序图的方法:从上到下查看对象间交换的消息,Object:Class,1.顺序图中组件,消息,2.顺序图与用例图和类图的关系,3.顺序图示例1,消息格式:operation(parameterlist)向哪个对象发消息实际上就是调用它的类中的操作,就是调用箭头指向的对象所在类的一个operation。,订单类发消息给客户类调用客户类中的“验证客户”操作。,从参与者到对象和从对象到参与者之间发送的消息,从对象传递给另一个对象的消息,在类图中的类的对象,系统的使用者或参与者,系统是为某个用例的某个场景设计的,对象生命线表示从上到下的时间顺序,消息1在消息2之前发生,消息2在消息3之前发生,窄长方框用以强调这个部分处于活动状态,信息亭,售票中心,信用卡服务,Kjosk类中的操作:ShowAvailable(seat-list)DemandPayment(cost)printtickets(performance,seats)ejectcardBoxOffice中的操作有Request(count,performance)SelectSeatsInsertCard(CardNumber)authorizedCreditCardService类中的操作有charge(cardnumber,cost),4.顺序图示例2:演出售票系统,信息亭,售票中心,信用卡服务,顾客在信息亭与售票中心通话触发了这个用例的执行。顺序图中付款用例包括售票中心与信息亭和信用卡服务处使用消息进行通信过程。,4.顺序图示例2:演出售票系统,信息亭,售票中心,信用卡服务,信息亭发Request(count,performance)消息给售票中心,表示调用售票中心类的Request(count,performance)操作,来查询演出的信息。,4.顺序图示例2:演出售票系统,信息亭,售票中心,信用卡服务,售票中心发ShowAvailable(seat-list)消息给信息亭,表示调用信息亭类中的ShowAvailable(seat-list)操作,给出可用的座位表。,4.顺序图示例2:演出售票系统,打印操作的协作图,:Computer,Print(ps-file),:PrinterServer,:Printer,1:Print(ps-file),打印机空闲1.1:Print(ps-file),二、协作图(合作图),展示对象的关联和消息传递过程强调交互对象的语境和整体结构(空间组织布局图)可以表示类操作的实现箭头表示消息发送的方向,编号为消息的执行顺序顺序图和协作图可以相互转换,1.协作图中的组件,标签,Object:Class,2.消息标签消息标签格式,序列表达式消息名,前缀的语法规则:序列号,序列号,序列号/前缀用来同步线程,意思是在发送当前消息之前指定序列号的消息被处理。,2.消息标签消息标签格式,序列表达式消息名,守卫条件的语法规则:条件短句说明:条件短句通常用伪代码或真正的程序语言来表示。例:x=0,2.消息标签消息标签格式,序列表达式消息名,序列表达式:同一个线程内的所有消息按照顺序排列。执行顺序的编号方案有两种:顺序法:用简单编号方案,从1开始,由小到大,顺序排列。层次法:用小数点制编号方案,此时常常要求表示系统号、子系统号和模块号,UML使用小数点方案。,2.消息标签消息标签格式,序列表达式消息名,返回值和消息名:返回值表示一个消息的返回结果,消息名指出了消息的名字和所需参数。例:x:=calc(n),2.消息标签消息标签格式,序列表达式消息名,1.1a,1.1b,1.1c/x=01.2*i:=1.n:x:=calc(n),3.协作图与顺序图的区别和联系,相同点:对象间的交互作用不同点:顺序图侧重于交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系,而协作图侧重于对象间的关系(强调空间),但时间顺序必须从顺序号获得。,4.打印操作的协作图,actor发送Print消息给Computer,Computer发送Print消息给PrintServer,如果打印机空闲,PrintServer发送Print消息给printer,:Computer,Print(ps-file),:PrinterServer,:Printer,1:Print(ps-file),打印机空闲1.1:Print(ps-file),5.乘坐电梯的协作图,事物:参与者按钮对象电梯控制对象命令对象工作队列电梯对象关系:链接,参与者从系统外部按下按钮,然后1.电梯系统操作启动,电梯控制对象以循环的方式检查所有工作序列,并选择一个最短的工作队列。2.创建作业命令,将其放入工作队列,并激活队列。3.电梯对象并发运行,从它的队列中选择一个作业并执行。(电梯是一个活动对象,它与它的控制线程并发执行),:button,:Elevator,Control,:Queue,:Elevator,:Order,new,:Actor,1:GetElevator(floorId),1.1*allqueues:len:=Length(),1.3:Invoke(job),1.2:Create(),2:nextjob:=Get.job(),Push(),动态模型主要描述系统的动态行为和控制结构。,在动态模型中,对象间的交互是通过对象间消息的传递来完成的。,三、会议管理系统,用户可按照会议人数、会议时间预订会议室。可以只预订次,也可预订定期召开的会议。开会前允许修改会议时间、人数,重新选择会议室,取消预订的会议。确定会议预订后,会议中心负责会务管理:包括通过邮寄或电子邮件,通知开会人员有关会议信息。系统根据会议室的使用情况(紧张与否),调整、更改会议室和会议时间,并调整修改预订会议的时间。,角色识别会议管理者会议申请者邮局会议人员管理系统维护者,(1)建立用例模型,用例识别,与会议管理者相关的用例定义一个会议更改一个会议删除一个会议,与会议申请者相关的用例申请会议召开更改申请取消申请定义参加人员归还会议室,与邮局相关的用例与会议人员管理相关的用例定义参加人员取消申请申请会议召开更改申请,与系统维护者相关的用例会议室维护设定预定时限,对用例的进一步描述,用例1、定义会议(DefineMeeting)输入会议名称确定会议规模确定会议类型其中会议规模是指参会人数范围。,用例、更改会议(AlterMeeting)改变会议名称改变会议规模改变会议召开频度,用例、删除会议(RemoveMeeting)如果该会议没有召开申请从会议列表中删除如果该会议有召开申请取消与之相关的会议召开信息删除该会议使用:用例8删除参加人员(RemoveAttendee)用例6取消申请(CancelRequest),用例4、申请会议召开(RequestMeetingInstance)确定召开时间(年、月、日)确定参加人员确定侯选会议室发会议通知使用:用例11发会议通知(InformofMeeting)用例13选择参加组(SelectGroupAttendee)扩展:如果召开时间在申请时限之外用例12申请拒绝(RequestRejection)如果还没定义参加人员用例7定义参加人员(AddAttendee),用例5:更改申请(ModifyRequest)更改召开时间更改参加人员更改取得会议室发会议更改通知使用:用例13选择参加组(SelectGroupAttendee)用例11发会议通知(InformofMeeting)扩展:如果更改的时间不合法用例12申请拒绝(RequestRejection)用例7定义参加人员(AddAttendee),用例6:取消会议召开(CancelRequest)取消申请归还会议室发会议取消通知使用:用例8归还会议室(ReleaseRoom)用例14发会议取消通知(InformRejection)扩展:如果会议已召开用例12申请拒绝(RequestRejection),用例7:定义参加人员(AddAttendee)输入参加人员的详细信息定义参加组,用例:归还会议室(ReleaseRoom)输入会议室号码输入使用时间删除参加人员归还会议室使用:用例10会议室维护(MeetingRoomMaintenance)用例18删除参加人员(RemoveAttendee),用例10:会议室维护(MeetingRoomMaintenance)加入一个会议室(用例15)标记一个会议室不可用(用例16)查询会议室预定情况(用例17),用例9:设置预定时限制(SetReservationTomeLimit)设置时间限制,会议管理系统的Usecase图,(2)建立类模型,除了用例模型外,其它模型都依赖于类模型,因此,类模型是方法的核心,类模型从对象的角度描述系统的组成,描述类(对象)及相互间的关系。Meeting类,标识一个会议(名称、

温馨提示

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

评论

0/150

提交评论