软件架构 "4+1" 视图模型

摘要:
有时架构无法解决所有“客户”都关心的问题。作为补充,我们建议使用多个并发视图来组织软件架构的描述。每个视图仅用于描述一组特定的关注方面。体系结构模型软件体系结构用于处理软件高层结构的设计和实现。为了最终处理一个大型且具有挑战性的体系结构,该模型包括五个主要视图:逻辑视图和设计对象模型。后来,Philippe Kruchten加入了Rational,他的4+1视图方法演变成了许多建筑师所熟知的著名的“RUP4+1视图方法”。

1995年,Philippe Kruchten在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文,引起了业界的极大关注。

论文原文:http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf

翻译:http://www.ibm.com/developerworks/cn/rational/r-4p1-view/

引言

我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的 Abowd & Allen、SEI 的 Clements。作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合

架构模型

软件架构用来处理软件高层次结构的设计和实施。它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。Perry 和 Wolfe 使用一个精确的公式来表达,该公式由 Boehm 做了进一步修改:

软件架构 = {元素,形式,关系/约束}

软件架构涉及到抽象、分解和组合、风格和美学。我们用由多个视图或视角组成的模型来描述它。为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图(请对照图 1):

  • 逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
  • 过程视图(Process View),捕捉设计的并发和同步特征。
  • 物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。
  • 开发视图(Development View),描述了在开发环境中软件的静态组织结构。

架构的描述,即所做的各种决定,可以围绕着这四个视图来组织,然后由一些用例 (use cases)或场景(scenarios)来说明,从而形成了第五个视图。正如将看到的,实际上软件架构部分从这些场景演进而来,将在下文中讨论。

软件架构 "4+1" 视图模型第1张

后来,Philippe Kruchten加入Rational,他的4+1视图方法演变为著名的、为许多架构师所熟知的“RUP 4+1视图方法”(如下图所示)。

软件架构 "4+1" 视图模型第2张

http://www.uml.org.cn/zjjs/200910264.asp

免责声明:文章转载自《软件架构 "4+1" 视图模型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇consul注册中心服务注册过程源码分析[mysql] mysql批量操作时性能优化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

xamarin跨平台iOS、Android 与Windows

http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS、Android 与Windows 等平台的原生(Native) App 应用程序,不须个别使用各平台的开发工具与程序语言,不只是「write-once, run everywhere」...

Android app开发中用户协议(使用条款)文字自己主动换行

用户协议(使用条款)文字自己主动换行处理 转载请注明出处:http://blog.csdn.net/u012301841/article/details/46648821 我们在开发app的时候。常常在关于这一模块。会涉及到用户协议或者使用条款这一类的,纯文本界面,可是须要自己主动换行和拖动。通常,PM会给你一大段文本,让你自己去处理。 IOS能够直接复...

详解如何实现在线聊天系统中的实时消息获取

序言 传统web浏览器应用采用客户端主动请求方式,只有在收到浏览器请求时服务端才返回消息,这种模式已经不能满足日益多样化的web应用需求,例如: 在线聊天系统:需要实时获取聊天消息。 实时监控系统:需要实时获取监控对象状态。如仪表读数、告警信息等。 随着html技术演进,发展出了多种服务器推送技术,用于服务器向浏览器客户端推送消息。 Ajax轮询 采用Aj...

【官网翻译】性能篇(一)应用待机群组

前言        本文翻译了Android开发者文档中的一篇官方文档,用于介绍Android9的一个新特性——应用待机群组(App Standby Buckets)。        中国版官网原文地址为:https://developer.android.google.cn/topic/performance/appstandby。        路径为...

Axure 入门

Axure RP是一个专业的快速原型设计工具。Axure(发音:Ack-sure),代表美国Axure公司;RP则是Rapid Prototyping(快速原型)的缩写。 Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站...

概要设计文档3.0

概要设计文档 1、引言部分 引言部分主要说明编写目的、系统的范围和参考资料等。 1.1目的 该文档的目的是描述旅游软件的概要设计,主要内容包括系统功能简介、系统结构设计、模块设计和界面设计等。 本文档的预期读者包括:设计人员,开发人员,项目管理人员,测试人员。 1.2 范围 1.2.1 系统目标 我们设计这款软件主要目的是给大学生提供一款主要针对他们的旅游...