1、2016年下半年软件水平考试(高级)系统架构师下午(论文)真题试卷及答案与解析 1 论软件系统架构评估 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,在系统被构建之前分析现有系统架构对于系统质量的影响,提出系统架构的改进方案。架构评估是软件开发过程中的重要环节。 请围绕 “论软件系统架构评估 ”论题,依次从以 下三个方面进行论述。 1概要叙述你所参与架构评估的软件系统,以及在评估过程中所担任的主
2、要工作。 2分析软件系统架构评估中所普遍关注的质量属性有哪些 ?详细阐述每种质量属性的具体含义。 3详细说明你所参与的软件系统架构评估中,采用了哪种评估方法,具体实施过程和效果如何。 2 论软件设计模式及其应用 软件设计模式 (Software Design Paaem)是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了重用代码以提高编码效率、增加代码的可理解性、保证代码的可靠性。 软件设计模式是软件开发中的最佳实践之一,它经常被软件开发人员在面向对象软件开发过程中所采用。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在实际应用中都有相应的原型与之
3、相对,每种模式都描述了一个在软件开发中不断重复发生的问题,以及对应该原型问题的核心解决方案。 请围绕 “论软件设计模式及其应用 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与分析和开发的软件系统,以及你在项目中所担任的主要工作。 2说明常用的软件设计模式有哪几类 ?阐述每种类型特点及其所包含的设计模式。 3详细说明你所参与的 软件系统开发项目中,采用了哪些软件设计模式,具体实施效果如何。 3 论数据访问层设计技术及其应用 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现 “高内聚低耦合 ”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高
4、复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分为表现层、业务逻辑层和数据访问层。信息系统一般以数据为中心,数据访问层的设计是系统设计中的重要内容。数据访问层需要针对需求,提供对数据源读写的访问接口;在保障性能的前提下,数据访问层应具有 良好的封装性、可移植性,以及数据库无关性。 请围绕 “论数据访问层设计技术及其应用 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的与数据访问层设计有关的软件项目,以及你在其中所担任的主要工作。 2详细论述常见的数据访问层设计技术及其所包含的主要内容。 3结合你参与管理和开发的实际项目,具体说明采用了哪种数据访问层设计技术,并叙述
5、具体实施过程以及应用效果。 4 论微服务架构及其应用 近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的 单块 (Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(Microservice Architecture Pattern)逐渐流行,它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中,采用 HTTP等通用协议和轻量级 API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制
6、的集中式管理。 请围绕 “论微服务架构及其应用 ”论题,依次从以下三个方面进行论 述。 1概要叙述你参与管理和开发的、采用微服务架构的软件开发项目及在其中所担任的主要工作。 2与单块架构相比较,微服务架构有哪些特点 ?,请列举至少 4个特点并进行说明。 3结合你参与管理和开发的软件开发项目,描述该软件的架构,说明该架构是如何采用微服务架构模式的,并说明在采用微服务架构后,在软件开发过程中遇到的实际问题和解决方案。 2016年下半年软件水平考试(高级)系统架构师下午(论文)真题试卷答案与解析 1 【正确答案】 一、简要描述所参与架构评估的软件系统,并明确指出在评估过程中承担的主要工 作。 二、分
7、析软件系统架构评估中所普遍关注的质量属性,并详细阐述每种质量属性的具体含义。 系统架构评估中普遍关注的质量属性包括: (1)性能 性能是指系统的响应能力,即需要多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件个数。经常用单位事件内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量表示。 (2)可靠性 可靠性是软件系统在应用或者系统错误面前,在意外或者错误使用的情况下维持软件系统的功能特性的基本能力。 (3)可用性 可用性是系统能够正常运行的时间比例。经常用两次故障 之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。 (4)安全性 安全性是指系统在向合法用
8、户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。 (5)可修改性 可修改性是指能够快速地以较高的性能价格比对系统进行变更的能力,包括可维护性、可扩展性、结构重构、可移植性。 (6)功能性 功能性是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。 (7)可变性 可变性是指体系结构经扩充或变更而成为新体系结构的能力。 (8)互操作性 互操作性是指作为系统组成部分的软 件不是独立存在的,经常与其他系统或自身环境相互作用。如程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题。 三、针对作者实际参与的软件系统架构评估,说明所采用的评估方法,并
9、描述其具体实施过程和效果。 现软件评估中的主要评估方法包括 SAAM(Scenarios-based Architecture Analysis Method)和 ATAM(Architecture TradeoffAnalysis Method,体系结构权衡分析方法 )。作者可选择某种评估方法展开实际项目的系统评估。 2 【正确答案】 一、简要描述所参与分析和开发的软件系统开发项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、说明软件系统设计中常用的软件设计模式有哪几类,阐述每种类型的特点及其所包含的设计模式。 常用的软件设计模式主要包括: (1)创建型模式 该类模式是对对象实例化
10、过程的抽象,它通过采用抽象类所定义的接口,封装了系统中对象如何创建、组合等信息。 所包括的模式: Abstract Factory(抽象工厂 )、 Builder(建造者 )、 Factory Method(工厂方法 )、 Prototype(原 型 )、 Singleton(单例 )。 (2)结构型模式 该类模式主要用于如何组合已有的类和对象以获得更大的结构,一般借鉴封装、代理、继承等概念将一个或多个类或对象进行组合、封装,以提供统一的外部视图或新的功能。 所包括的模式: Adapter(适配器 )、 Bridge(桥接 )、 Composite(组合 )、 Decorator(装饰 )、
11、Faqade(外观 )、 Flyweight(享元 )、 Proxy(代理 )。 (3)行为型模式 该类模式主要用于对象之间的职责及其提供的服务的分配,它不仅描述对象或类的模式,还描述它们之间的 通信模式,特别是描述一组对等的对象怎样相互协作以完成其中任一对象都无法单独完成的任务。 所包括的模式: Chain of Responsibility(职责链 )、 Command(命令 )、 Interpreter(解释器 )、 Iterator(迭代器 )、 Mediator(中介者 )、 Memento(备忘录 )、 Observer(观察者 )、State(状态 )、 Strategy(策略
12、)、 Template Method(模板方法 )、 Visitor(访问者 )。 三、针对作者实际参与的软件系统开发项目,说明所采用的软件设计模式, 并描述这些设计模式所产生的实际应用效果。 使用设计模式的作用主要表现在: (1)简化并加快设计: (2)方便开发人员之间的通信; (3)降低风险; (4)有助于转到面向对象技术。 3 【正确答案】 一、简要叙述所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、常见的数据访问层设计技术有 5种数据访问模式。 (1)在线访问:该模式是基本的数据访问模式,在软件系统中不存在专门的数据访问层,由业务程序直接读取数据,与后
13、台数据源进行交互。 (2)Data Access Object: DAO模式是标准 J2EE设计模式之一,该模式将底层数据访问操作与高层业务逻辑分离开。具体的 DAO类包含访问特定数据源数据的逻辑。 (3)Data Transfer Object: DTO是经典 EJB设计模式之一。 DTO本身是一组对象或是数据的容器,它需要跨越不同进程或者网络的边界来传输数据。这类对象通常本身不包括具体的业务逻辑,对象内部仅进行一些诸如内部一致性检查和基本验证之类的方法。 (4)离线数据模型:是以数据为中心,数据从数据源获取后,将按照某种预定义的结构 (如 IBM SDO的 Data图表结构或 ADO NE
14、T中的关系结构 )存放在系统中,成为应用的中心。其特点是: 离线,数据操作独立于后台数据源; 与 XML集成,数据可以方便地与 XML格式文档相互转换。 (5)对象关系映射 (Object Relation Mapping): ORM是一种工具、中间件或平台,它能够帮助将应用程序中的数据转换成关系数据库中的记录;或者是将关系数据库中的记录转换成应用程序中代码便于操作的对象,使得程序员在开发过程中仅仅面对一个对象的概念,降低了对程序员数据库知识的要求,简化了数据库相关的开发工作。 三、考生需结合自身参与项目 的实际状况,指出其参与管理和开发的项目中所进行的具体的数据访问层设计,说明具体的设计过程
15、、使用的方法和工具,并对实际应用效果进行分析。 4 【正确答案】 一、叙述你参与管理和开发的、采用微服务架构的软件开发项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、与单块架构相比,微服务架构具有如下特点: (1)通过服务实现组件化。单个微服务实现简单,能够聚焦一个指定的业务功能或业务需求。 (2)功能明确,易于理解。微服务能够被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果,并降低沟通 成本。 (3)围绕业务功能构建开发团队。采用微服务架构,可以围绕业务功能构建开发团队,这样更符合企业的分工与组织结构,便于管理。 (4)支持多种开发语言与多种平台。不同的微服务能
16、使用不同的语言开发,运行在不同的操作系统平台上,通过标准的协议和数据格式进行交互与协作。 (5)离散化数据管理。在微服务架构中,无法创建或维护统一的数据模型或结构,全局数据模型将在不同的系统之间有所区别,需要进行数据模型的离散化管理。 (6)基础设施自动化。微服务强调以灵活的方式集成自动部署,通过持续集成工具实现基础设施自动化。 三 、考生需结合自身参与软件开发项目的实际状况,描述该软件的架构,并明确说明软件架构为什么属于微服务架构,具有微服务架构的哪些特征。并结合项目开发实际,说明采用微服务架构模式后对软件开发过程的影响以及遇到的问题,包括服务的定义与划分、服务之间的协作关系、服务部署、服务管理等。