数据库建模是特定时代背景下的一个产物,当时确实具有相当的生命力,很多小系统都是两层的架构,分析设计的时候也就直接进行数据库建模了,开发速度相当快,而且因为系统小,业务不太复杂,也确实可以满足当时的需求。但是从系统的层次性,条理性来说也是不太合理的,直接导致了系统的扩展性,可维护性很差,这也被后来快速变化的需求的出现而提出的可扩展性,可维护性要求而证明了这一点。
面向对象建模正是在这样一个背景下而提出,就是为了改善系统的层次性,条理性,从而提高扩展性维护性等属性,快速应对市场需求的变更。但是现在还是很多人很难拐过这个弯,还在执着地进行数据库建模。下面我想从两个方面说一下我的观点:
一、从基本概念入手 因为我们是做企业应用系统,它是一个信息系统。这里要涉及到好几个概念:信息,系统,信息系统。所以,先来了解一下信息的概念,信息是经过加工处理的数据,数据是信息的载体。什么是系统呢?系统是由两个或两个以上的要素按一定的结构组成的,具有特定功能的、并和环境发生相互作用的一个整体。现在就比较好理解什么是信息系统了,信息系统就是数据的收集,存储,加工处理数据以获得信息,信息的流转,信息的发布的一个动态过程。它的要素就是这几个动作,一定的结构就是这几个动作的逻辑顺序,特定的功能就是它的数据的处理并以信息的形式发布的功能,环境就是人和外部系统了。从这个概念本身看,它其实已经是逻辑层次很清晰了,各做各的事,不能搞混了。数据的收集就是用户录入界面,我们所说的WEB交互层,数据的存储那就是数据库该做的事了,数据库是一个以某种有组织的方式存储的数据集合,从概念出发就定位了它的角色只是存储数据,而不应该是做其他的事情。加工处理数据获得信息那就应该是我们说的业务逻辑层应该做的事情了,这一层正是我们要进行面向对象建模的层次。信息的流转是工作流系统应该做的事情,而信息的发布应该就是报表系统所应该做的事情了。现在不是在讲建设和谐社会吗?那么,什么才是和谐呢,我觉得就是和合两字,和就是和睦,互不干涉内政,各自做好各自本职的事情,合就是合作,互相尊重的前提下交流。做软件其实也一样,要和谐的话就是使各层做自己的东西,不要越权伸出手去搅乱别人的工作,然后再谈合作的事情,这样做出来的软件才是比较好的。
二、从软件设计的角度入手 企业应用系统其实就是把手工的系统映射到计算机里面,也可以说是模拟,翻译。以前的做法是直接数据库建模,用二维的关系记录表来表达现实世界,慢慢地我们发现失真非常严重,因为直接这样做的话感觉落差太大,太直接,用二维的东西来表达三维的世界本身就是不得已而为之。中国人本来就是比较喜欢含蓄,以迂为直,呵呵。还记得我引用过一句话:“所有的软件设计的问题都可以通过增加一个抽象的间接层而得到解决或者得到简化!!!”从软件设计的角度讲,我们引入面向对象建模也就是在现实的系统和数据库表示之间增加一个抽象的间接层来减少这种映射过程中的系统失真!
以上仅是个人观点,欢迎批评指正!
|
|