软件体系结构期末简答题

1.软件体系结构的概念和研究内容?

软件体系结构的概念

·软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。·软件体系结构不仅指定了系统的组织(organ i zation)结构和拓扑(topology)结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策。

软件体系结构的研究内容:

·软件体系结构理论模型的研究:如何表示体系结构的问题

软件体系结构描述的研究:规范化的体系结构描述语言(ADL)

体系结构设计研究:体系结构设计方法、体系结构风格以及计算机辅助实现等方面的研究体系结构分析与验证基于体系结构的软件开发过程的研究研究特定领域的体系结构框架.

2.软件体系结构的发展历程?

基础研究阶段:1985-1994年,一些重要的基本思想和基础概念开始浮出水面

概念确立阶段:1992-1996年,软件体系结构基本概念和模型确立,架构视图

探索发展阶段:1995-2000年,ACME体系结构交互语言,为不同体系结构描述语言之间的交互提供一个统一平台,体系结构评估方法SAAM->ATAM

普及应用阶段:2000年至今,出现新架构风格,web service,进入本科教育

3.组成派和决策派各自的思路?

组成派角度

体系结构=构件(组件)+连接件+约束

强调软件架构是“组件及组件之间的交互”。

“组件”体现在:

1)“业务层”和“展现层”就是组件,粒度很粗,完全是黑盒:

2)设计中PrgMgtModel,GanttChart和GanttChartImpl等关键类。“业务层”和“展现层”两个组件在某种程度上从黑盒变成了灰盒,提供更具体的开发指导。

“交互”体现在:

1)“业务层”和“展现层”两个粗粒度的组件之间的交互:展现层从业务层“读取数据”

2)“读取数据”这一交互已经“具体落实”成了“CanttChartImpl从PrgMgtModel读取数据”。

理解架构:决策派角度

体系结构=重要决策集合

强调架构不仅包括关于软件系统的组织,元素、子系统、架构风格等几类决策还包括关于众多非功能需求的决策。

体现在:

1)“业务层”和“展现层”分离,体现了软件架构概念中的“软件系统的组织”决策:

2)为了防止 PMSuite“绑死”在特定甘特图绘制包上,设计中引入自主定义GanntChart接口,让实现该接口的GanntChartImpl转而调用第三方SDK,使架构具有弹性(如果有更强大的甘特图程序包时,可以方便仅更改GanttChartImpl,而其他组件不用更改)。

4.构件、连接件、约束的概念?

构件是具有某种功能的可重用的软件模板单元,表示了系统中主要的计算元素和数据存 储.

连接件表示了构件之间的交互,

约束是指按照什么标准或要求将构件连接起来。

5.设计模型与软件架构的关系?

软件架构设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题及解决该问题的方案的描述,它比软件架构更抽象;软件架构可以用代码表示,也能直接执行或复用,而对设计模式而言,只有实例才能用代码表示。设计模式是比软件架构更小的元素,一个软件架构中往往含有一个或多个设计模式,软件架构总是针对某一特定应用领域,但同一设计模式却可适用于各种应用。可以说,软件架构是应用程序,而设计模式是开发应用程序的具体方法

6.软件架构与软件框架的区别与联系?

呈现形式不同。架构的呈现形式是一个设计规约,而框架则是程序代码。

目的不同。架构的目的是指导一个软件系统的实施与开发;而框架的目的是设计复用。因此,一个框架可有其架构,用于指导该框架的开发,反之不然。

有种特殊的架构,DSSA(领域特定体系结构)其目的也是为了复用。

架构风格在其用程序代码实现后就成了Corba、COM架构框架,也叫中间件集成框架,或对象中间件。

7.软件体系结构研究意义?

1.软件体系结构是风险承担者进行交流的手段

2.软件体系结构是早期设计决策的体现

3.软件体系结构是可传递和可重用的模型

8.软件系统质量属性中,高可用、高性能、高扩展性的思路?

软件的高可用性是指软件的不间断运行能力,它一方面要求软件所依赖的设备本身具有高可靠性,另一方面必须从软件的设计入手,实现一个高可用性的软件产品。

软件的可扩展性表现为基础设置不需要经常变更,应用之间较少依赖或耦合,可以对需求变更快速响应。

软件的高性能是指软件响应及时度满足用户要求的程度很高。

