1、计算机水平考试高级系统架构设计师 2016 年下半年下午真题及答案解析(总分:300.00,做题时间:120 分钟)一、本试卷满分 75 分(总题数:4,分数:300.00)1.试题一 论软件系统架构评估 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节。 请围绕“论软件系统架构评估”论题
2、,依次从以下三个方面进行论述。 1概要叙述你所参与架构评估的软件系统,以及在评估过程中所担任的主要工作。 2分析软件系统架构评估中所普遍关注的质量属性有哪些?详细阐述每种质量属性的具体含义。 3详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实施过程和效果如何。(分数:75.00)_2.试题二 论软件设计模式及其应用。 软件设计模式(Software Design Pattern)是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了重用代码以提高编码效率、增加代码的可理解性、保证代码的可靠性。软件设计模式是软件开发中的最佳实践之一,它经常被软件开
3、发人员在面向对象软件开发过程中所采用。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在实际应用中都有相应的原型与之相对,每种模式都描述了一个在软件开发中不断重复发生的问题,以及对应该原型问题的核心解决方案。 请围绕“论软件设计模式及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与分析和开发的软件系统,以及你在项目中所担任的主要工作。 2说明常用的软件设计模式有哪几类?阐述每种类型特点及其所包含的设计模式。 3详细说明你所参与的软件系统开发项目中,采用了哪些软件设计模式,具体实施效果如何。(分数:75.00)_3.试题三 论数据访问层设计技术及其应用。 在信息系统的开发与建
4、设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有良好的封装性、可移植性,以及数据库无关性。 请围绕“论数据访问层设计技术及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的与数据访问层设计有关的软件项目,以及你在其中所担任的主要工作。
5、2详细论述常见的数据访问层设计技术及其所包含的主要内容。 3结合你参与管理和开发的实际项目,具体说明采用了哪种数据访问层设计技术,并叙述具体实施过程以及应用效果。(分数:75.00)_4.试题四 论微服务架构及其应用。 近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(Microservice Architecture Pattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用H
6、TTP 等通用协议和轻量级 API 实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。 请围绕“论微服务架构及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的、采用微服务架构的软件开发项目及在其中所担任的主要工作。 2与单块架构相比较,微服务架构有哪些特点?请列举至少 4 个特点并进行说明。 3结合你参与管理和开发的软件开发项目,描述该软件的架构,说明该架构是如何采用微服务架构模式的,并说明在采用微服务架构后,在软件开发过程中遇到的实际问题和解决方案。(分数:75.00)_计算机
7、水平考试高级系统架构设计师 2016 年下半年下午真题答案解析(总分:300.00,做题时间:120 分钟)一、本试卷满分 75 分(总题数:4,分数:300.00)1.试题一 论软件系统架构评估 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节。 请围绕“论软件系统架构评估”论题,依次从
8、以下三个方面进行论述。 1概要叙述你所参与架构评估的软件系统,以及在评估过程中所担任的主要工作。 2分析软件系统架构评估中所普遍关注的质量属性有哪些?详细阐述每种质量属性的具体含义。 3详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实施过程和效果如何。(分数:75.00)_正确答案:(一、首先用 400-600 字的篇幅简要叙述作者参与开发的软件系统的概要和所担任的工作。 二、架构所关注的质量属性主要包括:性能、可用性、可修改性、安全性。 1、性能 性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数
9、。 2、可用性 可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。 3、安全性 安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。 4、可修改性 可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。 三、架构评估方法主要从 SAAM 与 ATAM 中选择。 1、SAAM 评估方法 SAAM 的分
10、析和评估目的、评估参与者、评估活动或过程以及评估结果说明如下。 (1)评估目的 SAAM (Scenario-based Architecture Analysis Method)目的是验证基本的体系结构假设和原则,评估体系结构固有的风险。SAAM 指导对体系结构的检查,使其主要关注潜在的问题点,如需求冲突。SAAM 不仅能够评估体系结构对于特定系统需求的使用能力,也能被用来比较不同的体系结构。 (2)评估参与者 风险承担者、记录人员、软件体系结构设计师 (3)评估活动或过程 SAAM 分析评估体系结构的过程包括六个步骤,即形成场景、描述体系结构、场景的分类和优先级确定、间接场景的单个评估、场
11、景相互作用的评估、总体评估。 (4)评估结果 SAAM 评估的主要有形输出包括: 1)把代表了未来可能做的更改的场景与构架对应起来,显现出构架中未来可能会表现出较高复杂性的地方,并对每个这样的更改的预期工作量做出评估。 2)理解系统的功能,对多个构架所支持的功能和数量进行比较。 如果所评估的是一个框架,SAAM 评估将指明框架中未能满足其修改性需求的地方,有时还会指出一种效果更好的设计。SAAM 评估也能对两个或者三个备选构架进行比较,明确其中那一个能够较好地满足质量属性需求,而且做的更改较少、不会在未来导致太多的复杂的问题。 2、ATAM 评估方法 ATAM 的分析和评估目的、评估参与者、评
12、估活动或过程以及评估结果说明如下。 (1)评估目的 ATAM(Architecture Tradeoff Analysis Method ),即构架权衡分析方法的评估目的是依据系统质量属性和商业需求评估设计决策的结果。ATAM 希望揭示出构架满足特定质量目标的情况,使我们更清楚地认识到质量目标之间的联系,即如何权衡多个质量目标。 (2)评估参与者 1)评估小组。该小组是所评估构架项目外部的小组,通常由 35 人组成。该小组的每个成员都要扮演大量的特定角色。他们可能是开发组织内部的,也可能是外部的。 2)项目决策者,对开发项目具有发言权,并有权要求进行某些改变,他们包括项目管理人员,重要的客户代
13、表,构架设计师等。 3)构架涉众(stakeholders)。包括关键模块开发人员、测试人员、用户等。 (3)评估活动或过程 整个 ATAM 评估过程包括九个步骤,按其编号顺序分别是描述 ATAM 方法、描述商业动机、描述体系结构、确定体系结构方法、生成质量属性效用树、分析体系结构方法、讨论和分级场景、描述评估结果。)解析:2.试题二 论软件设计模式及其应用。 软件设计模式(Software Design Pattern)是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了重用代码以提高编码效率、增加代码的可理解性、保证代码的可靠性。软件设计模式是软件开发中的
14、最佳实践之一,它经常被软件开发人员在面向对象软件开发过程中所采用。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在实际应用中都有相应的原型与之相对,每种模式都描述了一个在软件开发中不断重复发生的问题,以及对应该原型问题的核心解决方案。 请围绕“论软件设计模式及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与分析和开发的软件系统,以及你在项目中所担任的主要工作。 2说明常用的软件设计模式有哪几类?阐述每种类型特点及其所包含的设计模式。 3详细说明你所参与的软件系统开发项目中,采用了哪些软件设计模式,具体实施效果如何。(分数:75.00)_正确答案:(一、首先用 400-60
15、0 字的篇幅简要叙述作者参与开发的软件系统的概要和所担任的工作。 二、微服务的特点包括: 微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些就应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台使部署、管理和服务功能交付变得更加简单。 微服务是利用组织的服务投资组合,然后基于业务领域功能分解它们,在看到服务投资组合之前,它还是一个业务领域。 微服务这一概念出现于 2012 年,是因软件作者 Martin Fowler 而流行,他承认这并没有精确地定义出这一架构形式,虽然围绕业务能力、自动化部署、终端智能以及语言和数据的分散控制有一些常见的特性。 开源工作流平台 “Im
16、ixs-Workflow“发布了一款新的微服务架构,作为工作流来管理解决方案。Imixs 的微服务( Imixs-Microservice)提供了一个工作流封装成微服务架构。这一服务可以独立于其背后的技术,绑定到任何业务应用中去。这允许业务应用改变业务逻辑的时,不用更改任何代码。这业务目标可以通过工作流模型控制。 Imixs 的微服务是基于 Imixs 的工作流引擎( Imixs-Workflow Engine)的复杂功能构建的,它可以以多种不同的方法来控制业务数据。Imixs 的微服务可以发送电子邮件推送消息、日志业务交换,还可以确保所有类型业务数据的安全。 Imixs 的工作流模型可以给业
17、务处理模型(Imixs-Workflow Modeller)中的每种状态单独的设计一个 ACL。这许可了高度复杂的业务应用程序,并在每个流程实例周围驻起了安全层。 三、详细论述在项目中如何应用微服务架构进行开发的。)解析:3.试题三 论数据访问层设计技术及其应用。 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需
18、要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有良好的封装性、可移植性,以及数据库无关性。 请围绕“论数据访问层设计技术及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的与数据访问层设计有关的软件项目,以及你在其中所担任的主要工作。 2详细论述常见的数据访问层设计技术及其所包含的主要内容。 3结合你参与管理和开发的实际项目,具体说明采用了哪种数据访问层设计技术,并叙述具体实施过程以及应用效果。(分数:75.00)_正确答案:(一、首先用 400-600 字的篇幅简要叙述作者参与开发的软件系统的概要和所担任的工作。 二、数据访问层的技术主要在于
19、数据映射的问题如写 Hibernate 或 iBATIS 的应用。 Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,它将 POJO 与数据库表建立映射关系,是一个全自动的 orm 框架,hibernate 可以自动生成 SQL 语句,自动执行,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的 J2EE 架构中取代
20、CMP,完成数据持久化的重任。 iBATIS 一词来源于“internet”和“abatis”的组合,是一个由 Clinton Begin 在 2002 年发起的开放源代码项目。于 2010 年 6 月 16 号被谷歌托管,改名为 MyBatis。是一个基于 SQL 映射支持 Java 和?NET 的持久层框架。 三、详细论述你在项目中运用相关技术进行开发的,此时无非就是如何用好这些技术。 Hibernate 的调优方案: 制定合理的缓存策略; 尽量使用延迟加载特性; 采用合理的 Session 管理机制; 使用批量抓取,设定合理的批处理参数(batch_size); 进行合理的 O/R 映射
21、设计。 Mybatis 调优方案: MyBatis 在 Session 方面和Hibernate 的 Session 生命周期是一致的,同样需要合理的 Session 管理机制。MyBatis 同样具有二级缓存机制。 MyBatis 可以进行详细的 SQL 优化设计。 )解析:4.试题四 论微服务架构及其应用。 近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(Microservice Architecture Pat
22、tern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP 等通用协议和轻量级 API 实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。 请围绕“论微服务架构及其应用”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的、采用微服务架构的软件开发项目及在其中所担任的主要工作。 2与单块架构相比较,微服务架构有哪些特点?请列举至少 4 个特点并进行说明。 3结合你参与管理和开发的软件开发项目,描述该软件的架构,说明该架构是如何采用微服务架构模式的,并
23、说明在采用微服务架构后,在软件开发过程中遇到的实际问题和解决方案。(分数:75.00)_正确答案:(一、首先用 400-600 字的篇幅简要叙述作者参与开发的软件系统的概要和所担任的工作。 二、微服务的特点包括: 微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些就应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台使部署、管理和服务功能交付变得更加简单。 微服务是利用组织的服务投资组合,然后基于业务领域功能分解它们,在看到服务投资组合之前,它还是一个业务领域。 微服务这一概念出现于 2012 年,是因软件作者 Martin Fowler 而流行,他承认这并没有精确地
24、定义出这一架构形式,虽然围绕业务能力、自动化部署、终端智能以及语言和数据的分散控制有一些常见的特性。 开源工作流平台 “Imixs-Workflow“发布了一款新的微服务架构,作为工作流来管理解决方案。Imixs 的微服务( Imixs-Microservice)提供了一个工作流封装成微服务架构。这一服务可以独立于其背后的技术,绑定到任何业务应用中去。这允许业务应用改变业务逻辑的时,不用更改任何代码。这业务目标可以通过工作流模型控制。 Imixs 的微服务是基于 Imixs 的工作流引擎( Imixs-Workflow Engine)的复杂功能构建的,它可以以多种不同的方法来控制业务数据。Imixs 的微服务可以发送电子邮件推送消息、日志业务交换,还可以确保所有类型业务数据的安全。 Imixs 的工作流模型可以给业务处理模型(Imixs-Workflow Modeller)中的每种状态单独的设计一个 ACL。这许可了高度复杂的业务应用程序,并在每个流程实例周围驻起了安全层。 三、详细论述在项目中如何应用微服务架构进行开发的。)解析: