谈软件架构就不得不说说五视图方法论 。
一、多阶段还是多视图
软件架构设计是多视图的,也是多阶段的,首先是多阶段的 。
文章插图
先左后做——这叫阶段,齐头并进——这叫视图 。
二、软件架构设计的5视图
根据关注角度的不同,软件架构又分为逻辑架构、开发架构、运行架构、数据架构和物理架构 。
文章插图
逻辑架构:着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分 。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括为实现用户功能而必须提供的辅助功能 。逻辑架构更偏向我们所说的"分层",像经典的"三层架构" 。逻辑架构的静态方面是抽象职责的划分,动态方面是承担不同职责的逻辑单元之间的交互与协作关系 。
开发架构:着重考虑开发期间的质量属性,关注点是在软件开发环境中软件模块(包)的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译打包后的目标文件,还包括应用程序依赖的SDK、三方库、中间件以及开发的系统将运行于其上的系统软件和逻辑架构有紧密的关联 。
运行架构:着重考虑软件运行期间的质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念 。运行架构的静态方面关注软件系统运行时的单元结构,动态方面关注运行时单元之间的交互机制 。例如比较常见的"线程同步"问题、死锁问题、对象的生命周期问题等 。
物理架构:重考虑安装和部署需求,主要关注软件运行的系统、网络、服务器等基础设施以及如何通过服务器部署和配置网络环境,来实现应用程序的可伸缩性、高可用性等 。
数据架构:着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略问题 。如何选择关系型数据库、NOSQL,如何保障数据存储层面的性能、高可用性、灾备 。
前三种视图,可以归纳为软件架构,而后两种架构,则归为系统架构 。
【系统架构-五视图方法论】
推荐阅读
- 系统架构不可避开的五个核心指标
- 微服务架构应用程序开发思路总结
- 网站架构设计分析及分层架构要素
- 软件架构之高可用性设计
- Android 添加系统服务的方法
- MySQL无锁化WAL系统那些事儿
- 微服务架构下的鉴权,怎么做更优雅?
- 阿里架构师教你处理高并发:2种方法,解决Redis和Mysql一致性
- 值得关注的五大SQL数据库恢复软件
- 五溪山牌黄山毛峰,有机高原茶好口味 好营养