软件体系结构 期末大题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.基于构件的软件开发的优势是什么?
基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用2.尝试用自己的语言介绍Kruchten的“4+1”模型。Kruchten 提出了一个"4+1"视图模型,从5个不同的视角包括包括逻辑试图、进程视图、物理视图、开发视图、场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个试图结合在一起才能反映系统的软件体系结构的全部内容。
3.在希赛公司的一个财务管理系统,财务部要客户提供…………
4.不同的体系结构风格具有各自的特点、优劣和用途。试对管道-过滤器风格、事件驱动风格、分层系统、C2风格和基于消息总线的风格进行分析比较。P52-56
(1)管道和过滤器
特点:
@使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
@允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成;
@支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
@系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;
@允许对一些如吞吐量、死锁等属性的分析;
@支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行
缺点:①通常导致进程成为批处理的结构。
②不适合处理交互的应用。
③因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
(2)
(3)
分层系统体系结构有以下优点:
第一,支持基于抽象程度递增的系统设计。这允许设计者可以将一个复杂系统设计按递增的步骤进行分解。
第二,支持功能增强。因为每层至多和与之相邻的上层和下层交互,所以,改变某层的功能最多只会影响与之相邻的其它两层。
第三,支持重用。与抽象数据类型一样,只要对相邻层提供同样的接口,每层可以有很多不同的可相互替代的实现方法。因此,可能出现对于标准的层接口的定义可以有不同的实现方法。但是分层系统体系结构也有存在
缺点:首先并不是每个系统都可以很容易地划分为分层的模式。甚至即使一个系统可在逻辑上进行分层,但可能出于性能的考虑需要在逻辑上与处于高层的函数和处于低层的实现之间建立紧密的联系。其次,很难找到一个合适的、正确
的层次抽象方法。
(4)C2体系结构风格可以概括为通过连接件绑定在一起的、按照一组规则运作的并行构件网络。
特点:①系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起。
②所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的。
③构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。
(5)………………
5.典型的软件体系结构描述语言包括哪些?她们分别需要描述体系结构中的哪些基本元素?
主要有五种 ADL:UniCon,Darwin,C2 SADL,Acme 和 xADL. Rapide:一种事件驱动的 ADL,它以体系结构定义作为开发框架,支持基于构件的开发.该语言提供了建模,分析,仿真和代码生成的能力,但是没有…………
6.软件体系结构可通过UML直接进行描述,请说明UML包括哪些图,以及各自的作用是什么?
From百度百科!UML中的各个图的功用做一个简单介绍:
用例图:描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,
以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
类图:类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我
们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。
对象图:与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
包图:包图用于描述系统的分层结构,由包或类组成,表示包与包之间的关系。
活动图:描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别
并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
状态图:描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可
以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
序列图(顺序图):序列图是用来显示你的参与者如何以一系列顺序的步骤与
系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
协作图:和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序
图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
构件图(组件图):描述代码构件的物理结构以及各种构建之间的依赖关系。
用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件是软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。