“细化架构”与“概念架构”的区别

  1. 接口,在细化架构中占核心地位,概念架构不关心;
  2. 子系统,细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口。
  3. 交互机制,细化架构基于接口编程、消息机制或远程方法调用进行实在的交互,而概念架构的交互是“概念化”的,如“A层使用B层服务”

不同涉众看待软件架构的视角是不同的

 

 

 细化架构的五视图方法

1.逻辑架构:逻辑架构设计着重考虑功能需求,关系行为职责的划分,包括功能需求的和为了实现功能需求提供的辅助功能。

一般而言逻辑架构设计应完成下列工作:

(1).细化功能单元

(2).发现同样机制

(3).细化领域模型

(4).确定子系统接口和交换机制

2.开发架构:开发架构着重考虑开发期质量属性,比如:可扩展性,可重用性,可移植性,易理解性,易测试性等。开发架构主要关注点是软件模块的实际组织方式,包括:源程序包,配置文件,编译后的目标文件,第三方库等。

一般而言开发架构设计应完成下列工作:

(1).确定要开发或直接利用的程序包之间的依赖关系

(2).确定采用的技术

(3).确定采用的框架等

3.数据架构:软件就是对数据的操作,所以数据在软件中非常重要,设计数据架构的时候主要使用ER图和数据流图。如果需要不同系统集成还要求对数据格式的转换,还有数据的复制和缓存。

一般而言数据架构设计应完成的工作:

(1).持久化数据存储方案

(2).数据传递,数据复制,数据同步等策略

4.运行架构:运行架构的设计主要考虑运行期质量属性,例如性能,可伸缩性,持续可用性等。运行架构关注进程,线程,对象等运行时概念,以及相关的并发,同步,通信等问题。工作流和多线程并发等用运行架构描述价值比较大。

一般而言运行架构设计应完成的工作:

(1).确定引入哪些进程与线程

(2).确定主动对象,被动对象,以及控制流关系

(3).处理相关问题:进程线程的创建,销毁,通信机制,资源征用等。

(4).协议设计

5.物理架构:物理架构的设计着重考虑“安装和部署需求”。物理视图描述运行软件的计算机,网络,硬件设施等情况,还包括如何将软件包部署到这些硬件资源上,以及他们运行时的配置情况。

一般而言物理架构设计应完成的工作:

(1).确定物理配置方案(可能是网络方案,也可能是单片机等的分布,或者二者兼有)。

(2).确定如何将目标程序映射到物理节点

 不过五视图方法不一定每个项目都要实现这几种架构视图,根据项目的实际情况来使用相应的架构视图,还是那句老话不要为了设计而设计,应看项目的情况。

 

逻辑视图设计是面向对象或结构化,目标是设计职责划分和职责间协作,例如分模块、分层、划分垂直功能子系统,为模块、层、子系统定义接口。
开发视图设计是面向文件,目标是设计程序单元和程序单元组织,例如,开发语言选型、应用程序框架选择、编译依赖关系等。
运行视图设计是面向控制流,目标是设计控制流和控制流组织,例如,多进程技术、多线程技术、中断服务程序等
物理视图设计是面向节点,目标是设计物理节点和物理节点拓扑,例如,PC机、服务器、单片机的机型与拓扑连接等
数据视图设计是面向表或文件,目标是设计数据存储格式和持久化设计,例如,关系数据库、实时数据库、文件等。


参考文献:软件架构设计之细化架构设计方法   https://www.jianshu.com/p/25fb541ad421