“细化架构”与“概念架构”的区别
- 接口,在细化架构中占核心地位,概念架构不关心;
- 子系统,细化架构重视通过子系统和模块来分割整个系统,并且子系统往往有明确的接口;而概念架构中只有抽象的组件,这些组件没有接口。
- 交互机制,细化架构基于接口编程、消息机制或远程方法调用进行实在的交互,而概念架构的交互是“概念化”的,如“A层使用B层服务”
不同涉众看待软件架构的视角是不同的
细化架构的五视图方法
1.逻辑架构:逻辑架构设计着重考虑功能需求,关系行为职责的划分,包括功能需求的和为了实现功能需求提供的辅助功能。
一般而言逻辑架构设计应完成下列工作:
(1).细化功能单元。
(2).发现同样机制。
(3).细化领域模型。
(4).确定子系统接口和交换机制。
2.开发架构:开发架构着重考虑开发期质量属性,比如:可扩展性,可重用性,可移植性,易理解性,易测试性等。开发架构主要关注点是软件模块的实际组织方式,包括:源程序包,配置文件,编译后的目标文件,第三方库等。
一般而言开发架构设计应完成下列工作:
(1).确定要开发或直接利用的程序包之间的依赖关系。
(2).确定采用的技术。
(3).确定采用的框架等。
3.数据架构:软件就是对数据的操作,所以数据在软件中非常重要,设计数据架构的时候主要使用ER图和数据流图。如果需要不同系统集成还要求对数据格式的转换,还有数据的复制和缓存。
一般而言数据架构设计应完成的工作:
(1).持久化数据存储方案。
(2).数据传递,数据复制,数据同步等策略。
4.运行架构:运行架构的设计主要考虑运行期质量属性,例如性能,可伸缩性,持续可用性等。运行架构关注进程,线程,对象等运行时概念,以及相关的并发,同步,通信等问题。工作流和多线程并发等用运行架构描述价值比较大。
一般而言运行架构设计应完成的工作:
(1).确定引入哪些进程与线程。
(2).确定主动对象,被动对象,以及控制流关系。
(3).处理相关问题:进程线程的创建,销毁,通信机制,资源征用等。
(4).协议设计。
5.物理架构:物理架构的设计着重考虑“安装和部署需求”。物理视图描述运行软件的计算机,网络,硬件设施等情况,还包括如何将软件包部署到这些硬件资源上,以及他们运行时的配置情况。
一般而言物理架构设计应完成的工作:
(1).确定物理配置方案(可能是网络方案,也可能是单片机等的分布,或者二者兼有)。
(2).确定如何将目标程序映射到物理节点。
不过五视图方法不一定每个项目都要实现这几种架构视图,根据项目的实际情况来使用相应的架构视图,还是那句老话不要为了设计而设计,应看项目的情况。
参考文献:软件架构设计之细化架构设计方法 https://www.jianshu.com/p/25fb541ad421