1、设计思维融合
把层、功能模块、细粒度模块三个概念分清楚。
- 功能模块是粗粒度的,一般对应一个功能组,最大的用途是基于功能模块进行开发小组分工。
- 层也是粗粒度的,UI交互层封装人机交互、系统交互层封装硬件访问和外部系统交互、数据管理层封装DB和File和Flsh存储。
- 模块划分设计需要进一步设计到细粒度模块一级。
- 一个细粒度模块,必然位于架构的某一层中。
- 一个细粒度模块,一般也都会属于某个更大粒度的功能模块内。
- 如果架构设计“止于功能模块划分”或者“止于粗粒度分层”,则以为着设计不足、还要继续。
2、封装驱动设计方法-EDD
包含4个步骤:
- 研究需求。
- 对模块划分促进最大的需求成果是上下文图和功能树。
- 带着质疑的心态去研究、评价、确认,一旦发现问题,第一时间提出。
- 粗粒度分层
- 细粒度划分模块。
- 用例驱动的模块划分结构评审、优化。
- 系统难点部分的设计,可多使用用例驱动方法。
- 场景和用例,也是驱动设计评审的核心思维。
3、细粒度模块的划分技巧
3.1、分层细化
在粗粒度层内进一步“封装”职责形成更细致的层次结构,称之为sub-layer。
3.2、分区
将层内支持不同功能组的职责分别“封装”到“细粒度模块”中,从而使每个“粗粒度功能模块”由一组位于不同“层”的“细粒度模块”组成。
3.3、通用模块的分离
通用模块的分离,有利于提高重用性、减少重复代码。
- 高层模块应有较高的扇出,低层模块特别是底层模块应有较高的扇入。
- 扇入