开发中使用UML的流程_07 PIM-3:定义静态结构

目录

1、静态结构和关联关系

2、泛化关系

3、聚合关系和组合关系

4、善用交易模式

5、PIM-2=》PIM-3如何找操作

6、PIM-2=》PIM-3如何找属性


1、静态结构和关联关系

PIM-2的状态图和PIM-4的序列图,对PIM-3的类图,有不可或缺的贡献。从PIM-2的状态图中,系统分析员可以分析出定义于类内部的属性及操作。而由PIM-4的序列图,系统分析员可以产生更多的操作,以及说明操作的方法。
系统分析员可以将这些重要且稳定的业务概念,作为系统内部核心的静态结构
类(Class)与期间的"关联关系(Association)是类图的基本组成元素。在类内部,记载着对象可以保有的属性以及可以执行的操作。在关联关系的两端,标示出两端对象可以链接的多重性

关联关系是类之间最常见的关系,系统分析员可以通过检查下列两项条件,判断是否采用关联关系:

1)在企业领域的专业概念里,两种对象之间有一种固定不变且需要保存的静态关系。

2)在信息化时,系统会用到这些静态关系,而且必须将他们存到数据库

  • 每一个基金账户底下,可以有零到多笔的申购交易,所以在申购交易端标示(*),代表一个基金账户对象可以链接零到多个申购交易对象
  • 每个申购交易,只能登录在某一个基金账户底下,所以在基金账户端标示"1",代表一个申购交易对象只能链接一个基金账户对象

2、泛化关系

类之间还可能出现另一种"泛化关系(Generalization)"。系统分析员通过类定义属性和操作,所以日后针对同类的一群对象,就可以使用相同的方式对待它们。不过有时候,这些对象并不是全然相同,可能大部分的属性和操作相同,但是少部分的属性和操作却不同。这种情况下,类之间的泛化关系就派上用场。

例如,在基金模拟项目,申购交易可以细分为两种:单笔申购和定期定额申购。虽然,这两种交易对象有许多相同的特质,可是又不全然相同,各自都还有少部分独特之处。所以系统分析员可以定义3个申购类。相较起来,申购交易属于一般类,单笔申购与定期定额申购属于特殊类,如下图:

可以通过检查下列两项,判断是否采用泛化关系:

  • 在企业领域的专业概念里,特殊对象必须"是一种"(a kind of)一般对象。
  • 多种特殊对象里,有部分通用的属性和操作,也有部分独有的属性和操作。特殊类可以继承一般类里的通用属性和操作。

3、聚合关系和组合关系

我们来看看另外两项"聚合关系"(Aggregation)与"组合关系"(Composition):

  • 聚合关系是一种特殊的关联关系,所以它继承了关联关系的特质,而且还独有"整体-部分"(Whole-Part)的特质。简言之,聚合关系两端的对象,需要具有Whole-Part的关系
  • 组合关系是一种特殊的聚合关系,所以它继承了关联关系,以及聚合关系的"整体-部分"的特质,还独有全然拥有Part对象的特质

系统分析员可以通过检查下列四项条件,判断采用关联关系,聚合关系还是组合关系:

  • 在企业领域的专业概念里,两种对象之间有一种固定不变且需要保存的静态关系。(关联关系的条件)
  • 在信息化时,系统会用到这些静态关系,而且必须将它们存到数据库。(关联关系的条件)
  • 在企业领域的专业概念里,两种对象之间有Whole-Part的静态关系。(聚合关系的条件)
  • Part对象只能链接一个Whole对象,且Whole对象被销毁时,Part对象必须一块被销毁。

先看聚合关系的例子。在基金模拟项目中,有"基金开台"的功能。每一个基金开台可以设置多档自选基金,如此一来,投资人就可以同时观看并比较多档基金的报酬率。

关于基金开台与自选基金之间的聚合关系,系统分析员做如下的思考:

  • 基金开台与自选基金之间的关系,固定不变,且在该基金看台被整个删除,或者某自选基金从该基金看台除名之前,两者之间的关系需要被永久保存下来。(符合上述条件1)
  • 基金看台聚集了多档自选基金。自选基金是基金开台很重要的一项元素,而且可以说,如果没有自选基金,基金开台几乎也就失去了存在价值。所以两者之间有着Whole-Part的特质,基金开台是Whole,自选基金是Part。(符合上述条件3)
  • 每个基金看台底下,可以有零到多档的自选基金。所以,在自选基金端标示(*),代表一个基金看台对象可以连接零到多个自选基金对象。
  • 每一档自选基金,可以设定多个基金看台底下。所以,在基金看台端标示(*),代表一个自选基金对象可以连接零到多个基金看台对象。

接着,看看组合关系的例子。在基金模拟项目中,定期定额申购是很重要的概念。投资人约定了定期定额申购之后,银行每月就会按照约定自动成立一笔小的申购交易,而且每期申购的基金单位都会被累加在一起。特别是,自动成立的定期小交易没有自己的凭证号码,而是共有原先定期定额申购约定时的凭证号码。

针对定期定额申购与单期交易之间的组合关系,系统分析员做了如下的思考:

  • 定期定额申购与单期交易之间的关系,固定不变且需要被永久保存下来。(符合上述条件1)
  • 由于定期定额申购与单期交易之间的关系需要被保存下来,所以会被存到数据库里。(符合条件2)
  • 客户约定了定期定额申购之后,每月就会按照约定自动生成一笔小额的申购交易,所有的单期交易都归属于同一个定期定额申购交易底下,两者之间有着Whole-Part的特质,定期定额申购时Whole,单期交易是Part。(符合上述条件3)
  • 每一个单期交易对象只能连接一个定期定额申购对象,且定期定额申购对象被销毁时,单期交易对象必须一块被销毁。(符合条件4)
  • 每一个定期定额申购底下,可以有零到多个的单期交易。所以,在单期交易端标示(*),代表一个定期定额申购对象可以连接零到多个单期交易对象。
  • 每一个单期交易,只能隶属于一个定期定额申购底下。所以,在定期定额申购端标示(1),代表一个单期交易对象只能连接一个定期定额申购对象。

4、善用交易模式

在多数的企业领域中,"交易(Transaction)通常是一项很重要的业务概念,而且一旦交易发生,也经常需要保存相关的交易数据。《Object Models:Strategies,Pattern and Application》一书中提出一个以交易为主的静态结构,称之为"交易模式"(Transaction Patterns)。如下图:

系统分析员善用交易模式,将有助于建构以交易为主的类图。以基金模拟项目为例,套用交易模式,如下图:

交易模式通常不会适用所有的情况,所以套用之后,可能会需要调整,系统分析员做如下调整:

  • 同一个定期定额申购底下,所有单期交易都是申购相同的基金,所以将原先的"基金-单期交易"改为"基金-定期定额申购"。
  • 建立申购交易与单笔申购,定期定额申购之间的泛化关系。
  • 投资人,银行分行和基金账户与定期定额申购之间的关联关系,全部改为连接申购交易。

5、PIM-2=》PIM-3如何找操作

从PIM-2状态图--->PIM-3类图的操作机属性,系统分析员可以通过以下建议,找到操作及属性:

  • 状态内部的所有动作,以及所有转化在线的动作,都可以考虑为他们定义操作,如下图:
  • 所有状态动作及转化动作会使用个到的数据,都可以考虑为他们定义属性。
  • 与该类有泛化关系与组合关系的其他类,可以同时考虑他们的操作及属性。
  • 有些属性或操作可能是其他对象的,请将它们归还给所属的类

6、PIM-2=》PIM-3如何找属性

针对每一个操作,系统分析员找到下述可能用到的属性

  • 设定交易数据() 申购日期、信托金额、扣款账号、凭证号码、扣款日期、投资金额。
  • 计算交易金额() 投资金额、手续费、基金管理费、银行折扣。
  • 产生交易编号() 凭证号码。
  • 设定状态() 扣款情况(正常扣款、暂停扣款、终止扣款)。
  • 扣款() 交易金额(投资金额+手续费)。
  • 累计失败次数() 失败次数。
  • 关闭定期定额交易() 终止日期、扣款情况(终止扣款)。

最后,系统分析员进行调整,调整细节如下:

。计算可申购单位数() 单期交易->申购交易。

。银行折扣 申购交易->银行分行

。基金管理费 申购交易->基金

。库存单位数 申购交易。

系统分析员优先找操作,进行PIM-3时,可以通过下列步骤,建立类图:

1)套用交易模式,并且经过调整之后,系统分析员可以获得初步的静态结构

2)分析PIM-2的状态图之后,可以为类增加属性及操作

3)分析PIM-1搜集来的窗口,系统分析员可以为类增加更多的属性

4)经过PIM-4的序列图,系统分析员可以为类增加更多的操作,并且描述操作的方法。

相关推荐
rolt2 天前
[pdf,epub]228页《分析模式》漫谈合集01-45提供下载
ddd·架构师·uml·领域驱动设计·面向对象
思忖小下4 天前
开发中使用UML的流程_05 PIM-1:分析系统流程
uml·分析系统流程
肖老师+6 天前
可视化建模以及UML期末复习篇----相关软件安装
uml·可视化建模
思忖小下6 天前
开发中使用UML的流程_04 CIM-3:定义系统范围
uml
Caihua_X6 天前
UML的相关介绍
uml
架构师Wu老七6 天前
【软考】系统架构设计师-软件工程基础
系统架构·软件工程·软考·uml·面向对象·系统架构设计师·净室软件工程
33三 三like7 天前
E2、UML类图顺序图状态图实训
uml
肖老师+8 天前
可视化建模与UML《状态图实验报告》
uml·可视化建模
rolt10 天前
[pdf,epub]162页《分析模式》漫谈合集01-35提供下载
ddd·架构师·uml·领域驱动设计·面向对象