论坛首页 综合技术论坛

业务流程不是需求

浏览 24636 次
该帖已经被评为良好帖
作者 正文
   发表时间:2006-12-30  

没有一个项目不是重视需求调查的。从第一天开始,开发人员就拿着一个笔记本,把用户都拉到会议室,询问他们的业务流程是什么样的。知道了业务流程,开发者剩下的工作就明确了,一条一条的去实现他们,系统就OK了。但是,业务流程可以代替需求吗?

实际上,在业务流程的背后,有一个更加根本的因素——商业需求。商业需求才是真正的需求,业务流程只是一种实现手段而已。

开发者询问用户:“你们的业务流程是什么样的?”这个问题其实是很难回答的。业务流程的制定首先是要最大限度的满足商业需求。并且,业务流程要受到各种条件的制约,IT系统也是这个条件之一。开发者问用户业务流程是什么样的,用户也要问开发者系统的设计是什么样的,能达到什么样的性能指标,在这个基础上才能制定合理的业务流程。

比如一家移动通信公司,在处理新用户入网的时候采用了一个这样的流程,按流程先后顺序:

1:首先把SIM卡和号码在交换网络上做对应关系的注册;

2:市场部把SIM卡存入一定的金额,发给销售商,收取销售商的货款;

3:销售商把卡卖给用户,用户填写入网合同,SIM装入手机可以立即通话;

4:销售商把入网合同交给市场部,市场部资料录入人员将用户的资料录入系统;

5:计费系统按照用户选择的资费对话单进行计费;

6、市场部按照用户的消费情况给销售商计算佣金和返利。

这个流程的制定并不是业务部门可以单独确定的,他和IT系统有着很深的联系。用户买到SIM卡以后,需要立即可以通话,但是由于IT系统的条件有限,无法做到及时向交换网络注册SIM卡,所以就必须先把SIM卡和号码在交换网络上做好,再发放到销售点去。由于采用了这样的办法,又产生了一个新的问题:买到SIM卡的用户可以立刻打电话,但是在资料录入人员录入用户的资料之前,他们在系统里是没有资料的,也没有计费策略,这是一段资料空白期。怎样控制空白期的时间长度,怎样对这些通话进行计费,怎样防止空白期的恶意欠费。。。又形成了一个个新的问题,于是又要发明一个个业务流程来处理这个问题。

IT系统和业务流程是紧密关联的,他们互相制约,也互相促进。如果希望先把业务流程定下来,再回头去开发IT系统,这个难度是很大的。开发IT系统,需要把目光看的更深入一点:IT系统和业务流程是为什么服务的。

IT系统和业务流程都是为了更好的实现商业需求。商业需求是企业为用户服务、与伙伴合作的过程中产生的需求,每个商业需求都是关系到实际的商业利益的。比如说刚才那个用户入网的流程,如果按照商业需求来看,他是为了满足下面几点:

1、用户买到SIM,可以立刻装到手机里面打电话;

2、用户的通话可以按照他选择的资费策略进行计费;

3、用户交的钱计入他的账户,通话费用从这个账户中扣除;

4、用户填写的合同归档,作为日后办理相关事宜的依据;

5、营业员收的钱计入他自己的账本,待稽核人员下班后核查;

6、市场部根据用户的消费情况付给代理商佣金。

这几点就是“入网”这个业务流程需要满足的商业需求。企业在实现这些商业需求的过程中,一定是遇到了一些麻烦,于是希望有一个IT系统来帮助自己。IT系统的开发者要和企业用户坐在一起,先把这些商业需求搞清楚。在这个基础上,一方面要设计支持系统,另一方面要根据支持系统的情况来制定新的流程。最终实现自动化的业务流程,更好的满足商业需求。

从商业需求中提取重要的元素,分析这些元素的行为和相互之间的关系,我们就可以得到一个重要的东西:领域模型。

领域模型应该来源于企业的商业活动,而不应该是IT系统的业务流程。

设计领域模型,最基本的方法就是抓住一些明显的元素进行分析。更进一步,需要抓住一些隐含的元素。业务领域中有经验的人员,他们在分析问题时候,有时候会随手画出一个草图,写下一些数值,或者查询某个表单,这都是重要的领域元素。了解这些东西,可以使复杂的领域问题变得容易理解,使领域模型更加符合企业的实际情况。

当这个模型渐渐清晰的时候,开发者和用户就可以一边进行IT系统的设计,一边设计出更加合理高效的业务流程。有了一个个实际的东西摆在面前,用户也能很容易的回忆起商业活动中一些重要的细节。比如看到这个租机合同,开发者会问:“这个合同有什么用处?”用户回答说:“我知道一个用处,用户办理资费变更的时候,需要检查一下这个合同,有些资费形式是合同不允许的。”

于是开发者就在资费变更的流程中记下这样的代码:

IF NOT 用户->合同->允许(资费) THEN
  EXCEPTION(
"用户的合同禁止该资费")
END IF

