分类: 项目管理
2010-01-13 09:59:09
系统分析师UML实务手册
目录
推荐序第一章
1、用户与系统分析员的专业背景不同,交流访谈难免会有误解和遗漏。下面的对策试图减轻系统分析员的工作压力:
1) 使用UML图引导访谈,降低遗漏需求的情况。系统分析员在访谈过程中,通过多款不同的图来理清需求各种不同角度的面貌,降低遗漏。
2) 快速生成可执行的程序片段,通过展示来凸显误解。
3) 封装变化,让需求发生变化时,可以追踪到变化之处,迅速改版,并且不让变化起涟漪效应,向外扩散。
2、系统分析员主要会用到下列的UML图
1)、行为类
用例图(Use Case Diagram)
活动图(Activity Diagram)
状态图(State Machine Diagram)
序列图(Sequence Diagram)
2)、结构图
类图(Class Diagram)
3、并非所有的事物都适合对应成软件对象(Object),候选对象应符合下列两项条件:
1)、在企业运作过程中,业务人员会使用到的专业事物或概念;
2)、在信息化时系统也会用到,或者需要保存。
4、针对对象的各项属性,系统分析员还需要了解他在企业里的定义、数据类型、可能的范围值和初始值,更别忘了了解这项属性是怎么跑出来的。
5、对于对象的封装性,系统分析员要掌握下列要点:
1)、已知操作。对象通常仅对其他对象透露自身的操作,彼此之间通过调用已知的操作来交互;
2)、封装属性。封装属性值,不透露给其他对象;
3)、封装方法。仅对其他对象透露操作,但不透露其方法。
如果需要与其他对象交互,甚至是用到对象本身的属性或操作时,切记严守下列三条:
1)、不得直接提及对象的属性;
2)、不得假设对象的执行方法;
3)、仅能够使用对象的操作。
严守对象的封装性,有一个好处,当需求发生变化需要改写代码时,变化会被局限在对象的属性和方法中,不会起涟漪效应,也不会发生牵一发而动全身的连锁 反应。由于软件内部的组成对象易于汰旧换新,所以软件的使用寿命延长,后继的维护成本也偏低,企业因此得到高投资报酬率。不过眼前首先要付出的代价是较高 的开发成本。
6、判断是否采用关联关系:
1)、在企业领域的专业概念里,两种对象之间有一种固定不变且需要保存的静态关系;
2)、在信息化时,系统会用到这些静态关系,而且必须将他们保存到数据库。
判断是否采用聚合关系:
1)、符合上述关联关系条件;
2)、在企业领域的专业概念里,两种对象之间有Whole-Part的静态关系。
判断是否采用组合关系:
1)、符合上述聚合关系;
2)、Part对象只能链接一个Whole对象,且Whole对象被注销时,Part对象必须一块被注销。
7、系统用例:表达用户与信息系统的交互;--(系统执行者,将引导整个开发程序)
业务用例:表达顾客与企业组织的交互。――(业务执行者)
8、MDA(Model-Driven Architecture)开发程序,分为下列三个阶段:
1)、CIM――聚焦于系统环境及需求,但不涉及系统内部的结构与运作细节;
2)、PIM――聚焦于系统内部细节,但不涉及现实系统的具体平台;
3)、PSM――聚焦于系统落实到特定平台的细节。
具体步骤参照:
1)、CIM-1:定义业务流程,产生业务用例模型;
2)、CIM-2:分析业务流程,产生活动图;
3)、CIM-3:定义系统范围,产生系统用例图;
4)、PIM-1:分析系统流程,产生系统用例叙述;
5)、PIM-2:分析业务规则,产生状态图;
6)、PIM-3:定义静态结构,产生类图;
7)、PIM-4:定义操作及方法,生成序列图。
-----------------------------------------------------------------------------------
定义及分析业务流程(Business Process)是为了尽快理清系统范围,以便估算开发成本及时间,可不是为了要改造业务流程。系统分析员千万别误解了此步骤的目的。所以,系统分析员在定义及分析业务流程时,要记得挑选跟系统有关的业务流程。
CIM-1定义业务流程的生成,主要有如下的业务用例图和简述。请看图2-1的业务用例图,图中的每一个业务用例代表一条业务流程,业务执行者则代 表位于企业外但会启动或参与业务流程的人。投资人到银行临柜申购基金,启动了银行内部的一段关于申购基金的业务流程。再者,投资人也可能临柜办理赎回基 金,这又引发了另一条业务流程。
至于业务用例简述,简洁扼要即可,我们主要用它来记录和区分业务流程。
通过CIM-1圈出了系统将参与的业务流程之后,针对每一个业务用例,系统分析员得开始分析它的工作流程,并且绘制活动图(Activity Diagram)与业务人员取得共识。随后到了CIM-3时,才能够依此定义出系统可以协助之处,并且规划出系统范围。
此处,我们挑选一般的申购基金流程当示范,并绘制出如图2-2所示的活动图,展示了单笔申购基金的一般交易流程。
经过了CIM-1的定义业务流程,以及CIM-2的分析业务流程之后,终于进入到CIM-3这场压轴戏了。CIM-1和CIM-2的生成文件,跟CIM-3的生成文件之间,有如下的关联性:
针对上述的图2-2一般流程的活动图,我们分析得出如图2-3的系统用例图,以及下述的用例简述。
在CIM阶段,系统分析员大约花1~2周的时间,尽快生成初步的系统用例,以便让相关的决策人员可以从中挑选出首期开发的系统用例,而这也就是首期的系统范围。
随后,项目正式进入PIM阶段,也是正式进入分析阶段,所以系统分析员将投入更多的时间,针对首期的系统用例详述规格,作为正式需求文件的一部分,也作为业务人员与开发人员之间的沟通文件。
所以,系统分析员在PIM-1的主要工作,将针对每一个系统用例,分析其内部细节,并编写详尽的系统用例叙述(UC Description)。UML并未提出标准的叙述格式可供遵守,不过系统分析员可以在网络上找到许多实用的用例叙述格式,或者翻阅一些UML或用例相 关书籍,也可以发现许多很有特色的用例叙述格式。
此处,我们示范编写“网络申购单笔基金”和“网络申购定期定额基金”的系统用例叙述,如下图2-4和图2-5所示:
企业通过一组规则(Buisness Rules)来控制整体的运作,包括人员、流程、系统、概念的运作,皆受制于业务规则。由此足见业务规则之重要,所以早从PIM-1的系统用例叙述,一直 到此处的PIM-2状态图以及稍后的PIM-3类图,我们都会要求系统分析员必需通过这些UML图,记录且呈现重要的业务规则。
例如,在经过PIM-1的步骤之后,我们认为“定期定额申购”是很重要的业务对象,而且涉及许多重要的业务规则,所以决定为它绘制如图2-6的状态图,以便组织业务规则,同时也对定期定额申购有更深入的理解。
在PIM-3中,系统分析员用类图来表达系统内部的静态结构。系统只有具备稳定且具弹性的静态结构,才能够顺应需求变更,迅速支撑多样化的系统用 例。之后,类图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之一。程序员通常会按照类图的内容,来编写并组织源代码。
在PIM-3的过程中,系统分析员寻找操作绝对优先于寻找属性。因为属性随处可见,特别是从PIM-1搜集而来的窗体,里头多的是对象必须保存的属性。而寻找操作就没这么直接简单了,系统分析员必须多动脑筋才能定义出操作,所以先别管属性了,记得优先找操作。
进行PIM-3时,系统分析员可以通过下列步骤,建立出如图2-7的类图:
在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之二(另一张是类图)。程序员通常会按照序列图的内容,编写出方法的源代码雏型。
此外,PIM-1的系统用例叙述和PIM-3的类图,对PIM-4的序列图有不可或缺的贡献。从PIM-1的系统用例叙述中,系统分析员可以分析出 系统流程。而在PIM-3的类图中,系统分析员定义出系统内部的静态结构。随后,到了PIM-4的序列图时,则结合了系统用例以及静态结构两者。
系统分析员通过序列图的思考与表达,试图安排依据类们所生成的一群对象之间的交互,让这一群对象可以合力完成某一个系统用例。同时,在序列图中,一群对象交互所引发的操作,则可以反馈给类图,定义出更多的操作及属性,甚至发现之前未发现的其他类及关系。
系统分析员可参考下述步骤来绘制序列图:
以“网络申购单笔基金”系统用例之主要流程为例,我们示范绘制出如图2-8所示的序列图。
最后,系统分析员可以试着执行一次序列图的流程,并且为操作加上参数。增加输入(in)及输出(out)参数如下:
由于,单笔申购和定期定额申购计算手续费的方法相同,所以系统分析员可以将单笔申购类里的“计算手续费”操作移至申购交易类,并汇总上述序列图所新增的操作与相关属性,更新类图如2-9所示。
由于我们采用MDA(Model-Driven Architecture)开发程序,作为专业分工的依据,因此系统分析员的工作聚焦于CIM与PIM阶段,至于PSM及编码阶段,则交由其他的设计师负责之。MDA主要将生成的UML模型,分为下列三个阶段:
因此,系统分析员执行了前述的CIM与PIM步骤,并且获得高质量的生成之后,设计师会依据具体平台进一步生成PSM阶段的设计,并交由程序员按图编码,编写出适用于特定具体平台的代码。
本文节选自机械工业出版社新推出的中的第2章《做好系统分析》。
通 过一个完整的仿真实例,介绍了从需求到生成UML的用例图及其叙述、活动图、类图、序列图和状态图等,一应俱全,过程细腻,步骤详细。主要内容包括:定义 业务流程、分析业务流程、定义系统范围、分析系统流程、分析业务规则、定义静态结构、定义操作及方法、基金模拟项目、语音备忘器等。
|