架构设计之大话五视图(一)

1. 什么是架构设计?

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

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

 

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

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

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

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

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

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

 

3. 架构设计的五视图法

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

    

    

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

  

  1)物理架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

    来源于https://blog.csdn.net/degwei/article/details/51489444,感谢前辈,文章写得很好^ _ ^

  

 

转载于:https://www.cnblogs.com/one-gril/p/11272832.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书围绕5个主题领域来组织本书的内容:概述、企业应用、系统、最终用户应用和编程语言。本书让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。 目录 序 前言 5 第一部分 论架构 第1章 架构概述  13 1.1 简介  13 1.2 创建软件架构  19 1.3 架构结构  23 1.4 好的架构  27 1.5 美丽的架构  28 致谢  30 参考文献  31 第2章 两个系统的故事:现代软件神话  33 2.1 混乱大都市  34 2.2 设计之城  40 2.3 说明什么问题  47 2.4 轮到你了  48 参考文献  48 第二部分 企业级应用架构 第3章 伸缩性架构设计  51 3.1 简介  51 3.2 背景  52 3.3 架构  56 3.4 关于架构的思考  61 第4章 记忆留存  67 4.1 功能和约束  68 4.2 工作流 69 4.3 架构关注点  70 4.4 用户反应  90 4.5 结论  90 参考文献  90 第5章 面向资源的架构:在Web中  91 5.1 简介  91 5.2 传统的Web服务  92 5.3 Web  94 5.4 面向资源的架构  99 5.5 数据驱动的应用  102 5.6 应用面向资源的架构  103 5.7 结论  108 第6章 数据增长:Facebook平台的架构  109 6.1 简介  109 6.2 创建一个社会关系Web服务  114 6.3 创建社会关系数据查询服务  121 6.4 创建一个社会关系Web门户:FBML  129 6.5 系统的支持功能  142 6.6 总结  147 第三部分 系统架构 第7章 Xen和虚拟化之美  151 7.1 简介  151 7.2 Xenoservers  152 7.3 虚拟化的挑战  154 7.4 半虚拟化  155 7.5 Xen的变换形式  158 7.6 改变的硬件,改变的Xen  163 7.7 经验教训  165 7.8 延伸阅读  166 第8章 Guardian:一个容错操作系统环境  169 8.1 Tandem/16,将来所有的计算机都会像这样构建 170 8.2 硬件  170 8.3 物理布局  172 8.4 处理器架构  172 8.5 处理器间总线  178 8.6 输入/输出  178 8.7 进程结构  179 8.8 消息系统  179 8.9 文件系统  183 8.10 轶闻趣事  188 8.11 弊端  189 8.12 后继者  190 8.13 延伸阅读  191 第9章 JPC:一个纯Java的x86 PC模拟程序  193 9.1 简介  193 9.2 概念验证  195 9.3 PC架构  198 9.4 Java性能技巧  199 9.5 把4GB放入4GB:这不起作用  200 9.6 保护模式的危险  203 9.7 从事一项毫无成功希望的斗争  206 9.8 劫持JVM  210 9.9 终极灵活性  220 9.10 终极安全性  222 9.11 第二次做会更好  223 第10章 元循环虚拟机的力量:Jikes RVM  225 10.1 背景  225 10.2 与运行时环境相关的传言  227 10.3 Jikes RVM简史  229 10.4 一个自足执行的运行时自举  230 10.5 运行时组件  234 10.6 经验教训  246 参考文献  247 第四部分 最终用户应用架构 第11章 GNU Emacs:滋长的特性是其优势  251 11.1 使用中的Emacs  252 11.2 Emacs的架构  254 11.3 滋长的特性  260 11.4 另外两个架构  262 第12章 当集市开始构建教堂  267 12.1 简介  267 12.2 KDE项目的历史和组织结构  269 12.3 Akonadi  274 12.4 ThreadWeaver  289 第部分 语言与架构 第13章 软件架构:面向对象与面向函数  299 13.1 概述  299 13.2 函数式示例  302 13.3 函数式解决方案的模块性评价  305 13.4 面向对象视图  313 13.5 面向对象模块性的评价和改进  319 13.6 代理:将操作封装到对象中  323 致谢 328 参考文献 328 第14章 重读经典  331 14.1 所有东西都是对象  335 14.2 类型是隐式定义的  342 14.3 问题  348 14.4 砖块和灰浆建筑架构  352 参考资料  359 跋 漂亮地构建 363

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值