基于 软件体系结构(第3版)考试重点和复习指南

第一章 软件体系结构概述

软件危机的表现和产生的原因

软件危机

1.软件成本日益增长

2.开发进度难以控制

3.软件质量差

4.软件维护困难

产生原因

1.用户需求不明确

2.缺乏正确的理论指导

3.软件规模越来越大

4.软件复杂度越来越高

软件危机与软件体系结构的关系

软件危机引起软件工程的研究,软件危机的加剧,人们认识到软件体系结构的重要性,并对软件体系结构开始系统地深入地研究,是提高软件生产率和解决软件问题最有希望的途径。

构件与重用的定义及他们之间的关系

构件:语义完整,语法正确,有重用价值的单位软件。结构上,是语义描述,接口通信和代码实现的复合体。

重用:两次或多次软件开发过程中重复使用或使用相同或相近软件元素的过程。

关系:实现软件的工业化生产,构件是核心和基础,重用是必须的手段。

基于构件的软件开发的优势 《个人见解》

1.缩短开发费用

2.缩短开发周期

3.可以实现复用

基于构件的软件开发会面临的困难和挑战《个人见解》

1.在同一系统采用多个开发商提供的构件,它们之间的兼容性可能是一个严峻的问题;

2.采用随处可以购买到的构件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力;

3.第三方的构件开发商可能歇业,这会使购买的构件失去维护服务。这些都是在购买第三方构件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。

获取构件的途径

1.从现有构件中获得复合要求的构件,直接使用或做适应性修改,得到可重用的构件。

2.通过遗留工程将提取潜在重用价值的构件。

3.从市场上购买现成的商业构件

4.开发新构件

软件体系结构的意义

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

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

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

如何理解软件体系结构 《个人见解》

软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。一个工程就像是一座楼,软件体系结构就是被用来创建一个完整的体系,用来建造这座楼的。

程序结构、软件结构、软件体系结构的区别

区别:

程序结构:指的是代码的结构,一般的程序结构有三种:顺序、选择和循环。

软件结构:指的是软件的组成结构,软件的组成单位是模块(泛指),软件结构其实就是组成软件的模块结构。

体系结构:指的是软件的设计风格、范式等,常见的体系结构如:4+1,SOA,MVC,层次,管道过滤器,主程序子程序等。

**联系:**这三种结构其实讲的是同一种产品——同一个软件,是在不同层次对软件构成的抽象。

第二章 软件体系结构建模

介绍四加一模型

通过五个不同的视角反映系统的软件体系结构的全部内容。

软件体系结构在软件生命周期中的地位

对于软件项目,一个清晰的软件体系结构是首要的。p36

四加一模型的视图组成 和 作用

1.逻辑视图:系统的功能需求即提供给最终用户的服务。

2.开发视图:侧重于软件模块的组织和管理。考虑软件内部的需求,软件开发难度,软件重用,开发工具带来的局限。

3.进程视图:侧重于系统的运行特征,主要关注非功能需求,强调并发性、分布性、系统集成性和容错能力。

4.物理视图:如何把软件映射到硬件上,考虑系统性,可靠性。

软件体系结构的生命周期模型

软件体系结构生命周期由4个阶段组成:

1.需求分析阶段

2.建立软件体系结构阶段

3.设计阶段

4.实现阶段

第三章 软件体系结构风格

软件体系结构进行分析

经典软件体系结构风格

客户服务器(C/S)风格

三层C/S习题结构风格

浏览服务器风格

公共对象请求代理体系结构风格

正交软件体系结构风格

基于消息总想的体系结构风格

异构结构风格

互联系统的构成系统及其体系结构

特定领域软件体系结构

特定领域软件体系结构

DSSA:在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构。

特征

1.一个严格定义的问题和问题域

2.具有普遍性,可以用于特定领域软件的开发

3.对整个领域的合适程度的抽象

4.具备固定的典型的可重用元素

第四章 软件体系结构描述

软件体系结构的描述方法?

描述方法可分为文字表达工具,数学表达工具和图形表达工具,产业偏向图形表达,学术偏向数学表达。

1.图形表达工具

