Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281475
  • 博文数量: 179
  • 博客积分: 2995
  • 博客等级: 少校
  • 技术积分: 2100
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 10:21
文章分类

全部博文(179)

文章存档

2011年(1)

2010年(28)

2009年(150)

我的朋友

分类: 项目管理

2010-01-13 09:59:09

系统分析师UML实务手册

目录

推荐序
前言
第1章 为什么系统分析员需要学习UML
1.1 概述
1.2 UML并非万能
1.3 UML图
1.4 重要的OO及UML概念
1.4.1 对象
1.4.2 属性与操作
1.4.3 操作与方法
1.4.4 封装
1.4.5 类
1.4.6 泛化关系
1.4.7 关联关系
1.4.8 聚合关系
1.4.9 组合关系
14.10 用例与执行者
1.4.11 业务用例与系统用例
1.5 MDA开发程序
1.5.1 MDA的主张
1.5.2 程序
1.5.3 MDA在芯片设计的应用
1.5.4 本书所采用的分析步骤
1.6 UML对MDA的帮助
1.6.1 中立机构负责维护UML
1.6.2 中立的建模语言
1.6.3 Profile支持定制化UML方言
第2章 做好系统分析
2.1 CTM-1:定义业务流程
2.2 CIM-2:分析业务流程
2.3 CIM-3:定义系统范围
2.4 PIM-1:分析系统流程
2.5 PIM-2:分析业务规则
2.6 PIM-3:定义静态结构
2.7 PIM-4:定义操作及方法
2.8 在CIM与PIM之后
第3章 定义业务流程
3.1 为什么需要定义业务流程
3.2 CIM-1:定义业务流程
3.3 准备好StarUML
3.4 模拟CIM-1:定义业务流程
第4章 分析业务流程
 4.1 CIM-2:分析业务流程
 4.2 准备好CIM-1:业务用例模型
 4.3 准备好StarUML
 4.4 模拟CiM-2:分析业务流程
第5章 定义系统范围
5.1 CIM-3:定义系统范围
5.2 准备好CIM-2:活动图
5.3 准备好StarUML
5.4 模拟CIM-3:定义系统范围
第6章 分析系统流程
6.1 正式进入分析阶段
6.2 PIM-1:系统用例叙述
 6.2.1 用例基本数据
  6.2.2 执行流程
  6.2.3 条件及规则 
 6.2.4 相关文档
  6.2.5 其他事项
6.3 准备好CIM-3:系统用例图
 ……
第7章 分析业务规则
第8章 定义静态结构
第9章 定义操作及方法
第10章 基金模拟项目 
第11章 语音备忘器

第一章

 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:定义操作及方法,生成序列图。

-----------------------------------------------------------------------------------

用UML做好系统分析


CIM-1:定义业务流程

定义及分析业务流程(Business Process)是为了尽快理清系统范围,以便估算开发成本及时间,可不是为了要改造业务流程。系统分析员千万别误解了此步骤的目的。所以,系统分析员在定义及分析业务流程时,要记得挑选跟系统有关的业务流程。

CIM-1定义业务流程的生成,主要有如下的业务用例图和简述。请看图2-1的业务用例图,图中的每一个业务用例代表一条业务流程,业务执行者则代 表位于企业外但会启动或参与业务流程的人。投资人到银行临柜申购基金,启动了银行内部的一段关于申购基金的业务流程。再者,投资人也可能临柜办理赎回基 金,这又引发了另一条业务流程。

至于业务用例简述,简洁扼要即可,我们主要用它来记录和区分业务流程。

CIM-2:分析业务流程

通过CIM-1圈出了系统将参与的业务流程之后,针对每一个业务用例,系统分析员得开始分析它的工作流程,并且绘制活动图(Activity Diagram)与业务人员取得共识。随后到了CIM-3时,才能够依此定义出系统可以协助之处,并且规划出系统范围。

此处,我们挑选一般的申购基金流程当示范,并绘制出如图2-2所示的活动图,展示了单笔申购基金的一般交易流程。

CIM-3:定义系统范围

经过了CIM-1的定义业务流程,以及CIM-2的分析业务流程之后,终于进入到CIM-3这场压轴戏了。CIM-1和CIM-2的生成文件,跟CIM-3的生成文件之间,有如下的关联性:

  • CIM-2活动图中的每一个动作,都可能成为CIM-3的系统用例。
  • CIM-1中的业务执行者,以及CIM-2中的动作负责人,都可能成为CIM-3的系统执行者(System Actor)。

针对上述的图2-2一般流程的活动图,我们分析得出如图2-3的系统用例图,以及下述的用例简述。

PIM-1:分析系统流程

在CIM阶段,系统分析员大约花1~2周的时间,尽快生成初步的系统用例,以便让相关的决策人员可以从中挑选出首期开发的系统用例,而这也就是首期的系统范围。

随后,项目正式进入PIM阶段,也是正式进入分析阶段,所以系统分析员将投入更多的时间,针对首期的系统用例详述规格,作为正式需求文件的一部分,也作为业务人员与开发人员之间的沟通文件。

所以,系统分析员在PIM-1的主要工作,将针对每一个系统用例,分析其内部细节,并编写详尽的系统用例叙述(UC Description)。UML并未提出标准的叙述格式可供遵守,不过系统分析员可以在网络上找到许多实用的用例叙述格式,或者翻阅一些UML或用例相 关书籍,也可以发现许多很有特色的用例叙述格式。

此处,我们示范编写“网络申购单笔基金”和“网络申购定期定额基金”的系统用例叙述,如下图2-4和图2-5所示:

PIM-2:分析业务规则

