前言
主要基于给出的软件体系结构复习,补充相关回答,进行整理,仅为参考。
更为详细,请见: 软件体系结构期末复习——CSDN
第一章
1. 如何理解软件体系结构的概念?它与建筑体系结构、计算机 硬件系统的“体系结构”有哪些共性?
- 软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
- 其他体系成功的基本模式是
- 标准零部件/构件的生产
- 标准构件的复用(组装)
其中构件是核心和基础,复用是必需的手段
2. 什么是软件体系结构?
软件体系结构包括构成系统的设计元素的描述、设计元素之间的交互、设计元素的组合模式以及在这些模式中的约束。
软件体系结构 = 构件 + 连接件 + 约束
3. 如何理解“软件工程的研究和应用可缓解软件危机造成的被动局面”?
软件工程是用工程、科学和数学的原理和方法研制,维护软件的有关技术和管理方法。将复杂的软件设计问题,用工程化的思想来解决。工程化使得软件有更良好的可移植性,可扩展性,可维护性。同时也使得团队协作更易于进行复杂软件的开发。
4. 软件产业发展的必经之路就是走工业的发展模式,这种发展模式典型特点是什么?
- 进行符合标准构件的构件生产;
- 基于标准构件的产品生产(组装);
- 其中构件是核心和基础,复用是必需的手段;
5. 什么是构件、软件重用、哪些软件元素可重用、软件重用的优点?
- 构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
- 软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。
- 软件元素:程序代码、设计文档、设计过程、需求分析文档、领域知识。
- 软件重用优点:
- 减少软件开发活动中大量重复性工作;
- 有助于改善软件质量:构件经质量认证和严格检验;
- 提高了软件的灵活性和标准化程度;
6. 什么是构件模型,有哪些常见的构件模型,它们的目标和作用是什么,国内在构件模型的研究上有什么进展?
- 构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统;结构上,它是语义描述、通讯接口和实现代码的复合体。
- 常见的构件模型有:OMG的CORBA、SUN的EJB和Mircrosoft的DCOM。
。。。。(具体也不太清楚该怎么回答)
7. 构件库中对构件的分类方法有哪些?
- 关键字分类法:
根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树状或有向无回路图结构,每个概念用一个描述性的关键字表示 - 刻面分类法:
一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。 - 超文本组织法:
所有构件必须辅以详尽的功能或行为说明文档,说明中出现的重要概念以网状链接方式相互连接。
8. 构件的组装技术可分为哪三种,请简要解释一下。
- 基于功能的组装技术:
用这种组装技术时,开发人员首先应对目标软件系统进行功能分解,将系统分解为强内聚、松耦合的功能模块。
然后根据各模块的功能需求提取构件,对它进行适应性修改后再挂接在上述功能分解框架中。(库中的构件以子程序/过程/函数的形式出现,并且接口说明必须清晰。采用子程序调用和参数传递的方式将构件组装起来) - 基于数据的组装技术:
先根据当前软件问题的核心数据结构设计出一个框架。
再根据框架中各结点的需求提取构件并进行适应性修改。
最后将构件逐个分配至框架中的适当位置。 - 面向对象的组装技术:
构造法:在子类中引进基类的对象作为子类的成员变量,然后在子类中通过成员变量重用基类的属性和方法。
子类法:将新子类直接说明为库中基类的子类,通过继承和修改基类的属性与行为完成新子类的定义。
9. 软件复用的级别有哪些,并举例说明。
10. 软件开发方法从70年代至今经历了哪几个过程?
- 70年代 面向过程的分析与设计。
- 80年代 面向对象的分析和设计。
- 90年代 基于构件的软件开发。
- 2000年后,面向服务的计算,面向服务的体系结构
11. 为什么基于构件的软件开发方法能有效地提高开发效率?
它通过对软件系统整体结构和特性的描述,为面向构件的软件开发提供了一个自顶向下的途径.介绍了一种以软件体系结构为指导,面向构件的软件开发方法,试图为基于构件的软件复用提供一种有效的解决方案.这种方法主要是
将软件体系结构引入到软件开发的各个阶段,作为系统开发的蓝图,利用工具支持的自动转换机制缩小从高层设计到实现的距离,而后在构件平台的运行支持下实现自动的系统组装生成.
(以下也是推测)
基于构件软件开发方法的优点:
- 易于软件的可重用,易于维护。基于构件的开发方法使得软件开发不再一切从头开发,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程。其优点是构件组装模型导致了软件的复用,提高了软件开发的效率。
- 构件可由一方定义其规格说明,被另一方实现。然后供给第三方使用,构件组装模型允许多个项目同时开发,降低了费用,提高了可维护性,可实现分步提交软件产品。
第二章
1. 类比建筑行业的建模,如何理解软件体系结构建模,建模的优点有哪些?
- 软件体系结构建模是利用图形、文字、数学表达式等描述软件的主要特征。
- 软件体系结构建模优点:
- 有助于从整体上掌握软件架构
- 有助于在软件的不同阶段形成清晰的目标
- 有助于从不同角度掌握软件模型
- 方便了需求沟通、设计修改、开发、测试等软件开发过程。
2. 软件体系结构的建模方法有哪些?
- 图形可视化的方法,如 UML
- 体系结构描述语言(ADL,Architecture Description Language) : 注重用数理逻辑等形式化的方法
3. 软件系统的需求种类繁多,一般可以分为哪几部分?
- 结构模型:以体系结构的构件、连接件及之间的关联关系刻画软件结构。
- 研究结构模型的核心是体系结构描述语言。
- 框架模型:更侧重描述整体结构。
- 主要以特殊问题为目标建立只针对和适应该问题的结构。(MVC)
- 动态模型:描述系统的重新配置或演化过程,研究系统“大颗粒”的行为性质。
- 动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。
- 过程模型:描述构造软件系统的步骤和过程。
- 过程模型以某种过程脚本的形式来体现。
- 功能模型:认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。
- 它可以看作一种特殊的框架模型。
4. 经典的“4+1”视图模型是分别从软件需求的哪些角度进行建模的?
(下面参考)
5. 如何理解每一个视图?每一种视图用UML中的哪类图表示?
- 逻辑视图: 面向最终用户,描述用例图中提出的系统功能实现。
- 对象内部行为的定义,用状态图
- 公共机制或服务在类功能中定义。数据驱动程度高的应用程序
- E-R 图表示逻辑视图
- 开发视图:也称模块视图,主要侧重软件开发环境下实际模块的组织。
- 用组件图来表示
- 进程视图:关注进程、线程、对象等运行时概念之间的交互关系;运行期的非功能性需求:资源的有效利用、代码的并行执行以及系统中异步事件的处理;逻辑视图的各个类的具体操作是在哪一个线程(Thread)中被执行。
- 面向系统集成人员,活动图或协作图表示。
- 物理视图:不同于进程视图关注目标程序的动态执行情况,物理视图关注的是目标程序的静态位置问题,即如何把软件映射到硬件,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。
- 面向系统工程人员。
- 一般用UML配置图描述
- 场景视图:
可看作是重要系统活动的抽象,有机联系起四个视图。可将场景看做是最重要的需求抽象。从系统外部描述系统具备的功能。
描述一个特定视图内的构件关系,也描述不同视图间的构件关系。。
可用场景分析特定视图,或描述不同视图构件间是如何相互作用的。
用例图来表示
6. 软件体系结构的核心模型中包括哪些重要的要素,它们的关系如何理解?
- 软件体系结构的核心模型由五种元素组成:构件、连接件、配置、端口和角色。其中构件、连接件和配置是最基本的元素。
- 构件:是具有某种功能的可重用的软件模块单元,表示系统中主要的计算元素和数据存储。构件有两种:复合构件和原子构件。
- 连接件:表示构件之间的交互,简单的连接件如:管道、过程调用等,更为复杂的交互如:客户/服务器通信协议,数据库和应用之间的SQL连接等。
- 配置:表示构件和连接件的拓扑逻辑和约束。
- 另外,构件作为一个封装的实体,只能通过其接口与外部环境交互,构件的接口由一组端口组成,每个端口表示构件和外部环境的交互点。
- 连接件作为建模软件体系结构的主要实体,同样也有接口,连接件的接口由一组角色组成。
7. 软件设计完整的生命周期模型包括哪几个阶段,其中软件体系结构设计阶段的主要任务是什么?
- 需求分析获取用户的需求,确定系统中所要用到的构件,得到软件规格说明;
- 建立体系结构:从结构角度出发对整个系统进行分析,选择恰当的构件、构件间的相互作用关系以及对它们的约束,形成一个系统框架。
- 设计阶段:对系统模块化,并设计构件间的详细接口、选定算法和数据类型。
- 实现阶段:对设计阶段的算法及数据类型进行程序语言表示,从构件库中查找构件或开发新的构件,最后组装构件的实现体。
- 测试阶段:完成整个软件的合成;测试单个构件的功能,并测试组装后整体软件的功能及性能等
8. 请区分软件体系结构的生命周期与软件设计的生命周期。
软件体系结构生命周期
软件设计生命周期
9. 用图描述基于软件体系结构的开发过程。
第三章
1. 类比建筑风格,理解什么是软件体系结构风格,以及研究的目的
- 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式
- 体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
2. 软件体系结构与软件体系结构风格的关系。
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
3. 掌握常见的体系结构风格:主程序-子程序、面向对象风格、层次结构风格、数据流风格(管道/过滤器与批处理的相同与不同)、以数据为中心的风格(仓库与黑板)、事件风格、客户机/服务器结构风格(C/S与B/S、集群、端到端、MVC)、C2风格、CORBA、正交软件体系结构。
(什么是软件体系风格)软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式,反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
4. 掌握常见的体系结构风格:
(1)特点以及主要的构件
(2)优缺点
(3)代表例子
见:常见软件体系风格
5. 异构风格:内外有别和查改有别
内外有别
查改有别
6. 具有根据不同软件需求选择不同软件体系结构风格的能力
第四章
1. 掌握软件体系结构描述的概念、作用
2. 软件体系结构有哪几类描述方法、各有什么特点、典型代表例子。
可参考:软件体系结构描述方法
第五章
1. 掌握UML的用例图、类图、对象图、交互图(顺序图、通信图、定时图)、状态图、活动图、构件图、部署图的主要用途和画法。
(自行掌握)
用例图
类图
状态图
活动图
构件图
部署图
序列图
2. 基于UML建模的基本步骤:
(1)构建用例模型
(2)构建静态模型
(3)构建交互模型
(4)构建系统的物理模型
(自行掌握)
- 利用UML构建系统时,在系统开发的不同阶段有不同的模型,并且这些模型的目的是不同的。
1、 在分析阶段,模型的目的是捕获系统的需求,建立“现实世界”的类和协作的模型。
2、 在设计阶段,模型的目的是在考虑实际环境下,将分析阶段的模型扩展为可行的技术方案。
3、 在实现阶段,模型的目的是依据设计阶段的模型来写实际运行的代码。
4、 在部署阶段,模型描述系统如何在物理结构中部署。
第六章
1. XML标记语言的主要特点
(自行掌握)
1.易用性:XML可以使用多种编辑器来进行编写,包括记事本等所有的纯文本编辑器;
2.结构性:XML是具有层次结构的标记语言,包括多层的嵌套;
3.开放性:XML语言允许开发人员自定义标记,这使得不同的领域都可以有自己的特色方案;
4.分离性:XML语言将数据的显示和数据内容分开保存,各自处理.这使得基于XML的应用程序可以在XML文件中准确高效地搜索相关的数据内容,忽略其他不相关部分.
2. XML与DTD、XSD、CSS、XSL的主要关系
(自行掌握)
可参考:XML,DTD,XSD,XSL的区别–CSDN
3. XML与软件体系结构模型的关系
(自行掌握)
第七章
1. 如何理解面向服务的软件体系结构(SOA)这一思想
SOA框架思想,以服务为核心抽象手段,业务划分为一些列粗粒度的业务服务和流程。它将应用程序的不同功能单元进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采取中立方式定义,可独立于实现服务的硬件/软件平台。可以使得不同平台系统服务以统一通用方式进行交互。
面向服务的体系结构。主要应用于分布式企业间业务的协同、通过Internet连接在一起的异构企业应用软件系统的集成、交互与互操作。
2. SOA的主要意义
将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
3. 实现SOA的关键技术
4. 实现SOA的方法有哪些
Web服务
服务注册表
企业服务总线
5. WebService模型的工作角色以及它们之间的关系
在Web Service模型的解决方案中,服务提供者定义并实现Web Service,使用服务描述语言(WSDL)描述Web Service,然后将服务描述发布到服务请求者或服务注册中心。
服务请求者使用查找操作从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web Service。
服务注册中心是整个模型中的可选角色,是连接服务提供者和服务请求者的纽带。
- SOAP (Simple Object Access Protocol)
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议,是基于XML和HTTP的分布式对象的通信协议。 - WSDL (Web Service Description Language)
WSDL是使用webservice的说明书。是基于XML的语言。用于描述Web Service及其函数、参数和返回值。 - UDDI (Universal Description Discovery and Integration)
UDDI即统一描述、发现和集成(Universal Description, Discovery , and Integration),其目的是为电子商务建立标准,UDDI是一套基于Web的、分布式、为Web Services提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Services注册,可以使别的请求者能够发现访问间协议的实现标准。
6. WSDL、SOAP、UDDI三个技术规范的作用。
(自行掌握)
- SOAP 是用于在应用程序之间进行通信的一种通信协议。
- WSDL 即Web Services Description Language也就是 Web 服务描述语言。服务提供者通过服务描述将所有用于访问 Web服务的规范传送给服务请求者,通过服务描述便可以不必了解对方的底层平台,编程语言等。(服务所提供的操作、如何访问服务、服务位于何处)
- UDDI 即 Universal Description,Discovery and Integration,也就是通用的描述,发现以及整合。
7. 如何阅读WDSL文档,掌握SOAP请求的结构
(自行掌握)8. WebService的开发包括哪些过程,简述每个过程的关键步骤。
结语
但切忌不要用于作弊。