您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 单元4-系统的动态建模
单元四系统的动态建模软件工程与UML任务一:建模对象间的交互过程任务二:建模对象间的交互及关联关系目录CONTENTS任务三:建模单个对象的状态转移过程【知识目标】理解动态建模在软件开发中的作用,动态模型与静态模型的关系掌握动态建模的方法【能力目标】能使用适当的动态模型,建模对象间的交互能准确识别对象的不同状态,建模对象的状态转移过程引例描述在初步完成了“书店借书系统”的静态建模以后,我们需要了解系统的执行过程。例如,某个功能的具体流程;完成某个特定功能时,对象间的交互过程;某些特定对象的状态转移过程等。在“书店借书系统”,我们最为关心的是“借还书”流程,“借还书”过程中对象间的交互;“书”对象的状态描述等。任务一建模对象间的交互过程01•根据“书店借书系统”的“借还书”用例文档中的事件路径,建模“借还书”流程的活动图;针对“系统分析阶段”的类图,建模“借还书”的交互过程;针对“系统设计”阶段的类图,建模“借还书”的交互过程。•UML的动态模型包括活动图、顺序图、协作图和状态图四种。顺序图和协作图用于建模系统的交互过程,其中,顺序图着重体现对象间消息传递的时间顺序,协作图着重体现对象间的静态关联关系;状态图用于建模某一特定对象所有可能的状态及状态间的转移,是对类图的补充;活动图主要用于描述用例内部的工作流程。•4.1顺序图•4.1.1定义顺序图•4.1.2关于消息•4.1.3对象的创建和销毁•4.1.4顺序图的主要用途•软件系统中的任务是通过对象之间的合作来完成的,这种合作称为交互。交互模型可以用来描述软件系统中的类、接口、组件、节点的实例的动态行为。交互模型包括顺序图和协作图。•顺序图用来建模对象间的交互,强调按时间顺序展开的信息的传递。它与活动图的相似之处是可以表示流程,但顺序图能进一步地将活动分配给对象。一个顺序图只显示一个控制流。ATM机“登录成功”的顺序图•1.消息的类型(1)同步消息(Synchronous):表示该消息完成之前,同一个对象不能再发送下一条消息。(2)返回消息(Return):表示控制流返回到调用的活动对象。(3)异步消息(Asychronous):表示不必等待来自该消息的响应,同一个对象即可发出下一条消息。(4)简单消息(Flat):表示不区分同步或异步。同步消息异步消息返回消息简单消息•2.消息的传入和传出消息传入某个对象,表示该对象是消息的承担者;消息由某个对象传出,表示该对象是消息的发起者、调用者消息的传入和传出消息的传入和传出•有4条消息传入“订单”对象,说明“订单”类有以下方法:订单.结账()订单.合计总价钱()订单.付款()订单.校验信用卡()•在“订单”对象执行“结账”方法的过程中传出了5条消息,说明这个方法体中作了5处方法调用:订单.结账(){…订单项.计算价钱();订单项.计算税金();订单项.寻找最近的供应商();订单项.计算税金();…(订单).合计总价钱();}•将create消息发送给对象实例,从而即时创建对象,对象创建之后才具有生命线。•destroys消息用于销毁对象,给需要销毁的对象发送这个消息,同时在该对象的生命线上放一个“×”符号,表示对象的生命终止。教师试图修改学生的成绩,但该学生的成绩信息在系统中不存在•顺序图的主要用途之一是表示用例中的行为顺序•在系统开发的早期阶段,顺序图可以应用在高层场景的表达上;后续阶段,则可以确切地表示对象间的消息传递过程。•“书店借书系统”需求分析阶段的“借还书”流程扫描借书卡退还押金清除已还书信息输入所借书的条形码[所借书超出限额部分多于50元]照价赔偿打印借书单借还书成功显示该卡当前所借的所有书籍的信息补收押金[所借书超出限额部分少于50元]超期提醒[借书卡距离有效期不足30天]借还书失败[借书卡超期][还书][不还书][上次借书时有补收的押金][借书][所还书损坏或丢失][不借书][正常借书]系统借书管理员•“书店借书系统”系统分析阶段的“借还书”过程:借书管理员:借书管理员:BorrowUI:BorrowUI:BorrowControl:BorrowControl:BorrowCard:BorrowCard:BorrowInfo:BorrowInfo:Book:Book:BorrowReport:BorrowReport1:扫描借书卡39:34:打印10:清除所还书籍38:35:处理打印2:读卡7:显示在借书籍信息3:验证卡4:26:记录借书信息27:11:清除已还书信息12:30:获得当前借阅信息31:28:修改书籍状态信息29:13:修改书籍状态信息14:36:打印借书单37:8:9:清除所还书籍5:获得在借书籍信息6:15:16:17:登记借书信息18:登记借书信息21:验证借书信息22:23:24:确认借书25:确认借书19:获取书籍信息20:32:显示当前借书信息33:•拓展训练一“网上报销系统”“报销成功”的顺序图•拓展训练二:建模某用户在ATM机上成功取款的的顺序图任务二建模对象间的交互及关联关系02•上一节中,我们对“书店借书系统”建模了“借还书”的交互过程,分析了这一过程中参与的对象,以前它们之间按照时间顺序展开的消息的传递。这里,我们想进一步明确对象间的关联关系,并将对象间的关联映射到类图中,从而得到更完善的类模型。•4.2协作图•4.2.1定义协作图•4.2.2协作图与顺序图的联系和区别•4.2.3协作图、顺序图与代码的映射•协作图可以看做是对象图和顺序图的结合,它能表达对象间的交互过程及对象间的关联关系:WebInterface:StudentInformation:Teacher:DatabaseWrapper:StudentGradesMessageBox2:获得学生数据7:failure8:create9:显示错误信息10:destorys1:输入查询请求3:加载学生信息4:返回学生信息5:加载成绩信息6:没找到该学生成绩信息教师修改学生成绩的协作图•协作图和顺序图是一对孪生兄弟,它们都能表示对象间的交互过程。但是它们的侧重点不同•顺序图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系•协作图清楚地表示了对象间的关联关系,但时间顺序必须从顺序号获得•建模系统的交互过程时,往往需要首先设计类,然后在具体的交互过程中,各个对象的职责得到进一步的明确。这个过程表现为类图和顺序图或协作图的反复迭代:首先完成的类图的结构性设计;然后针对具体的各个流程,进行交互图的建模,将交互过程中的各个行为分配到具体的对象;最后,这些对象的职责映射到类中,从而类图得到完善。•以某订购系统为例,现已有4个类:客户、订单、订单行、零件目录,分别画出下列工作流的顺序图。(1)创建订单行。客户对象向订单发送一个消息说明要订购的零件和数量,创建一个新的订单行对象,订单行对象向零件目录对象获得零件价格。(2)删除订单行。客户对象向订单发送一个消息说明要删除的订单行对象,订单行对象被删除。分析得到系统的类模型,如图零件目录订单行11客户订单**11某订购系统的分析类图根据上面那个类图,进行创建订单行和删除订单行的动态建模,如图。:客户:客户:订单:订单:订单行:订单行:零件目录:零件目录1:说明要订购的零件和...2:创建3:寻找零件4:获得零件价格5:小计6:success7:更新总计8:创建订单行的顺序图(分析模型):客户:客户:订单:订单:订单行:订单行1:说明要删除的指定行2:确定出要删除的订...3:确认删除5:success4:更新订单删除订单行的顺序图(分析模型)根据分析,得到相应的设计类。如图所示。OrderLineCatalogOrderCoustomer某订购系统的设计类图根据设计类图,进行创建订单行和删除订单行的动态建模。进而得到完善的设计类图。:customer:customer:Order:Order:OrderLine:OrderLine:Catalog:Catalog1:addLine()2:orderLine()3:getPrice()4:countPrice()5:6:updateTotal()7:创建订单行的顺序图(设计模型)根据设计类图,进行创建订单行和删除订单行的动态建模。进而得到完善的设计类图。:customer:customer:Order:Order:OrderLine:OrderLine1:deleteLine()2:OrderLine()3:4:updateOrder()5:删除订单行的顺序图(设计模型)完善后的设计类图•建模对象间的交互及关联关系“借还书成功”的过程中各个业务对象间的交互用协作图如图所示:借书管理员:BorrowUI:BorrowControl:BorrowCard:BorrowInfo:Book:BorrowReport21:验证借书信息1:扫描借书卡9:清除所还书籍17:登记借书信息24:确认借书34:打印8:16:23:33:39:2:读卡10:清除所还书籍18:登记借书信息25:确认借书35:处理打印7:显示在借书籍信息15:22:32:显示当前借书信息38:5:获得在借书籍信息11:清除已还书信息26:记录借书信息30:获得当前借阅信息6:12:27:31:13:修改书籍状态信息19:获取书籍信息28:修改书籍状态信息14:20:29:36:打印借书单37:3:验证卡4:逻辑设计阶段“借还书成功”的协作图•建模对象间的交互及关联关系逻辑设计阶段“借还书成功”的类图完善后的类模型如图所示•拓展训练一:银行“转账”过程的建模•拓展训练二:某订购系统的交互过程建模任务三建模单个对象的状态转移过程03•在“图书馆管理系统”中,不光需要保存同样一种书的共同信息(书名、ISBN号等),还需要区别每一本不同的书,因为这些相同的书通常会被不同的读者借走。我们可以看到,图书馆的书通常都贴了专用的“条码”,这就是图书馆每一本藏书的唯一标识。因此,在“图书馆管理系统”需要有两个类来分别存储上述信息。一般地,设计一个Book类,对应每一本具体的书;设计一个BookInfo类,对应每一个ISBN号(即存储相同书的共同信息)。•在处理借书和还书的过程中,对BookInfo类通常都是只读的,但需要修改Book类的状态信息,以标识出当前书是处于外借还是在架状态。这样做的好处,一方面可以方便系统进行统计、查询、预定等处理;另一方面可以根据书当前的状态,确定对它允许进行哪些操作。•试对“图书馆管理系统”中的“Book”对象进行建模,描述其所有可能的状态以及状态间的转移过程。•4.3状态图•4.3.1定义状态图•4.3.2状态图的建模过程•4.3.3状态图与代码的映射•4.3.4状态图实例•当前处于Locked状态,若发生coin事件,则变迁到Unlocked状态,调用Unlock方法。•当前处于Unlocked状态,若发生pass事件,则变迁到Locked状态,调用Lock方法。•当前处于Unlocked状态,若发生coin事件,则变迁到Unlocked状态,调用Thankyou方法。•当前处于Locked状态,若发生pass事件,则继续停留在Locked状态,调用Alarm方法。地铁十字转门的状态图状态图的基本符号状态图通常作为对类图的补充,完善类中依赖于状态的各种行为。然而,在使用上并不需要为所有的类画状态图,而仅需要针对那些有多个状态,及行为会受状态取值影响而发生改变的类画状态图。状态图中需要着重表示以下信息:(1)对象当前的状态;(2)发生了某种事件才会引起状态间的转移;(3)由一个状态转到另一个状态的实现过程(通常通过方法调用实现)。状态图的建模过程通常如下:(1)识别出对象所有可能的状态;(2)识别引起对象转移的所有触发因素(事件或条件);(3)表示状态转移的实现过程(方法或行为);(4)完善类模型。在完成了上述步骤以后,还需要把状态图映射到类,从而完善类中相关的属性和操作。另外,在建模状态图的过程中可以进行必要的分组,即将具有共性的
本文标题:单元4-系统的动态建模
链接地址:https://www.777doc.com/doc-7876528 .html