考纲(张友生版本软件架构
考试题型:
10*3单选
5*3简答题
5*3设计图(含画图)
10*2 论述题
10*2综合题
复习以课件为主,书为辅
第一章
(软件危机)
?
?
构造模型与实现
掌握软件结构体系核心模型
第二章
软件体系结构建模种类
最重要是4+1视图模型(进程视图与处理视图是一个东西,翻译问题)(对应不同风险承担者)(哪些视图动态静态)(运行期质量))刻画哪些方面)(会考多个选择题)(主要看每个视图支持什么)
软件体系结构生命周期
至少会最基础的逻辑视图
会画出视图模型
第三章
经典软件体系结构风格
第一种不考
数据抽象与面对对象通读一遍,不怎么考
隐式调用,通读一遍
分层的优缺点(选择题)
仓库系统掌握,选择题
cs风格,考试重点,可能在论述里面,尤其知道每种风格特点优缺点
三层cs风格解决方案以及优缺点
bs优缺点,区别
技术规范看一下,可能有选择题
正交软件体系,掌握,模型要画图,特征优点
hmb可能有选择题
领域限定可能有选择题,简答题不一定
第四章
形式化不用看
描述方法的分类,掌握
模块内链接语言,定义,优缺点
软构建,可能有选择题
软件体系结构语言,非常多考点
adl与其他语言比较:掌握
其他无要求
第六章
组织架构形式那几种(重点
其他不做要求
第七章(重点)
动态性有哪几个(选择,简答
软件结构体系风格,至少说出五种
动态静态例子,图示,描述 怎么配置进行
动态形式化描述的方法(选择+简答
基于构建的动态体系结构,综合题,考很多,论述,涉及
局部/全局更新的请求、步骤,全部更新等(必考,案例是设计题)
软件构建,设计体系模型(设计题)
形态体系结构特征有哪些(选择简答
第十三章
产品线定义,优点,产品线的过程模型
1 3 7 13是重点
参考链接:
软件体系结构期末考试总结
《软件体系结构》 练习题
软件体系结构重点总结
《软件体系结构》知识点整理
【软件体系结构】考点整理(习题无答案
《软件体系结构》期末复习总结
软件体系结构张友生第三版期末复习
第一章(重点)
软件危机
答案:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题
软件重用
答案:是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
软件危机的表现:
软件成本日益增长。开发进度难以控制。软件质量差。软件维护困难
软件危机的原因:
用户需求不明确。缺乏正确的理论指导。软件规模越来越大。软件复杂度越来越高
软件工程的三要素: 方法,工具,过程
软件体系结构的生命周期模型主要分为需求分析阶段、建立软件体系结构阶段、设计阶段和实现阶段
软件体系结构设计的主要目的是满足对软件的质量需求
构造模型与实现
软件体系结构应建立于传统的.软件开发过程的需求分析和软件设计阶段之间
构件概念: 构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体
5. 常见的构件模型: OMG的CORBA。Sun的EJB。Microsoft的DCOM(分布式构件对象模型)
6. 构件分类方法: 关键字分类法。刻面分类法。超文本组织方法。
7. 软件体系结构的定义: 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。 (软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理)
8. 软件体系结构的意义: 1体系结构是风险承担者进行交流的手段 2 体系结构是早期设计决策的体现 3软件体系结构是可传递和可重用的模型
可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。
第二章
软件体系结构
答案:软件体系结构是一个设计,它包括所建立系统中的各元素(构件和连接件)的描述、元素之间的交互、指导装配的范例和对范例的约束。
软件体系结构建模种类
软件体系结构的模型分为5种:结构模型、框架模型、动态模型、过程模型、功能模型
结构模型:以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质等。
框架模型:侧重于整体的结构。主要以一些特殊的问题为目标建立只针对和适应该问题的结构。
动态模型:是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如,描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。
过程模型:过程模型研究构造系统的步骤和过程。
功能模型:认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。可以看作是一种特殊的框架模型
最重要是4+1视图模型(进程视图与处理视图是一个东西,翻译问题)(对应不同风险承担者)(哪些视图动态静态)(运行期质量))刻画哪些方面)(会考多个选择题)(主要看每个视图支持什么)
“4+1”视图模型:
最终用户-系统功能-逻辑视图
系统工程师-系统的安装+发布+拓扑结构-部署/物理视图
系统集成人员-系统性能+可伸缩性+吞吐性-进程视图
逻辑视图、开发视图、进程视图、物理视图、场景视图。不包括:连接视图
逻辑视图
逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。可以用类图(Class Diagram)来描述逻辑视图
开发视图
开发视图也称模块视图,主要侧重于软件模块的组织和管理
开发视图要考虑软件内部的需求,如软件开发的容易性、软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性 开发视图的风格通常是层次结构,每个层为上一层提供良好定义的接口,层次越低,通用性越好
在开发视图中,最好采用4-6层子系统,而且每个子系统仅仅 能与同层或更低层的子系统通讯,这样可以使每个层次的接 口既完备又精练,避免了各个模块之间很复杂的依赖关系
设计时要充分考虑,对于各个层次,层次越低,通用性越强, 这样,可以保证应用程序的需求发生改变时,所做的改动最小。开发视图所用的风格通常是层次结构风格
进程视图
进程视图强调并发性、分布性、系统集成性和容错能力,
强调并发性、分布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。
定义逻辑视图中的各个类的具体操作是在哪一个线程(Thread)中被执行
物理视图
物理视图主要考虑如何把软件映射到硬件上,它通常要考虑系统性能、规模、可靠性等
场景
逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构
当环境改变时,对系统其他视图的影响最小
场景(scenarios)视图:
场景可以用文本表示,也可以用图形表示
场景的表示法: 静态方面用用例图表现,动态方面用活动图、状态图、交互图表现
答:场景是那些重要系统活动的抽象,它使4个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。
逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。
开发视图:也称模块视图,主要侧重于软件模块的组织和管理。开发视图要考虑软件内部的需求,如软件开发的容易性、软件的重用和软件的通用性,要充分考虑由于具体开发工具的不同而带来的局限性。开发视图通过系统输入输出关系的模型图和子系统图来描述。
进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。进程视图可以描述成多层抽象,每个级别分别关注不同的方面。在最高层抽象中,进程结构可以看作是构成一个执行单元的一组任务。它可看成一系列独立的,通过逻辑网络相互通信的程序。它们是分布的,通过总线或局域网、广域网等硬件资源连接起来。
物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到系统性能、规模、可靠性等。解决系统拓扑结构、系统安装、通讯等问题。当软件运行于不同的节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。
场景视图:可以看作是那些重要系统活动的抽象,它使四个视图有机联系起来,从某种意义上说场景是最重要的需求抽象。在开发体系结构时,它可以帮助设计者找到体系结构的构件和它们之间的作用关系。同时,也可以用场景来分析一个特定的视图,或描述不同视图构件间是如何相互作用的。场景可以用文本表示,也可以用图形表示。
软件体系结构生命周期
至少会最基础的逻辑视图??
会画出视图模型??
软件体系结构的核心模型的基本元素:
构件、连接件、配置、端口、角色。其中,构件、连接件和配置是最基本的元素。
第三章(重点)
软件体系结构风格
答案:软件体系结构风格是描述某一特定领域中系统组织方式的惯用模式。
经典的软件体系结构风格有哪些?
1 数据流风格:批处理序列;管道/过滤器
2 调用/返回风格:主程序/子程序;面向对象风格;层次结构
3 独立构件风格:进程通讯;事件系统
4 虚拟机风格:解释器;基于规则的系统
5 仓库风格:数据库系统;超文本系统;黑板系统
在体系结构中,应用于当前环境中有多个构建同时运行的情况,主要用来提高系统性能的结构风格是并行/管道-过滤器结构风格
数据流风格:管道与过滤器
场境: 数据源源不断的产生,系统需要对这些数据进行若干处理分析、计算、 转换等
每个处理步骤由一个过滤器构件(Filter)实现
处理步骤之间的数据传输由管道(Piple)负责
应用实例:
Compiler(编译器)
Image /Signal/Voice processing(图像/信号/声音处理)
网上购物系统
数据抽象与面对对象通读一遍,不怎么考
隐式调用,通读一遍??
应用:开发工具中调试过程中的断点和变量监视器
分层系统
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义, 拓扑约束包括对相邻层间交互的约束
这种风格支持基于可增加抽象层的设计。 允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持
分层的优缺点(选择题)
优点
支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法
缺点 并不是每个系统都可以很容易地划分为分层的模式,即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑, 系统设计师不得不把一些低级或高级的功能综合起来
很难找到一个合适的、正确的层次抽象方法
级联修改问题。一些复杂的业务中,由于业务流程发生变化,为了这个变化所有层都需要修改
性能问题。本来是直接简单的操作,现在需要在整个系统中层层传递,势必造成性能的下降,同时也加大的开发的复杂度
应用
数据库系统的分层设计
网络分层体系结构
操作系统分层体系结构
从低到高分别是:物理层、数据链路层、网络层、传输层、 会话层、表示层和应用层
仓库系统掌握,选择题????
在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。
控制原则的选取产生两个主要的子类。若输入流中某类时间触发进程执行的选择,则仓库是一传统型数据库;另外,若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
黑板系统的传统应用是信号处理领域,如语音和模式识别,另一应用是松藕合代理数据共享存取。
黑板系统主要由三部分组成:
黑板系统主要由知识源、黑板数据结构和控制组成,不包括内存
知识源。知识源中包含独立的、与应用程序相关的知识,知识源之间不直接进行通信,它们之间的交互只通过黑板来完成。
黑板数据结构。黑板数据是按照与应用程序相关的层次来组织的解决问题的数据,知识源通过不断地改变黑板数据来解决问题。
控制。控制完全由黑板的状态驱动,黑板状态的改变决定使用的特定知识。
C2风格
C/S风格
优点
C/S 体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受 系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小
在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用
缺点
◎ 开发成本较高
◎ 客户端程序设计复杂
◎ 信息内容和形式单一
◎ 用户界面风格不一,使用繁杂,不利于推广使用
◎ 软件移植困难
◎ 软件维护和升级困难
◎ 新技术不能轻易应用
三层C/S风格
三层C/S的解决方案
对这三层进行明确分割,并在逻辑上使其独立。关键是要将表示层和功能层分离成各自独立的程序,并且还要使这两层间的接口简洁明了
一般情况是只将表示层配置在客户机中
如果将功能层和数据层分别放在不同的服务器中,则服务器和服务器之间也要进行数据传送
由于在这种形态中三层是分别放在各自不同的硬件系统上的,所以灵活性很高,能够适应客户机数目的增加和处理负荷的变动。例如,在追加 新业务处理时,可以相应增加装载功能层的服务器。因此,系统规模越大这种形态的优点就越显著
优点:
允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性, 能提高系统和软件的可维护性和可扩展性
允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性
应用的各层可以并行开发,可以选择各自最适合的开发语言
利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础
缺点:
三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能
设计时必须慎重考虑三层间的通信方法、通信频度及数据量。这和提高各层的独立性一样是三层C/S结构的关键问题
三层B/S风格
优点
基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级
B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础
缺点
B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能
B/S体系结构的系统扩展能力差,安全性难以控制
采用B/S体系结构的应用系统,在数据查询等响应速度上, 要远远地低于C/S体系结构
B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用
C/S与B/S混合软件体系结构
B/S (Browser/Server)与C/S混合软件体系结构是一种 典型的异构体系结构
B/S软件体系结构:在B/S体系结构下,用户界面完全通 过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现
变电站内部用户通过局域网直接访问数据库服务器,外部 用户(包括县调、地调和省局的用户及普通Internet用户) 通过Internet访问Web服务器,再通过Web服务器访问数 据库服务器
C/S与B/S混合软件体系结构的优点是外部用户不直接访问 数据库服务器,能保证企业数据库的相对安全。企业内部 用户的交互性较强,数据查询和修改的响应速度较快
C/S与B/S混合软件体系结构的缺点是企业外部用户修改和 维护数据时,速度较慢,较烦琐,数据的动态交互性不强
技术规范看一下,可能有选择题
CORBA公共对象请求代理体系结构
正交软件体系,掌握,模型要画图,特征优点
正交软件体系结构
概念
正交软件体系结构由组织层和线索的构件构成。如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。
优点
结构清晰,易于理解
易修改,可维护性强
可移植性强,重用粒度大
hmb风格可能有选择题
HMB风格的构件接口是一种基于消息的互联接口,可以较好地支持体系结构设计。构件之间通过消息进行通讯,接口定义了构件发出和接收的消息集合。
当某个事件发生后,系统或构件发出相应的消息,消息总线负责把该消息传递到此消息感兴趣的构件。
按照响应方式的不同,消息可分为同步消息和异步消息。
14.HMB风格(基于层次消息总线的体系结构风格): HMB风格基于层次消息总线/支持构件的分布和并发,构件之间通过消息总线进行通信。 消息总线是系统的连接件,负责消息的分派、传递和过滤以及处理结果的返回。各个构件挂接在消息总线上,向总线登记感兴趣的消息类型。构件根据需要发出消息,由消息总线负责把该消息分派到系统中所有对此消息感兴趣的构件,消息是构件之间通信的唯-方式。构件接收到消息后,根据自身状态对消息进行响应,并通过总线返回处理结果。由于构件通过总线进行连接,并不要求各个构件具有相同的地址空间或局限在一台机器上。
15.HMB风格的消息总线的功能有哪些? 1 消息登记 2 消息分派和传递 3 消息过滤
领域限定可能有选择题,简答题不一定
cs风格尤其知道每种风格特点
第四章
描述方法的分类,掌握
◎ 图形表达工具
◎ 模块内连接语言
◎ 基于软构件的系统描述语言
◎ 软件体系结构描述语言
模块内链接语言,定义,优缺点
模块内连接语言:将一种或几种传统程序设计语言的模块连接起来
对模块化的程序设计和分段编译等程序设计与开发技术发挥了很大的作用【优点】。
这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力【缺点】 。
软构件,可能有选择题
软件体系结构描述语言,非常多考点
adl与其他语言比较:掌握
关于软件体系结构描述方法的说法:
1. 图形表达工具在软件中占据主导地位
2. 由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述
3.基于软构件的系统描述语言将软件体系结构描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统
4.软件体系结构描述语言是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言ADL
ADL与其他语言的比较:1.ADL与需求语言的区别在于后者描述的是问题空间,而前者则扎根于解空间中
2.ADL与建模语言区别在于后者对整体行为的关注要大于对部分的关注,而ADL集中在构件的表示上
第六章
组织架构形式那几种(重点
常见的组织架构形式包括中央集权制、分权制、直线式以及矩阵式
第七章 (重点)
动态软件体系结构定义:允许在系统运行时发生更新的软件体系结构称为动态软件体系结构。
动态体系结构在系统创建后可以动态更新
动态性有哪几个(选择,简答
动态性主要分为三类: 交互式动态性 结构化动态性 体系结构动态性
基于构件的动态系统结构模型分为三层,分别是应用层、中间层、和体系结构层
软件结构体系风格,至少说出五种
动态静态例子,图示,描述 怎么配置进行
动态体系结构的描述既可以使用描述语言,也可以使用形式化的描述,既可以使用UML建模机制,也可以使用XML建模机制
动态形式化描述的方法(选择+简答
对DSA的形式化描述,通常可以采用图形化方法、进程代数方法、逻辑化方法等
动态体系结构的特征
– 可构造性动态特征
– 适应性动态特征
– 智能性动态特征
基于构件的动态体系结构,综合题,考很多,论述,涉及
分为三层:应用层、中间层和体系结构层
应用层处于最底层,包括构件连接、构件接口和执行。构件连接定 义了连接件如何与构件相连接;构件接口说明了构件提供的服务, 例如消息、操作和变量等等。在这一层,可以添加新的构件、删除 或更新己存在的构件。
中间层包括连接件配置、构件配置、构件描述及执行。连接件配置 主要是连接件及接口的通信配置;构件配置管理构件的所有行为; 构件描述对构件的内部结构、行为、功能和版本等信息加以描述。 在这一层,可以添加版本控制机制和不同的构件装载方法。
体系结构层位于最上层,控制和管理整个体系结构,包括体系结构 配置器、体系结构描述和执行。其中,体系结构描述主要是描述构 件以及它们相联系的连接件的数据;体系结构配置控制整个分布式 系统的执行,并且管理配置层;体系结构描述主要是对体系结构层 的行为进行描述。在这一层,可以更改和扩展更新限制,更改系统 的拓扑结构,更改构件到处理元素之间的映射
在每一层都有一个执行部分,主要是对相应层的操作进行执行。
在更新时,必要情况下将会临时孤立所涉及的构件。在更新执行之前,要确保:
所涉及的构件停止发送新的请求;
在更新开始之前,连接件的请求队列中的请求全部己被执行 。而且,模型封装了连接件的所有通信,这样可以很好的解 决动态更新时产生的不一致性问题。
局部/全局更新的请求、步骤,全部更新等(必考,案例是设计题)
按照CBDA模型的结构,对系统进行更新,一般来说,有以下几个步骤:
(l)检测更新的范围。在更新执行之前,首先要判断是局部更新还是全局更新,局部更新作用于需更新构件的内部而不影响系统的其他部分,全局更新影响系统的其他部分,全局更新需要发送请求到更高的抽象层。
(2)更新准备工作。如果更新发生在应用层,构件配置器等待参与的进程(或线程)发出信号,以表明它们己处于可安全执行更新的状态;如果更新发生在配置层,就需要等待连接件中断通信和其他构件配置器已完成它们的更新;如果更新发生在体系结构层,就直接执行。 (3)执行更新。执行更新,并告知更新发起者更新的结果。
(4)存储更新。将构件或体系结构所作的更新存储到构件或体系结构描述中。
全局更新
以一个Cliect/Server系统动态更新实例来说明CBDA 模型在全局更新中的应用,在本例中,要求更新某一 Server构件。按照CBDA模型,用UML的时序图来描 述动态更新过程
请简述基于构件的动态体系结构模型是如何支持运行系统的动态更新的?
- 检查更新的范围
- 更新准备工作
- 执行更新
- 存储更新
软件构建,设计体系模型(设计题)
形态体系结构特征有哪些(选择简答
1. 什么是动态软件体系结构?动态软件体系结构与 静态软件体系结构有什么区别?动态性主要体现在 哪三个方面? 2. 基于构件的动态软件体系结构模型的层次是什么? 请简述其是如何支持运行系统的动态更新的?
第十三章(重点)
软件产品线定义与优点:
软件产品线就是在一个公共的软件资源集合基础上建立起来的,共享同一个特性集合的系统集合。
产品线代表着一组具有公共的系统需求集的软件系统
作用:能有效地提高软件生产率和质量、缩短开发时间、降低总开发成本;
软件产品线的优点
降低开发费用
缩短上市时间
灵活的人员配备
更高的可预测性
更高的质量
减低维护成本
减少系统设计复杂度
便于估计开发成本
9.软件产品线的划分依据有? (P356)
答: 1、该组织是用演化方式还是革命方式引入产品线开发过程的。
- 是基于现有产品还是开发全新的产品线。
产品线的过程模型
双生命周期模型
两个重叠的生命周期:领域工程和应用工程。两个周期内部都分为分析、设计和实现三个阶段,
领域工程阶段的主要任务如下:
领域分析:利用现有系统的设计、体系结构和需求建立领域模型。
领域设计:用领域模型确定领域的共性和可变性,为产品线设计体系结构。
领域实现:基于领域体系结构开发领域可重用资源。
画图
选择一个熟悉的大型软件系统,分析其体系结构中用到的风格,以及表现出的特点。(为什么要采用这种风格?采用这种风格带来哪些优势?具有哪些不足?)
对社交软件QQ的分析:采用C/S风格,在一定程度上算三层C/S风格。
表示层:社交信息的展示,并提供了更新和搜索等操作。
功能层:具有搜索、在线聊天、离线留言、文件传输等功能。
数据层:有数据库服务器提供留言、相册、好友信息等数据。
优点:使逻辑结构更为清晰、分类明确、给用户更好的体验。
缺点:需要数据通信的支持,对网络的依赖很高,没有网络,许多功能将没有意义。
1、纵观软件体系结构技术的发展过程,从最初的“无结构”设计到现行的基于体系结构的软件开发,可以认为经历了哪四个阶段?
答案:(1)“无体系结构”设计阶段。以汇编语言进行小规模应用程序开发为特征
(2)萌芽阶段。出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征
(3)初期阶段。出现了从不同侧面描述系统的结构模型,以UML为典型代表
(4)高级阶段。以描述系统的高层抽象结构为中心,不关心集体的建模细节,划分了体系结构模型与软件结构的界限,该阶段以Kruchten,提出了“4+1”模型为标志。
2、试述下可重用技术对构件库组织方法的几点要求:
答案:(1)支持构件库的各种维护动作,如增加、删除以及修改构件,尽量不要影响构件库的结构。
(2)不仅要支持精确匹配,还要支持相似构件的查找。
(3)不仅能进行简单的语法匹配,而且还能够查找在功能或行为方面等价或相似的构件。
(4)对应用领域具有较强的描述能力和较好的描述精度。
(5)库管理员和用户容易使用
简要概产生软件危机的原因答案:1.用户需求不明确 2.缺乏正确的理论指导 3.软件规模越来越大 4.软件复杂度越来越高。
软件体系结构的定义众多,你是如何理解软件体系结构的?软件体系结构在软件系统中有何作用?
答案:(1)软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素继承的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,还显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
(2)体系结构是风险承担者进行交流的手段。它明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性,可以预测软件的质量,是推理和控制更改更简单,有助于循序渐进的原型设计。同时,软件体系结构是可传递和可重用的模型。
6、体系结构的生命周期模型分为哪几个阶段?
答案:1、需求分析阶段 2、建立软件体系结构阶段 3、设计阶段 4、实现阶段
11、试阐述与C/S体系结构相比,B/S体系结构的不足之处。
答案:
1、B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能;
2、B/S体系结构的系统扩展能力差,安全性难以控制;
3、采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远的低于C/S体系结构;
4、B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用。
14、请简述三层C/S结构的优点
答案:1、允许合理的划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为合理清晰,能提高系统和软件的可维护性和可扩展性。
2、允许更灵活的选用相应的平台和硬件系统使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层,并且具有可升级性和开放性
3、可并行开发,各层可选择各自最适合语言使之高效开发,从而达到较高的性价比
4、允许利用功能层有效的隔离开表示层 和数据层,未授权的用户难以通过如黑客手段访问数据层,具有可控性
18、在C2中,连接件和构件是如何工作的?
答案:连接件负责构件之间消息的传递,而构件维持状态,执行操作并通过top和bottom端口和其他的构件交换信息。每个接口包含一种可发送的消息和一组可接受的消息,构件之间的消息要么是请求其他构件执行某个操作的请求消息,要么是通知其他构件自身执行某个操作或状态发生改变的通知消息。构件之间的消息交换不能直接进行,而只能通过连接件来完成。
42、简述双生命周期中的领域工程阶段的主要任务及内容。
(1)领域分析。利用现有的系统设计、体系结构和需求建立领域模型。
(2)领域设计。用领域模型确定领域/产品线的共性和可变性,为产品线设计体系结构。
(3)领域实现。基于领域体系结构开发领域可重用资源(构件、文档、代码生成器)。
软件产品线的划分依据有?
答案:1、该组织是用演化方式还是革命方式引入产品线开发过程的。
2、是基于现有产品还是开发全新的产品线。
Java程序可以做到“一次编写,到处运行”,从架构风格上看符合( )风格的特点。
答题解析:虚拟机。
在网络通信中,进行包的解析,一般先进行包头的分离,然后进行报文解析及后续处理,根据这一特点,选用( )风格最合适。
答题解析:数据流风格。数据流风格就是把上一个环节的输出作为下一个环节的输入。
某公司欲开发一个基于图形用户界面的集成调试器。该调试器的编辑器和变量监视器可以设置调试断点。当调试器在断点处暂停运行时,编辑程序可以自动卷屏到断点,变量监视器刷新变量数值,针对这样的功能描述,采用( )的架构风格最为合适。
答题解析:隐式调用。该题强调的是某个功能暂停运行时,需要调用其他的事件。
某游戏公司欲开发一个大型多人即时战略游戏,游戏设计的目标之一是能够支持玩家自行创建战役地图,定义游戏对象的行为和之间的关系,针对该目标,公司应该采用()架构风格最为合适。(四选一:管道-过滤器、隐式调用、主程序/子程序 、解释器)。
答案解析:解释器。自定义地图,并且能够运行,故选解释器。
某公司承接了一个开发家用空调自动调温器的任务,调温器测量外部空气温度,根据设定的期望温度控制空调的开关,根据该需求,公司应采用( )架构风格最为合适。(四选一:解析器、过程控制、分层、管道-过滤器)。
答案解析:过程控制。
某公司欲开发一个语言识别系统,语言识别的主要过程包括分割原始语音信号、识别音素、产生候选词、判定语法片断、提供语义解释等。每个过程都需要进行基于先验知识的条件判断并进行相应的识别动作。针对该系统的特点,采用( )架构风格最为合适。(四选一:解释器、面向对象 、黑板、隐式调用)。
答案解析:黑板系统。只要看到是信息处理、音频处理等相关的都是黑板系统架构风格。
某公司欲开发一个漫步者机器人,用来完成火星探测任务。机器人的控制者首先定义探测任务和任务之间的时序依赖性,机器人接受任务后,需要根据自身状态和外界环境进行动态调整,最终自动完成任务。针对这些需求,该机器人应该采用()架构风格最为合适。(四选一:解释器、主程序/子程序、隐式调用、管道-过滤器)
答案解析:书上的标准答案是隐式调用,但是该题出的不严谨,从题意上来看采用进程控制的架构风格更加的合理。
Windows操作系统在图形用户界面处理方面采用的核心结构风格是() 风格。
答题解析:隐式调用。图形处理界面是典型的事件驱动,其就是点击什么按钮需要执行什么事件。
“编译器”是一种非常重要的基础软件,其核心功能是对源代码形态的单个或一组源程序依次进行预处理、词法分析、语法分析、语义分析、代码生成、代码优化等处理,最终生成目标机器的可执行代码。考虑以下与编译器相关的软件架构设计场景:传统的编译器设计中,上述处理过程都以独立功能模块的形式存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。针对这种设计思路,传统的编译器采用(1)架构风格比较合适。随着编译、链接、调试、执行等开发过程的一体化趋势发展,集成开发环境( IDE )随之出现。IDE集成了编译器、连接器、调试器等多种工具,支持代码的增量修改与处理,能够实现不同工具之间的信息交互,覆盖整个软件开发生命周期。针对这种需求, IDE采用(2)架构风格比较合适, IDE强调交互式编程,用户在修改程序代码后,会同时触发语法高亮显示、 语法错误提示、程序结构更新等多种功能的调用与结果呈现,针对这种需求,通常采用(3)架构风格比较合适。某公司已经开发了一款针对某种嵌入式操作系统专用编程语言的IDE ,随着一种新的嵌入式操作系统上市并迅速占领市场,公司决定对IDE进行行适应性改造,支持采用现有编程语言进行编程,生成符合新操作系统要求的运行代码,并能够在现有操作系统上模拟出新操作系统的运行环境,以支持代码调试工作。针对上述要求,为了使IDE能够生成符合新操作系统要求的运行代码,采用基于(4)的架构设计策略比较合适;为了模拟新操作系统的运行环境,通常采用(5)架构风格比较合适。
(1)A. 管道-过滤器 B. 顺序批处理 C. 过程控制 D. 独立进程
(2)A. 规则引擎 B. 解释器 C. 数据共享 D. 黑板
(3)A. 隐式调用 B. 显示调用 C. 主程序-子程序 D. 层次结构
(4)A. 代理 B. 适配 C. 包装 D. 模拟
(5)A. 隐式调用 B. 仓库结构 C. 基于规则 D. 虚拟机
答题解析:
(1)B。传统的编译器采用的是数据流的结构风格,上文中又强调了作为一个整体,故选择B。
(2)C。数据共享又叫仓库风格,但是黑板也是属于仓库风格中的一种,故选D也是可行的
(3)A。上文中强调的是修改程序代码后,需要调用其他的事件,故选A。
(4)B。上文中强调的是要在老系统中模拟出新系统的运行环境,典型的适配器架构模式
(5)D。虚拟机架构风格能够解决不同环境的相互兼容。