业务建模是OOAD的重要组成部分,简单的说,业务建模就对业务领域问题进行结构化的描述。这个描述将会直接指导最终生成的软件,业务模型是否具有扩展性,业务模型是否能够正确的反映需求,都将影响最终软件的质量。
1. 业务建模
1.1 为什么要业务建模?
我们把业务建模这个概念放在了最后的部分,因为面向对象是业务建模的基础。面向对象是一种用计算机语言模拟现实生活的技术。而传统的语言是基于时序的,是计算机观点的语言,和人们熟悉的社会观点是不同的。在软件发展初期时,这并不是什么很大的问题,但是当软件规模越来越大,变化的速度越来越快的时候。人们发现两种观念有了冲突。例如,订单这个对象是人类社会的一个普遍的商业名词,它是相当稳定的。所不同的只是处理规则有所不同,但在传统的语言中,订单的名词并不是关心的重点,关心的重点反而放在了订单的处理时序上。偏偏这部分的处理是不稳定的,所以就引发了变化的问题。而面向对象采用现实世界系统的思考方式,侧重于建立订单这个类型,并构造订单类型的体系,然后再建立规则。所以,他和现实世界的变化频度是基本一致,变化起来也就比较容易。
我们之前曾多次讨论了面向对象的抽象。我们知道,面向对象用于描述现实世界,他的抽象级别还太低了。所以,后来有了组件技术。组件技术提倡松耦合、粗粒度的构建方式,但是他在本质上和面向对象并没有什么太大的差异。而业务建模的关键,就是如何利用面向对象技术来描述现实世界。
1. 2 业务建模和数据库建模
很多人都经历过基于数据的应用,在需求分析完毕后,立刻建立数据模型,基于数据模型构建应用。这是这种应用的典型做法。利用先进的工具,能够达到很高的开发速度,所以这种方法在CS方式的软件中被大量采用。这种方法的基本思想是使用数据库来表示业务模型。但是我们需要深入的来思考这个问题,是不是数据库能够完全胜任这一点呢?我们就最广泛使用的关系型数据库来进行讨论。
我们知道,关系型数据库的基本原理是集合论。通过定义二维表和使用笛卡儿乘积定义二维表之间的关系来完成设计。这和我们现实生活有一定的类似之处,这是很自然的一件事情,因为数学本身就来源于生活,而软件的基础理论是数学。对于数据来说,它本身并没有很多意义,你能够说明下面这个字符串的意义吗?
"香港XX贸易有限公司"
答案是不能,但是通过数据库的表名称和表字段的定义,我们可以大致推算出他的应用范围:
表名:客户列名:中文名称"香港XX贸易有限公司"
我们知道,这个字符串表示了客户的中文名称。但是遗憾的是,这种的定义仍然不够精确,应该承认,它有用,但是意义并不大,对业务没什么帮助。真正对业务有帮助的描述应该是:
"香港XX贸易有限公司"是本公司的10大客户之一,我们需要给其比较好的优惠。"香港XX贸易有限公司"的应付款已经到期,必须降低该客户的信用评级。
这些事情是数据库没有办法做的。当然,现在数据库技术的发展一日千里,很多数据库都用不同的技术来帮助客户在数据库上进行业务规则的处理。但是数据库不擅长处理的东西,并没有必要强制在数据库上实现。这些事情,应该由面向对象来进行处理。因为面向对象是数据和操作的完美结合,但是面向对象有一个缺陷,就是持久化的能力很低,所以,数据库仍然是面向对象的最佳合作伙伴。因此,我们有了ORMapping技术,后来又有了JDO的技术。这些都是为了强化面向对象和关系型数据库之间的沟通而设计的,因为他们两者的设计理论不同,所以天生存在很大的隔阂,非得借助中间层次的帮助。而在敏捷方法论中,也专门有研究数据库方面的技术,这表现了数据库技术的重要程度。
1.3 共性和差异性
业务建模中,寻找、区分不同事物之间的共性和差异性是非常关键的。两个业务实体,之间不可能只有共性,如果那样的话,那就只会剩下一
1. 业务建模
1.1 为什么要业务建模?
我们把业务建模这个概念放在了最后的部分,因为面向对象是业务建模的基础。面向对象是一种用计算机语言模拟现实生活的技术。而传统的语言是基于时序的,是计算机观点的语言,和人们熟悉的社会观点是不同的。在软件发展初期时,这并不是什么很大的问题,但是当软件规模越来越大,变化的速度越来越快的时候。人们发现两种观念有了冲突。例如,订单这个对象是人类社会的一个普遍的商业名词,它是相当稳定的。所不同的只是处理规则有所不同,但在传统的语言中,订单的名词并不是关心的重点,关心的重点反而放在了订单的处理时序上。偏偏这部分的处理是不稳定的,所以就引发了变化的问题。而面向对象采用现实世界系统的思考方式,侧重于建立订单这个类型,并构造订单类型的体系,然后再建立规则。所以,他和现实世界的变化频度是基本一致,变化起来也就比较容易。
我们之前曾多次讨论了面向对象的抽象。我们知道,面向对象用于描述现实世界,他的抽象级别还太低了。所以,后来有了组件技术。组件技术提倡松耦合、粗粒度的构建方式,但是他在本质上和面向对象并没有什么太大的差异。而业务建模的关键,就是如何利用面向对象技术来描述现实世界。
1. 2 业务建模和数据库建模
很多人都经历过基于数据的应用,在需求分析完毕后,立刻建立数据模型,基于数据模型构建应用。这是这种应用的典型做法。利用先进的工具,能够达到很高的开发速度,所以这种方法在CS方式的软件中被大量采用。这种方法的基本思想是使用数据库来表示业务模型。但是我们需要深入的来思考这个问题,是不是数据库能够完全胜任这一点呢?我们就最广泛使用的关系型数据库来进行讨论。
我们知道,关系型数据库的基本原理是集合论。通过定义二维表和使用笛卡儿乘积定义二维表之间的关系来完成设计。这和我们现实生活有一定的类似之处,这是很自然的一件事情,因为数学本身就来源于生活,而软件的基础理论是数学。对于数据来说,它本身并没有很多意义,你能够说明下面这个字符串的意义吗?
"香港XX贸易有限公司"
答案是不能,但是通过数据库的表名称和表字段的定义,我们可以大致推算出他的应用范围:
表名:客户列名:中文名称"香港XX贸易有限公司"
我们知道,这个字符串表示了客户的中文名称。但是遗憾的是,这种的定义仍然不够精确,应该承认,它有用,但是意义并不大,对业务没什么帮助。真正对业务有帮助的描述应该是:
"香港XX贸易有限公司"是本公司的10大客户之一,我们需要给其比较好的优惠。"香港XX贸易有限公司"的应付款已经到期,必须降低该客户的信用评级。
这些事情是数据库没有办法做的。当然,现在数据库技术的发展一日千里,很多数据库都用不同的技术来帮助客户在数据库上进行业务规则的处理。但是数据库不擅长处理的东西,并没有必要强制在数据库上实现。这些事情,应该由面向对象来进行处理。因为面向对象是数据和操作的完美结合,但是面向对象有一个缺陷,就是持久化的能力很低,所以,数据库仍然是面向对象的最佳合作伙伴。因此,我们有了ORMapping技术,后来又有了JDO的技术。这些都是为了强化面向对象和关系型数据库之间的沟通而设计的,因为他们两者的设计理论不同,所以天生存在很大的隔阂,非得借助中间层次的帮助。而在敏捷方法论中,也专门有研究数据库方面的技术,这表现了数据库技术的重要程度。
1.3 共性和差异性
业务建模中,寻找、区分不同事物之间的共性和差异性是非常关键的。两个业务实体,之间不可能只有共性,如果那样的话,那就只会剩下一

业务建模是OOAD的重要部分,它通过对业务领域的结构化描述指导软件开发。本文探讨了业务建模与数据库建模的区别,强调业务实体与数据库表的不同,提醒避免将二者混淆。业务模型应关注业务实体的共性和差异性,避免CRUD设计,尽量贴近现实世界,并灵活运用显式和隐式接口。此外,文章提出了业务建模的规范、组织和过程,强调了自动化测试、设计统一性、审核和进度估算的重要性。
最低0.47元/天 解锁文章
1264

被折叠的 条评论
为什么被折叠?



