• / 38
  • 下载费用:20 金币  

软件设计工具第三次课

关 键 词:
软件设计工具第三次课
资源描述:
软件设计工具 第三次课 周秉锋 北京大学计算机科学技术研究所 二教316教室 北京大学 每周三,第7-9节 2017.09 第四章 交互与交互图 1.用交互描述软件的动态行为 •例子: 图4.1 “浏览位图”的用例图 描述系统的边界:首先得出用例图 •每一个用例都对应系统的一个动作序列 •序列最初是用文本(形式的或非形式的)的方式描 • 例如:图4.1这样的描述, •精确性较差 •不标准 • UML里,直观的,标准的和面向对象的方式 是: • 交互和交互图 • 活动图(Activity diagram) • 状态机图( State machine diagram) • --- 描述软件系统的动态行为 • 交互图分为两种:… 描述系统的边界:首先得出用例图 •交互图分为两种: • 序列图 • 协同图 • 它们在语义上是等价的 • 意味着可以互相转换 • 序列图 • 强调的是为实现此行为系统在时序方面的特; • 协同图 • 强调系统在结构方面的特性 序列图 •在考察一个系统的对象的交互时 • 通常从序列图开始 • 然后将序列图转换为协同图 • 以分析系统在结构方面应该具备的特点 • 用软件实现图4.1指定的动态行为 • 首先 • 考虑系统外部和系统打交互的对象 • 已经在图4.1中标识 • 系统作用者:“用户”和“显示窗口” • 将这两个外部对象描绘在交互图上(图4.2) • 之后,十分自然地,也是“面向对象”地 • 考虑在系统中应该如何设置担负不同职责的软件“角色” • 它们共同完成这一任务 • 这如同当人们需要互相协同来完成某一工作时,需要进行分 工一样。 • 这样的“角色’’,在UML中,被称为对象。 •Role-“Role is a prototypical object” -New in UML 2.0 序列图 序列图 •具有相同的结构和行为的所有对象,被抽象为 类 • 这是UML中典型的“类”/“实例”两分法 • 在UML中,对象和类使用相同的图形符号( 矩形)来标识 • 为了区分对象和类 • 在对象的名字下面用下划线以示区别 • 系统作用者是类的变体( stereotype) • 在交互图里, • 当变体的对象出现时 • 将保持此变体的图形符号 消息 •在前面的用例中,用户和系统的交互,可以分 为三个连续执行的动作 • 1、用户在位图区域内按下鼠标左键; • 2、保持左键按下拖动鼠标; • 3、释放鼠标左键。 •这三个动作构成了系统作用者和系统的联系 • 每一动作都相当于向系统发出了一个命令 • 系统必须在内部执行相应的操作 • 以正确响应这命令。 • 这命令,在UML里被称为 • 消息( message) 对象的设置 •消息在对象间传递, • 用于启动目标对象内部的某些操作。 •在考虑系统内部对象的设置时 • 出于系统“外壳’’与系统内核的区分的考虑 • 专设一个对象用于接收用户传来的鼠标消息 • 这就是“接收鼠标消息’’这一对象的用途 • 这对象收到操作系统传来鼠标消息后,把它传给 • 为“浏览位图’’这个工具专设的对象: • “处理鼠标消息’’, • 它把由操作系统传来的无特定语义的鼠标消息 • 解释为“浏览位图’’赋予它们的语义 • 并发送消息给bmpviewer的系统内核里的对象 • (系统数据),执行具体的操作。 2.对象 •在UML里,对象指的是某一种抽象的坚实存在,它是封装了 状态和行为的具有明确边界和身份的实体。 • 具有相同的结构和行为的对象,在UML里被称为类。 • 因此,对象应该和某一类相对应。 • UML里,对象使用与其对应的类一样的图符。 • 为了使对象的图符和类的图符相区别, • 图符中对象的名字下面加有下划线(图4.3)。 • 对象的名字 • 在对象的名字后面标上此对象的实现类的名字 • 对象名和类名之间用冒号分开。 • 对象名可以缺失 • 只写此对象对应的实现类的名字 • 表示它是此类的一个对象 • 只标记类而不标记对象名的对象称为匿名对象(anonymous object)。 • 标记名字的对象称为记名对象(named object)。 2.对象 •对象、对象名、类名 图4.3 对象、对象名、类名 3.消息 •对象间的互相合作与交互表现为一个对象以某 种方式启动另一个对象的活动 •这种交互在UML里被定义为消息 • 消息是对对象间的一种信息的通讯的描述,此信 息期望在通讯完成之后,某一活动会随之发生 •消息相当于向目标对象发送了一条命令,此命 令启动了目标对象的一个动作 • 动作一般通过函数调用(call)启动 • 但也可以通过其它方式 3.消息 •消息所能采取的形式: • 调用(call):启动一个对象里的操作。 • 操作是对象的类所能提供的服务的实现。调用消息 一般是顺序执行的。 • 返回(return):操作向调用者返回一个值。 • 发送(send):向一个对象发送一个信号。 • 发送消息是异步消息 • 意味着发送消息的对象在发送了消息给目标对象后,不论目 标对象是否接受此消息,它都继续进行下一消息的发送。 • 创建(create):此消息的发送导致目标对象被创建 。 • 销毁(destroy):此消息的发送导致目标对象被销毁。 3.消息 •消息的表示 • 在UIIL里,消息用箭头表示 • 此箭头从发送消息的对象指向接收消息的对象 • 在消息的各种形式中 • 创建和销毁消息 • 用消息的变体来表示 • 返回消息 • 用带虚线的箭头表示 • 发送消息 • 发送消息又称为异步消息 • 用半箭头表示 • 调用消息 • 调用消息又称为简单(simple)消息 • 用整箭头表示。 (图4.4) 3.消息 图4.4 消息的发送形式 3.消息 •消息的表示 • 消息可以有名字 • 它列在消息的箭头的直线上 • 如果对象的实现类已经确定 • 则此名字可以标记为实现类的某一 操作的定义 • 例如,C/C++语言里的函数定 义等 • 消息的发送是有顺序的 • 此顺序由它在序列图垂直方向上的位置决 定 • 垂直方向靠近序列图的顶端的消息先执行 • 靠近序列图底部的消息后执行 • 因此每一消息都有一顺序号… 图4.5消息、消息名和消息顺 序号(单调顺序号) 3.消息 •消息的顺序号 • 此顺序号可前缀于消息的名字前面 • 它们之间用冒号分隔(图4.5)。 • 顺序号分为两种: • 单调顺序号(flat sequence) • 单调顺序号严格按照消息的发送顺序排列 • 如:1,2,3….,等等(图4.5) 图4.5 消息、消息名和消息顺序号(单调顺序号) 3.消息 •… •过程顺序号(procedual sequence) • 过程顺序号是嵌套式的 • 当一个消息启动了另一个消息序列时,此消息 序列内的各消息就可以重新开始编号。 • 如:消息2发送后,启动了其后的一系列消息,则这 些消息就可以编号为2.1, 2.2, 2.3….,等等(图4.6) 。 图4.6过程顺序号 4.交互 •软件系统中的任务是通过对象之间的合作来完成的。 •对象之间的合作是通过对象之间的消息的传递实现的 。 •对象之间的合作在UML里被称为交互。 •交互是为达某一目的而在一组对象之间进行消息交换 的的行为。 • 交互可以对软件系统为实现某一任务而必须实施的动态行 为进行建模。 • 交互的所包含的UML建模元素包括 • 对象或角色(role) • 消息 • 它们必须通过某种载体表现出来 • 在UML中,此载体就是交互图。 5.交互图 •交互图的定义 • 交互图描述了一个交互,其中包括了一系列的对象及其关 系以及通过这些关系在对象之间传递的消息。 • 交互图可分为两类: • 序列图 • 协同图 • 它们在语义上是等价的 • 这意味序列图和协同图内部包含的信息是相同的 • 因此两图可以互相推导 • 如果通过工具,它们可以互相自动转换 • 交互图可以为软件系统的下列构成的对象的动态行为进行建模 : • 类 • 接口 • 部件(成品) • 节点 5.交互图 •交互图中的这些对象(角色)可以处于一个 或多个场景中 •以实现相应的用例所规定的任务 •通过用交互图进行建模,可以对这些交 互所涉及的各对象的动态特性进行 • 视化 • 说明 • 建造 • 建档。 6.序列图 • 序列图的定义 – 序列图是交互图的一种, 它强调的是消息发送的时间的先后顺序。 • 序列图的构成 – 参加交互的各对象在序列图的顶端沿水平方向排列 – 对象之间传递的消息 • 用箭头表示, 水平放置,沿垂直方向排列 • 在垂直方向上越靠近序列图顶端的消息越先发送 – 从而给出了消息被发送的先后顺序的明确而直观的表示 •每个对象的底部中心都绘有一个垂直虚线 – 当一个对象向另一个对象发送消息时 • 消息符号始于发送对象底部的虚线 • 终止于接受对象底部的虚线 •这条虚线被称为对象生存线( object lifeline ) – 对象生存线代表一个对象在一个时间段内的存在 • 如果在序列图上某一对象收到了创建消息或销毁消息, 则此对象 的生存期 – 开始于它收到创建消息的时刻, – 终止于收到销毁消息的时刻. • 6.序列图 图4.7 序列图、对象生存线、控制焦点 6.序列图 • 动作(Action) • 当一个对象收到了消息后,此对象把消息当做执 行某种动作的命令。 • 在UML里,一个动作(Action)被定义为: • 动作是一系列的可执行的元计算(atomic computation)的 执行,这些元计算的执行可导致系统状态的变化或某一值 的返回。 • 函数的执行就是动作的典型的例子。 • 动作有明确的开始时刻和终止时刻。 • 在动作的执行过程中,会导致其它一系列的消息的顺序发 送 • 一个典型的例子是: • 函数调用其它函数 6.序列图 • 控制焦点 • 在UML里,由消息引发的动作的执行过程 被描述为控制焦点 • 定义: • 控制焦点代表一个对象直接地或通过一个子过 程间接地执行一个动作的那段时间。 • 绘制: • 它由位于对象生存线上的一个窄长方形代表 • 控制焦点长方形的顶端代表动作的开始时刻 • 底端代表动作的结束时刻。 • 控制焦点可以理解为是C语言中一对花括号 (“{}”)内的内容 6.序列图 •控制焦点的嵌套 • 动作的执行可以引起其它消息的发送 • 从而对应子动作的执行 • 就产生了控制焦点的嵌套 • 控制焦点的嵌套的表示 •另一个控制焦点向右叠放在父控制焦点上 •子控制焦点中消息发送的顺序号可以用过程顺序号表示( 图4.7)。 •对象生存线和控制焦点 • 是序列图所特有的 • 它不在协同图里出现。 7、协同图 •协同图是交互图的另一种表现形式。 •它在语义上和交互图是等价的(图4.8) 图4.8 协同图、消息、连接 7、协同图 •协同图强调的是参加一个交互的各对象的组织 •协同图的构成: • 对象 • 连接 • 在此连接上传递的消息 图4.8 协同图、消息、连接 7、协同图 •连接(link)的定义 • 在UML里,连接(link)被定义为对象之间的语义联系。 • 连接是类之间的关联关系实例。 • 在序列图中,两个对象之间有消息传递 • 意味这它们之间在语义上存在着联系 • 所以它们的对象之间存在着连接关系 • 反之,只要对象之间存在着连接关系 • 就可以在它们之间发送消息。 • 连接的表示 • 在协同图上,连接用对象之间相连的直线来表示。 • 连接可以有名字,它标在表示连接的直线上。 • 如果在有消息借助此连接关系传递 • 则把消息的图符沿直线方向绘制,消息的箭头指向接受消息的 对象。 • 由于仅从图符的绘制上无法在协同图上读出消息发送的顺 序 • 所以通常在消息上保留对应的序列图的消息顺序号。 7、协同图 •连接的通路( path) • 连接表明两个对象之间有语义连接 • 也意味着两对象之间是可以互相访问的 • 但具体是通过什么方式使两个对象成为互相可见? • 两对象之间的连接可以有多种形式。例如: • 通过类的成员变量使对象可见 • 使两对象位于程序的全局使它们互相可见。 • 使两对象位于局部作用域使它们互相可见。 • UML为连接关系指定了四种特定的变体 • 来描述对象连接的方式 • 这四种变体统一称为通路( path) • 通路用于分别指定位于连接两端的对象的 • 可见方式 7、协同图 •通路的四种形式: • 1.Field:对像能被另一个对象看见,是由于此对象是另一 个对象的一部分。例如,如果一个对象是另一个对象的成员 变量,那么另一个对象肯定可以访问此对象。 • 2.Parameter(参数):对象能被另一个对象看见,是因 为此对象是另一对象的某一操作的参数。 • 3.Local(局部):此对象能被另一对象看见,是因为此对 象存在于另一对象的局部作用域中。例如:某一对象是另一 对象的某个函数的局部变量,就可以用此路径描述。 • 4.Global(全局):此对象能被另一对象看见,是因为此 对象存在于全局作用域中。 • 通路和连接只能在协同图里描绘。 • 在UML 2.0里,被称为 Communication Diagram 7、协同图 图4.9 连接的通路 8、建模指南 •交互图是连接系统边界和系统内部的重要桥梁 • 当一个待建造的系统的需求分析由用例图描述清楚之后 • 交互图决定了 • 系统的动态行为 • 以及为实现此动态行为系统应具备的合理的结构 • 在绘制交互图时, • 先描绘相应的序列图 • 根据已有的用例图绘制 • 绘制序列图时,应 • 考虑软件系统的边界 • 考虑系统作用者和系统的交互, • 考虑系统为实现这交互内部应设置的 • 对象 • 及其职责 8、建模指南 • 在设置对象时 • 应顾及软件结构的合理性、软件部件的可重用性、可维护 性、可移植性。 • 然后,在序列图上,用对象之间的消息, • 定义各对象之间为实现系统的功能而进行的交互。 • 在描述消息序列时 • 使用控制焦点来突出为实现特定的动作所需的消息子序列 • 动作的嵌套通过控制焦点的嵌套来描述 • 嵌套的消息序列的顺序 • 使用过程顺序号来标识 • 序列图设计完成后 • 把它转换为协同图 • 以进一步考察软件的组织结构 • 为下一步设计类图作准备。 8、建模指南 • 绘制交互图时 – 应注意模型图的组织 – 对于复杂的建模问题 • 依照分治的原则 – 用多张交互图分别描述 • 例如 –一个用例的多个场景分别表示的多个事件流 程 –可以用不同的交互图描述 – 要充分利用UML的 – 模型包的机制 – 标注的机制 • 使问题的描述有合理清晰的结构 8、建模指南 •绘制序列图时 • 要突出问题的重点 • 省略对描述问题无关紧要的细节问题 • 应有节制地在序列图上描述复杂的分支循环结 构 • 无关紧要的分支循环可留到程序设计时解决 • 重要而复杂的分支循环,可用活动图来描述。 作业 •作业1:为“位图浏览工具’’的一项功能“位图放 大( Zoom In)’’设计用例图和序列图。Zoom In 的功能描述如下:如果用户将鼠标移动至位图 内部,然后按下鼠标左键移动,则在显示窗口 内用橡皮带的方式画出一个矩形,当释放鼠标 左键后,将此矩形内部的内容放大显示至显示 窗口内部。 •作业2:利用“场景”的概念,在用例图上为“位 图浏览工具”中的“打开文件”功能标识主要事件 流和次要事件流,并用序列图描述它们的交互 。
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:软件设计工具第三次课
链接地址:https://www.maidoc.com/p-15695603.html

当前资源信息

国霞穿越

编号: 20180904122921198694

类型: 共享资源

格式: PPT

大小: 678.50KB

上传时间: 2019-11-08

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开