下一步的工作,就是继续将这个商业需求的细节搞清楚。“合同如何判断一个资费形式是否允许,是判断这个资费的收益率,还是判断他的品牌类型。。。”

不要被表面的业务流程所迷惑,透过表面,看到背后的商业需求,你会发现需求原来非常稳定,这么多年来其实变化不多。也不需要知道所有的细节性的需求,只要了解比较重要的20%的需求,其实就可以开始进行系统的设计和编码了。把眼光放在商业需求上,最终的业务流程才能最大限度的满足需要,IT系统也能面临少一点的“需求变更”。

   发表时间:2006-12-30  
恩,基本同意分析,商业需求和业务流程是不一样的,需要把握其中不变的概念。

但问题在于除非你站在一个足够高的层次上,有资格看到全局的流程,否则你很难发现这其中的不变概念。
而很多时候我们的系统都只是针对整体流程中的一个局部,无法尽窥全貌。

以楼主的例子来说,如果是做某个代理商的系统,并且和移动的这个系统做了接口,那么很可能就发现随着移动的业务规则变一变,你的系统就要大幅度调整了。

而整体业务流程往往是极为复杂的,其边界切分也不是那么显而易见的,尤其是在涉及到参与者的利益的时候。








0 请登录后投票
   发表时间:2006-12-30  
看你们的vision and scope怎么定了。
上新系统,原来的业务流程是需要梳理的,这是很复杂的一件事情,相比较在一套现有的流程上实现一个系统而言复杂的多。这应该是业务专家,咨询专家定的事情,不是到需求阶段。这个阶段叫做业务咨询-业务流程再造。
需求基本上是跟据已经定下来得业务流程确定哪些事情需要系统来作,如何去做。
0 请登录后投票
   发表时间:2006-12-31  
非常赞同.
如果把业务流程当作需求.
就会落入客户提供设计方案的谜团.
当然不是指客户主观地设局.
0 请登录后投票
   发表时间:2006-12-31  
Godlikeme 写道
看你们的vision and scope怎么定了。
上新系统,原来的业务流程是需要梳理的,这是很复杂的一件事情,相比较在一套现有的流程上实现一个系统而言复杂的多。这应该是业务专家,咨询专家定的事情,不是到需求阶段。这个阶段叫做业务咨询-业务流程再造。
需求基本上是跟据已经定下来得业务流程确定哪些事情需要系统来作,如何去做。
业务流程的再造脱离了IT系统的实际状况是很难进行的,流程再造和IT建设必须是同时进行的,以实现自动化的业务流程,更好的实现商业需求。
流程可以随时发生变化,目的是更好的实现商业需求。不同的流程组合都是为了同样的商业需求,某一个独立的流程可以存在,也可以不存在。比如一个企业,把货发给同一地区的两家代理商进行销售,原先IT系统的设计是:货发给某个代理商,将来销售出去以后就把销售成果记在这个代理商头上,提成和销售业绩也以此为依据。但是市场的情况总是有很多灵活性的,货是发给了A,但是结果是B找到了销路,企业肯定不会以系统不支持为理由,不让B卖这批货,也不可能把B的销售业务算在A的头上。尽管可以通过一些变通的方式,发明一些新的流程,改变营销业绩的计算方式,但是这会使系统脱离商业实际情况。这个过程中出现了新的业务流程,但是实际上商业目的并没有改变。建立在业务过程上的系统就会受到较大的冲击,而建立了完整的领域模型的系统只要稍加改动,就可以适应新的问题。
先把流程确定下来,再来按照这个流程去制造IT系统,这是一种僵硬的实施过程,以这样的过程去开发IT系统,即使开发过程本身再敏捷,都是没有用的,从需求阶段就搞僵硬了。
0 请登录后投票
   发表时间:2006-12-31  
lane_cn 写道
这个过程中出现了新的业务流程,但是实际上商业目的并没有改变。建立在业务过程上的系统就会受到较大的冲击,而建立了完整的领域模型的系统只要稍加改动,就可以适应新的问题。
先把流程确定下来,再来按照这个流程去制造IT系统,这是一种僵硬的实施过程,以这样的过程去开发IT系统,即使开发过程本身再敏捷,都是没有用的,从需求阶段就搞僵硬了。


恩,你认识到了业务流程这个概念的不足,但是却转而又寄托于“完整的领域模型”,这就比较让我费解了。
领域模型比业务流程更为稳定,但不是不变的万能药。
1)领域模型不是商业模式,它本身也会变
2)在领域模型稳定的阶段中,在不同的业务流程下所能发挥出的作用是不一样的,所以咨询者都要推“业务流程再造”、“最佳实践”。
3)过分抽象的,放之四海而皆准的东西往往也是最不切实际的东西。
0 请登录后投票
   发表时间:2006-12-31  
