软件体系结构张友生第三版期末复习

第一章
1.软件危机的表现 和软件危机的成因?
软件危机
1.软件成本日益增长2.开发进度难以控制
3.软件质量差4.软件维护困难
产生原因
1.用户需求不明确2.缺乏正确的理论指导
3.软件规模越来越大4.软件复杂度越来越高

2.软件危机与软件体系结构之间的关系?
软件危机引起软件工程的研究,软件危机的加剧,人们认识到软件体系结构的重要性,并对软件体系结构开始系统地深入地研究,是提高软件生产率和解决软件问题最有希望的途径。软件危机背后的真正原因不单是技术,还有管理问题,而软件体系结构控制了软件的复杂性同时提高了软件系统的质量,支持软件开发和复用,它在软件开发方法、工具、管理等方面大大缓解的危机的被动局面。
3 构件与软件重用以及它们的关系?
构件:语义完整,语法正确,有重用价值的单位软件。结构上,是语义描述,接口通信和代码实现的复合体。
重用:两次或多次软件开发过程中重复使用或使用相同或相近软件元素的过程。
关系:实现软件的工业化生产,构件是核心和基础,重用是必须的手段。

4.基于构件的软件开发的优势是什么?基于构件的软件开发面临哪些挑战和困难?
优势:基于构件的软件将软件开发的重点从程序编写转移到了基于已有构件的组装,更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低了软件开发的费用。
困难和挑战:没有可依据的参考,可用资源和环境缺乏,开发难度高,而各方面需求增长速度与日剧增,更新和升级的跟进是一个不小的挑战.此外,在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题挑战和困难。

5.构件获取的途径?
1.从现有构件中获得符合要求的构件,直接使用或作适应性修改,得到可重用的构件。
2.通过遗留工程,将具有潜在重用价值的构件提取出来,得到可重用的构件。
3.从市场上购买现成的商业构件。
4.开发新的符合要求的构件。

6.软件体系结构的意义?
体系结构是风险承担者进行交流的手段
体系结构是早期设计决策的体现
软件体系结构是可传递和可重用的模型

7.如何理解软件体系结构的?软件体系结构在软件系统中作用?
软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述,这些元素的相互作用,指导元素集成的模式以及这些模式的约束组成。
软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。一个工程就像是一座楼,软件体系结构就是被用来创建一个完整的体系,用来建造这座楼的。

8.程序结构,软件结构和软件体系结构这三者有什么区别和联系?
程序结构指的是软件中的一个程序的模块及其相互关系;
软件结构指的是组成某个或某类软件的模块及其相互关系;
软件体系结构指的是:构成软件系统的元素的描述、元素之间的相互作用、元素的集成模式及模式约束,是一种结构、行为和属性的高级抽象。
第二章

9.用自己的语言介绍4+1模型?
“4+1”视图模型从5个不同的视角,包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心一个侧面,5个视图结合在一起才能反映系统的软件体系结构的全部内容。

10.软件体系结构在软件生命周期中的地位?
软件体系结构是贯穿于软件研发的整个生命周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。

11.“4+1”的视图组成各自的作用是什么?
1.逻辑视图:系统的功能需求即提供给最终用户的服务。
2.开发视图:侧重于软件模块的组织和管理。考虑软件内部的需求,软件开发难度,软件重用,开发工具带来的局限。
3.进程视图:侧重于系统的运行特征,主要关注非功能需求,强调并发性、分布性、系统集成性和容错能力。
4.物理视图:如何把软件映射到硬件上,考虑系统性,可靠性。
5.场景可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。它可以帮助设计者找到体系结构的构件和它们之间的作用关系。场景可以用文本表示,也可以用图形表示。

12.什么是软件体系结构的生命周期模型?
软件生命周期模型是一个框架,描述从软件需求定义直至软件经使用后废弃为止,跨越整个生存期的软件开发、运行和维护所实施的全部过程、活动和任务,同时描述生命周期不同阶段产生的软件工件,明确活动的执行角色等。

