数据来源的分类;但是对于系统出口,为了避免出现垃圾数据,需要在数据处理阶段,也要进行分类处理,这里就引入了算法的版本化,来适应不同的数据/业务需要。
在实际项目中,可能不同信任等级的数据,采用不同的算法去处理数据,这样才使得数据的处理更有针对性,更符合实际需要。
从需求变更的角度出发,软件开发商可以先实现一些数据信任程度低的算法,然后再根据项目实际情况,决定是否实现更高一级数据等级的算法。
在现实软件项目, 数据信任等级低的采用的算法也会简单一些,由于需求变更,增加了新的数据信任等级更高的数据,这时候可以考虑暂时采用低等级的算法进行处理,然后再结合人工干预,达到数据处理的要求。大家都明白一点,算法复杂,测试的难度就大,但是使用这些更高等级的算法的几率是很少的,处于成本的原因可以把这些算法的实 现滞后。
当然我这样说,并不是意味着放弃高等级的算法,一些根据项目实际情形需要来操作。
数据根据信任程度分成等级,呵呵,这就是所谓工厂方法模式嘛,算法也分成等级结构,这就是所谓的模板方法模式。数据在处理后,应该记录下被使用的算法版本,这样才便于以后统计查询分析或者数据挖掘之类工作的开展。
例如:在一个商品交易中,一个商品可能被购买的价格是正常价格,节假日优惠价,会员优惠价,在交易流水账中,应该记录下交易时候是采用的那个价格类型,原始价格多少,实际购买价格多少。记录下原始价格,是因为,商品的原始价格本身可能是变化的。
再以拆迁资源计划系统(http://www.netsky-tech.com/))为例,房屋补偿的价格价格可能是来自于管理参数,也可能是来自于申请,实际到底是来自于哪个,算法应该记录下来。
3.业务规则使用的版本化
前面已经提到了数据录入的版本化,还有算法的版本化,也就是计算结果的版本化。但是还没有谈到一点,到底啥时间该采用哪个版本算法。
在J2EE项目中,一般是采用配置文件的方式来控制版本。从配置管理角度的来说,一切都根据配置文件来决定使用哪个版本的数据录入的分级(数据信任程度分级),然后根据配置文件决定数据处理使用的算法版本。
其实在J2EE项目中,可以采用类似apachecommons-validator这样的包,来进行数据录入的信任等级建立。
前面都已经提到了从工厂方法模式的角度来建立数据信任等级制度,但是并没有解决到底啥时间采用哪个方法处理数据。也许有人建议,采用工厂方法模式的思想,把数据当成产品,把算法当成工厂,来处理(注意:不是制造)数据。这个想法也许能够满足一些系统的需要,但是更多时候是失效。
为此,我觉得有必要把算法的分配使用当成为一个业务管理策略来管理,通过单独的业务模块去设置业务的算法管理策略,可以把这些策略保存为配置文件或者直接保存到数据表;在J2EE项目中,常用的方式使用XML的格式保存为配置文件,但是如果这个策略比较复杂的时候建议还是保存到数据表。
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html