当我们把企业整体分离成一个一个的能力单元时,我们就能够对企业能力有一个明确的把握。
当我们因为偶然的机缘踏上某一条看似无人踏足过的小径之后,很快就发现,其实这条小径早就有人走过。世界上任何看上去离经叛道的思想,实际上都不可能是新的,顶多算是已有思想的新的组合或者新的应用。珍珠串项链的“发现”也同样如此。哥伦布绝对不是美洲的发现者,印第安人早就世世代代生活在那里。
我们公司信息化项目购买的平台软件是用Java语言写成的,因此对这个领域一窍不通的我也偶尔随手翻翻有关Java语言的书,当然是看不懂。但是,外行翻书自有另一番妙处,因为看不懂专业内容,只能去看其中的思想(还真的碰到一本书名就叫做《Java编程思想》),看懂了这些思想也不会用于作者所应用的领域,因为你确实不懂他的领域,你只能把其中的思想“偷”来用于自己所熟悉的领域,而这些作为他山之石的思想往往能够给你重要的启示。
Java编程思想的基础是“面向对象”,而非“面向过程”。为什么要用“面向对象”替代“面向过程”呢?“面向对象”编写的程序是一些相对独立的“原子”,可以通过消息(任务)来调用、联结为一个个“过程”。这不就是“珍珠串项链”吗?读到这些内容真的想拍大腿了(这样的惊奇我们今后还会遇到很多)。
面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。
如果说传统的面向过程式编程语言是以过程为中心、以算法为驱动的话,面向对象的编程语言则是以对象为中心、以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
面向对象的“原子”是可以重复使用的,是可以灵活地重新结构为新的“过程”的。
这哪里是在讲编程,不就是在讲企业吗?企业设计与企业信息系统设计,难道不是同构的吗?真的搞不懂,我们的签约软件供应商在软件开发中天天用到的就是Java语言,而仅仅是把其核心思想从技术方面的应用扩展到企业层面的应用,他们为什么就感觉到难以理解、不可理喻呢?
“面向对象”的方法可以给予我们的探索以直接的启发。这个方法的重要理念就是“分离”和“调用”。跳出编程语言层面,直接从企业设计层面来理解,就是:对于一个业务流程,我们可以把其中包含的所有活动都固化起来,不再变动,这样是最省事的。但是,我们也可以把其中的每一个活动(活动的概念相当灵活,根据需要可以在不同的层次来应用,这就是活动分离的“粒度”,请记住这个概念,今后还会用到)分离开来,根据具体任务去调用他们,以完成业务流程。“虽然后者看似把业务复杂化了,但是事实上这才是正确的做法—这就是分离”,“这样的好处很明显。”
1
2
下一页>>