9.软件体系结构的涉众(风险承担者,stakeholder)是有哪些?,他们的利益诉求、架构师需要与这些涉众要沟通哪些内容?

   涉众:客户,用户,开发人员,项目经理,维护人员,对系统进行市场营销活动的人

   利益诉求:客户——成本低,即使交付,不要改动太频繁

                                           用户——行为,性能,安全性,可靠性和易用性

                                           项目经理——成本低,人人都要工作

                                            维护人员——可修改性

                                           对系统进行市场营销活动的人——特性突出,能很快投入市场,成本低,可与同类产品相匹敌

    沟通内容:开发人员必须理解架构对他们的要求;测试人员必须清楚自己所面临的任务;管理层必须明确架构要求做出什么样的规划

10.什么是软件体系结构风格?

  描述特定领域中软件系统家族的组织方式的惯用模式(idiomatic paradigm),反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。

11.软件体系结构风格与设计模式的区别?

     设计模式是在其和对象的层次描述问题,粒度较小。

                   软件体系结构是在构件和连接体的层次描述问题,粒度较大,软件体系结构是广义上的设计模式。

                  共性:都是可重复使用的软件设计问题的解决方案,一个架构中可能会出现多个设计模式来解决多种架构中的问题。

12.数据流体系结构的特征?

1.数据的可用性决定着处理<计算单元>是否执行

2.系统结构由数据在各处理之间的有序移动决定

3.在纯数据流系统中,处理之间为了数据交换没有任何其他的交互

13.数据流体系结构风格的构件?

基本构件:数据处理

构件接口:输入端口和输出端口

计算模型:从输入端口读取数据,经过计算/处理,然后写到输出端口

14.数据流体系结构风格的连接件?

连接件:数据流

单向、通常是异步、有缓冲

接口角色:reader和 writer

计算模型:把数据从一个处理的输出端口传送到另一个处理的输入端口

15.典型数据流体系结构风格有哪几种?

  1. 管道—过滤器
  2. 过程控制
  3. 批处理

16.批处理体系结构风格的构件、连接件与拓扑结构?

基本构件:独立的应用程序

连接件:某种类型的媒质

连接件定义了相应的数据流图,表达拓扑结构

17.管道-过滤器体系结构风格定义?

数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等),每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道,从源到接收器逐步转换数据(递增的读取和消费数据流),数据到来时便被处理,不是收集然后处理,即在输入被完全消费之前,输出便产生了。

18.管道-过滤器体系结构风格的构件、连接件与拓扑结构?

构件:过滤器,处理数据流

连接件:管道,连接一个源和一个目的过滤器

拓扑:连接器定义数据流图

19.管道-过滤器体系结构风格中过滤器是什么?其对数据流的五种变换类型?

     处理过滤器和输出过滤器

           变换类型:通过计算和增加信息来丰富数据

通过浓缩和删减来精炼数据

通过改变数据表现方式来转化数据

将—个数据流分解为多个数据

将多个数据流合并为一个数据流

20.管道-过滤器体系结构风格的优点及缺点?

优点:

1、使构件具有良好的隐蔽性和高内聚、低耦合的特点

2、支持软件复用,

3、系统维护和增强系统性能简单,

4、允许对一些如吞吐量、死锁等属性的分析,

5、支持并行执行

缺点:

1、不适合处理交互的应用

2、系统性能不高,并增加了编写过滤器的复杂性

21.批处理体系结构风格与管理-过滤器风格对比?

共同点:把任务分成一系列固定顺序的计算单元(组件)。组件间只通过数据传递交互。

区别:批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性。而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。批处理强调数据传送在步与步之间作为一个整体,而管理过滤器无此要求。

22.调用/返回风格几种常用类型?

主程序-子程序;面向对象风格;层次结构。

23.主程序/子程序风格适用求解的问题?其构件和连接件是?

适用于可以通过过程定义层次结构适当计算的应用程序

构件:过程和显式可见数据

连接件:过程调用和显式数据共享

24.面向对象风格适用求解的问题?其构件和连接件是?

适用于中心问题是识别和保护相关信息体(尤其是表示信息)的应用程序

构件:例如服务器、对象、抽象数据类型

连接件:过程调用

25.层次风格适用求解的问题?其构件和连接是?

适用于涉及可以分层排列的不同服务类的应用程序,通常适用于基本系统级服务,适用于许多应用程序的实用程序和应用程序的特定任务的层次

