软件架构设计–五视图法


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

一、是什么

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、数据架构

  绘图工具:PowerDesigner