序图,在顺序图中对对象交互的时间顺序和通信进行描述,体现对象的通信、创建和撤销过程。在此基础,利用设计模式和职责分配机制,可以对对象的职责进行分派,在对象之间进行协调,平衡负载,提供系统的可维护性和可重用性。 类图设计是对系统的静态结构的描述,可以与交互图的设计并发进行。类图设计包括了对属性、操作的识别,类之间关系的识别,接口的定义和实现等内容。类与类之间的关系有很多种,包括关联、泛化、聚合、依赖等,这些关系体现了现实世界中的各种对象之间的关联关系,也可以通过!"#$工具在系统实施阶段得到体现。类图设计和交互图的设计是一个并行和交叉的工作过程,两者互为补充,互相促进。
详细设计阶段的工作成果主要包括用例的物理事件流,用例的界面原型,用例的行为描述(依赖于交互图),用例的结构描述(依赖于设计类图)。此外,在详细设计阶段还可以得到实现图,通过部件图和配置图来描述系统的物理分布方式和实施配置方式。
一、用例设计
在系统分析阶段获得的用例模型主要是对需求的捕获,是对系统需求的描述,从功能角度体现了系统所要完成的功能。这种用例模型是整个系统的驱动力,是推动系统开发向前的引擎,而且在进行系统测试时也是检验系统的基本依据。然而,这种用例模型在系统设计和系统实施阶段是远远不够的,仅仅有一个简单的功能说明描述不能对系统的设计和实施起到更大的作用,也难以指导系统的开发工作。毕竟一个功能的需求最终要体现在系统功能上,而系统设计阶段的一个工作就是要将对一个功能的需求以合适的方式体现在系统设计模型上。
用例设计是用例分析的继续,是对用例在实施细节层次上的细化,在用例设计阶段,我们将完成以下工作:
? 对用例重新进行事件流分析,将技术细节加入到事件流中;
? 建立用例实现的协作;
? 对用例建立顺序图或协作图,描述各用例的执行细节;
? 对参与用例实施的对象建立设计类图,描述在每个用例中的对象交互关
系;
? 定义在用例实现中各子系统之间的接口定义和交互;
? 界面设计。
1. 对用例的事件流分析
在捕获需求阶段也进行了对用例的事件流分析,但在分析阶段的事件流分析侧重于从概念上对用例的执行过程进行详细阐述,并不涉及到用例执行过程中的物理技术细节。在设计阶段的事件流分析将包括用例执行过程中的技术细节信息,如界面操作、数据库操作、用户与系统的通信等等。
【案例】 设计阶段的用例事件流
用例名:下订单
基本操作流程:
1)进入填写订单主表界面,系统自动在界面的“订单号”域生成订单编号,其中编码规则为:客户号(10位)+年(2位)+序号(4位);
2)客户在“日期”域填写下订单日期(缺省为系统时间),在“交货地点”域填写交货地点;
3)客户在“产品代码”域输入要采购的商品,在“数量”域填写要采购的数量;
4)客户每输入完一个产品信息后,系统将在指定区域显示商品的单价和合计价格;
5)客户可以点击超链接“增加”和“删除”来增加或删除要购买的产品类型;
6)系统自动计算总价格并在指定区域进行显示;
7)客户按下提交钮,订单将提交给系统,由系统进行有关的库存检查、信用检查和超期检查;
8)订单检查通过,系统保存订单,并显示提交页面。
与分析阶段的用例事件流描述相比,设计阶段的事件流描述将可能包括了与界面的交互、与数据库的交互等很多的技术细节问题。这种更为技术化的事件流描述可以深化设计者对用例完成的理解,帮助进行对用例实现的设计和实施。 对用例事件流的更进一步的详细描述来源于对系统功能和实现技术的深入了解,为了进行用例设计,除了掌握系统提供的整体功能的细节之外,还需要理解系统实现的细节,包括实现技术、各种技巧、数据库设计等。对用例的设计可以按照以下几个方面来进行:
? 对比需求捕获阶段的用例事件流,对每个步骤进行详细审定,判断是否
需要进行细分;
? 对每个步骤考虑其用户访问细节,增加有关的用户界面交互流程;
? 对每个步骤考虑数据存取方式,并决定是否将有关的数据操作细节加入; ? 对每个步骤考虑系统实施细节,并决定是否将有关的设计技巧加入流程
中。
上述的例子中仅加入了用户界面交互细节,而没有包含数据操作和设计技巧等细节问题。
2. 获得协作
协作是UML中的结构事物,它定义了一个交互,是由一组共同工作以提供某种协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的总和。每个用例最终都要进行实现,而这种实现就是来源于协作,每个用例都有与其相对应的协作,在协作中包含了许多元素,这些元素的集合就能够体现用例是如何实现的。一般而言,在UML的协作表示中包含了交互图和类图两大部分,而其他的一些图形表示方法则根据用例本身的特性来决定是否应该存在,如有的用例的执行能够体现某个对象的整个生命周期,此时可能就需要在协作中包含状态图,以更好地描述用例的实现。
图5-6 “登录”用例的协作追溯
图5-6中给出了一个协作与用例的追溯图,图的左侧代表了一个协作,这个协作是对用例模型中的Login用例的实现,所有关于Login的实现信息都在这个协作中进行表示。
协作仅仅是用例实现的一个表示,是用例实现的各个元素的集合,协作中最核心的内容是交互图和类图,其中交互图体现了在用例执行中各对象的关系,类图体现了用例所涉及的各个对象之间的静态结构关系。这两部分也同样是系统设计阶段的重要内容,将在下两节中进行详细介绍。
3. 界面设计
在用例设计阶段,在完成了系统的用例事件流分析、协作的设计等内容后,需要进行界面设计工作。在系统分析阶段有界面原型的设计工作,而系统设计阶段的界面设计工作将更进一步,比分析阶段的内容更加具体翔实。两者之间的差异在于:
界面设计工作是用例设计中的一项辅助工作,可以将其延伸到具体实施阶段完成。不过,在设计阶段进行界面设计,除了可以及早定义系统用户的交互界面,给各开发人员分配任务之外,还可以通过界面设计来尽早发现需求捕获的不足和分析设计阶段的遗漏,保证系统实施工作的顺利完成。
二、交互图
交互图是UML中用于描述系统行为的一种图形,它主要用于描述对象间的交互关系。在面向对象的设计中,交互图的使用主要是对用例的执行过程进行描述,通过交互图描述每个用例在执行过程中涉及到的类和类之间的交互关系。在系统设计阶段,交互图通过描述类之间的交互关系和协助分析设计人员完成类职责的分配,定义类的操作方法,并指导系统的开发。
1. 基本概念
交互图包括顺序图和协作图两种。其中顺序图描述对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互;协作图则侧重于描述对象间的协作关系,并显示对象间的动态合作关系。在使用上,如果强调