企业通过一组规则(Buisness Rules)来控制整体的运作,包括人员、流程、系统、概念的运作,皆受制于业务规则。由此足见业务规则之重要,所以早从PIM-1的系统用例叙述,一直 到此处的PIM-2状态图以及稍后的PIM-3类图,我们都会要求系统分析员必需通过这些UML图,记录且呈现重要的业务规则。

例如,在经过PIM-1的步骤之后,我们认为“定期定额申购”是很重要的业务对象,而且涉及许多重要的业务规则,所以决定为它绘制如图2-6的状态图,以便组织业务规则,同时也对定期定额申购有更深入的理解。

PIM-3:定义静态结构

在PIM-3中,系统分析员用类图来表达系统内部的静态结构。系统只有具备稳定且具弹性的静态结构,才能够顺应需求变更,迅速支撑多样化的系统用 例。之后,类图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之一。程序员通常会按照类图的内容,来编写并组织源代码。

在PIM-3的过程中,系统分析员寻找操作绝对优先于寻找属性。因为属性随处可见,特别是从PIM-1搜集而来的窗体,里头多的是对象必须保存的属性。而寻找操作就没这么直接简单了,系统分析员必须多动脑筋才能定义出操作,所以先别管属性了,记得优先找操作。

进行PIM-3时,系统分析员可以通过下列步骤,建立出如图2-7的类图:

  1. 套用交易模式,并且经过调整之后,系统分析员可以获得初步的静态结构。
  2. 分析PIM-2的状态图之后,系统分析员可以为类增加属性及操作。
  3. 分析PIM-1搜集来的窗体,系统分析员可以为类增加更多的属性。
  4. 经过PIM-4的序列图,系统分析员可以为类增加更多的操作,并且描述操作的方法。

PIM-4:定义操作及方法

在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计师之手,进行调整,并且成为程序员最关切的设计图之二(另一张是类图)。程序员通常会按照序列图的内容,编写出方法的源代码雏型。

此外,PIM-1的系统用例叙述和PIM-3的类图,对PIM-4的序列图有不可或缺的贡献。从PIM-1的系统用例叙述中,系统分析员可以分析出 系统流程。而在PIM-3的类图中,系统分析员定义出系统内部的静态结构。随后,到了PIM-4的序列图时,则结合了系统用例以及静态结构两者。

系统分析员通过序列图的思考与表达,试图安排依据类们所生成的一群对象之间的交互,让这一群对象可以合力完成某一个系统用例。同时,在序列图中,一群对象交互所引发的操作,则可以反馈给类图,定义出更多的操作及属性,甚至发现之前未发现的其他类及关系。

系统分析员可参考下述步骤来绘制序列图:

  1. 扮演启动者的执行者对象放置于序列图最左方;扮演支持者的执行者对象放至于序列图的最右方。
  2. 针对系统用例叙述里所记载每项流程步骤,判断执行时需要使用到哪些数据,且可指派拥有该数据的对象负责该项工作。
  3. 试着执行序列图,以便调整流程,并且为操作加上参数。
  4. 把绘制序列图时所找到的操作及属性,反馈给类图。

以“网络申购单笔基金”系统用例之主要流程为例,我们示范绘制出如图2-8所示的序列图。

最后,系统分析员可以试着执行一次序列图的流程,并且为操作加上参数。增加输入(in)及输出(out)参数如下:

  1. 查询托售基金清单(out 基金名称清单)
  2. 查询基金名称(out 基金名称,基金代号)
  3. 查询扣款账号(out 扣款账号)
  4. 单笔申购基金(in 基金代号,申购金额)
  5. 计算手续费(in 申购金额,out 手续费)
  6. 查询银行折扣(out 银行折扣)
  7. 查询基金管理费(out 基金管理费)
  8. 查询综存账户余额(out 综存账户余额)
  9. 查询综存账户余额(in 扣款账号,out 综存账户余额)
  10. 确认单笔申购(out 凭证号码)
  11. 扣款()
  12. 扣款(in 交易金额)
  13. 设定申购日期()
  14. 产生交易编号(out 凭证号码)

由于,单笔申购和定期定额申购计算手续费的方法相同,所以系统分析员可以将单笔申购类里的“计算手续费”操作移至申购交易类,并汇总上述序列图所新增的操作与相关属性,更新类图如2-9所示。

在CIM与PIM之后

由于我们采用MDA(Model-Driven Architecture)开发程序,作为专业分工的依据,因此系统分析员的工作聚焦于CIM与PIM阶段,至于PSM及编码阶段,则交由其他的设计师负责之。MDA主要将生成的UML模型,分为下列三个阶段:

  • CIM(Computation Independent Model)──聚焦于系统环境及需求,但不涉及系统内部的结构与运作细节。
  • PIM(Platform Independent Model)──聚焦于系统内部细节,但不涉及实现系统的具体平台(Platform)。
  • PSM(Platform Specific Model)──聚焦于系统落实于特定具体平台的细节。例如,Spring、EJB2或.NET都是一种具体平台。

因此,系统分析员执行了前述的CIM与PIM步骤,并且获得高质量的生成之后,设计师会依据具体平台进一步生成PSM阶段的设计,并交由程序员按图编码,编写出适用于特定具体平台的代码。

本文节选自机械工业出版社新推出的中的第2章《做好系统分析》。

通 过一个完整的仿真实例,介绍了从需求到生成UML的用例图及其叙述、活动图、类图、序列图和状态图等,一应俱全,过程细腻,步骤详细。主要内容包括:定义 业务流程、分析业务流程、定义系统范围、分析系统流程、分析业务规则、定义静态结构、定义操作及方法、基金模拟项目、语音备忘器等。

文件:InfoQ_chapter10.pdf
大小:1088KB
下载:下载

阅读(948) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~