体系结构重点及答案.docx
《体系结构重点及答案.docx》由会员分享,可在线阅读,更多相关《体系结构重点及答案.docx(25页珍藏版)》请在冰豆网上搜索。
体系结构重点及答案
题型:
填空、判断、简答(30分)、综合应用(2x15分)
在第11章中以下四题选考两题:
1ADD基于体系结构的设计与普通系统结构设计的区别
普通体系结构设计方法是先按功能划分模块,后看系统满足相应质量,即以功能为主要矛盾,质量为次要矛盾来设计软件;
ADD是将模块分解过程建立在软件必须满足的质量属性之上,再把功能作为模块的实例化来把功能附加在模块上。
即先满足质量,在对功能进行分配。
即以质量为主要矛盾,功能为次要矛盾来进行体系结构设计。
2ADD体系结构的设计步骤
0.样本输入。
系统要满足的功能、质量及受到的限制。
1.选择要分解的模块。
1从整个系统开始。
系统→子系统→模块
首先要分解的就是系统本身,它是最大的等待分解的模块。
1进行分解时,要求的所有输入都应该是可获得的
限制条件、功能需求、质量需求。
2.根据下列步骤对模块进行求精:
a.从具体的质量场景和功能需求集合中选择构架驱动因素。
先找到比较重要的功能、重要的质量场景及重要的限制条件,但是个数不能太多。
b.选择或创建满足构架驱动因素的构架模式,确定所用战术需要的子模块。
c.实例化模块并根据用例分配功能,使用多个视图进行表示。
(把功能分配到模块上,实现功能的划分。
)
d.定义子模块的接口。
(确定各模块以何种方式进行交互)
e.验证用例和质量场景并对其进行求精,使它们成为子模块的限制。
3.对需要进一步分解的每个模块重复上述步骤。
这样递归的过程一般不超过2~3步。
3ATAM评估方法的基本步骤
a)描述ATAM方法、
b)描述商业动机、
c)描述体系结构、
d)确定体系结构方法、
e)生成质量属性效用树、
f)分析体系结构方法、
g)讨论和分级场景、
h)分析体系结构方法(是第六步的重复)、
i)描述评估结果。
4从哪些方面评估软件体系结构,为什么要评估软件体系结构
(1)性能是指系统的影响能力,即要经过多长时间才能对某个事件作出响应,或者在某段事件内系统所能处理的事件的个数。
(2)可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
(3)可用性是系统能够正常运行的时间比例。
经常用两次故障间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
(4)安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
(5)可修改性是指能够快速的以较高的性能代价比对系统进行变更的能力。
(6)功能性是系统所能完成所期望的工作的能力。
(7)可变性是指体系结构经扩充或变更而成为新体系结构的能力。
(8)可集成性是指系统能与其他系统协作的程度
(9)互操作性是指与其他环境或者系统本身相互作用的能力。
理由:
所谓软件体系结构的分析评估,就是事先通过代价低廉的评估活动来识别软件结构中存在的潜在风险,找出软件体系结构中影响系统质量的主要因素及改进措施,并在此基础上检验软件的质量需求是否在具体设计中得到实现,并预见未来软件质量。
软件体系结构在软件开发和管理中扮演者越来越重要的角色,软件体系结构设计对软件质量有着至关重要的影响,对此最终确保系统的质量有重要的意义。
软件体系结构评估,是对系统的某些值的关心的属性进行评估和判断。
评估的结果可用于确认潜在的风险,并检查设计阶段系统需求的质量,在系统被实际构造之前,预测其属性质量。
1、软件体系结构的定义,影响软件体系结构的因素;软件体系结构在软件系统中的作用。
软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。
处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。
(软件体系结构是某个软件或计算系统的一个或多个结构,它们由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。
)
因素:
系统涉众的影响,受开发组织的影响,受设计师的素质和经验的影响,受技术环境的影响
作用:
1.规范软件开发的基本架构;2.便于开发人员与用户的沟通;3.模块化、层次化设计,有利于减少返工,提高效率;4.便于系统开发前、后期的筹备与服务。
2、质量属性场景及质量属性战术。
场景就是对某个实体与系统的一次交互的简要描述,质量属性场景是一个有关质量属性的特定需求,由六部分组成:
⏹刺激源:
某个生成该刺激的实体(人、计算机系统或任何其他激励器)。
⏹刺激:
该刺激是当刺激到达系统时需要考虑的条件。
⏹环境:
该刺激在某些条件内发生。
当刺激发生时,系统可能处于过载,或者正在运行,也可能是其他情况。
⏹制品:
某个制品被刺激。
这可能是整个系统,也可能是系统的一部分。
⏹响应:
该响应是在刺激到达后所采取的行动。
⏹响应度量:
当响应发生时,应该能够以某种方式对其进行度量,以对需求进行测试。
质量属性战术:
1. 可用性战术 恢复和修复是可用性的重要方面,为了阻止错误发展成故障,至少能够把错误限制在一定的范围内,从而使修复成为可能。
1> 错误检测命令/响应、心跳和异常
2> 错误恢复错误恢复由准备恢复和修复系统两部分组成。
⑴表决。
⑵主动冗余(热重启)。
⑶被动冗余(暖重启/双冗余/三冗余)
⑷备件。
⑸Shadow操作。
⑹状态再同步。
⑺检查点/回滚。
3> 错误预防
⑴从服务中删除。
⑵事务处理。
⑶进程监视器。
2. 可修改性战术
可修改战术的目标是控制实现、测试和部署变更的时间和成本。
1> 局部化修改。
目标是在设计期间为模块分配责任,以把预期的变更限制在一定范围内。
1持语义的一致性。
⑵预期期望的变更。
⑶泛化该模块。
⑷限制可能的选择。
2> 防止连锁反应。
修改所产生的一个连锁反应就是需要改变该修改并没有直接影响到的模块。
1息隐藏。
2持现有的接口。
3制通信路径。
4仲裁者的使用。
3>推迟绑定时间。
3. 性能战术性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应。
事件到达后系统或者对该事件进行处理,或者由于某些原因处理被阻塞。
下面是产生响应时间的两个基本因素:
资源消耗和闭锁时间
资源消耗:
包括CPU、数据存储、网络通信带宽和内存,但它也可以包括由设计中的特定系统所定义的实体。
例如必须对缓冲器进行管理,并且对关键部分的访问必须是按顺序进行的。
事件可以是各种类型的,每种类型的事件都经过了一个处理序列。
闭锁时间:
可能会由于资源争用、资源不可用或者计算依赖于另外一个还不能得到的计算结果而导致计算不能使用某个资源,从而阻止了计算的进行。
● 资源争用。
● 资源的可用性。
● 对其他计算的依赖性。
1> 资源需求。
事件流是资源需求的源。
需求的两个特征是:
资源流中的事件之间的时间(在事件流中多长时间进行一次请求);每个请求所消耗的资源是多少。
减少等待时间的一个战术就是减少处理一个事件流所需要的资源。
方法如下:
● 提高计算效率。
● 减少计算开销。
● 管理事件率。
● 控制采样频率。
2>资源管理
3>资源仲裁
4.安全性战术
1>抵挡攻击
对用户身份进行验证、对用户进行授权、维护数据的机密性、维护完整性、限制暴露的信息、限制访问
2>检测攻击
对攻击可以进行人工检测或者是使用ID
3>从攻击中恢复
恢复系统和数据、攻击者识别
5.可测试性战术目标:
允许在完成软件开发的一个增量后,较轻松的对软件进行测试
1>管理测试的输入和输出
记录/回放、将接口与现实分离、特化访问路线/接口
2>内部监视
6.易用性战术
1>运行时-在系统运行的时候采取行动支持易用性
2>设计时-考虑界面设计的频繁修改的特性
3、软件体系结构的描述方法、描述标准;典型的软件体系结构描述语言。
方法:
1.图形表达工具2.模块内连接语言3.基于软构件的系统描述语言4.软件体系结构描述语言
标准:
IEEEP1471Rational
典型的:
1.WRIGHT
WRIGHT语言旨在精确描述系统结构与抽象行为、体系结构风格的描述以及系统一致性完整性的验证等。
根据WRIGHT语言作者的观点,一种体系结构描述语言应该至少提供两项内容:
(1)无二义性的精确语义,并能够进行不一致性的检测。
(2)一套支持系统属性推理的机制。
还有一个目标是满足架构师自身的词汇表达要求。
WRIGHT专注于抽象表述以及为架构师提供结构化表达系统信息的方法。
2.C2
C2的特色在于支持构件重置与图形他用户接口(GUI)重用。
如今用户接口占据了软件的很大一部分并且重用度相当有限。
C2着眼于构件的重用尤其是系统的进化——系统在运行时的动态改变。
因此,C2的设计目标基于如下考虑:
●构件可能用不同的编程语言实现
●构件可能在同一时刻运行在分布、异构的并且没有共享地址空间的环境中
●运行时的结构可能发生改变
●可能发生的多用户交互
●可能使用多种工具集
●涉及多种媒体类型等。
3.Darwin
Darwin是一种陈述性语言,它为一类系统提供通用的说明符号,这类系统由使用不同交互机制的不同构件组成。
它着眼于描述分布式软件系统。
●近来关于分布式系统维护的相关研究表明采用分布式构造可以降低构件的复杂度。
●但是,这一优势还不足以抵消由分布式结构带来的缺点以及结构复杂度的增加。
Darwin的设计出发点正是要解决这样的问题。
此外,Darwin同样支持动态结构说明。
4.ACME
ACME是一种交互式ADL,旨在为开发工具与环境提供交互格式。
设计中关键点就在于综合各种独立开发的ADL工具,为交换结构信息提供媒介格式。
除了交互这一基本目标之外,设计ACME还考虑了如下目标:
(1)为实现结构分析与可视化提供表达模式。
(2)为开发新的特定领域的ADL提供基础。
(3)为体系结构信息表达提供标准。
(4)这种语言必须便于读写表达。
此外,ACME通过重表达的概念来支持分层描述。
任意的构件与连接器都可以利用更详尽、更低层的描述被重新表达。
5.xADL
基于XML的体系结构描述语音xADL为架构师提供了更好的拓展性。
xADL将用于快速地构造新的ADL。
6.UML
UML是一种用可视化方法对软件系统进行描述、实施和说明的标准语言。
支持用不同实现技术进行的软件开发全过程。
4、软件产品线的定义,软件产品线在软件开发过程中的作用,软件产品线的双生命周期。
软件产品线是一个适合专业的软件开发组织的软件开发方法,能有效地提高软件生产率和质量、缩短开发时间、降低总开发成本;也是一个新兴的、多学科交叉的研究领域。
软件产品线是最大程度的软件重用,可以有效地降低成本、缩短产品面世时间、提高软件质量。
双生命周期:
最初的和最简单的软件产品线开发过程的双生命周期模型分成两个重叠的生命周期:
领域工程和应用工程。
两个周期内部都分成分析、设计和实现三个阶段。
领域工程阶段有以下主要任务。
◆领域分析:
利用现有系统的设计、体系结构和需求建立领域模型。
◆领域设计:
用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。
◆领域实现:
基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。
应用工程在领域工程结果的基础上构造新产品。
应用工程需要根据每个应用独特的需求,经过以下阶段,生成新产品。
◆需求分析:
将系统需求与领域需求比较,划分成领域公共需求和独特需求两部分,得出系统说明书。
◆系统设计:
在领域体系结构基础上,结合系统独特需求设计应用的软件体系结构。
◆系统实现:
遵照应用体系结构,用领域可重用资源实现领域公共需求,用定制开发的构件满足系统独特需求,构建新的系统。
应用工程将产品线资源不能满足的需求返回给领域工程以检验是否将之合并入产品线的需求中。
领域工程从应用工程中获得反馈或结合新产品的需求进入又一次周期性发展,称此为产品线的演化。
SEI将产品线的基本活动分为三部分,核心资源开发(即领域工程)、产品开发(即应用工程)和管理。
SEI模型特点:
◎循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征;
◎核心资源开发和产品开发没有先后之分;
◎管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责;
◎核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。
双生命周期模型图
5、各种软件体系结构风格的特点、优点及缺点。
A、管道过滤器风格特点及优点:
(1)使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
(2)允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
(3)支持软件重用。
(4)系统维护和增强系统性能简单。
(5)允许对一些如吞吐量、死锁等属性的分析;
(6)支持并行执行。
缺点:
1.往往导致系统处理过程的成批操作。
2.不适合处理交互的应用。
3.因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作、这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
B、数据抽象和面向对象系统风格特点:
信息隐藏,只通过接口与外界交互,内部的设计决策则被封装起来
隐藏数据表示,通过隐藏数据表示来增强抽象度,维护数据表达格式的完整性
模拟现实世界,对名词而不是对动词编程,每个对象也定义了它所能执行的动作,以及可以作用在它上面的动作
优点:
1.因为对象对其它对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其它的对象;
2.设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。
3.继承关系,实现代码级的重用。
缺点:
1为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。
只要一个对象的标识改变了,就必须修改所有其他显式调用它的对象。
2必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用。
3继承往往使得设计变得复杂,引入的多层对象结构使得维护困难。
C、基于事件的系统风格(隐式调用)特点:
1.事件的触发者并不知道哪些构件会被这些事件影响。
2.这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用。
3.因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。
优点:
1.为软件重用提供了强大的支持;
2.为改进系统带来了方便;
缺点:
1.构件放弃了对系统计算的控制;
2.数据交换的问题;
3.既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。
D、事件驱动风格特点:
1.系统是由若干子系统或元素所组成的一个整体。
2.系统有一定的目标,各子系统在某一种消息机制的控制下,为了这个目标而协调行动。
3.在某一种消息机制的控制下,系统作为一个整体与环境相适应和协调。
4.在一个系统的若干子系统中,必定有一个子系统起着主导作用,而其它子系统则处于从属地位。
5.任一系统和系统内的任一元素,都有一个事件收集机制和一个事件处理机制,通过这种机制与周围环境发生作用和联系。
优点:
(1)便于重用。
(2)对事件的并发处理将提高系统性能;
(3)具有良好的可扩展性。
(4)定义了包含执行子系统和管理子系统的类层次结构,实现了对客户的透明。
(5)简化客户代码。
(6)使整个系统的设计更具有一般化。
使用者可以很容易添加新的子系统。
(7)健壮性:
一个构件出错将不会影响其他构件。
缺点:
(1)构件削弱了自身对系统计算的控制能力。
(2)事件驱动风格中存在数据交换问题。
大量数据的交互往往无法由事件携带,从而带来性能问题。
(3)存在的另一个问题是数据共享。
(4)系统中各个对象的逻辑关系变得更加复杂。
E、分层系统风格特点:
基于可增加抽象层的设计
优点:
1.支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;
2.支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;
3.支持重用。
缺点:
1.并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;
2.很难找到一个合适的、正确的层次抽象方法。
3.跨层使用可能会损坏整个系统模型。
F、仓库系统(黑板)风格特点:
当把整个问题分解成子问题时,各个子问题涵盖了不同的领域知识和解决方法。
每一个子问题的解决需要不同的问题表达方式和求解模型。
在多数情况下,找不到确定的求解策略。
这与把问题分解成多个求解部分的功能分解形成对照。
优点:
1.便于多客户共享大量数据,它们不用关心数据是何时出现的、谁提供的、怎样提供的。
2.便于添加新的作为知识源代理的应用程序,也便于扩展共享的黑板数据结构。
3.可重用的知识源。
4.支持容错性和健壮性。
G、C2风格特点:
1.系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;
2.所有构件之间的通信是通过以连接件为中介的异步消息交换机制来实现的;
3.构件间相对独立,构件之间依赖性较少。
H、客户/服务器风格特点:
客户端应用程序是针对一个小的、特定的数据集;对某一条记录进行封锁,而不是对整个文件进行封锁,因此保证了系统的并发性,并使网络上传输的数据量减到最少,从而改善了系统的性能。
优点:
1.C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
2.系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
3.在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。
将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
缺点:
1.开发成本较高
2.客户端程序设计复杂
3.信息内容和形式单一
4.用户界面风格不一,使用繁杂,不利于推广使用
5.软件移植困难
6.软件维护和升级困难
7.新技术不能轻易应用
I、三层C/S结构风格特点:
表示层是图形化的、事件驱动的,功能层是过程化的,数据层是结构化和非过程的,三层进行明确分割,并在逻辑上独立。
优点:
1.允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。
2.允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
3.应用的各层可以并行开发,可以选择各自最适合的开发语言。
4.利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础。
缺点:
1.三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能。
2.设计时必须考虑三层间的通信方法、通信频度及数据量。
这和提高各层的独立性一样是三层C/S结构的关键问题。
J、浏览/服务器(B/S)风格特点:
主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。
从某种程度上来说,B/S结构是一种全新的软件体系结构。
优点:
1.基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。
用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
2.B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
缺点:
1.B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
2.B/S体系结构的系统扩展能力差,安全性难以控制。
3.采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。
4.B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。
K、公共对象请求代理体系结构风格(CORBA)特点:
1.引入中间作为事务代理,完成客户机向服务对象方(Server)提出的业务请求;
2.实现客户与服务对象的完全分离,客户不需要了解服务对象的实现过程以及具体位置;
3.提供软总线机制,使得在任何环境下、采用任何语言开发的软件只要符合接口规范的定义,均能够集成到分布式系统中;
4.CORBA规范软件系统采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。
L、正交软件体系结构风格特点:
1.正交软件体系结构由完成不同功能的n(n>1)个线索(子系统)组成;
2.系统具有m(m>1)个不同抽象级别的层;
3.线索之间是相互独立的(正交的);
4.系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。
优点:
1.结构清晰,易于理解。
2.易修改,可维护性强。
3.可移植性强,重用粒度大。
M、基于层次消息总线的体系结构风格(HMB)特点:
由构件模型、构建接口、消息总线、构建静态结构和构件动态行为组成。
优点:
方便支持运行时刻的系统演化
N、异构结构风格特点:
一个完善的系统可能由各种各样的体系结构风格组成,具体的组成方法要依据系统需求和各种体系结构风格的优势来确定。
优点:
帮助开发人员更好地理解整个系统和品质特征,能够恰当运用体系结构风格的系统。
设计出的系统要满足需要的质量属性。
缺点:
不能受限于某种体系结构的风格具体形式。
O、互连系统构成的系统及其体系结构(SIS)风格特点:
系统可以分为若干不同部分,每个部分作为单独的系统独立开发,整个系统通过一组互连系统实现,履行系统的职责是其之间相互通信。
优点:
1.降低复杂性
2.提高系统开发的并行性
3.提高系统可维护性
缺点:
资源管理开销增大,开发进度无法同步。
P、特定领域软件体系结构(DSSA)风格特点:
1.一个严格定义的问题域和/或解决域
2.普遍性
3.对整个领域的合适程度的抽象
4.具备领域固定的、典型的在开发过程中可重用元素
优点:
1.系统开发、维护的工作量大幅度减少,整个应用系统的构件重用程序相当大。
2.便于系统开发的组织管理
3.系统有较好的环境适应性
Q、面向服务的体系结构风格(SOA)特点:
是一个组件模型,服务之间定义良好的接口而将其联系起来。
接口是采用中立的方式进行定义,所有的功能都定义成了独立的服务,服务之间通过交互、协调作业从而完成业务的整体逻辑,所有服务通过服务总线或流程管理器来连接服务和提高服务请求的路径。
优点:
松散耦合,基于行业标准,可重用的服务,同步服务调用RPC方式,异步服务调用-文档方式,利