Java 建模: UML 工作簿,第 1 部分――序列图简介序列图简介 |
级别: 初级 Granville Miller (rmiller@togethersoft.com), 顾问, TogetherSoft 2001 年 5 月 15 日 Granville Miller 在其新专栏的第一部分中介绍了“统一建模语言”(UML) 的一个构件:序列图。在整个设计过程中都会用到序列图,此图用于演示系统执行时参与者与对象之间的内部交互。让我们跟着 Granville 一起创建其中一个图,我们将使用一个贷款处理应用程序作为示例。 统一建模语言 (UML) 是用于建立面向对象系统模型的标准标记法。在 1995 到 1997 年之间,UML 登上了面向对象编程社区的舞台,而且在 1997 年后期受到了对象管理组织 (OMG) 的认可。虽然它最初颇受争议 -- 因为它是在一片支持和反对声中提出的 -- 但 UML 以后却成为系统标记法的行业标准。UML 的当前版本是 1.4,而且它将不断发展以满足面向对象开发人员的需要。(有关 UML 历史的详细信息,请参阅 参考资料。) UML 可能难以学习,主要因为它试图为相当广泛的情况提供建模标记法。每种建模标记法都采用一种图,而目前在 UML 规范中有九种图。幸好,学习 UML 可以是一个渐进过程;每次可以只学习一种图,首次试用时不必包含图中非常复杂的东西。 在本专栏中,我将教您逐步学习基于 Java 应用程序开发的 UML 设计和标记法。我将以逻辑(可能是另人愉快的)方式介绍 UML 框架和其它建模技术的基础知识,您将通过建立现实示例的模型来学习实际操作。在第一部分中,我们使用贷款处理应用程序作为示例,从建立序列图开始。请注意,假设您熟悉 Java 语言,而且掌握了面向对象方法和术语的基础知识。本专栏将简要说明面向对象的概念,但不会进行深入讨论。
UML 没有排斥任何特殊的软件开发方法或过程;它只不过标准化了标记法的格式。然而,许多开发方法都合并了 UML。Rational 统一过程 (RUP) 就是这样一种方法;另一种方法是功能驱动的开发 (FDD)。由于其直观性和通用性,UML 序列图已成为这些过程的前端建模活动的一部分。序列图用于建立以下内容的模型:
以下是上述每个功能的简要说明。 用例方案 框架中的协议 子系统 类 方法逻辑 序列图在记录方法逻辑方面非常优秀。实际上,只要给出了 Java 方法,某些 CASE 工具会自动生成一个序列图。序列图可用于设计未来方法或记录现有方法的流程。
我们将在示例贷款处理应用程序的帮助下学习序列图。因为本专栏的重点在于建模,而不是方法,我们要直接讨论建立图,所以我们不会注重于应用程序的细节。我们为贷款处理应用程序绘制的基本功能如下: 用例:提交贷款请求
创建序列图的第一步是确定该图是否表示与外部或内部实体的交互。如果正在建立用例方案的模型,那么序列图通常表示与外部实体的交互。如果正在建立框架中协议的模型,那么此图也许表示内部或外部交互。子系统图、类图和个别方法逻辑图通常只表示内部实体。无论是哪种情况,将要建模的交互类型决定了序列图中的第一个(最左边的)元素。 与外部实体的交互表示参与者是交互的一部分。内部交互可能由参与者启动(如果子系统用例是交互的基础),但它更可能是由叫作 我们将关注为贷款处理应用程序(以上概述的 提交贷款请求用例)的方案建立图。请注意当申请人完成在线贷款申请并在因特网上提交它时序列图的变化。在这个方案中,申请人在系统外部,因此用参与者来表示他。我们首先将参与者 图 1. 添加申请人 添加参与者 对于示例方案,我们将添加两个类: 图 2. 添加两个交互类 连接各点 -- 虚线 在横轴上,我们用被称作 调用箭头或 消息箭头的箭头来表示消息。消息箭头从发送方(尾)指向接收方(头)。这些箭头用于捕捉系统的动态行为。调用通常始于左边,向右边移动。即,交互中的初始箭头通常来自左边。当创建类的新实例时,我们绘制的箭头都指向类自身,而不是生命线。我们方案中的第一步是创建新的贷款申请,因此我们在 我们仍处于软件开发生命周期中的分析阶段,因此我们要仅可能多地包含分析信息。我们的一个商务分析员提到我们把创建新贷款申请的操作称作“完成贷款申请”。如果我们要在构造过程中使这个序列图保持为真,那么可以将 图 3. 创建 LoanApplication 建立某个活动的图 但接收到消息时,接收对象可以依次将消息发送到它自身或其它对象。这由箭头的尾巴显示,它表示箭头源于活动,而终止于新的活动。但对象调用自身时,新的活动将放到旧活动之上。 在此方案中,申请人与贷款申请交互两次,第一次是完成它,而第二次是提交它。当 图 4. 确认 LoanApplication 箭头文件:表示时间流逝 在此示例中,商业资信咨询机构是一个外部系统,它是具有服务器角色的参与者(有关详细信息,请参阅 关于参与者角色)。服务器通常不生成消息,但会有发送给它们的消息 -- 在本例中是由信用检查器发送的信用报告的请求。信用检查器代表了商业资信咨询机构。它跟踪请求并将请求转发给商业资信咨询机构,跟踪并接收响应,此外就是建立贷款处理应用程序和商业资信咨询机构之间的连接。商业资信咨询机构将接收请求,并根据它自己的时间表处理请求。我们使用斜向箭头表示这段时间的流逝,如以下的图 5 所示。 在活动的结尾,返回到调用程序的结果是隐式的。然而,在某些情况下,您可能希望返回是显式的。显式返回调用由虚线箭头表示,该箭头的尾巴是接收方,头是发送方。显式返回箭头通常由调用返回的值标记。对于此示例,我们已经在 图 5. 获取 CreditReport 下一步
|
||||||||||||||||||||||||||||||
浙公网安备 33010602011771号