RPU4+1视图(转)

  • 4+1视图模型概况    

  •  Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。

  • 如下图:

     

  •  逻辑试图主要是用来描述系统的功能需求,即系统提供给最终用户的服务. 在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题领域(Problem Definition)。 在面向对象技术中,通过抽象、封装、继承,可以用对象模型来代表逻辑视图,可以用类图(Class Diagram)来描述逻辑视图。如下图: 构件(Components):类、类服务、参数化类、类层次 连接件(Connectors):关联、包含聚集、使用、继承、实例化 

  • 开发视图(Development/Module View)     开发视图主要用来描述软件模块的组织与管理(通过程序库或子系统)。服务于软件编程人员, 方便后续的设计与实现。它通过系统输入输出关系的模型图和子系统图来描述。要考虑软件的内部需求:开发的难易程度、重用的可能性,通用性,局限性等等。开发视图的风格通常是层次结构,层次越低,通用性越好(底层库:Java SDK,图像处理软件包)。如下图: 构件:模块、子系统、层 连接件:参照相关性、模块/过程调用 。

  •  

  • 进程视图   进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行。 如下图: 构件:进程、简化进程、循环进程 连接件:未指定,消息、远程过程调用(RPC)、双向消息、事件广播 。

  •  

  • 物理视图       物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映射。如下图: 构件:处理器、计算机、其它设备 连接件:通信协议等  

  •  

  • 场景(Scenarios)       场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系。文本、图形表示皆可。  

  • 小结     逻辑视图、开发视图,都主要是用来描述系统的静态结构。 进程视图、物理视图,主要是用来描述系统的动态结构。 并非每个系统都必须把5个视图都画出来,而是各有侧重。例如MIS系统侧重于逻辑视图、开发视图,而实时控制系统则侧重于进程视图、物理视图 

 Betty:UML中有动态和静态视图,静态图是不是就是结构图?用案图是不是就是用例图?

             那么,下面两个图有点矛盾,用例图到底是动态还是静态?

 

 

通常我们选择UML来表现各种视图,以下列出了UML和各视图的对应关系

 

 

在架构设计稳定中通常不会给出较多的用例描述,这些是在需求稳定中定义。但是往往架构文档会选择一些用例,列入文档中,这些用例和一些非功能性需求一起用以证明架构的有效和正确性。在逻辑视图中用例的实现是必不可少的一节,尽管架构设计更关注非功能性需求。

融入MDA的思想

对于逻辑视图和开发视图所应包含的内容常常会觉得很难区分两者间的明显界限。逻辑视图包含更多的分析模型与实现技术本身相关性应该较少,如业务对象模型及其扩展。而开发视图则会与实现技术紧密相关。

随着MDA思想的推广,在架构设计文档的撰写方面也产生了影响,我们不难把MDA的PIM和逻辑视图联系起来,而把MDA中的PSM和开发视图联系起来。

在编写逻辑视图是我们应该描述与技术平台无关的模型,而开发视图则描述与实现技术平台相关的模型。

如在逻辑视图中表现的某些实体类,我们会在开发视图中转换为EJB组件(实体Bean)。

这种做法不仅有利于我们编写架构设计文档,同时更是一种好的架构设计思考流程。 

 

【参考资料】:

1.        IBM developerwork

运用RUP 4+1视图方法进行软件架构设计

http://www.ibm.com/developerworks/cn/rational/06/r-wenyu/index.html

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

https://www.ibm.com/developerworks/cn/rational/r-4p1-view/

RUP 4+1 架构

http://www.cnblogs.com/Leo_wl/archive/2010/12/09/1901715.html

转载于:https://www.cnblogs.com/helloworldPC/p/7071188.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网数据开发题库_牛客网SQL题库NO.32~40

