2. 模块间关联关系的分解和集成,如OSGi,ESB等
3. 不同系统的类型分解和集成,如Spring利用动态代理提供的Exporter模式。
4. 流程逻辑的分解和集成,如Spring Web Flow以及jBPM。
讨论完手段,现在要转身看看我们面临的问题域了;问题域可分解为两种类型,业务上和技术上。(又见分解,分而治之真是老祖宗传下的灵丹妙药啊)
1. 业务上。问题域分解为,逻辑的纵向抽象层次,以及逻辑的横向模块分解和集成。
2. 技术上。问题域分解为,纵向的技术主题,以及横向的技术职责的分解和集成。
所以通常而言,领域模型设计中,模块分解,抽象分层和职责分层都是重要手段。问题域为:流程,业务实体和计算(包括规则)。
对象的抽象分解和集成
对象的依赖分解和集成(模块内和模块外)
流程的分解和集成(页面流,工作流以及计算流程)
进程边界:用户请求重定向,以及业务数据持久化等。
BTW:通常语言做为架构的基础引入和更换是有巨大风险的;而通过提供强大的框架能力,框架尽可能多的完成技术问题,并通过元数据,模式以及约定降低业务和框架的耦合。避免因为框架升级带来不必要的成本。
从技术手段上,提高开发效率的另外两个手段是代码生成和类库引用。但代码生成和类库引用,都只解决了逻辑的分解能力,没有提供集成能力,所以一般情况下需要提供框架集成,尤其代码生成需要在系统的最外层,避免集成带来的问题。
对于开发团队来说,额外面临一个问题,组织内部的学习成本问题。
文章来源于领测软件测试网 https://www.ltesting.net/