孙子曰:凡治众如治寡,分数是也;斗众如斗寡,形名是也。
一、软件架构设计的五视图
根据关注角度的不同,软件架构又分为逻辑架构、开发架构、运行架构、数据架构和物理架构。
逻辑架构:着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。逻辑架构关注的功能,不仅包括用户可见的功能,还应当包括为实现用户功能而必须提供的辅助功能。逻辑架构更偏向我们所说的“分层”,像经典的“三层架构”。逻辑架构的静态方面是抽象职责的划分,动态方面是承担不同职责的逻辑单元之间的交互与协作关系。
开发架构:着重考虑开发期间的质量属性,关注点是在软件开发环境中软件模块(包)的实际组织方式,具体涉及源程序文件、配置文件、源程序包、编译打包后的目标文件,还包括应用程序依赖的SDK、三方库、中间件以及开发的系统将运行于其上的系统软件和逻辑架构有紧密的关联。
运行架构:着重考虑软件运行期间的质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念。运行架构的静态方面关注软件系统运行时的单元结构,动态方面关注运行时单元之间的交互机制。例如比较常见的“线程同步”问题、死锁问题、对象的生命周期问题等。
物理架构:重考虑安装和部署需求,主要关注软件运行的系统、 络、服务器等基础设施以及如何通过服务器部署和配置 络环境,来实现应用程序的可伸缩性、高可用性等。
数据架构:着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略问题。如何选择关系型数据库、NOSQL,如何保障数据存储层面的性能、高可用性、灾备。
前三种视图,可以归纳为软件架构,而后两种架构,则归为系统架构。
二、五视图成果物
架构视图 | 重点考虑 | 关注点 | 成果物 |
---|---|---|---|
逻辑架构 | 功能需求 | 行为和职责的划分 |
|
开发架构 | 扩展性、可重用性、可移植性、易测试性 |
模块组织形式:
|
|
运行架构 | 性能、伸缩性、高可用、安全性 | 并发和同步 |
|
物理架构 | 安装和部署的需求 | 硬件的可伸缩性、高可用性 |
|
数据架构 | 数据存储的需求 | 性能、高可用性、灾备 |
|
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!