第三章
1.选择一个熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点(为什么要采用这种风格﹖采用这种风格带来哪些优势﹖具有哪些不足?
对社交软件QQ的分析∶采用C/S风格,并且在一定程度上算三层C/S风格
表示层∶社交信息的显示,并提供了更新和搜索等操作
功能层∶具有搜索、在线聊天、离线留言、文件传输等功能
数据层︰有数据库服务器提供留言、相册、好友信息等数据
优点︰使逻辑结构更为清晰,分类明确,给用户更好的体验
缺点∶需要数据通信的支持,对网络的依赖很高,没有网络,许多功能将没有意义

2.DSSA特定领域软件体系结构怎么理解?
从功能覆盖的范围角度通常有两种理解DSSA中领域的含义的方式。在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。
(1)垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
(2)水平域:定义了在多个系统和多个系统族中功能区域的共有部分。在子系统级上涵盖多个系统族的特定部分功能。
在垂直域上定义的DSSA只能应用于一个成熟的、稳定的领域,但这个条件比较难以满足:若将领域分割成较小的范围,则更相对容易,也容易得到一个一致的解决方案。

第四章
软件体系结构的描述方法?(必考)
1.图形表达工具:对于软件体系结构的描述和表达,一种简洁易懂且使用广泛的方法是采用由矩形框和有向线段组合而成的图形表达工具。
2.
2.模块内连接语言:采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言。

3.基于软构件的系统描述语言:将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。

4.软件体系结构描述语言:软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。
第五章
15.UML图的理解?UML包括哪些图?以及各自的作用?
统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统的文档。
用例图:用来显示若干角色乙级这些角色与系统提供的用例之间的连接关系
类图:用来表示系统中的类和类与类之间的关系,它是对系统静态结构的描述
对象图:类图的实例,几乎使用与类图完全相同的标识
顺序图:用来反映若干个对象之间的动态协作关系,也就是随着时间的推移,对象之间是如何交互的
协作图:描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系
状态图:描述类的对象所有可能的状态以及事件发生时状态的转移条件
活动图:描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动
构件图:描述代码构件的物理结构及各构件之间的依赖关系
部署图:定义系统中的物理体系结构

16.用例图与其他图之间的关系?
用例图是从用户的角度审视SA的。
用例是因,状态图、类图是果.根据用例来扑捉这些结果
用例图是对系统行为的动态描述,是从用户的角度审视软件体系结构的。它可以促进设计人员、开发人员与用户的沟通,理解正确的需求,划分系统与外部实体的界限,对系统的行为进行组织和建模时非常重要,是系统设计的起点。只有清楚了用例图,才能对后续的其他图进行描述。

17.如何使用4层元模型描述体系结构?
元元模型层:只有一个元素就是“thing”,类似于.Net类库层次的根object。
元模型层:面向对象和面向组件开发的各种概念,如“类”、“关联”、“属性”等,是UML语言的组成部分。
模型层:建模者自己创建的具体的模型,比如“汽车类”、“司机”类、“汽车”与“司机”之间的多对多关系。
用户模型层:模型层中模型的实例,比如“小李:司机”、“A001:汽车”。
第六章
18.XML、HTML、SGML的区别?
XML是一个精简的SGML,他将SGML的丰富功能与HTML的易用性结合到Web应用中,保留了SGML的可拓展功能。
HTML是一种格式化的语言,HTML描述的程序和文本具有“内容和格式”的双重属性,XML则是纯数据,可以支持其他可以处理XML的容器和程序。XML是一种元标记语言,可以用于定义其他的标记语言。
HTML 是遵循了 DTD 标准的 SGML 的文档,也可以说是 SGML 的一个实例。

19.XML与数据库的区别?
xml主要解决的是数据在网上传输标准的问题,把原来各种各样的数据孤岛可以通过xml这座桥梁连接起来,所以打个比方,数据库就好比是盛数据的桶,而xml则是数据传输转换的桥梁。
二者也存在非常紧密的联系,毕竟都是处理数据的工具,就是很多其他的数据格式可以通过xml输入到数据库中,数据库中的关系型数据也可以通过xml转化成其他的数据格式。

20.XML的应用领域有哪些?
1.应用于客户需要与不同数据源进行交互时
2.应用于将大量运算负荷分布于客户端
3.应用于将统一数据以不同的面貌展示给不同用户
4.应用于网络代理对取得的信息进行编辑、增减以适应与个人用户的需要。

21.XML编程接口的选择,接口的选择?
编程接口:DOM、SAX、 JDOM、 JAXP如何选择:
(1)如果使用Java编写应用程序则使用JAXP;
(2)如果应用程序将要作为java applet部署则使用JDAM;
(3)解析了XML文档后要多次访问这些数据则考虑DOM;
(4)如果只需要XML源文件的少量内容则考虑SAX;
(5)如果正在一台内存很少的机器工作则考虑SAX;

第七章
22.软件体系结构的演化、动态性、扩展概念P170?
体系结构演化:由于系统需求、技术、环境、分布等因素的变化而最终导致软件体系结构的变动,称之为软件体系结构演化。
体系结构的动态性:软件系统在运行时刻的体系结构变动,称之为体系结构的动态性。
体系结构扩展:体系结构的静态性修改称之为体系结构拓展。

23.动态性体现在三类?P170
体系结构的动态性主要分为三类:
交互式动态性:例如,允许再复合构件的固定连接中改变数据
结构化动态性体:例如,允许对系统添加或删除构件或连接件
系结构动态性:例如,允许构件的整个配置发生改变

24请简述基于构件的动态体系结构模型是如何支持运行系统的动态更新的?P173
更新执行步骤:
检测更新的范围:在执行更新之前,首先要判断是局部更新还是全局更新,局部更新作用域需要新构件的内部而不影响系统的其他部分。全局更新影响系统的其他部分,全局更新需要发送请求到更高的抽象层
更新准备工作:如果更新发生在应用层,构件配置器等待参与的进程发出信号,以表明他们已处于可安全执行更新的状态;如果更新发生在配置层,就需要等待连接件中断通信,其他构件配置器已完成它们的更新
执行更新:执行更新,并告知更新发起者更新的结果
存储更新:将构件或体系结构所作的更新存储到构件或体系结构描述中

局部更新和全局更新P174
局部更新只作用于需要更新的构件内部,不影响系统的其他部分;判断属于局部更新后,在执行更新前,需要进行局部更新的构件会发送信号以隔离自身的通信,执行更新后将再将断开的连接重新存储起来。在整个过程中不会影响其他部分的运行。

全局更新作用于需要更新的构件,仅影响更新所涉及的部分,不影响系统的其他部分。在判断属于全局更新后,体系结构配置器会对更新所涉及的连接件和构件发送更新准备信息,整个更新工作只在这些部分进行,不会影响系统的其他部分运行。

第八章
25.什么是SOA SOA有什么特征?自己的语言对SOA的理解?
SOA:面向服务的体系结构
理解:一种在计算环境中设计、开发、部署、和管理离散逻辑单元(服务)模型的方法;它是面向对象模型的替代,基于对象而不面向对象的一种方法;
特征:1.松散耦合2.粗粒度服务3.标准化接口

26.WEB服务的核心技术和作用(三要素)?
Web服务的核心技术及其作用。
(1)底层传输层,主要负责消息的传输机制。
(2)服务通信协议层,服务通信协议层主要是以一种统一的方式描述并定义服务之间进行通信传输所需的技术标准。
(3)服务描述层,主要以一种统一的方式描述服务的接口和消息交换方式。
(4)服务层,主要功能是将遗留系统进行包装,并通过发布的WSDL接口描述被定位和调用。
(5)业务流程层,主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。
(6)服务注册层,主要功能是使服务提供者能够通过WSDL发布服务定义,并支持服务请求者查找所需的服务信息。
三个构成元素为:服务请求者、服务提供者、服务注册中心;

26.面向服务体系结构设计的概念和它的设计原则?
(1)明确定义的接口,服务定义必须长时间稳定;
(2)自包含和模块化,实现服务的功能实体完全独立自主;
(3)粗粒度,服务数量不应太多;
(4)松耦合,确保服务请求者可见的是服务的接口;
(5)互操作性、兼容和策略声明,确保服务规约的全面和明确。

第九章
28.RIA的技术是软件发展行业的必然从软件发展的角度为什么要RIA技术?
RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。

第十章

29.软件体系结构的可靠性可以从哪些方面进行评估?
可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。分为两个方面:
(1)容错:在规定的条件下,在规定的时间内,软件不引起系统失效的概率;
(2)健壮性:在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;

30.谈一谈为什么要对软件体系结构进行风险分析?
风险评估过程通常用于验证需要详细检测的复杂模型,估计潜在的模型问题和测试效果,在不同的开发阶段都可以执行分析评估。在体系结构级进行风险评估更有利于开发阶段的后期评估。风险评估对于任何软件风险管理社划都具一个重要的过程。有些风险评估技术是基于个人的主观的领域经验判断,主观的风险评估技术是个人行为.带有一定的错误。风险评估应该是基于能够通过定量的方法对软件产品属性进行的度量。

31.怎么理解基于软件体系结构的软件测试?
软件测试是困难、花销巨大的工作,但在软件开发过程中是一项非常重要的工作。怎样将形式化方法与软件测试技术结合起来是软件测试研究的重点。基于体系结构的软件测试和传统的软件测试一样,需要研究测试内容、测试准则、测试用例、测试充分性、测试方法等。
测试准则被定义为:测试应该覆盖所有的构件及各个构件的接口、各个连接件的接口、构件之间的直接连接、构件之间的间接连接。
软件体系结构的测试过程可以分为单元测试、集成测试和系统测试。
第十一章
32.软件体系结构的评估方式有哪些 、优缺点(三个)?
1.基于调查问卷或检查表的评估方式
优点:自由灵活,可评估多种质量属性,在多阶段进行;
缺点:主观性较强,评估人员的熟悉程度和相关经验等会对结果产生很大影响;
2.基于场景的评估方式,应用于ATAM和SAAM中;
优点是考虑到了所有人员对质量需求的满意程度
缺点是评估方式是特定于某个领域的,需要实施者有丰富的领域知识,能够设计出合理场景,还要求实施者对待评估的软件体系结构有一定的了解。
3.基于度量的评估方式
优点:提供更为客观和量化的质量评估;
缺点:有时间限制,需在软件体系结构设计基本完成以后才能进行,对评估人员要求较高,需要评估人员对评估的体系结构十分了解。

第十二章
33.什么是设计模式?
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

34.设计模式和软件体系结构之间的关系?
一般来说 ,软件架构指的是“大”框架, 设计模式是“小”架构。

35.设计模式是有层次的,层次是什么?
(1)面向对象模式:由最底层的类与对象及其关系区分;
(2)代码模式:有助于解决某种面向对象程序设计语言的特定问题;
(3)框架应用模式:用一种不很规范的方式描述了如何应用框架来解决特定的问题;
(4)形式合约:是一种描述框架设计的方法,强调组成框架的对象间的交互关系。过于抽象,仅在小规模程序中使用。

36.简诉你对中间件的理解?
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于操作系统之上,管理计算资源和网络通信,实现应用之间的互操作。

37.基于软件体系结构的软件生命周期是什么?
软件的生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。如果把软件看成有生命的事物,那么软件的生命周期可以分成六个阶段:需求分析->计划->设计->编码->测试->运行维护。
第十三章

  • List item

38.什么是软件产品线?
产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源基础上开发的。

39.软件产品线的双生命周期模型?
双生命周期模型是软件产品线的一种过程模型。分成领域工程和应用工程这两个重叠的生命周期,其中领域工程的主要任务是领域分析、领域设计和领域实现,应用工程的主要任务是需求分析、系统设计和系统实现。
应用工程将产品线资源不能满足的需求返回给领域工程,以检验是否将之合并到产品线的需求中。领域工程从应用工程中获得反馈或者结合新产品的需求进入有一次周期性发展。此为产品线的演化。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值