之前学习的都是软件的概念架构,都是对于软件大的整体而言的,只是一个整体的概念,没有各个模块各个部分的具体表示,对于后续的开发来说并没有明确的方向,并且对于概念架构而言,他只有一条主线,难以实现并发的开发,要真正的实现系统功能的切分,还必须要提供指导还必须要有更加明确的“规约”一级的制约,这句不得不进行细化架构。
根据书中内容细化架构与概念架构主要有一下区别:
1.接口。在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义(只有抽象的组件和抽象的交互机制)。
2.子系统。细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口,只有职责,一般是处理组件、数据组件或连接组件中的一一种。当然,概念架构中也有“大组件分解成小组件”的设计决策,但并非子系统的含义。
3.交互机制。细化架构中的交互机制应是“实在”的,如基于接口编程、消息机制或远程方法调用等;而概念架构中的交互机制是“概念化”的,例如“A层使用B层的服务”
就是典型的例子,这里的“使用”到了细化架构中可能基于接口编程、消息机制或远程方法调用等其中的- -种。
总的来说细化架构就是对概念架构的一种扩展,一种实现。但是需要注意的是细化架构仍然是一种架构层面的设计,他与具体的实现无关,不要与详细设计混淆。通俗点来讲,细化架构就是对概念架构的一种切分。
要知道架构设计是一门解决复杂问题实践艺术,在软件架构始终贯穿着一条核心观念:“分而治之”。在细化架构时我们采用不同的视图进行展示,一个优秀的多视图方法要能够将每项工作内容明确的、有理有据的、一目了然的规划到不同的架构中去,现阶段影响最大的就是RUP4+1视图。
五个视图,以及其基本立足点:(每一个视图都有其各自的一组关注点)
逻辑视图:逻辑的划分
开发视图:程序单元的组织
运行视图:控制流组织
物理视图:物理节点的安排
数据视图:持久化设计
下一阶段就要进行的是逻辑架构的设计了(划分子系统,定义接口.......),要说到划分子系统就不得不提划分子系统的三种必备策略了。
1.分层的细化,分层是最常用的架构模式了,分层是一种深度的表示,采用上下级不同的层次表示的一种递进关系,说明不同层次的一种结构关系深度优先极端情况下意味着对每个功能完整地进行定义、设计、编码和测试,而只有当这个功能完成了之后,你才能做下一个功能。
2.分区的引入,对于实际开发来说一般都是采用迭代式的开发手段,但是在分层结构中很难确定开发一个具体的功能,所以就引入了分区,与分层不同,分区采用的是一种广度优先的方法,广度优先极端情况下意味着对每一个功能进行定义,然后对每个功能进行设计,接着对每个功能进行编码,最后才对所有功能一-起进行测试。
3.机制的提取:软件系统中的机制是指,预先定义好的、能完成预期目标的、基于抽象角色的协作方式,机制不仅包含了协作关系,还包含了协作流程。要明确,基于接口的协作是机制,基于具体类的协作就算不上机制。