您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 第5章--面向对象系统设计与行为建模
UML系统建模及系统分析与设计王欣张毅编著中国水利水电出版社第5章面向对象系统设计与行为建模教学目的1.掌握交互图和状态机图的表示方法。2.掌握顺序图和通信图的区别。3.掌握顺序图、通信图、状态机图的建模步骤。4.清楚在实际的建模中什么时候该使用顺序图、通信图和状态机图等。5.1面向对象系统设计概述系统设计是问题求解及建立解答的高级策略,必须制定解决问题的基本方法。系统设计要决定系统功能的软件和硬件的分配问题。系统的高层结构形式包括子系统的分解、它的固有并发性、子系统分配给硬软件、数据存储管理、资源协调、软件控制实现、人机交互接口等。用面向对象方法设计软件,原则上也是先进行总体设计(即系统设计),然后再进行详细设计(即对象设计),当然,它们之间的界限非常模糊,事实上是一个多次反复迭代的过程。5.1.1面向对象系统体系结构设计设计阶段先从高层入手,然后细化。⑴系统分解。每次分解的各子系统数目不能太多,最底层子系统称为模块。⑵确定并发性。分析模型、现实世界及硬件中不少对象均是并发的。⑶处理器及任务分配。各并发子系统必须分配给单个硬件单元。⑷数据存储管理。⑸全局资源的处理。⑹选择软件控制机制。⑺人机交互接口设计。5.1.2系统对象设计系统对象设计主要是对分析模型进行整理,生成设计模型提供给OOP作为开发依据。OOD包括:架构设计、用例设计、子系统设计、类设计等。架构设计的侧重点在于系统的体系框架的合理性,保证系统架构在系统的各个非功能性需求中保持一种平衡;子系统设计一般是采用纵向切割,关注的是系统的功能划分;类设计是通过一组对象、顺序图展示系统的逻辑实现。1.面向对象设计的准则⑴模块化。⑵抽象。⑶信息隐藏。⑷低耦合。一般地对象之间的耦合可分为交互耦合和继承耦合。①交互耦合。尽量降低消息连接的复杂程度,应该尽量减少消息中包含的参数个数,降低参数的复杂程度,减少对象发送(或接收)的消息数。②继承耦合。与交互耦合相反,应该提高继承耦合程度。1.面向对象设计的准则⑸高内聚。在面向对象设计中存在3种内聚,即服务内聚、类内聚和一般—特殊内聚。①服务内聚。一个服务应该完成一个且仅完成一个功能。②类内聚。设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的。③一般——特殊内聚。一般说来,紧密的继承耦合与高度的一般——特殊内聚是一致的。⑹可重用。类构件有3种重用方式,分别是实例重用、继承重用和多态重用。①2.面向对象设计的启发规则⑴设计结果应该清晰易懂。使设计结果清晰、易懂、易读是提高软件可维护性和可重用性的重要措施。①用词一致。②使用已有的协议。③减少消息模式的数目。④避免模糊的定义。⑵一般——特殊结构的深度应适当。类等级层次数应保持为7±2。⑶设计简单类。2.面向对象设计的启发规则⑷使用简单的协议。一般来说,消息中参数不要超过3个。⑸使用简单的操作。面向对象设计出来的类中的操作通常都很小,一般只有3至5行源程序语句,可以用仅含一个动词和一个宾语的简单句子描述它的功能。⑹把设计变动减至最小。在设计的早期阶段,变动较大,随着时间推移,设计方案日趋成熟,改动也越来越小了。中的峰值与出现设计错误或发生非预期变动的情况相对应。峰值越高,表明设计质量越差,可重用性也越差。5.1.3面向对象系统设计优化面向对象系统设计优化的方式有:提高优先级;提高效率技术和增加继承等。1.确定优化级系统的各项质量指标并不是同等重要的,设计人员须确定各项质量指标的相对重要性(即确定优先级),以便在优化设计时制定折衷方案。最糟糕的情况是,没有站在全局高度正确确定各项质量指标的优先级,以致系统中各个子系统按照相互对立的目标做了优化,这将导致系统资源的严重浪费。2.优化设计时提高效率技术⑴增加冗余关联以提高访问效率。⑵调整查询次序。⑶保留派生属性。通过某种运算而从其他数据派生出来的数据,是一种冗余数据,通常把这类数据“存储”(或称为“隐藏”)。在计算它的表达式中,如果希望避免重复计算复杂表达式所带来的开销,可以把这类冗余数据作为派生属性保存起来。派生属性既可以在原有类中定义,也可以定义新类,并用新类的对象保存它们。每当修改了基本对象之后,所有依赖于它的、保存派生属性的对象也必须相应地修改。3.建立良好的继承结构⑴抽象与具体。在设计类继承时,很少使用纯粹自顶向下的方法。通常的作法是,首先创建一些满足具体用途的类,然后对它们进行归纳,一旦归纳出一些通用的类以后,往往可以根据需要再派生出具体类。在进行了一些具体化(即门化)的工作之后,也许就应该再次归纳了。⑵为提高继承程度而修改类定义。⑶利用委托实现行为共享。仅当存在真实的一般——特殊关系(即子类确实是父类的一种特殊形式)时,利用继承机制实现行为共享才是合理的。5.2系统交互建模交互图(interactiondiagram)是用来描述对象之间以及对象与参与者之间的动态协作关系和协作过程中行为次序的图形文档。它通常用来描述一个用例的行为,显示该用例中所涉及的对象及这些对象之间的消息传递情况。交互图可以帮助分析人员对照检查每个用例中所描述的用户需求UML2.0交互图包括交互概览图、顺序图、通信图和时间图。5.2系统交互建模交互概览图是顺序图和活动图的结合,将顺序图和活动结合起来描述交互流程和交互细节的一种交互图。时间图应用不多。主要介绍顺序图和通信图,顺序图和通信图在语义上是等价的。建模人员可以先用一种交互图进行建模,然后再将其变换为另一种图而不丢失任何信息。5.2.1顺序图1.顺序图符号顺序图⑴类角色类角色(ClassRole)代表顺序图中的对象在交互中所扮演的角色,位于顺序图顶部的对象代表类角色,类角色一般代表实际的对象。顺序图中对象符号和对象图中对象所用的符号一样将对象置于顺序的顶部意味着在交互开始的时候对象就已经存在了,如果对象的位置不在顶部,那么表示对象是在交互的过程中被创建的。顺序图•ObjectName:ClassName•:ClassName•ObjectName•显示对象名和类名•只显示类名•只显示对象名类角色的表示顺序图⑵生命线生命线(Lifeline)是一条垂直的虚线,表示顺序图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线,生命线是一个时间线,从顺序图的顶部一直延伸到底部,所用的时间取决于交互持续的时间。同一条生命线上的时序是重要的,生命线上的时距并不重要,生命线只表示相对的时序,所以,生命线不是一个时间标尺。对象与生命线结合在一起称为对象的生命线,对象的生命线包含矩形的对象图标以及图标下面的生命线顺序图⑶激活期。激活(Activation)表示该对象被占用以完成某个任务,去激活指的则是对象处于空闲状态、在等待消息。激活是顺序图中表示时间段的符号,在这个时间段内,对象将执行相应的操作。在UML中,为了表示对象是激活的,可以将该对象的生命线拓宽成为矩形,其中的矩形称为激活条或控制期,对象就是在激活条的顶部被激活的,对象在完成自己的工作后被去激活。顺序图•theCustomer:•SafeCharlterator•theRequestOrder:•RequestOrder•(a)生命线•(b)激活期•生命线与激活期顺序图⑷消息。消息(Message)定义的是对象之间某种形式的通信,它可以激发某个操作、唤起信号或导致目标对象的创建或撤销。消息是两个对象之间的单路通信,从发送方到接收方的控制信息流。消息可以用于在对象间传递参数,消息可以是信号,也可以是调用。在UML中,消息使用箭头来表示,箭头的类型表示了消息的类型。顺序图⑸分支与从属流。在UML中存在两种方式可以来修改顺序图中消息的控制流,分别是:分支和从属流。分支是指从同一点发出的多个消息并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。2.消息和消息发送消息是对传送信息的对象之间所进行的通信的规约,其中对将要发生的活动的期望。对一个消息实例的接收可以看做一个事件的发生。在传送消息时,对消息的接收通常会产生一个动作。这个动作可能引发目标对象以及该对象可以访问的其他对象的状态改变。在UML中有以下几种动作:调用:调用某个对象的一个操作。对象也可以给自己发送消息,引起本地的操作调用。返回:给调用者返回一个值。发送:向对象发送一个信号。创建:创建一个对象。撤销:撤销一个对象,对象也可以撤销自己。顺序图顺序图消息类型3.顺序图中的结构化控制⑴可选执行。可选执行的标签是opt。⑵条件执行。条件执行的标签是alt。⑶并行执行。并行执行标签是par。⑷循环(迭代)执行。标签是loop。3.顺序图中的结构化控制4.时间约束的表示在顺序图上,如果消息的箭头和生命线垂直,那么表明立即发送该消息。如果箭头是倾斜的,那么表明该消息的传送有一定的时间延迟,其间可以传送其他消息。建模人员可在顺序图的时间轴附近用标签来定义消息上的时间约束4.时间约束的表示5.顺序图构建⑴确定交互过程的上下文(context),即工作流。⑵识别参与交互过程的对象,即从左到右布置对象。⑶为每个对象设置生命线,即确定哪些对象存在于整个交互过程中,哪些对象在交互过程中被创建和撤消。⑷从引发这个交互过程的初始消息开始,在生命线之间自顶向下依次画出随后的各个消息,即添加消息和条件以便创造每一个工作流。⑸如果需要表示消息的嵌套,和/或表示消息发生时时间点,则采用控制焦点。⑹如果需要说明时间约束,在消息旁边加上约束说明。⑹如果需要,可为每个消息附上前置条件和后置条件。⑺根据消息之间的关系,确定循环结构及循环参数和出口条件。核对付款单的顺序图5.2.2通信图1.通信图符号通信图包含内容⑴类角色类角色(ClassRole)代表通信图中对象在交互中所扮演的角色。在通信图中矩形中的对象代表类角色,类角色代表参与交互的对象,它的命名方式和对象的命名方式一样⑵关联角色。关联角色(AssociationRole)代表通信图中的连接在交互中所扮演的角色通信图中连线代表着关联角色。通信图包含内容⑶消息流。消息流(MessageFlow)代表通信图中对象间通过链接发送的消息。通信图中类角色之间的箭头表明在对象间交换的消息流,消息由一个对象发出,由消息所指向的对象接收。链接用于传输或实现消息的传递。消息流上标有消息的序列号和类角色间发送的消息,一条消息会触发接受对象中的一项操作。通信图包含内容⑶消息流消息定义的格式如下:消息类型标号控制信息:返回值:=消息名参数表消息的类型与顺序图相同。消息的标号有3种:顺序执行:按整数大小顺序执行。标号为1,2…,n。嵌套执行:标号中带小数点。标号为1.1,1.2,1.3,…。并行执行:标号中带小写字母。标号为1.1.1a,1.1.1b,…。多数情况下,只对单调的、顺序的控制流建模。2.通信图构建⑴确定交互过程的上下文(context),即工作流。⑵识别参与交互过程的对象类角色,把它们作为图形的节点安置在通信图中。⑶如果需要,为每个对象设置初始特性。⑷确定对象之间的链(Link),以及沿着链的消息⑸从引发这个交互过程的初始消息开始,将随后的每个消息附到相应的链上。⑹如果需要说明时间约束,则在消息旁边加上约束说明。⑺如果需要,可以为每个消息附上前置条件和后置条件。⑻处理一些特殊情况,如循环、自调用、回调、多对象等。大学生注册系统的通信图5.2.3交互建模的选择1.顺序图与通信图的区别顺序图和通信图都属于交互图,都用于描述系统中对象之间的动态关系。顺序图着重描述对象按照时间顺序的消息交换,并且把用例行为分配给类。通信图着重描述系统成分如何协同工作,强调对象间的结构关系。顺序图和通信图从不同的角度表达了系统中的交互和系统的行为。5.2.3交互建模的选择1.顺序图与通信图的区别顺序图有两个不同于通信图的特征:第一,顺序图有对象生命线。第二,顺序图有控制焦点。通信
本文标题:第5章--面向对象系统设计与行为建模
链接地址:https://www.777doc.com/doc-4777714 .html