不要问为什么没有31题,大概被牛客吞掉了吧,哈哈哈哈SQL 32【简单】将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分CREATE TABLE employees ( emp_no int(11) NOT NULL, birth_date date NOT NULL, firs…

VR/AR行业发展至今,它的市场规模如何

来源:AR工业应用全球知名研究咨询公司 Markets and Markets 2017 发布了一份研究报告,报告称:AR 市场规模将从 2016 年的 23.9 亿美金增长到 2023 年的613.9 亿美金。报告显示,诸如医疗保健、零售以及电商这样的行业对 AR头显不断…

初学SpringBoot之三

原教程如是http://blog.csdn.net/lxhjh/article/details/51753852。 记录问题: 1.maven工程导入后,pom.xml文件报错:“failed to read artifact descriptor for org.springframework.boot:.......”。 解决办法:关闭eclipse;删除r…

解决Matlab script脚本文件显示中文乱码的问题

新安装的Matlab由于默认设置可能会导致显示中文乱码的问题,这是由于Matlab 文档编辑器(editor) 的编码导致的,一般默认编码方式为ANSI,为了显示中文,应改为UTF-8方式或其他支持中文的编码方式,这在Matlab中的操作为: slCharacterEncoding(UTF-8) 但是执行这句命令只对…

stm32f103移植到f0_STM32F042替换STM32F103

因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CANUART,所以最近为了节省成本,也是花了不少心思。直到最近发现了STM32F042,据介绍,这是带CAN的最小封…

为什么很难创造出新的处理器?

出品 | CSDN(ID:CSDNnews)译者 | Arvin,责编 | 郭芮以下为译文:RISC-V处理器指令集体系结构(ISA)的问世和最初的成功重新激发了人们对定制处理器设计的兴趣,但是业界现在正在努力解决…

windows 安装 python3

安装python------------------------------------------------------------ 1,打开连接https://www.python.org/downloads/release/python-361/2,下载安装3,安装之后, (安装目录)4, 把python的安装目录,加入到系统环境变量里面去, 右键我的电…

用Matlab来备份文件夹

用Matlab来备份文件夹 由于各种各的原因,我们需要备份一些文件夹,例如过几天OneDrive的容量将减少,不想升级的用户必须删减内容或者备份内容。但是简单的复制文件夹会造成一些问题,例如导致历史数据丢失、少量的变动也需要复制所有数据。 为了克服这个问题,我用Matlab写…

情绪调节的自适应_如何做好情绪的管理者

积极有效的情绪管理一个人如果能够控制自己的情绪、欲望和恐惧,那他就胜过国王。----约翰米尔顿01情绪概述情绪和情感,人对客观外界事物的态度的主观体验和相应的行为反应,它反映的是主体需要和客观外界事物间的关系。情绪和情感两个词常可通…

科普 | 同一个世界,地图有这么多不同的表达!

来源:测绘学报一、地图投影的概念地球到底是什么样的?公元前6世纪,古希腊数学家毕达哥拉斯率先提出了“地圆说”。他在观察月食时,发现大地在月球上的投影是圆的,所以认为大地是完整的圆球体。他首次提出了“地球”这一…

pythonllk

字符编码数据类型函数 装饰器 内置函数迭代器 生成器异常 反射模块类 对象类的进阶socket进程线程httphtmlcssJavaScriptjqueryMysqlMysql(二)  库表Django (一)Django (二)转载于:https://www.cnblogs.com/guobaoyuan/p/7086271.html

Matlab画图技巧之保存超大体积图

在Matlab中进行科学计算时,可能会遇到庞大数据,例如长年累月的实验数据,或者现在流行的深度学习训练样本等等。在对它们进行画图时,如果保存为矢量图格式eps,随便一个图体积可能就大于1G,这对于论文写作来说…

shell 进入hadoop_php通过shell调用Hadoop的方法

2.shell代码(hadoop.sh)#!/bin/bashecho "wordCount test start"rm -rf ~/file_20141024mkdir ~/file_20141024cd ~/file_20141024echo "Hello World" > file1.txtecho "Hello China Beijing" > file2.txtcd /home/work/hadoop/bin ./hado…

解密脑机接口:专访CMU生物医学工程系主任贺斌

卡耐基梅隆大学生物医学工程系主任贺斌教授(照片由本人提供)来源: 知识分子撰文 | 李澄宇(中科院神经所PI)赵维杰(NSR新闻编辑)脑机接口能做什么?带上电极帽,你可以在实验…

accp8.0转换教材第1章多线程理解与练习

一.单词部分: ①process进程 ②current当前的③thread线程④runnable可获取的 ⑤interrupt中断⑥join加入⑦yield产生⑧synchronize同时发生 二.预习部分 1.线程与进程的区别: 进程是系统运行程序的基本单位 线程是进程中执行运算的最小单位 2.说明创建线…

Matlab画图技巧之消除空白

</pre>写报告或论文时,为了充分利用篇幅和实现紧凑美观,我们常常想要得到空白冗余较小的图,这在Tikz里面十分容易实现。但是在Matlab里需要做很多的工作才能达到目的。</p><p></p><p>Matlab默认的图空白十分大,看起来很别扭:</p><…

产品运营 跨境支付_餐饮网店的运营 跨境支付哪个平台最好

看你的业务和主营区域&#xff0c;目前信用卡和借记卡都是在线交易中占主流的支付方式。然而内在许多国家&#xff0c;并不是所容有人都喜欢使用信用卡或借记卡在线上消费&#xff0c;原因有很多&#xff0c;也许是因为本身没有信用卡&#xff0c;也许是担忧信息泄露&#xff0…

5G和北斗,交通行业新基建的正确打开方式

作者&#xff1a;湖南省交通运输厅科技信息中心 乔川龙物联网智库 整理发布转载请注明来源和出处导 读交通运输行业应该是5G先行区&#xff0c;一是符合5G的机会在于与2B垂直行业的深度融合、赋能行业转型升级和高质量发展的判断&#xff1b;二是根据交通运输行业的特点&#…

for循环与闭包

for循环和闭包 今天记录for循环和闭包的使用&#xff1a;for(var i 0 ; i < lis.length ; i) {lis[i].onclickfunction(i){return function(){console.log(i)}}(i); } 在for循环里面执行闭包的时候&#xff0c;将循环体的代码储存在一个内存中&#xff0c;对应的i值也储存在…

Matlab画图技巧之消除空白(二)

在上一篇博客中,我们介绍了最基本的消除空白的情况,但是实际的应用往往比较复杂。为了让读者更清楚的了解消除空白的技巧,本文再提供两个稍微 复杂一点的例子。