1、2009年下半年软件水平考试(高级)系统架构师下午(论文)试题真题试卷及答案与解析 1 论基于 DSSA的软件架构设计与应用 软件架构设计的一个重要课题是如何解决软件重用问题。特定领域软件架构(Domain Specific Software Architecture, DSSA)是一种有效实现特定领域软件重用的手段。按照 Tracz的说法, DSSA就是一个特定的问题领域中由领域模型、参考需求、参考架构等组成的开发基础架构,其目标就是支持一个特定领域中多个应用的生成。 DSSA的基本活动包括领域分析 、领域设计和领域实现。领域分析的主要目的是获得领域模型,领域模型描述领域中系统之间共同的需求
2、,即领域需求;领域设计的主要目标是获得 DSSA, DSSA描述领域模型中表示需求的解决方案;领域实现的主要目标是依据领域模型和 DSSA开发和组织可重用信息。 请围绕 “基于 DSSA的软件架构设计与应用 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。 2就你所熟悉的领域,请给出针对该特定领域,在基于 DSSA的软件设计开发中所涉及的领域模型、参考需 求和参考架构以及相应的支持环境或设施。 3具体阐述你参与管理和开发的项目中使用 DSSA的情况,包括领域分析、领域设计和领域实现等活动是如何具体实施的,最终实际效果如何。 2 论信息系统
3、建模方法 系统模型在软件开发中扮演着重要的角色。可为已有的系统创建模型,以便更好地理解这些系统;也可以针对待开发的系统创建模型,作为记录业务需求或技术设计的方法。模型是建立信息系统的基础。恰当地运用信息系统建模方法,是成功地进行软件开发的一个关键环节。 请围绕 “论信息系统建模方法 ”论题,依次从以下三个 方面进行论述。 1概要叙述你参与管理和开发的信息系统项目以及你在其中所承担的主要工作。 2论述常见的信息系统建模方法的主要内容 (包括每种建模方法的核心思想以及所创建的模型 )。 3具体阐述你参与管理和开发的项目中选择使用的信息系统建模方法以及选择该方法的原因,给出具体的实施过程和实施效果。
4、 3 论基于 REST服务的 Web应用系统设计 REST(REpresentational State Transfer)是指从几种基于网络的架构风格衍生出来的一种混合架构风格,它是目前互联 网的核心架构风格。基于 REST服务 (RESTful Service)的 Web应用系统设计任务主要包括:识别并设计 REST风格的服务,采用面向服务的思想进行 REST服务集成。采用这种方法设计的 Web应用系统能够结合 REST风格和面向服务思想的优点,近年来受到了广泛的关注。 请围绕 “基于 REST服务的 Web应用系统设计 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与实施的 Web
5、应用系统开发项目以及你所承担的主要工作。 2简要叙述与传统的 Web服务相比,采用 REST服务构建的 Web应用 具有哪些优势和不足。 3阐述你在设计基于 REST服务的 Web应用系统时遇到了哪些问题,如何解决。 4 论软件可靠性设计与应用 目前在企业中,以软件为核心的产品得到了广泛的应用。随着系统中软件部分比例的不断增加,使得系统对软件的依赖性越来越强,对软件的可靠性要求也越来越高。软件可靠性与其他质量属性一样,是衡量软件架构的重要指标。 软件工程中已有很多比较成熟的设计技术,如结构化设计、模块化设计、自顶向下设计等,这些技术为保障软件的整体质量发挥了重要作用。在此基础上,为了进一步提高
6、软件的 可靠性,通常会采用一些特殊的设计技术,即软件可靠性设计技术。 在软件可靠性工程体系中,包含有可靠性模型与预测、可靠性设计和可靠性测试方法等。实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制。 请围绕 “软件可靠性设计与应用 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与实施的软件开发项目以及你所承担的主要工作。 2简要叙述影响软件可靠性的因素有哪些。 3阐述常用的软件可靠性设计技术以及你如何应用到实际项目中,效果如何。 2009年下半年软件水平考试(高级)系统架构师下午(论文)试题真题试卷答案与解析 1 【正确答案】 1简要叙述所参与管
7、理和开发的软件项目,需要明确指出在其中承担的主要任务和开展的主要工作。 2应结合自己所熟悉的领域,定义领域范围,确定领域应用需要满足的用户需求;定义领域特定的元素、领域字典和领域术语;定义领域特定的设计和实现需求约束:在此基础上,定义领域模型,产生该领域的参考架构,并说明构件的语法和语义;最后,产生、搜集可重用的产品单元,为 DSSA增加构件,为问题域实现新应用提供支持。这个 DSSA的建立过程是并发、递归和反复进行的。 所给出的 DSSA应该具备以下 4个方面的特征: (1) 一个严格定义的问题域和 /或解决域; (2) 具有普遍性,使其可以用于领域中某个特定应用的开发; (3) 对整个领域
8、能有合适程度的抽象; (4) 具备该领域固定的、典型的在开发过程中的可重用元素。 3需要结合项目实际,指出在架构设计时使用 DSSA的情况,包括领域分析、领域设计和领域实现等活动是如何具体实施的,要给出实际的效果并进行分析。 2 【正确答案】 1应结合自己参与的 信息系统项目,说明在其中所承担的工作。 2需要较为详细地说明目前各种常见的信息系统建模方法的核心思想,并对每种方法所创建的模型进行简要描述。 (1) 结构化建模方法。 结构化建模方法是以过程为中心的技术,可用于分析一个现有的系统以及定义新系统的业务需求。结构化建模方法所绘制的模型称为数据流图 (DFD)。 (2) 信息工程建模方法 (
9、或数据库建模方法 )。 信息工程建模方法是一种以数据为中心,但过程敏感的技术,它强调在分析和研究过程需求之前,首先研究和分析数据需求。信息工程建模方法所创建的模型被称为实体联系图 (ERD)。 (3) 面向对象建模方法。 面向对象建模方法将 “数据 ”和 “过程 ”集成到被称为 “对象 ”的结构中,消除了数据和过程的人为分离现象。面向对象建模方法所创建的模型被称为对象模型。随着面向对象技术的不断发展和应用,形成了面向对象的建模标准,即 UML(统一建模语言 )。 UML定义了几种不同类型的模型图,这些模型图以对象的形式共建一个信息系 统或应用系统。 3论文中需要结合项目实际工作,详细论述在项目
10、中是如何使用所选定的信息系统建模方法创建系统的逻辑模型和物理模型,并具体说明这些模型对项目开发所产生的影响。 3 【正确答案】 1论文中要具体介绍项目的总体需求 (特别是质量属性需求 )、Web应用系统的逻辑与物理拓扑结构、采用的技术等内容和承担的实际工作。 2 REST(REpresentational State Transfer)是指从几种基于网络的架构风格衍生出来的一种混合架构风格,目前 Web的体系结构正是基于 REST风格的 。 REST风格中的特点是客户端朋艮务器、无状态、缓存、统一接口、分层系统和按需代码。REST组件通过以一种数据格式转移资源的表述进行通信,可以基于接收者的能
11、力和期待的内容,以及资源的性质动态地选择不同的表述。 与传统的 Web服务相比, REST服务主要有以下优势: (1) REST服务基于 W3C/IETF的标准与规范 (包括 HTTP、 XML、 URI和 MIME等 ),其实现技术简单、成熟。 (2) REST服务基于 URI和超链接技术,不需要通过集中式的服务信息仓库即可发现服务资源。 (3) REST服务支持缓存,具有无状态的特性,这些使得 REST服务能够支持大量客户端,构建的应用系统具有较强的伸缩性。 (4) REST服务基于轻量级的 Web框架,仅仅需要基本的开发工具支持,构建过程简单且成本较低。 (5) REST服务的测试相对简
12、单,采用浏览器即可完成服务功能测试。 与传统的 Web服务相比, REST服务主要存在如下不足: (1) REST服务倡导的 REST风格与实际实现尚存在一定差距。例如高层 REST服务倡导使用 GET、 PUT、 POST和 DELETE所有 4个统一接口,在 REST实现部分通常只能采用 GET和 POST接口,因为大多数的代理和防火墙会屏蔽其他接口;并且 XHTML表单中只能使用 GET和 POST接口。 (2) REST服务要求所有的输入参数都必须在 URI中传递,这样会产生对参数容量大小的限制 (目前的大小是 4KB)。如果超出该数量,会导致 HTTP协议错误 (错误代码 414:
13、Request-URI too long)。 (3) 在 URI中表达复杂类型的参数比较困难,且目前对 URI中的参数不存在一种公认的编组 (marshalling)和解编 (un-marshalling)方法。 3进行基于 REST服务的 Web应用系统的设计时可能遇到的问题包括:如何识别并设计 REST风格服务;构建 REST服务的运行时环境,包括 HTTP服务器与应用服务器选型等;富客户端表现方式及编程语言的选择:系统逻辑与物理拓扑结构的分析与设计等。 4 【正确答案】 一、论文中要具体介绍项目的总体需求 (特别是可靠性需求 )、采用的技术等内容和承担的实际工作。 二、影响软件可靠性的主
14、要因素有:运行环境 (软件司 靠性的定义是相对于运行环境的 );软件规模;软件内部结构 (内部结构越复杂,包含 的缺陷数就可能越多 );软件的开发方法和开发环境;软件的可靠性投入等。 三、可靠性设计是在常规的软件设计中,应用各种方法和技术使程序设计在兼顾用户功能和性能需求的同时,全面满足软件的可靠性要求。软件可靠性设计技术就是以提高和保障软件的可靠性为目的,在软件设计阶段运用的一种特殊的设计技术。 主要的软件可靠性设计技术包括: (1) 容错设计技术。对于软件失效后果特别严重的场合,例如宇航器控制系统、空中交通控制和核反应堆控制系统等,可采用容错设计方法。常用的软件容错技术主要有恢复块设计、
15、N版本程序 设计和冗余设计。恢复块设计就是选择一组操作作为容错设计单元,从而把普通的程序块变为恢复块。一个恢复块中包含有若干功能相同、设计差异的程序块,每一时刻有一个程序块处于运行状态,一旦某程序块出现故障,则用备份程序块予以替换。 N版本程序设计的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果进行多数表决 (防止因其中某一软件模块 /版本的故障而提供了错误的服务,以实现软件容错 )。冗余设计的思路来源于硬件系统,但有所不同。软件冗余设计技术是采用多种不同路径、不同算法或不同实现方法的模块或系统作为备 份,在出现故障时进行替换,维持系统的正常运行。 (2) 检测技术。在无须在线容错或不能采用冗余设计技术的部分,但又有较高的可靠性要求时,一般采用检测性设计,在软件出现故障后能及时发现并报警。但其明显的缺点是不能自动解决故障,如果没有人工干预,最终将导致系统不能正常运行。 (3) 降低复杂度设计。软件的复杂性与软件可靠性有密切关系。软件复杂性是产生软件缺陷的重要根源。降低复杂度设计的思想就是在保证实现软件功能基础上,简化软件结构。