养成良好的绘制 UML 序列图的习惯
序列图绘制技巧
Scott W. Ambler
总裁,Ronin International
本文来自 http://www.ibm.com/developerworks/cn
请尝试本文所介绍的技巧来创建有效的 UML 序列图。本文改编自 The Object Primer 2nd Edition 的第 6 章。
有一些方法可以帮助您提高 UML 序列图的质量和效力。它们包括:
和主题问题专家一起验证决策
使解决方案尽量简单
为绘制消息和返回值选择一种一致而有效的风格
将序列图分层
遵循一致的逻辑风格
牢记序列图是动态的
验证决策
在开发图 1 序列图的过程中,我做了一些对其它模型可能有潜在影响的决策。例如,在对第 10 步建模时,假设(大致上是个设计决策)费用显示屏幕同时也处理学生对费用是否可接受所进行的验证。该决策应该由用户界面原型反映出来,并由主题问题专家 (SME) 进行验证。您应该和 SME(特别是那些对于如何开发类似模型有着深刻见解的富有经验的人)一起执行序列图的绘制工作。
保持简单
在对第 2 和第 3 步建模时,我忽然意识到学生可能应该使用口令进入系统。在向 SME 提出了这个概念后发觉我错了:姓名和学号组合对于我们的目的来说已经足够唯一,并且学校也不希望增加复杂的口令管理。这是个很有意思的决策,因为这是学校的一个运作策略,所以可以作为一条商业规则记载到增补规范中。通过与 SME 一起检验这个想法,而不是假定我比他们知道得更多,我避免了“镀金”的机会,因而减少了我们小组开发这一系统所需的工作。
绘制消息和返回值
我更喜欢从左至右地绘制消息,从右至左地绘制返回值,尽管这样对于复杂的对象/类来说不总是非常合适。我将消息上的标签和返回值对齐到离箭头最近的位置。我不喜欢在序列图上标出返回值,为的是使图尽可能地简化。不过,始终标出返回值也同样有效,特别是在序列图用于设计而不是分析目的时。(我希望我的分析图尽量简单,而设计图尽量全面。)在分析期间,我的目标是理解逻辑和确保逻辑的正确性。而在设计期间,则要赋予消息精确的细节,如图 1 中的注释提醒我对 "qualifications()" 消息执行的任务。
将序列图分层
我喜欢将序列图从左至右地分层。先标出参与者,然后是控制器类,然后是用户界面类,最后是商业类。在设计期间,可能需要添加系统类和持久类,我通常将它们放在序列图的最右侧。以这种方式将序列图分层往往使它们更易于阅读,并且更容易找出分层逻辑问题,例如用户界面类直接访问持久类(在今后的建模技巧中将对此做更多介绍)。
遵循一致的逻辑风格
请注意,在图 1 序列图所示的过程中,逻辑风格做了部分更改。一开始,特别是在登录时,用户界面处理一些基本逻辑 -- 而在选择研习班,以及稍后的验证时,则是控制器类进行处理。这实际上是个设计问题。我不会在这个问题上纠缠太久,但和往常一样,我建议选择一种适合于您的建模风格,然后始终如一地贯彻在所有序列图中。
牢记序列图是动态的
您可能听说过诸如动态建模和静态建模这样的术语,其他一些熟悉面向对象建模技术的开发人员常常会提到它们。您甚至可能听到过有关每种风格的优点的争论。
动态建模技术主要集中在标识系统中的行为,包括序列图的绘制和活动图的绘制(请参阅“如何绘制 UML 活动图”)以及 UML 协作图的绘制。而静态建模则集中在系统的静态方面,包括类、它们的属性,以及类之间的关联。类模型和持久/数据模型一样,都是静态建模的主要产物。
因此实际上没有什么好争论的 -- 要想恰如其分地说明面向对象系统,同时需要动态和静态建模技术。
参考资料
The Object Primer 2nd Edition,由 Scott W. Ambler 著。New York: Cambridge University Press, 2001。
The Unified Process Inception Phase,由 Scott W. Ambler 和 Larry L. Constantine 合著。Gilroy, CA: R&D Books, 2000。
The Unified Modeling Language Reference Manual,由 James Rumbaugh、Grady Booch 和 Ivar Jacobson 合著。Reading, MA: Addison-Wesley Longman, Inc., 1999。
分享到:
相关推荐
UML序列图是一种用于详细描述对象间交互和顺序的建模工具,它在软件开发过程中扮演着重要角色,不仅为开发者提供...对于任何希望深入理解和实施系统设计的个人或团队来说,掌握UML序列图的绘制和解读是一项宝贵的能力。
### UML网上购物序列图详解 #### 一、实验背景及目的 本次实验旨在通过具体的网上购物场景,深入探讨和实践UML中的序列图和协作图。通过绘制这些图表,可以更好地理解系统的交互过程,以及不同类之间的关系,进而...
在Visio 2013中绘制UML序列图,首先需要了解绘图的基本形状和元素: 1. **图形选择**:Visio提供了一系列预定义的UML形状,如生命线(LifeLine)、激活期(Activation Bar)和消息(Message)。生命线代表参与交互...
UML 建模:创建序列图 UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,用于描述软件系统的结构、行为和业务处理流程。UML 建模是软件开发过程中的一种重要步骤,它可以帮助开发人员更好地...
总之,Visio 2013 提供了丰富的图形元素,使得绘制UML序列图变得简单直观。通过理解各个形状的含义和用途,结合实际业务流程,可以有效地利用Visio 2013创建出清晰、准确的序列图,从而辅助软件开发中的需求分析和...
本篇文章将深入探讨如何运用UML的用例图、协作图和序列图来构建一个简单的选课系统,旨在为初学者提供实用的参考。 一、用例图(Use Case Diagram) 用例图是UML中的重要组成部分,它展示了系统的主要参与者...
绘制UML序列图时,需要和主题问题专家一起验证决策,确保绘制的图形正确无误。例如,在对第10步建模时,假设(大致上是个设计决策)费用显示屏幕同时也处理学生对费用是否可接受所进行的验证。该决策应该由用户界面...
绘制UML图** 1. **类图**:通过“Class”图标在模型中添加类,可以设置类的属性、方法以及与其他类的关系(继承、关联等)。 2. **用例图**:用“Use Case”图标表示用户与系统之间的交互,通过“Actor”图标添加...
在本文中,我们将深入探讨如何使用C# WinForm来创建一个UML类图程序,以及如何实现绘制、保存和打开UML类图的功能。UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程和其他领域,用于描述系统的设计和...
序列图合成工具是一种高效的设计辅助软件,主要用于绘制和组合序列图。序列图是UML(统一建模语言)中的一种图形表示法,用于描述系统中对象间的交互过程,特别是时间顺序和消息传递。在软件设计、系统分析和项目...
3. **序列图(Sequence Diagram)**:序列图描述了对象间的交互顺序,通常用来表示用例的具体执行流程。例如,当学生查询成绩时,序列图会展示从用户界面到后台数据库的一系列消息传递过程。 4. **协作图...
UML图包括用例图、类图、序列图、协作图、状态图、活动图等,涵盖了软件开发的多个阶段。例如,用例图展示了用户与系统之间的交互,类图描绘了类、接口及它们之间的关系,序列图则展现了对象间的动态交互顺序。对于...
本文将深入探讨新闻发布的系统设计,重点分析其中的四种主要UML图:用例图、类图、序列图和活动图。 首先,我们来看**用例图(Use Case Diagram)**。用例图描绘了系统的主要参与者(Actors)与系统提供的功能(Use...
内容序列图的两种类型序列图绘制中的条件逻辑绘制for循环图绘制while循环图结束语参考资料简介: Granville继续讨论“统一建模语言”和序列图的绘制。他仔细研究了序列图绘制过程中条件逻辑的角色,并讨论了为什么...
PlantUML绘制UML的手册 PlantUML是一款开源项目,支持快速绘制多种类型的图表,包括UML图和非UML图。它使用简单直观的语言来定义这些示意图,使得用户可以快速掌握基础知识。 语法简介 PlantUML的语法非常简洁...
4. **时序图(序列图)**:时序图详细描述了对象间消息传递的顺序,强调时间轴。对于ATM取款,时序图会展示从客户插入卡片到取出现金的顺序,包括ATM读卡、验证PIN、查询账户余额、请求取款、出钞等操作。每个对象都...
**时序图** 又称为序列图,是UML中另一种重要的表示方法,用于描述对象之间交互的顺序。在购书系统中,时序图可能会展示如下场景: 1. 用户登录:游客输入用户名和密码,系统验证后允许登录。 2. 图书订购:用户...
**UML序列图详解** UML(统一建模语言)是一种在软件开发中广泛使用的可视化建模工具,它提供了一套标准图形表示方法,用于描述系统的行为和结构。其中,序列图(Sequence Diagram)是UML中的动态视图,主要用于...