堡主大名花花

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

系统分模块分层面的时机:

1)完成一次从功能需求,ui设计,代码设计,数据库设计的整体梳理或是迭代思考。这时结合经验判断哪些地方可能有较大的代码量,或是构造复杂度,则预先横向分块,纵向分层。

2)代码积累到一定程度,以当前能力,解决问题的速度越来越慢,碰上的问题的水准越来越低,数量越来越多,必须要析置出子系统。

3)信息流的某个下游模块,比如ui设计已经很复杂很完善,目标需求很明确的时候,可以在上游设计复杂和有针对性的功能和数据结构,为数据流的转承提供方便的子系统。

 

4)面向方面分层的并行的子系统。系统的 纵向复杂度很高,

比如包含互相交织系统-商户-客户-商品-优惠-属性-多语言-多币种,等等多重属性。

这时应该纵向分层,切面分层,这个切面,应该一直切到数据库,把系统完全切分成几个彼此独立的支持子系统。 

 比如商务子系统,会务子系统,语言子系统,管理子系统等等

数据库中应有一些高度抽象的主表,然后有子系统实体表,子系统关系表,子系统展现表,等等。

子系统之间的实体表没有关系

子系统不知道彼此的存在。

 

这样能避免出现复杂度倍乘关系。在复杂度倍乘的状况下,填充或修改一个实体,往往要考虑语言,币种,身份,属性等多方面东西,增减一个字段也是需要多方考虑,

以至于系统的任何一个模块的维护人员,都要了解全局逻辑的运转规则。

而系统实际上的复杂就在于规则。

系统就是若干虚拟的底层规则一直叠加到上层直至实际业务的结果。

面向切面的本质,就是面向无形的规则划分模块,而不是面向有形的信息,或是具体的行为。 

任何规则复杂的东西,分开来处理。
 

 

posted on 2015-05-23 22:20  堡主大名花花  阅读(202)  评论(0编辑  收藏  举报