从系统的业务角度建立业务模型
2549字,阅读需时9分钟

1、认识类图

角色的用例模型从系统的功能角度描述了系统应提供哪些功能,但没有给出角色的内容以及角色之间的关系。UML建模语言中的类图模型就是描述角色内容以及角色之间关系的模型。

在一些建模工具中(如Visio),类图是一个矩形的方框,方框分为三部分,最上面的部分是类的名称,中间部分是类的属性,下面的部分是类的行为。图2-12是一个简单的类图。

07.PNG

类就是我们前面分析得到角色,角色有属性和行为,因此在类图中也有属性和行为。在上面的类图模型中,用户是类(角色)的名称,昵称和登录密码是类的属性,注册和登录是类的行为。

类与类之间也会存在关系。在需求分析阶段,类与类之间的关系有依赖关系、继承关系、关联关系。在设计阶段类图模型会增加聚合关系和实现关系。

依赖关系是指在类的行为中使用到另一个类。例如用户类的注册行为,就会使用到数据库类来存储用户信息。图2-13是依赖关系的类图模型。

08.PNG

继承关系是指一个类继承另一个类的属性和行为,被继承的类称为父类,继承的类称为子类。继承的思想是把同类事物的共同属性抽取出来形成基类,基类可以被更具体化的子类来继承。例如,假如人脉系统要支持多种类型的名片,我们就可以把名片的共同属性和行为抽取出来形成基类,然后在基类的基础上,通过继承关系创建视频名片、动画名片、文字名片等不同媒体的名片。图2-14是继承关系的类图模型。

09.PNG

类的关联关系是指两个类之间有相关性,如果一个类的属性是另外一个类,就说这两个类之间有关联关系。例如在电子图书阅读系统中,假如用户类的一个属性是订单类,则可以说用户类和订单类有关联关系。图2-15是关联关系的类图模型。

10.PNG

2、建立类图模型

识别的用户、系统用户、图书、订单、数据库可以直接映射为类,角色名称映射为类的名称,角色的属性映射为类的属性,角色的行为映射为类的行为。

在绘制类图模型前,我们先要确定用户、图书、订单、数据库四个类之间的业务关系。图2-16给出了用户、图书、订单和数据库四者之间的业务关系。

11.PNG

在图2-16业务关系图中,用户、图书、数据库和订单为发生业务关系的对象,也称为实体。用户和图书涉及“查询图书”和“阅读图书”两个业务,用户和订单涉及“订阅图书”、“购买图书”、“查询订单”三个业务。每个业务都涉及两个或多个实体。在建立业务模型时,要充分考虑到实体间的业务关系,将业务绑定到实体内作为实体内的方法,并不是一种好的建模方法。较为通用的建模方法是把实体单独作为一个类,该类仅包含实体的属性,将业务按照类别组合为一个或多个类,每个类完成相近的业务。

绘制用户、订单和图书的业务模型。

12.PNG

图2-17为用户、订单和图书业务模型。用户、订单和图书均为实体类,仅包含对象的属性。业务类为“用户—订单—图书业务”,在业务类聚合了用户、图书、订单实体对象,并提供了“用户选择图书”、“用户阅读图书”、“用户订阅图书”、“用户购买图书”业务方法,他们均依赖数据库类提供的实体类数据存取方法。

通过建立类图业务模型,系统的业务逻辑结构已经非常清晰了。建议读者建立系统用户、图书和数据库的类图业务模型。

3、认识顺序图

类图模型描述了系统的类及类之间的关系。类图模型也称为系统的静态结构,从类图模型中我们还看不到业务的处理过程以及类与类交互的信息,在UML建模语言中,这些信息是通过顺序图来描述的。

顺序图用于描述在业务处理过程中类之间的交互顺序,这些交互顺序是在场景或用例的信息流中发生的。由于描述的是动态行为,顺序图中类被称为对象,也就是实例化后的类。在顺序图中共有四个基本符号:(1)参与者符号,由一个方框加一个小人图形表示,小人图形在方框之上,方框内写入参与者的名称;(2)对象符号,由一个方框表示,方框内写入对象的名称;(3)生命线符号,由虚线或狭窄的竖直方框表示;(4)消息符号,由带消息描述的方向箭头表示。图2-18是一个典型的顺序图,表明了顺序图要使用的通用格式和符号。

13.PNG

在图2-18中,参与者是一个外部、物理的人,它扮演用户的角色,代表物理的人。对象是系统中被实例化的类,例如系统的用户类在系统运行过程中,会创建多个对象,每个对象就是类的一个实例,一个实例对应一个外部参与者。

竖直的虚线称为生命线,每一个参与者和对象都有生命线,它用于描述场景内的参与者和对象的生命周期,时间是从上到下,生命线显示了消息的顺序,消息沿生命线从上到下依次发生。

对象生命线上的长条矩形框表示对象处于激活状态,当一条消息传递给对象的时候,对象响应该消息并触发对象的某个行为,这时该对象就处于激活状态。当对象没有被激活时,对象处于休眠状态,等待接收消息被激活。

在顺序图中,对象之间的交互是通过发送和接收消息来实现的。一个对象向另一个对象发送消息并希望得到回应时,会有两种情况,一种情况是暂停活动并等待消息的回应,直至收到消息回应后再开启活动,这是同步消息;另外一种情况是不管是否收到消息的回应,活动照样执行,即不需要暂停活动来等待消息的回应,这是异步消息。

在顺序图中,还有一种消息就是自关联消息,自关联消息就是对象向自己发送消息。例如,对象在活动中调用内部的方法或函数。

图2-19是各种消息的表示方法。

16.PNG

在绘制顺序图模型时,可能需要绘制一些流程控制,例如循环和条件流程控制,消息机制无法绘制这些流程控制。顺序图另外提供了“片段”机制用于描述比较复杂的动作序列,支持的片段有循环片段、可选片段、备用片段和其他片段。

17.PNG

图2-20是用户登录顺序图。用户在登录系统的过程中,可能会输错账号或密码,系统允许用户重新输入账号或密码再次登录。因此用户的登录过程是一个循环流程,在顺序图用循环片段来表示。

4、建立顺序图模型

我们不需要给每个类都建立顺序图模型,只需要找到主要的业务起始类,给业务起始类建立顺序图模型,就可以覆盖与业务相关的交互类。

用户购买图书

18.PNG

图2-21是用户购买图书顺序图。用户进入系统图书列表页面:①查询或直接选择图书;②提交图书购买请求到业务类,业务类创建订单,并返回订单详情让用户确定;③用户确认订单后,业务类存储订单数据到数据库,并返回支付信息;④用户使用第三方支付成功,第三方支付调用业务类的支付成功接口,业务类修改订单状态;⑤业务类返回购买成功或失败信息到用户。

建议读者绘制其他业务顺序图。

我要评论
全部评论