1、2013年下半年软件水平考试(高级)系统架构师下午(论文)试题真题试卷及答案与解析 1 软件架构用来处理软件高层次结构的设计和实施,它以精心选择的形式将若干结构元素进行装配,从而满足系统的主要功能和性能需求。软件架构设计的首要问题是如何表示软件架构,即如何对软件架构建模。根据建模的侧重点不同,可以将软件架构模型分为结构模型、框架模型、动态模型、过程模型和功能模型。Kruchten在 1995年提出了 “4+1”视图模型,将 5种模型有机地统一在一起。 请围绕 “软件架构建模技术与应用 ”论题,依次 从以下方面进行论述。 1概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。 2简要
2、叙述 “4+1”视图模型的主要内容。结合你参与项目的实际情况,详细说明该项目需求及所涉及的软件架构 (包括使用到的视图模型、创建的架构模型及使用的建模工具等 )。 2 软件架构风格是描述一类特定应用领域中系统组织方式的惯用模式,反映了领域中诸多系统所共有的结构特征和语义特征,并指导如何将各个模块和子系统有效组织成一个完整的系统。分层架构是一种常见的软件架构风格,能够有效简化设计,使得设计 的系统结构清晰,便于提高复用能力和产品维护能力。 由于大量企业应用系统都由界面呈现、业务逻辑、数据存储三类功能构成,因此广泛采用分层架构风格进行系统设计。 请围绕 “企业应用系统的分层架构风格 ”论题,依次从
3、以下三个方面进行论述。 1概要叙述你参与管理和开发的企业应用系统建设项目以及你在其中所承担的主要工作。 2请结合项目实际情况,指出应用系统都有哪些层次以及每个层次的主要功能。 3请结合项目实际情况,指出设计每个层次时需要注意的问题及相应的解决方案。 3 随着软件的日益普及,系统中软件成分不断增加,使得系统对软件的依赖越来越强。软件的可靠性对系统可靠性的影响越来越大。而实践证明,保障软件可靠性最有效、最经济、最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念。 软件可靠性设计就是在常规的软件设计中,应用各种方法和技术,使软件设计在兼顾用户功能和性能需求的同时,全面
4、满足软件的可靠性要求。软件可靠性设计应和软件的常规设计紧密结合,贯穿于软件设计过程的始终。 请围绕 “论软件可靠性设计技术的应用 ”论题,依次从以下三 个方面进行论述。 1概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。 2结合项目实际,论述你在项目开发过程中,进行软件可靠性设计时遵循的基本原则;论述你在该项目中所采用的具体可靠性设计技术。 3阐述你在具体的可靠性设计工作中,为了分析影响软件可靠性的主要因素,所采用的可靠性分析方法。 4 分布式存储系统 (Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储
5、服务器存放所有数据, 存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。 请围绕 “论分布式存储系统架构设计 ”论题,依次从以下三个方面进行论述。 1概要叙述你参与分析和开发的分布式存储系统项目以及你所承担的主要工作。 2简要说明在分布式存储系统架构设计中所使用的分布式存储技术及其实现机制,详细叙述你在具体项目中选用了哪 种分布式存储技术,说明其原因和实施效果。 3冗余是提高分布式存储系统可靠性的主要方法,通
6、常在分布式存储系统设计中可采用哪些冗余技术来提升系统的可靠性 ?你在具体项目中选用了哪种冗余技术 ?说明其原因和实施效果。 2013年下半年软件水平考试(高级)系统架构师下午(论文)试题真题试卷答案与解析 1 【正确答案】 一、简要叙述所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、简要叙述 “4+1”视图模型的主要内容。 1 “4+1”视图模型从 5个不 同的视角来描述软件架构,每个视图只关心系统的一个侧面, 5个视图结合在一起才能反映系统的软件结构的全部内容。这 5个不同的视角包括逻辑视图、开发视图、进程视图、物理视图和场景。 (1)逻辑视图。逻辑视图主要
7、支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。在 OO技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。 (2)开发视图。开发视图也称为模块视图,在 UML中被称为实现视图,它主要侧重于软件模块的 组织和管理。开发视图要考虑软件内部的需求。 (3)进程视图。进程视图侧重于系统的运行特性,主要关注一些非功能性需求。进程视图强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的功能抽象如何适应进程结构等,它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行。进程视图可以描述成多层抽象,
8、每个级别分别关注不同的方面。 (4)物理视图。物理视图在 UML中被称为部署视图,主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装和通信等问题。 (5)场景。场景可以 看作是那些重要系统活动的抽象,它使 4个视图有机联系起来。场景对应 UML中的用例视图。 2结合实际项目,详细说明项目软件架构的内容。这部分内容应包括:在设计软件架构时,分别使用了 “4+1”视图中的哪些视图,每个视图中包含的模型有哪些等。 2 【正确答案】 一、简要描述所参与管理和开发的企业应用系统建设项目,并明确指出在其中承担的主要任务和开展的主要工作。 二、需要结合项目实际情况指出所开发的应用系统的
9、总体架构,特别是架构的层次关系。分层架构设计是一种常见的架构设计方法,能够有效简化设计, 使设计的系统结构清晰,便于提高复用能力和产品维护能力。一般来说,企业应用系统的架构可以分为表现层、中间层和持久层三个层次。 1表现层。表现层主要负责接收用户的请求,对用户的输入、输出进行检查与控制,处理客户端的一些动作,包括控制页面跳转等,并向用户呈现最终的结果信息。表现层主要采用 MVC结构来实现。控制器负责接收用户的请求,并决定应该调用哪个模型来处理;然后,模型根据用户请求调用中间层进行相应的业务逻辑处理,并返回数据:最后,控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。 2中间层。
10、中间层主要包括业务逻辑层组件、业务逻辑层工作流、业务逻辑层实体和业务逻辑层框架四个方面。业务逻辑层组件分为接口和实现类两个部分,接口用于定义业务逻辑组件,定义业务逻辑组件必须实现的方法。通常按模块来设计业务逻辑组件,每个模块设计为一个业务逻辑组件,并且每个业务逻辑组件以多个DAO组件作为基础,从而实现对外提供系统的业务逻辑服务。业务逻辑层工作流能够实现在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促进此目标的实现。业务逻辑层实体提供对 业务数据及相关功能的状态编程访问,业务逻辑层实体数据可以使用具有复杂架构的数据来构建,这种数据通常来自
11、数据库中的多个相关表。业务逻辑层实体数据可以作为业务过程的部分 I O参数传递,业务逻辑层的实体是可序列化的,以保持它们的当前状态。业务逻辑层是实现系统功能的核心组件,采用容器的形式,便于系统功能的开发、代码重用和管理。 3持久层。持久层主要负责数据的持久化存储,主要负责将业务数据存储在文件、数据库等持久化存储介质中。持久层的主要功能是为业务逻辑提供透明的数据访问、持久化、加载等能力。 三、需要结合项目实际情况,举例说明在设计表现层、中间层和持久层时需要考虑的主要问题,例如:在持久层设计时需要考虑 MVC模型中的模型、视图和控制器分别对应哪些组件;在中间层设计时需要考虑框架与业务组件之间的关系
12、;在持久层设计时需要考虑如何支持对多种类型数据的透明访问。 3 【正确答案】 一、概要论述你参与管理和开发的信息系统项目以及你在其中所承担的主要工作。 二、结合项目实际,论述你在进行软件可靠性设计时遵循的基本原则,你所采用的具体可靠性设计技术的基本内容。 可靠性设计需要遵循的 原则有: 1软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。 2软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。 3软件可靠性设计应确定软件的可靠性目标,不能无限扩大,并且排在功能、用户需求、开发费用之后考虑。 常见的可靠性设计技术有容错设计
13、、检错设计、降低复杂度设计等技术。 容错设计技术:对于软件失效后果特别严重的场合,如飞机的飞行控制系统、空中交通管制系统等,采用容错设计 技术。常见的容错设计技术有三种:恢复块设计、 N版本程序设计和冗余设计。 恢复块设计:选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块。一个恢复块包含有若干个功能相同、设计差异的程序块文本,一个运行文本,多个备份文本,构成 “动态冗余 ”,一旦运行文本出现故障,则用备份文本替换。软件容错的恢复块方法就是使软件包含有一系列恢复块。 N版本程序设计: N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防
14、止其中某一软件模块版本的故障提供错误的服 务,以实现软件容错。 冗余设计:在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。 检错技术:在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果时,一般采用检错技术,在软件出现故障后能及时发现并报警,其缺点是不能自动解决故障。 降低复杂度设计:软件复杂性与软件可靠性有着密切的关系,是产生 软件缺陷的重要根源。在设计时考虑降低软件的复杂性,是提高软件可靠性的
15、有效方法。降低复杂度设计的思想是在保证实现软件功能的基础上,简化软件结构,缩短程序代码,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。 三、阐述你在具体的可靠性设计工作中,为了分析影响软件可靠性的主要因素,所采用的可靠性分析方法。 在软件可靠性设计之前和软件可靠性设计过程中,都需要采用软件可靠性分析和预测方法,来确定当前系统中的主要可靠性因素和目标。常见的软件可靠性分析方法包括故障树分析方法、失效模式与效应分析方法等 。 故障树分析方法:一种自顶向下的软件可靠性分析方法,即从软件系统不希望发生的事件 (顶事件 ),特别是对人员和设备的安全及可靠性产生重大影响的事件开始,向下逐步追查导致
16、顶事件发生的原因,直至基本事件 (底事件 ),从而确定软件故障原因的各种可能组合方式和 (或 )发生概率。基本的步骤是软件故障树的建立、定性分析和定量分析。 失效模式与效应分析方法:在软件开发阶段的早期,通过识别软件失效模式,分析造成的后果,研究分析各种失效模式产生的原因,寻找消除和减少其有害后果的方法,以便尽早发现潜在的问题,并采取相应的措施 ,从而提高软件的可靠性和安全性。 SFMEA的分析对象可以是开发早期阶段的高层次的子系统、部件,也可以是详细设计阶段的单元、模块。对于不同的分析对象,其软件失效模式是不同的,采用的 SFMEA分析方法也不同,前者采用系统级分析方法 (system FM
17、EA),后者为详细级分析方法 (detailedFMEA)。其基本的步骤是系统定义、软件失效模式分析、软件失效原因分析、软件失效影响分析、改进措施分析。 4 【正确答案】 一、简要描述所参与分析和开发的分布式存储系统项目,并明确指出在其中承担的主要任务和开展的主要 工作。 二、说明在分布式存储系统架构设计中所使用的四种主要分布式存储技术,并根据考生所参与的实际项目,详细叙述所选用的一种分布式存储技术,并说明选择该技术的原因和实施效果。 在分布式存储系统架构设计中所使用的分布式存储技术主要包括四类: 1集群存储技术。集群存储系统是指架构在一个可扩充服务器集群中的文件系统,用户不需要考虑文件是存储
18、在集群中什么位置,仅仅需要使用统一的界面就可以访问文件资源。当负载增加时,只需在服务器集群中增加新的服务器就可以提高文件系统的性能。集群存储系统能够保留 传统的文件存储系统的语义,增加了集群存储系统必须的机制,可以向用户提供高可靠性、高性能、可扩充的文件存储服务。 2分布式文件系统。分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机朋艮务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。分布式文件系统以透明方式链接文件服务器和共享文件夹,然后将其映射到
19、单个层次结构,以便可以从一个位置对其进行访问,而实际上数 据却分布在不同的位置。用户不必再转至网络上的多个位置以查找所需的信息。 3网络存储技术。网络存储系统就是将 “存储 ”和 “网络 ”结合起来,通过网络连接各存储设备,实现存储设备之间、存储设备和服务器之间的数据在网络上的高性能传输。为了充分利用资源,减少投资,存储作为构成计算机系统的主要架构之一,就不再仅仅担负附加设备的角色,逐步成为独立的系统。利用网络将此独立的系统和传统的用户设备连接,使其以高速、稳定的数据存储单元存在。用户可以方便地使用浏览器等客户端进行访问和管理。 4 P2P网络存储技术。 P2P网络存储技术的应用使得内容不是存
20、在几个主要的服务器上,而是存在所有用户的个人电脑上。这就为网络存储提供了可能性,可以将网络中的剩余存储空间利用起来,实现网络存储。人们对存储容量的需求是无止境的,提高存储能力的方法有更换能力更强的存储器,另外就是把多个存储器用某种方式连接在一起,实现网络并行存储。相对于现有的网络存储系统而言,应用P2P技术将会有更大的优势。 P2P技术的主体就是网络中 Peer,也就是各个客户机,数量是很大的,这些客户机的空闲存储空间是很多的,把这些空间利用起来实现网络存储。 三、冗余是提 高分布式存储系统可靠性的主要方法,冗余的存储结构可以保证部分服务器失效时,数据服务仍可正常访问。常用的冗余技术包括:数据备份,数据分割,门限方案,纠错编码和纠删编码等。考生根据所参与的实际项目指出采用了何种冗余技术,并说明其原因和实施效果。