OO系统分析员之路--用例分析系列(4)--业务建模一般步骤和方法

本篇开始之前先扯点闲话,商业应用系统开发经历了三个阶段:

第一个阶段以计算为中心,分析设计围绕程序的运行效率,算法优劣,存贮优化来进行。90年代的大学课程讲的都是这些。

第二阶段以数据为中心,分析设计围绕数据流进行,以数据流程来模拟业务流程。这也就是所谓的面向过程的分析模式。

第三阶段以人为中心,分析设计围绕人的业务需求,使用要求,感受要求进行。这也就是现在的面象对象分析模式。

使用OO方法建立商业模型必须先定义涉众。商业系统无论多复杂,无论什么行业,其本质无非是人,事,物,规则。人是一切的中心,人做事,做事产生物,规则限制人事物。人驱动系统,事体现过程,物记录结果,规则则是控制。无论OO也好,UML也好,复杂的表面下其实只是一个简单的规则,系统分析员弄明白有什么人,什么人做什么事,什么事产生什么物,中间有什么规则,再把人,事,物之间的关系定义出来,商业建模也就基本完成了。这时候可以说,系统分析员已经完全了解了用户需求,可以进入系统建模阶段了。

书归正传,上篇笔者归纳了一些典型的涉众类型及他们的普遍期望。接下来,就是要将他们这些期望定义出来。这个过程,就是业务用例获取的过程。笔者可以跟大家分享的经验是通过以下步骤进行,这些步骤并非唯一正确,对于经验不多的系统分析员来说,这些步骤很有指导意义。

笔者做了一个建模实例,有需要有读者请到笔者的BLOG资源中心下载,实例以上一篇所述网上图书馆需求为蓝本建立了业务用例模型,之后的概念模型、系统模型则抽取了其中的借阅过程作为例子。不记得了可以后头找找。

建模第一步,从涉众中找出用户。并定义这些用户之间的关系。在ROSE中,应该使用business actor 类型。参考上一篇的需求描述,下载实例

第二步,找出每个用户要做的事,即业务用例,在ROSE中应使用Business use case类型。请参考《用例的类型与粒度》一文以帮助确定用例的粒度。笔者强烈建议为每一个business actor绘制一个业务用例图,这能很好的体现以人为中心的分析模式,并且不容易漏掉business actor需要做的事。至于以参与者为中心的视图容易漏掉某个业务用例的参与者的担心,可以在第四步中得到消除。下载实例

第三步,利用业务场景图帮助分析业务流程,在ROSE中,这个阶段最好使用活动图Activity diagram。在这个阶段,业务场景图非常重要,在绘制过程中,系统分析员必须采用第一步中定义的用户名字作为泳道名,使用第二步中定义的业务用例名作为活动名来绘制。必须这么做的原因是,如果你无法把利用已经定义出来的 business actor 和 business use case完备的描绘业务流程,那么一定是前面的定义出问题了,你需要回头审视是否 business actor 和 business use case定义不完善或错误。如果不是所有的business actor 和 business use case 都被用到,要么应该检查业务流程调研时漏了什么,要么应该检查是否定义了一些无用的business actor 和 business use case 。同时,绘制业务场景图也非常有助于选择合适的用例粒度并保持所有的用例都是同一粒度。下载实例

第四步,绘制用例场景图。与业务场景图不同的是,用例场景图只针对一个用例绘制该用例的执行过程。笔者仍然强烈推荐使用activity diagram。在用例场景图的绘制中,必须使用第一步中定义的业务用户作为泳道。必须这么做的原因是,它能帮助你发现在定义业务用例图时的错误,比如是否漏掉了某个业务用例的潜在使用者。不是每个业务用例都需要绘制场景图,只有两三个步骤的业务用例是不必一定绘制业务用例图的,但仍然需要在业务用例规约文档中写明。下载实例

第五步,从第三步或第四步中绘制的活动图中找到每一步活动将使用到的或产生的结果。这是找到物的过程。找到后,应当建立这些物之间的关系。在ROSE中,这称为业务实体模型。应该使用business entity 类型。下载实例

第六步,在上述过程中,随时补充词汇表Glossary。将此过程中的所有业务词汇,专业词汇等一切在建模过程中使用到的需要解释的名词。这份文档将成为模型建立人与读者就模型达成一致理解的重要保证。

第七步,根据上一篇中提到的业主,老板等涉众的期望审视建立好的模型,确定业务范围,决定哪些业务用例在系统建设范围内。那些不打算纳入建设范围内的业务用例有两种情况,一种是该业务用例是被调用一方,那么应该把它改为 boundary 类型,意味着将来它是一个外部接口。另一种是该业务用例主动调用系统内业务用例,那么应该将它改为business actor类型。与普通business actor不同的是,由业务用例转换而成的business actor不是人,而通常是一个外部系统进程,因此应该在被调用的系统内业务用例与它之间增加一个boundary元素,意味着我们的系统将为这样一个外部进程提供一个接口。严格来说,那些需要纳入建设范围的business use case 应当对应的生成一个 business use case realization, 以后的设计工作将归纳到这些实现用例中。但笔者觉得这一步并非很关键的,实际中本人也经常省略这一步,而将协作图,象活动图,类交互图等直接在business usecase下说明。不过本实例中笔者还是按照正规方法来建模的。下载实例

需要说明的是,上述的步骤并非一次性完成的,在每一个步骤中都可能导致对以前步骤的调整。即使建模已经完成,当遇到变化或发现新问题时,上述步骤应当从头到尾再执行一次。这也是RUP倡导的迭代开发模式。

经过以上的步骤,我们已经建立了一个完整的业务模型。但这决不是建模工作的全部,以上过程只说明了建立一个完整业务模型的过程,不能说这样就建立了一个很好的业务模型。因为上述的过程中并没有提及业务分析过程。分析过程全凭系统分析员的经验,对OO的理解和对行业业务的把握能力,对原始业务模型进行归纳,整理,抽象,重构,以建立一个更高效,合理,扩展性更强的模型。这个过程无法以步骤说明。或许以后笔者会专门针对模型分析写点东西。另外除了模型,还至少需要写业务架构文档、用例规约和补充用例规约三种文档。因为模型虽然可以较好的体现业务架构,但很不好表达业务规则和非业务需求,这些需要在文档中说明。例如用例的前置条件和后置条件就是一种业务规则。读者可以在RUP文档中找到这些文档的模板。

预告:下一篇笔者将讲述如何根据业务模型建立系统概念模型。这里先说一点,系统概念模型建立最主要依据的是第三步、第四步、第五步建立的业务/用例场景和业务实体模型。这也突显了场景和实体模型的重要程度。

时间: 2024-08-01 13:18:00

OO系统分析员之路--用例分析系列(4)--业务建模一般步骤和方法的相关文章

OO系统分析员之路--用例分析系列(8)--如何编写一份完整的UML需求规格说明书

终于到了快结束的时候了,这将是用例分析系列的最后一篇,结果是得到需求规格说明书,以结束需求分析的过程.经过前面七篇的工作,我们从最初的业务用例获取入手,获得了业务用例模型,这是我们的业务范围:经过分析得到了业务场景,这是我们的业务蓝图:经过规划,得出用例实现视图,这是我们的系统范围:经过再次分析,得到了用例实现以及领域模型,包括用例规约,业务规则和业务数据,这是我们的概念模型.仅从需求所需的必要元素来说,我们基本上已经完成了需求分析的工作.诚如上一篇结尾所说,为了让我们的需求更完美,这一篇所要做

OO系统分析员之路--用例分析系列(2)--什么是用例

我发现,在OO和UML几乎一统天下的今天,仍有很多系统分析员对OO和UML一知半解,甚至包括很多已经使用了很久UML的系统分析员. 于是打算写一个系列文章,将多年来的工作经验做一个总结.对初学者起个启蒙作用,也希望抛砖引喻,与各路大虾共同探讨,共同提高. 这个系列文章将以我对OO和系统分析的理解为主,从UML基础开始,阐述面向对象的需求分析方法,过程,并以RUP为例,阐述如何将OO过程与软件过程有机结合在一起,做一个真正OO应用. 好了,今天是第一篇.想得很远,不知能否坚持下去,呵呵:lol:

OO系统分析员之路--用例分析系列(5)--用户、业务用例和业务场景