构件:通常是过程的集合

连接件:取决于组件的结构,通常在受限可见性进行过程调用,也可能是客户端/服务器

26.层次风格的特点?

每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层(适当时候(必不得已的时候).可以允许一定的越层操作)

大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度

修改一层,最多影响两层,而通常只能影响上层。接口稳固,则谁都不影响

上层必须知道下层的身份,不能调整层次之间的顺序

层层相调,影响性能

27.C/S、三层C/S、B/S各自的特点和对比?

(1)硬件环境不同:

C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务。B/S 建立在广域网之上的, 不必是专门的网络硬件环境,有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行。

(2)对安全要求不同 :

 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强。一般高度机密的信息系统采用C/S 结构适宜。可以通过B/S发布部分可公开信息。

 B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群。

(3)对程序架构不同:

  C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑。

  B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上。比C/S有更高  的要求。

(4)软件重用不同:

C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好。

  B/S 对的多重结构,要求构件相对独立的功能。

(5)系统维护不同 :

  系统维护出处于软件生存周期中,开销大 -------这一点是非常重要的 

  C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级。升级难,很难再做一个全新的系统 。

  B/S 由构件组成,方面构件个别的更换,实现系统的无缝升级。系统维护开销减到最小。用户从网上自己下载安装就可以实现升级。

(6)处理问题不同:

  C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关。应该都是相同的系统。 

  B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的。 与操作系统平台关系最小。

(7)用户接口不同 

  C/S多是建立的Window平台上,表现方法有限,对程序员普遍要求较高。

  B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流。并且大部分难度减低,减低开发成本。

二层C/S和三层C/S之间的不同:

二层C/S结构是单一服务器且以局域网为中心的。

三层C/S结构是分两类服务器(数据库服务器和应用服务器)和用户。

各自优缺点:

(1)B/S模式:

优点:容易开发,跨平台性好,且容易维护;

缺点:安全性差。

(2)C/S模式:

优点:安全性好。

缺点:跨平台性差,难以扩展到广域网或Internet上,且较难维护。

28.KWIC问题求解时,利用主程序-子程序、面向对象、管道过滤器各自的实现思路?                              

/子风格:对系统进行功能分解,分为四个基本功能:输入,移位,排序,输出

首先,调用input函数来读取和解析输入文件,然后调用circularshift函数,产生移位结果,然后调用alphabetize函数对其进行排序并写入结果,最后主函数调用output函数,产出排序

面向对象:调用input对象:从输入文件中读取数据并将其存储在lineStorage对象中,然后调用cirrcularShifter对LineStorage对象中存储的数据进行循环移位,其次,调用Alphabetizer对循环移位后得到的数据进行排序,最后output负责打印输出排序后的数据

管道过滤器:四个过滤器:输入,移位,排序,输出。每个过滤器处理数据,然后将结果送至下一个过滤器,控制机制是分布式的,只要有数据传入,过滤器即开始工作;过滤器之间的数据共享被严格限制在管道传输

29.仓库体系结构风格的定义?其构件和连接件是?其适用求解哪些问题?

仓库是存储和维护数据的中心场所

构件:中心数据单元,代表系统当前的各种状态

连接件:仓库与独立构件之间的交互

适用于中心问题的建立,扩充和维护复杂的中心信息体的应用程序

30.黑板体系结构风格适用求解哪些问题?

1.没有直接的算法,多种方法都可能解决问题;

2.找不到确定的求解策略(先做什么?后做什么?);

3.问题没有唯一的解答:每个求解步骤中都可能产生多个可能的解,需要寻求最佳或可接受解。

4.需要多个领域的专门知识协作解决。

例如:自然语言处理、语音处理、模式识别、图像处理等

31.黑板模型的基本结构?黑板数据结构包括哪些?

黑板模式是一种常用的架构模式,应用中的多种不同数据处理逻辑相互影响和协同来完成数据分析处理

黑板模式由3个主要组成部分组成:

(1)知识源:包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,它们之间的交互只通过黑板来完成。

(2)黑板数据结构:按照与应用程序相关的层次来组织并解决问题的数据,知识源通过不断地改变黑板数据来解决问题。

(3)控制组件;完全由黑板的状态驱动,黑板状态的改变决定了需要使用的特定知识。

32.黑板模型中知识源和控制器的定义?

知识源中包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,它 们之间的交互只通过黑板来完成。

