Kruchten的4+1模型描述软件体系结构
- 格式:ppt
- 大小:1.01 MB
- 文档页数:58
软件体系结构-期末大题————————————————————————————————作者:————————————————————————————————日期:ﻩ1.基于构件的软件开发的优势是什么?基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。
Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………4.不同的体系结构风格具有各自的特点、优劣和用途。
试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。
P52-56(1)管道和过滤器特点:@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;@支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;@系统维护和增强系统性能简单。
新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;@允许对一些如吞吐量、死锁等属性的分析;@支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行ﻫ缺点:①通常导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)(3)分层系统体系结构有以下优点:第一,支持基于抽象程度递增的系统设计。
这允许设计者可以将一个复杂系统设计按递增的步骤进行分解。
1.基于构件的软件开发的优势是什么?基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。
Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………4.不同的体系结构风格具有各自的特点、优劣和用途。
试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。
P52-56(1)管道和过滤器特点:@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;@支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;@系统维护和增强系统性能简单。
新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;@允许对一些如吞吐量、死锁等属性的分析;@支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行缺点:①通常导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)(3)分层系统体系结构有以下优点:第一,支持基于抽象程度递增的系统设计。
这允许设计者可以将一个复杂系统设计按递增的步骤进行分解。
第二,支持功能增强。
因为每层至多和与之相邻的上层和下层交互,所以,改变某层的功能最多只会影响与之相邻的其它两层。
第三,支持重用。
与抽象数据类型一样,只要对相邻层提供同样的接口,每层可以有很多不同的可相互替代的实现方法。
软件体系结构期末大题1.基于构件的软件开发的优势是什么?基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。
Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。
每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………4.不同的体系结构风格具有各自的特点、优劣和用途。
试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。
P52-56(1)管道和过滤器特点:@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;@支持软件重用。
只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;@系统维护和增强系统性能简单。
新的过滤器能够添加到现有系统中来;旧的能够被改进的过滤器替换掉;@允许对一些如吞吐量、死锁等属性的分析;@支持并行执行。
每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行缺点:①一般导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)。
软件体系结构试题库(软件工程)一、判断题1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。
答案:√依据页码:P42、可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。
答案:√依据页码:P73、超文本组织方法与基于数据库系统的构件库组织方法不同,它基于全文检索技术。
答案:√依据页码:p84、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。
答案:√依据页码:P285、构件可以由其他复合构建和原子构件通过连接而成。
()答案:√依据页码:P376、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色()答案:√依据页码:P377、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。
其中,构件、连接件和配置是最基本的元素()答案:√依据页码:P378、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务()答案:X依据页码:P32、339、构件、连接件以及配置是体系结构的核心模型最基本的元素()答案:√根据页码:P3710、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。
答案:×依据页码:P8111、正交软件体系结构由组织层和线索的构件构成。
答案:√依据页码:P7012、基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。
答案:√依据页码:P5313、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。
()答案:√依据页码:P7014、层次系统中支持抽象程度递增的系统设计是设计师可以把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,但是不支持重用。
答案:×参考页码:P5515、相交关系R是一个等价关系。
答案:√16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表达工具。
本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。
使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。
本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。
这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的Abowd & Allen、SEI 的Clements。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry 和Wolfe 使用一个精确的公式来表达,该公式由Boehm 做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
我们用由多个视图或视角组成的模型来描述它。
为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图(请对照图1):∙逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
个人通讯录“4+1”视图模型Kruchten“4+1”模型由5个视图构成:逻辑视图:当采用面向对象的设计方法时,逻辑视图即是对象模型。
开发视图:描述软件在开发环境下的静态组织。
进程试图:描述系统的并发和同步方面的设计。
物理视图:描述软件到硬件之间的映射关系,反映系统在分布方面的设计。
场景视图:通过选择出的一些用例对体系结构加以说明,这些用例被称作场景。
1.逻辑视图:便于理解系统设计的结构与组织如图1所示:系统只有一个逻辑视图,该视图以图形方式说明关键的用例实现、子系统、包和类,它们包含了在构架方面具有重要意义的行为。
逻辑视图在每次迭代过程中都会加以改进。
逻辑视图表示了设计模型中在构架方面具有重要意义的部分。
图1 通讯录系统体系结构的逻辑视图2.开发视图:设计满足开发期质量属性的体系结构,如图2所示:图2 通讯录系统体系结构的开发视图3.进程视图:设计满足运行期质量属性的体系结构,如图3所示:●应用层中的线程代表主程序的运行,它直接利用了MFC的主窗口线程。
无论是用户交互,还是串口的数据到达,均采取异步事件的方式处理,杜绝了任何"忙等待"无谓的耗时,也缩短了系统响应时间。
●通讯层有独立的线程控制着"上上下下"的数据,并设置了数据缓冲区,使数据的接收和数据的处理相对独立,从而数据接收不会因暂时的处理忙碌而停滞,增加了系统吞吐量。
●嵌入层的设计中,分别通过时钟中断和RS232口中断来激发相应的处理逻辑,达到轮询和收发数据的目的。
图3 设备调试系统体系结构的进程视图●过程视图侧重于系统的运行特性,主要关注一些非功能性的需求。
●过程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。
它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
顺序图如下:显示联系人信息如图4:图4 显示联系人信息顺序图4.物理视图:和部署相关的体系结构决策,如图4所示:软件最终要驻留、安装或部署到硬件才能运行,而软件体系结构的物理视图关注"目标程序及其依赖的运行库和系统软件"最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求, 图4所示的物理体系结构视图表达了设备调试系统软件和硬件的映射关系。
架构蓝图--软件架构"4+1" 视图模型---Philippe Kruchten引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的Abowd & Allen、SEI 的Clements。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry 和Wolfe 使用一个精确的公式来表达,该公式由Boehm 做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
我们用由多个视图或视角组成的模型来描述它。
为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图(请对照图1):∙逻辑视图(Logical View),设计的对象模型(使用面向对象的设计方法时)。
∙过程视图(Process View),捕捉设计的并发和同步特征。
∙物理视图(Physical View),描述了软件到硬件的映射,反映了分布式特性。
本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型。
使用多重视图允许独立地处理各"风险承担人":最终用户、开发人员、系统工程师、项目经理等所关注的问题,并且能够独立地处理功能性和非功能性需求。
本文分别对五种视图进行了描述,并同时给出了捕获每种视图的表示方法。
这些视图使用以架构为中心的、场景驱动以及迭代开发过程来进行设计。
引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。
通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。
方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。
是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。
有时架构并不能解决所有"客户"(或者说"风险承担人",USC 的命名)所关注的问题。
许多作者都提及了这个问题:Garlan & Shaw 1、CMU 的 Abowd& Allen、SEI 的Clemen ts。
作为补充,我们建议使用多个并发的视图来组织软件架构的描述,每个视图仅用来描述一个特定的所关注的方面的集合。
架构模型软件架构用来处理软件高层次结构的设计和实施。
它以精心选择的形式将若干结构元素进行装配,从而满足系统主要功能和性能需求,并满足其他非功能性需求,如可靠性、可伸缩性、可移植性和可用性。
Perry和 Wolfe使用一个精确的公式来表达,该公式由 Boehm做了进一步修改:软件架构={元素,形式,关系/约束}软件架构涉及到抽象、分解和组合、风格和美学。
案例教学1:4+1视图方法进行软件体系结构设计要开发出用户满意的软件并不是件容易的事,软件体系结构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。
本文从理解需求种类的复杂性谈起,通过具体案例的分析,展示了如何通过RUP的4+1视图方法,针对不同需求进行体系结构设计,从而确保重要的需求一一被满足。
1、呼唤体系结构设计的多重视图方法灵感一闪,就想出了把大象放进冰箱的办法,这自然好。
但希望每个体系结构设计策略都依靠灵感是不现实的--我们需要系统方法的指导。
需要体系结构设计的多重视图方法,从根本上来说是因为需求种类的复杂性所致。
以工程领域的例子开道吧。
比如设计一座跨江大桥:我们会考虑"连接南北的公路交通"这个"功能需求",从而初步设计出理想化的桥墩支撑的公路桥方案;然后还要考虑造桥要面临的"约束条件",这个约束条件可能是"不能影响万吨轮从桥下通过",于是细化设计方案,规定桥墩的高度和桥墩之间的间距;另外还要顾及"大桥的使用期质量属性",比如为了"能在湍急的江流中保持稳固",可以把大桥桥墩深深地建在岩石层之上,和大地浑然一体;其实,"建造期间的质量属性"也很值得考虑,比如在大桥的设计过程中考虑"施工方便性"的一些措施。
和工程领域的功能需求、约束条件、使用期质量属性、建造期间的质量属性等类似,软件系统的需求种类也相当复杂,具体分类如图1所示。
图1 软件需求分类的复杂性2、超市系统案例:理解需求种类的复杂性例子是最好的老师。
为了更好地理解软件需求种类的复杂性,我们来分析一个实际的例子。
在表1中,我们列举了一个典型的超市系统的需求子集,从这个例子中可以清晰地看到需求可以分为两大类:功能需求和非功能需求。
表1 超市系统案例:理解需求种类的复杂性简单而言,功能需求就是"软件有什么用,软件需要做什么"。