2.模块内连接语言

3.基于软构件的系统描述语言

4.软件体系结构描述语言

第五章 统一建模语言

理解图并清楚这些图的作用和特点?

p129

(1)用例图:描述一组用例、参与者及它们之间的关系;

(2)类图:描述一组类、接口、协作和它们之间的关系;

(3)对象图:描述一组对象及它们之间的关系;

(4)交互图:表示各组对象如何依某种行为进行协作的模型,包含顺序图、通信图、定时图和交互概览图;

(5)顺序图:由一组对象或角色以及它们之间可能发送的消息构成,用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序;

(6)通信图:强调收发消息的对象或角色的结构组织;

(7)定时图:强调消息跨越不同对象或角色的实际时间;

(8)状态图:描述对象状态和事件之间的关系,通常描述单个对象的行为;

(9)活动图:将进程或其他计算的结构展示为计算内部一步步的控制流和数据流,用来表示系统中的各种活动的次序;

(10 交互概览图:整合活动图和顺序图的产物;

(11 构件图:描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构;

(12 部署图:描述对运行时的处理结点及在其中生存的构件的配置。

请问用例图和其他图的关系是什么?《个人见解》

用例图是从用户的角度审视SA的

用例是因,状态图、类图是果.根据用例来扑捉这些结果

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

UML的四层元模型结构?

元元模型层:只有一个元素就是“thing”,类似于.Net类库层次的根object

元模型层:面向对象和面向组件开发的各种概念,如“类”、“关联”、“属性”等,是UML语言的组成部分

模型层:建模者自己创建的具体的模型,比如“汽车类”、“司机”类、“汽车”与“司机”之间的多对多关系

用户模型层:模型层中模型的实例,比如“小李:司机”、“A001:汽车”

第六章 可扩展标记语言

XML、SGML、HTML等之间的区别?

XML是一个精简的SGML,他将SGML的丰富功能与HTML的易用性结合到Web应用中,保留了SGML的可拓展功能。

HTML是一种格式化的语言,HTML描述的程序和文本具有“内容和格式”的双重属性,XML则是纯数据,可以支持其他可以处理XML的容器和程序。XML是一种元标记语言,可以用于定义其他的标记语言。

HTML 是遵循了 DTD 标准的 SGML 的文档,也可以说是 SGML 的一个实例

XML与数据库的区别?

xml主要解决的是数据在网上传输标准的问题,把原来各种各样的数据孤岛可以通过xml这座桥梁连接起来,所以打个比方,数据库就好比是盛数据的桶,而xml则是数据传输转换的桥梁

二者也存在非常紧密的联系,毕竟都是处理数据的工具,就是很多其他的数据格式可以通过xml输入到数据库中,数据库中的关系型数据也可以通过xml转化成其他的数据格式

XML的应用领域?经常在什么地方使用?

1.应用于客户需要与不同数据源进行交互时

2.应用于将大量运算负荷分布于客户端

3.应用于将统一数据以不同的面貌展示给不同用户

4.应用于网络代理对取得的信息进行编辑、增减以适应与个人用户的需要

XML的编程接口?怎么选择编程接口?

编程接口:DOM、SAX、 JDOM、 JAXP

如何选择

(1)如果使用Java编写应用程序则使用JAXP;

(2)如果应用程序将要作为java applet部署则使用JDAM;

(3)解析了XML文档后要多次访问这些数据则考虑DOM;

(4)如果只需要XML源文件的少量内容则考虑SAX;

(5)如果正在一台内存很少的机器工作则考虑SAX;

第七章 动态软件体系结构

软件体系结构演化、体系结构的动态性、体系结构扩展这三个概念是什么?

体系结构演化:由于系统需求、技术、环境、分布等因素的变化而最终导致软件体系结构的变动,称之为软件体系结构演化。

体系结构的动态性:软件系统在运行时刻的体系结构变动,称之为体系结构的动态性。

体系结构扩展:体系结构的静态性修改称之为体系结构拓展。

什么是动态软件体系结构?体系结构的动态性主要体现在那三个方面?

软件系统在运行时刻的体系结构可以进行变动,而不需要停机维护。

动态性主要体现

1.交互式动态性

2.结构化动态性

3.体系结构动态性

基于构件的动态结构模型?(7.2)

CBDSAM,支持运行系统的动态更新,分为应用层、中间层和体系结构层三层。

应用层处于最底层,包括构件连接、构件接口和执行;

中间层包括连接件配置、构件配置、构建描述和执行;

体系结构层位于最顶层,控制和管理整个体系结构,包括体系结构配置、体系结构描述和执行。

动态?局部?更新与全局更新?

CBDSAM的动态更新包括检测更新范围、更新准备工作、执行更新和存储更新,分为局部更新和全局更新。

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

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

第八章 基于服务的体系结构

什么是 SOA?你对SOA的理解是什么?它有哪些特征?

SOA:面向服务的体系结构

理解:一种在计算环境中设计、开发、部署、和管理离散逻辑单元(服务)模型的方法;它是面向对象模型的替代,基于对象而不面向对象的一种方法;

特征:

1.松散耦合

2.粗粒度服务

3.标准化接口

web的服务有什么样的核心技术?这些技术的作用是什么?web服务的三要素是什么?

Web服务的核心技术及其作用。

(1)底层传输层,主要负责消息的传输机制。

(2)服务通信协议层,服务通信协议层主要是以一种统一的方式描述并定义服务之间进行通信传输所需的技术标准。

(3)服务描述层,主要以一种统一的方式描述服务的接口和消息交换方式。

(4)服务层,主要功能是将遗留系统进行包装,并通过发布的WSDL接口描述被定位和调用。

(5)业务流程层,主要功能是支持服务发现,服务调用和点到点的服务调用,并将业务流程从服务的底层调用抽象出来。

(6)服务注册层,主要功能是使服务提供者能够通过WSDL发布服务定义,并支持服务请求者查找所需的服务信息。

三个构成元素为:服务请求者、服务提供者、服务注册中心;

面向服务体系结构的设计原则

(1)明确定义的接口,服务定义必须长时间稳定;

(2)自包含和模块化,实现服务的功能实体完全独立自主;

(3)粗粒度,服务数量不应太多;

(4)松耦合,确保服务请求者可见的是服务的接口;

(5)互操作性、兼容和策略声明,确保服务规约的全面和明确。

第九章 富互联网应用体系结构

了解RIA技术的前世今生?《个人见解》

(1)连接本地的只有文字界面的大型计算机;

(2)连接本地的具有集成媒体图形用户界面的客户-服务器模式;

(3)连接全球的网络应用程序;

(4)连接全球的富互联网应用体系(RIA);

为什么要使用它?

RIA利用相对健壮的客户端描述引擎,这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面。RIA的另一个好处在于,数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。对企业而言,RIA可以继续使用现有的应用程序模型,可以帮助企业提供多元化的重要业务效益。

第十章 软件体系结构的分析与测试

软件体系结构的可靠性可以从哪几个方面进行评估?(p234)《个人见解》

可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。分为两个方面:

(1)容错:在规定的条件下,在规定的时间内,软件不引起系统失效的概率;

(2)健壮性:在规定的时间周期内,在所述条件下程序执行所要求的功能的能力;

所以对应从容错和健壮性进行评估,以判断软件体系结构的可靠性。

为什么要进行软件体系结构的分析?(p238)《个人见解》

因为风险评估是一个基于能够通过定量的方法对软件产品属性进行的度量,它对任何一个软件风险管理计划都是一个重要的过程, 风险评估能够对需要进行详细检测的复杂模型进行验证得到潜在的模型问题和测试效果,有利于开发阶段的后期评估。

你是如何理解基于软件体系结构的软件测试?

软件测试是困难、花销巨大的工作,但在软件开发过程中是一项非常重要的工作。怎样将形式化方法与软件测试技术结合起来是软件测试研究的重点。基于体系结构的软件测试和传统的软件测试一样,需要研究测试内容、测试准则、测试用例、测试充分性、测试方法等。

测试准则被定义为:测试应该覆盖所有的构件及各个构件的接口、各个连接件的接口、构件之间的直接连接、构件之间的间接连接。

软件体系结构的测试过程可以分为单元测试、集成测试和系统测试。

第十一章 软件体系结构评估

软件体系结构的评估方法?哪三种方法?各有什么样的优缺点?

1.基于调查问卷或检查表的评估方式

优点:自由灵活,可评估多种质量属性,在多阶段进行;

缺点:主观性较强,评估人员的熟悉程度和相关经验等会对结果产生很大影响;

2.基于场景的评估方式,应用于ATAM和SAAM中;

优点是考虑到了所有人员对质量需求的满意程度

缺点是评估方式是特定于某个领域的,需要实施者有丰富的领域知识,能够设计出合理场景,还要求实施者对待评估的软件体系结构有一定的了解。

3.基于度量的评估方式

优点:提供更为客观和量化的质量评估;

缺点:有时间限制,需在软件体系结构设计基本完成以后才能进行,对评估人员要求较高,需要评估人员对评估的体系结构十分了解。

第十二章 基于体系结构的软件开发

什么是设计模式?

设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,其目的是提高代码的可重用性,使代码易于理解,保证代码的可靠性,设计模式广泛应用于面向对象系统的设计和开发,成为面向对象领域的一个重要组成部分。

什么是中间件?你如何理解中间件?

定义:中间件是一种独立的系统软件或服务程序,便于资源共享,中间件位于操作系统之上,能够管理计算资源和网络通信,实现应用之间的互操作。

基本功能:

(1)负责客户机和服务器之间的通信,以及客户机与应用层之间的高效率通信机制;

(2)提供应用层不同服务器之间的互操作机制,以及应用层与数据库之间的连接和控制机制;

(3)提供一个多层体系结构的应用开发和运行平台,以及一个应用开发框架,支持模块化的应用开发。

(4)屏蔽软件、操作系统网络和数据库的差异。

(5)提供应用的负载均衡和高可用性、安全机制与管理功能,以及交易管理机制,保证交易一致性。

(6)提供一组通用的服务去执行不同的功能,避免重复的工作,使应用之间可以协作。

分类:底层中间件、通用型中间件、集成型中间件;

应用:在企业应用集成中扮演重要的角色,可以从不同的层次采用不同种类、不同技术的中间件进行应用集成。为了完成不同层次的继承,采用不同的技术和产品。

发展趋势:规范化、构件化、松耦合、平台化发展;

设计模式的层次?

(1)面向对象模式:由最底层的类与对象及其关系区分;

(2)代码模式:有助于解决某种面向对象程序设计语言的特定问题;

(3)框架应用模式:用一种不很规范的方式描述了如何应用框架来解决特定的问题;

(4)形式合约:是一种描述框架设计的方法,强调组成框架的对象间的交互关系。过于抽象,仅在小规模程序中使用。

基于体系结构的软件设计(ABSD)的生命周期?

ABSD方法的生命周期介于需求分析和实际构件设计之间,在该方法中,必须记录所有做出决策以及这些决策的原理,以利于决策的可跟踪性和决策评审。其输入包含抽象功能需求、用例、抽象的质量和业务需求、质量因素、体系结构选项和约束组成。

第十三章 软件产品线体系结构

什么是软件的产品线?你是怎么理解理解软件的产品线的?

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

软件产品线由核心资源和产品集合组成。核心资源是领域工程的所有结果的集合,是产品线里产品构造的基础。

网上:软件产品线就是在一个公共的软件资源集合基础上建立起来的共享同一个特性集合的系统集合。

双生命周期模型?(p339)

双生命周期模型是软件产品线的一种过程模型。分成领域工程和应用工程这两个重叠的生命周期,其中领域工程的主要任务是领域分析、领域设计和领域实现,应用工程的主要任务是需求分析、系统设计和系统实现。

应用工程将产品线资源不能满足的需求返回给领域工程,以检验是否将之合并到产品线的需求中。领域工程从应用工程中获得反馈或者结合新产品的需求进入有一次周期性发展。此为产品线的演化。

你可能感兴趣的:(软件架构,需求分析)