33.黑板模型的应用领域?

黑板模式常应用于:语音识别、车辆识别和跟踪、蛋白质结构识别、声纳信号的解释

34.黑板风格与仓库风格的区别?

由中央数据结构的当前状态决定进行何种处理。这时,仓库是一个黑板体系结构,即黑板体系结构是仓库体系结构的特殊化。所以说黑板风格和仓库风格具体没有什么太大区别,关键就在于中央数据结构的状态决定。

35.常用的虚拟机风格的分类?

解释器风格:当底层不支持上层时,在两者之间加入一层虚拟机做模拟仿真,消除硬件和软件之间的差异

规则系统风格:根据既定的规则和目前的事实,做出相应的输出

36.解释器风格适用求解的问题?其构件和连接件是什么?

适用于无法直接使用合适的语言或机器来执行求解的应用程序。该模式还适用于核心问题可以定义为解决方案的表示符号(例如脚本)的应用程序。解释器有时会成串使用,在系列阶段中将所需的语言/机器翻译成可用的语言/机器。

构件:状态机器(解释引擎)、三个存储(解释引擎的当前状态,将被解释的程序,

程序的当前状态)

连接件:数据访问和过程调用

37.解释器风格的工作原理(图)?

  1. 软件体系结构期末简答题_第1张图片

38.解释器风格的优点及缺点?

优点:可扩展性比较好,灵活;增加了新的解释表达式的方式;易于实现简单文法

缺点:效率太低,性能低下因为多了一层解释器

39.规则系统风格与解释器风格的相似之处?

有需要被执行的代码,解释器,控制解释器的部分,存储当前状态的存储器

规则引擎和黑板系统有相似之处,都是存储规则和各种事实,计算机自动根据读入的状态,事实库和规则库执行相应的操作。但是,黑板系统是针对一个大而复杂的问题,对于这一个问题要用到多个规则和对策,侧重的是利用人工智能解决复杂问题。而规则引擎针对的是一系列不断输入的小问题,侧重于业务逻辑和代码分离

40.规则系统的基本结构(图)?

  1. 软件体系结构期末简答题_第2张图片

41.Drools这类规则引擎的出现,是应用什么样的业务场景?        Drools规则引擎如何实现规则系统的功能?

场景:系统庞大,业务复杂业务规则经常改变

24小时服务

业务统一管理

降低系统维护升级成本

如何实现:许多产品规则的大脑实际上就是一个推理引擎,用于匹配事实和规则,当匹配被找到,规则对于的动作会被触发

42.什么是事件?隐式调用的主要特点?

事件:能够激活对象功能的动作﹒当发生这种动作后将给所涉及对象发送一个消息﹐对象便可执行相应的功能

隐式调用特点∶

事件的触发者并不知道哪些构件会被这些事件影响,相互保持独立﹔

不能假定构件的处理顺序﹐甚至不知道哪些过程会被调用;

各个构件之间彼此之间无连接关系,各自独立存在,通过对事件的发布和注册实现关联。

43.事件系统的基本工作原理及其特点?

基本原理:一个构件可以广播一些事件(事件源),系统中的其他构件可以注册自己感兴趣的事件﹐并将自己的某个过程与相应的事件进行关联(事件处理器),当一个事件被发布后,系统自动调用在该事件中注册的所有过程(事件管理器)

特点:分离的交互;一对多通信;基于事件的触发器;异步

44.事件系统中构件及连接件分别是?

构件:过程或函数,充当事件源或事件处理器的角色;事件

连接件:过程<事件处理器>向特定的事件进行注册;构件<事件源>发布事件;当某些事件被发布时,其注册的过程被隐式调用;调用的次序是不确定的;在某些情况下,一个事件也可能触发其他事件,形成事件链

45.事件系统的两种常用派遣调度机制?

       无独立调度派遣模块的事件系统

       有独立事件派遣模块的事件系统

46.被观察者/观察者模式的实现思路?

     观察者通过注册事件连接被观察者,被观察者通过发送事件联系观察者

47.独立事件派遣模块的两种派遣方式?

全广播式:无目的广播,接受者自行决定是否加以处理或者简单抛弃

选择广播式:事件只发送给特定模块

48.选择广播式事件派遣方式的两种实现策略?

      点对点模式:基于消息队列

            发布—订阅模式

你可能感兴趣的:(软件构建)