转载《面向对象软件开发和过程(七)》

业务建模

林星 (iamlinx@21cn.com)
2003 年 12 月

业务建模是OOAD的重要组成部分,简单的说,业务建模就对业务领域问题进行结构化的描述。这个描述将会直接指导最终生成的软件,业务模型是否具有扩展性,业务模型是否能够正确的反映需求,都将影响最终软件的质量。

1. 业务建模

1.1 为什么要业务建模?

我们把业务建模这个概念放在了最后的部分,因为面向对象是业务建模的基础。面向对象是一种用计算机语言模拟现实生活的技术。而传统的语言是基于时序的,是计算机观点的语言,和人们熟悉的社会观点是不同的。在软件发展初期时,这并不是什么很大的问题,但是当软件规模越来越大,变化的速度越来越快的时候。人们发现两种观念有了冲突。例如,订单这个对象是人类社会的一个普遍的商业名词,它是相当稳定的。所不同的只是处理规则有所不同,但在传统的语言中,订单的名词并不是关心的重点,关心的重点反而放在了订单的处理时序上。偏偏这部分的处理是不稳定的,所以就引发了变化的问题。而面向对象采用现实世界系统的思考方式,侧重于建立订单这个类型,并构造订单类型的体系,然后再建立规则。所以,他和现实世界的变化频度是基本一致,变化起来也就比较容易。

我们之前曾多次讨论了面向对象的抽象。我们知道,面向对象用于描述现实世界,他的抽象级别还太低了。所以,后来有了组件技术。组件技术提倡松耦合、粗粒度的构建方式,但是他在本质上和面向对象并没有什么太大的差异。而业务建模的关键,就是如何利用面向对象技术来描述现实世界。

1. 2 业务建模和数据库建模

很多人都经历过基于数据的应用,在需求分析完毕后,立刻建立数据模型,基于数据模型构建应用。这是这种应用的典型做法。利用先进的工具,能够达到很高的开发速度,所以这种方法在CS方式的软件中被大量采用。这种方法的基本思想是使用数据库来表示业务模型。但是我们需要深入的来思考这个问题,是不是数据库能够完全胜任这一点呢?我们就最广泛使用的关系型数据库来进行讨论。

我们知道,关系型数据库的基本原理是集合论。通过定义二维表和使用笛卡儿乘积定义二维表之间的关系来完成设计。这和我们现实生活有一定的类似之处,这是很自然的一件事情,因为数学本身就来源于生活,而软件的基础理论是数学。对于数据来说,它本身并没有很多意义,你能够说明下面这个字符串的意义吗?



"香港XX贸易有限公司"

答案是不能,但是通过数据库的表名称和表字段的定义,我们可以大致推算出他的应用范围:



表名:
客户列名:
中文名称"香港XX贸易有限公司"

我们知道,这个字符串表示了客户的中文名称。但是遗憾的是,这种的定义仍然不够精确,应该承认,它有用,但是意义并不大,对业务没什么帮助。真正对业务有帮助的描述应该是:



"香港XX贸易有限公司"是本公司的10大客户之一&#x


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部