lane_cn 写道
Godlikeme 写道
看你们的vision and scope怎么定了。
上新系统,原来的业务流程是需要梳理的,这是很复杂的一件事情,相比较在一套现有的流程上实现一个系统而言复杂的多。这应该是业务专家,咨询专家定的事情,不是到需求阶段。这个阶段叫做业务咨询-业务流程再造。
需求基本上是跟据已经定下来得业务流程确定哪些事情需要系统来作,如何去做。
业务流程的再造脱离了IT系统的实际状况是很难进行的,流程再造和IT建设必须是同时进行的,以实现自动化的业务流程,更好的实现商业需求。
流程可以随时发生变化,目的是更好的实现商业需求。不同的流程组合都是为了同样的商业需求,某一个独立的流程可以存在,也可以不存在。比如一个企业,把货发给同一地区的两家代理商进行销售,原先IT系统的设计是:货发给某个代理商,将来销售出去以后就把销售成果记在这个代理商头上,提成和销售业绩也以此为依据。但是市场的情况总是有很多灵活性的,货是发给了A,但是结果是B找到了销路,企业肯定不会以系统不支持为理由,不让B卖这批货,也不可能把B的销售业务算在A的头上。尽管可以通过一些变通的方式,发明一些新的流程,改变营销业绩的计算方式,但是这会使系统脱离商业实际情况。这个过程中出现了新的业务流程,但是实际上商业目的并没有改变。建立在业务过程上的系统就会受到较大的冲击,而建立了完整的领域模型的系统只要稍加改动,就可以适应新的问题。
先把流程确定下来,再来按照这个流程去制造IT系统,这是一种僵硬的实施过程,以这样的过程去开发IT系统,即使开发过程本身再敏捷,都是没有用的,从需求阶段就搞僵硬了。

说到这里建议去看看sap的业务蓝图和软件实施方法论,有一套比较完整的理论与实践。
简单的说,
先设计一套业务蓝图,软件实施路线图。
基于 as is业务流程和系统,确定一套to be 业务流程,根据业务流程构建系统;
不断循环迭代,直至实现蓝图目标。
0 请登录后投票
   发表时间:2006-12-31  
clamp 写道
lane_cn 写道
这个过程中出现了新的业务流程,但是实际上商业目的并没有改变。建立在业务过程上的系统就会受到较大的冲击,而建立了完整的领域模型的系统只要稍加改动,就可以适应新的问题。
先把流程确定下来,再来按照这个流程去制造IT系统,这是一种僵硬的实施过程,以这样的过程去开发IT系统,即使开发过程本身再敏捷,都是没有用的,从需求阶段就搞僵硬了。


恩,你认识到了业务流程这个概念的不足,但是却转而又寄托于“完整的领域模型”,这就比较让我费解了。
领域模型比业务流程更为稳定,但不是不变的万能药。
1)领域模型不是商业模式,它本身也会变
2)在领域模型稳定的阶段中,在不同的业务流程下所能发挥出的作用是不一样的,所以咨询者都要推“业务流程再造”、“最佳实践”。
3)过分抽象的,放之四海而皆准的东西往往也是最不切实际的东西。


比较同意这些观点,不要寄希望于建立完整的模型,也不可能建立完整的模型,模型都是对现实复杂问题的简化,领域模型够用最好。
0 请登录后投票
   发表时间:2007-01-01  
经过godlikeme和clamp的帖子,我搞的清楚了一点。

其实无论是业务流程,还是领域模型,他们都是在描述实现商业需求的一种方案。领域模型的目的不是在于抽象领域概念,而是要尽力客观的反映领域本身。领域模型分析需求中的一些概念,而业务流程重在分析实现需求的过程。但是他们都无法代替需求本身。

正确的过程应该是这样描述:首先是要搞明白客户的商业需求,在这个基础上,运用领域模型和领域描述语言等一些工具,构建合理的业务流程。然后再进行IT系统的开发。在IT系统开发的过程中,不断对业务流程进行调整,最后业务流程和IT系统结合,实现自动化。业务流程不能看作IT系统的需求,因为业务流程和IT系统都是实施方案的组成部分,他们是互相依靠的。领域模型在这个过程中起到的是一个工具的作用,借助这个东西我们可以更好的看清复杂的需求,发现流程中的问题,也可以发现需求变更的影响范围。

要构建合理的业务流程,时时刻刻应该关注的是商业需求。无论是RUP,还是敏捷方法,都是把用例摆在中心的地位上,用例是各阶段工作的中心。用例应该体现的就是商业需求,而不是某种实现方案。
0 请登录后投票
   发表时间:2007-01-01  
恩,说的非常好~

只是感觉现在在实际的开发工程中存在这样一个问题:

1、公司已经有了业务流程,是为了满足商业需求,创造价值。
2、现在我们需要上信息化系统,我们需要知道要满足的商业需求和现在的业务流程。
3、我们研究发现现在的业务流程,并不十分适合我们现在的系统,我们需要对其业务流程进行改变。
4、我们需要与主管人员进行讨论,我们是不是能够对其现有的业务流程进行改变。
5、主管人员对业务流程的改变带来的风险和好处进行评估,决定是否要进行业务流程的改变,还是让系统去适应原有的业务流程。
6、评估完成后,决定系统如何进行设计和开发。
7、不管那种决定,都有可能造成不同的影响。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics