https://www.codenong.com/cs106852708/

https://www.debugger.wiki/article/html/1564497985647291

关于软件架构设计这里不再赘述,不清楚的去问度娘。本篇文章主要讲解软件架构设计的五视图法及每种视图如何设计。

一、是什么

1、逻辑架构

  逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问层”这样经典的“三层架构”。

2、开发架构

  开发架构则更关注程序包,不仅仅是我们自己写的程序,还包括应用程序依赖的SDK、第三方类库、中间件等。尤其是像目前主流的Java、.NET等依靠虚拟机的语言和平台,以及主流的基于数据库的应用,都会比较关注。和逻辑架构有紧密的关联。

3、运行架构

  顾名思义,更关注的是应用程序运行中可能出现的一些问题。例如并发带来的问题,比较常见的“线程同步”问题、死锁问题、对象创建和销毁(生命周期管理)问题等等。开发架构,更关注的是程序运行前的一些准备工作,在静止状态下就能规划好做好的,而运行架构,更多考虑的是程序运行后可能发生的一些问题。

4、物理架构

  物理架构,更关注的系统、网络、服务器等基础设施。例如:如何通过服务器部署和配置网络环境,来实现应用程序的“可伸缩性、高可用性”。或者举一个实际的例子,如何通过设计基础设施的架构,来保障网站能支持同时10W人在线、7*24小时提供服务,当超过10W人或者低于10W人在线时,可以很方便的调整部署架构来支撑。

5、数据架构

  数据架构,更关注的是数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。更贴切来讲,如何选择需要的关系型数据库、流行的NOSQL,如何保障数据存储层面的性能、高可用性、灾备等等。很多时候,和物理架构是有紧密联系的,但它更关注数据存储层面的,物理架构更关注整个基础设施部署层面。

二、怎么做(示例&工具)

1、逻辑架构

  绘图工具:visio、processon

2、开发架构

 

  绘图工具:visio、processon

3、运行架构

  

 

4、物理架构

  

绘图工具:visio、processon

5、数据架构

1. 什么是架构设计?

  架构设计就是一个系统的草图。

       软件架构就是对软件从整体到部分的描述,从开发到运行再到后期扩展的描述,从性能和安全可靠性进行描述。

2. 架构设计为了解决什么问题?

  解决开发之初,也就是逻辑设计阶段的问题 —— 系统如何开发,如:整个系统融合为一个系统开发,还是从业务角度将系统拆分为几个独立的子系统。

  解决即将进入开发时的问题 —— 数据是如何持久化的、数据库如何选型、非数据库文件的存储格式是怎样等像这样的存储方案的确定。

  解决开发过程中的问题 —— 如何保证开发质量、如何分层、代码可扩展性、使用的设计模式、依赖了那些框架、开发语言等。  

  解决开发完成后的问题,也就是进入运行阶段 ——  如何保证运行期间的质量属性、性能、可伸展性等,主要是系统运行进程的划分,以及进程之间通过线程来通信。

  另外,如果系统并非是单机运行,还需考虑系统的物理部署,系统部署在哪个服务器上,这些服务器配置性能能否胜任系统的运行,操作系统选型,以及系统部署的网络拓扑图,还有就是保证数据安全的数据备份是怎样设计的。

3. 架构设计的五视图法

  我们刚才从五个不同的角度知道架构设计需要解决的问题,那么使用五视图法就更加系统的分析设计我们架构了。

    

技术图片

    

技术图片

    从这幅图里面我们可以看出架构设计五视图中各个角度需要解决的问题了,并且可以看出他们之间的联系了。

  

  1)物理架构

        物理架构的目的是 —— 确定物理节点和物理节点的拓扑结构;

     其中物理节点包括 —— 服务器、PC机、专用机、软件安装部署烧写以及系统软件的选型;

     拓扑结构明确物理节点的关系。

  2)运行架构
        运行架构的目的是 —— 确定控制流和控制流的组织;

     其中控制流包括 —— 进程、线程、服务程序;

     控制流组织包括系统的启动与停机、控制流通讯、同步与加锁。

   3)开发架构
        开发架构的目的是 —— 确定程序单元以及程序单元的组织结构;

     其中程序单元包括 —— 源文件、配置文件、程序库、框架、目标单元;

     程序单元组织包括project划分、project目录结构、编译依赖关系。

  4)逻辑架构
        逻辑架构的目的是 —— 职责的划分,并明确其与协作关系;

     其中职责的划分注意逻辑的分层、子系统以及关键类的定义;

     协作的定义关注接口的定义与协作关系的明确。

  5)数据模型
        数据架构的目的是 —— 确定要存储的数据以及存储格式;

     其中存储的数据可以是文件、关系数据库、实时数据库;

     存储格式包括文件格式、数据库图表。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