架构设计之逻辑架构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
架构设计之-逻辑架构
逻辑架构=模块划分+接口定义+领域模型
逻辑架构关注职责划分和接口定义。不同粒度的职责需要被关注,它们可能是逻辑层、功能子系统、模块、关键类等。不同通用程度的职责要分离,分别封装到专门模块、通用模块或通用机制中。
图-1 逻辑架构的设计内容
【设计任务】一、模块划分
面对“技术复杂性”和“管理复杂性”这样的双重困难,以架构为中心的开发方法是有效的途径。软件架构从大局着手,就技术方面的重大问题作出决策,构造一个具有一定抽象层次的解决方案,而不是将所有细节统统展开,从而有效地控制了“技术复杂性”。
通过
定义“如何划分模块、模块间如何通过接口交互”,架构提供了团队开发的基础,如图2所示,可以把不同模块分配给不同小组分头开发,接口就是小组间合作的“契约”,每个小组的工作覆盖了“整个问题的一部门”。这样一来,模块的技术细节被局部化到了小组内部,内部的细节不会成为小组间协作沟通的主要内容,也就理顺了沟通的层次。另外,对“人尽其才”也有好处,不同小组的成员需要精通的技术各不相同。
图2 软件架构奠定团队开发基础
模块划分是架构师的看家本领,有多种手段可以促进合理划分模块:
1、从需求层面的“功能树”,启发“功能模块”的划分
2、水平分层,促进模块分解
3、通用模块和通用机制的识别
4、现代的用例驱动的模块划分过程
5、传统的模块化分思维
6、……
【设计任务】二、接口定义
正确的设计思路是“协作决定接口”。架构师设计接口时,要考虑的重点是“为了实现软件系统的一系列功能,这个软件单元要和其他哪些单元协作、如何协作”。此时,可以使用(一组)序列图辅助进行设计。
【设计任务】三、领域模型细化
逻辑架构设计的粒度,一般推荐设计到模块一级,但如下4种“关键类”可以在架构设计时就明确:
1、接口定义类
2、Facade实现类
3、核心控制类
4、另外,就是对系统可扩展性有根本影响的构成领域模型的那些类