很久没有动笔了,这期间承蒙许多朋友的喜欢和鼓励,再不写点东西就对不住这些朋友了. 写点什么呢?按照原先的设想,应该开始动手写如何从业务用例转化到概念用例和系统用例,不过老实说这一步需要的是经验居多,而很难找出一个普适的步骤来.先暂时放一放吧,以后一定会写到的.上一篇讲到用例分析的一般步骤和方法,也给出了一个实例,不过没有做更进一步的说明,所以这一篇,笔者决定先罗嗦罗嗦之前的内容,说说业务建模中各种图的用法,以及它们对需求的贡献. 在说明实例之前,再重复一下的需求,并提醒读者下载实例,本文下面只会

OO系统分析员之路--用例分析系列(6)--用例实现、用例场景和领域模型

上一篇说到我们经过初步的业务分析,得到了用户.业务用例以及业务场景模型.这三项工作成果形成了基本的需求框架,并圈定了业务范围.这时应当做一份基线. 当然,第一份基线所包括的内容是非常粗的,要达到完整的需求说明还有更多工作要做.这一篇就来说说详细的需求过程和产出物,以及这些成果对需求的贡献.在开始之前,还是提醒读者下载实例,本文下面只会从实例中挑选很少一部分来说明,对照实例读者将能更好的理解. 上一篇确定了业务用例,以及业务场景.该场景只描述了业务框架,接下来要对业务用例进行场景分析.用例场景分析

OO系统分析员之路--用例分析系列(3)--业务建模之涉众

从这一篇开始,笔者将借助一个虚拟的实例来阐述获取用例的方法,以及如何判断用例获取是否完备,粒度选择是否合适.事实上,在做这些工作时,我们正在进行需求分析的第一个阶段,即业务建模阶段.借助这个例子,笔者同样会阐述业务建模到底应该做什么,做到什么地步才能说明业务需求已经完整,可以称为一份完整的需求规格说明书了. 一般来说,只有当以下工作都完成,才能说业务模型建立完成,它们是: 发现和定义涉众 画定业务边界 获取用例 绘制用例场景图 绘制业务实体模型(领域模型) 编制词汇表 下面笔者开始就一个事例来说

OO系统分析员之路--用例分析系列(7)--用例规约的编写--业务规则和实体描述

先说说业务规则.笔者习惯将业务规则分为三种. 一种是全局规则,这种规则一般与所有用例都相关而不是与特定用例相关,例如actor要操作用例必须获得相应的授权,用例的操作与授权级别相关,或者用户在系统中的所有操作都要被记录下来等等.这类规则笔者习惯于,并且也建议将它们写到用例的补充规约里面去,因为它们一般与具体的业务功能性要求没有直接关系.有时候,这类规则也被写到软件架构文档中.关于用例补充规约以后再讨论. 第二种是交互规则.这种规则产生于用例场景当中,例如当提交一份定单时,哪些数据是必须填写的,用

OO系统分析员之路--用例分析系列(2)--用例的类型与粒度

在正式讨论如何获取用例之前,笔者觉得有两个问题还是先解释清楚为好,这对正确获取用例有很大帮助.这两个问题也是初学者最为困惑,也是最难掌握的.一个是各种用例类型之间的区别和用法,另一个是用例的粒度. 先说说用例类型的问题. 用例类型,有的资料翻译为版型,英文原文是stereotype.在Rose中默认的类型有business usecase , business usecase realization和use case realization三种.相应的,就是指 业务用例: 业务用例实现: 用例实

ENode框架Conference案例分析系列之 - 业务简介

前言 ENode是一个应用开发框架.通过ENode,我们可以方便的开发基于DDD+CQRS+EventSourcing+EDA架构的应用程序.之前我已经写了很多关于ENode的架构以及设计原理的文章,但是因为没有和具体的例子结合来进行分析,所以可能很多人还是无法理解ENode的功能和设计.所以,接下来,我想通过一个较为完整的案例来一步步从业务分析到领域模型设计再到代码实现,以案例的方式讲解ENode如何帮助我们落实DDD的编码实现. 本文是这个系列的第一篇,所以需要先介绍这个案例的一些业务. 前

自定义View系列教程05--示例分析

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View