【软考系统架构设计师】2014年下系统架构师案例分析历年真题

【软考系统架构设计师】2014年下系统架构师案例分析历年真题

2014年下系统架构师案例分析历年真题

    • 【软考系统架构设计师】2014年下系统架构师案例分析历年真题
      • 2014年系统架构师案例分析真题第一题(Web架构设计)
      • 2014年系统架构师案例分析真题第二题(数据建模)
      • 2014年系统架构师案例分析真题第三题(嵌入式系统+构件技术)
      • 2014年系统架构师案例分析真题第四题(质量属性)
      • 2014年系统架构师案例分析真题第五题(Web架构设计)

2014年系统架构师案例分析真题第一题(Web架构设计)

某软件公司欲开发一个网络设备管理系统,对管理区域内的网络设备(如路由器和交换机等)进行远程监视和控制。公司的系统分析师首先对系统进行了需求分析,识别出如下3项核心需求:
(a)目前需要管理的网络设备确定为10类20种,未来还将有新类别的网络设备纳入到该设备管理系统中;
(b)不同类别的网络设备,监视和控制的内容差异较大;同一类网络设备,监视和控制的内容相似,但不同厂商的实现方式(包括控制接口格式、编程语言等)差异较大;
(c)网络管理员能够在一个统一的终端之上实现对这些网络设备的可视化呈现和管理操作。
针对上述需求,公司研发部门的架构师对网络设备管理系统的架构进行了分析与设计,架构师王工认为该系统可以采用MVC架构风格实现,即对每种网络设备设计一个监控组件,组件通过调用网络设备厂商内置的编程接口对监控指令进行接收和处理;系统管理员通过管理模块向监控组件发送监控指令,对网络设备进行远程管理;网络状态、监控结果等信息会在控制终端上进行展示。针对不同网络设备的差异,王工认为可以对当前的20种网络设备接口进行调研与梳理,然后通过定义统一操作接口屏蔽设备差异。李工同意王工提出的MVC架构风格和定义统一操作接口的思路,但考虑到未来还会有新类别的网络设备接入,认为还需要采用扩展接口的方式支持系统开发人员扩展或修改现有操作接口。公司组织专家进行架构评审,最终同意了王工的方案和李工的改进意见
【问题1】
请用300字以内的文字解释什么是MVC架构风格以及其中的组件交互关系,并根据题干描述,指出该系统中的M、V、C分别对应什么。
【问题2】
扩展接口模式结构通常包含四个角色:基础接口、组件、扩展接口和客户端,它们之间的关系如图 1-1 所示。其中每个扩展接口需要通过扩展基础接口获得基本操作能力,然后加入自己特有的操作接口,并通过设置全局唯一接口ID对自身接口进行标识;每个具体的组件需要实现扩展接口完成实际操作;客户端不与组件直接交互,而需要通过与扩展接口交互提出调用请求,扩展接口根据请求查找并选择合适的实现组件响应客户端请求。请根据上图所示和题干描述,指出扩展接口模式结构中的四个角色分别对应网络设备管理系统的哪些部分;并以客户端发起调用操作这一场景为例,填写表 1-1 中的(1)~(5)。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第1张图片
备选答案:基础接口、扩展接口、操作接口、接口ID、客户端、组件

  • 【问题1我的解答】
  1. MVC架构风格是层次化机构风格的一种应用,该架构将对页面的响应与表示放在View层,将业务逻辑放在Controller层,将对数据库的访问放在Model层,通过将各种职责分配到各个层次构件上以达到解耦职责,增加可维护性和可重用性的目的。
  2. MVC架构风格主要有主动和被动MVC架构。
  3. 控制终端是View,管理模块是Controller,监控组件是Model。
  • 【问题1标准答案】
  1. MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化。
  2. 在本系统中,模型(M)代表监控组件、视图(V)代表控制终端、控制器(C)代表管理模块。
  • 【问题2我的解答】
    1)客户端对应控制终端;
    2)基础接口对应网络设备;
    3)扩展接口对应具体的网络设备
    4)组件对应网络设备的监控组件
    • 客户端发起调用过程的描述。
    序号 操作
    1 客户端调用某个(基础接口)A上的操作接口,该操作接口可能是基础接口,也可能是扩展接口
    2 若实现A的(组件)存在被执行请求的操作接口,则调用该操作接口向用户返回结果
    3 如果所有组件均没有实现(操作接口),则客户端调用A上的getExtension方法,传入需要的(接口ID)通过查找与定位,找到实现该操作接口的(扩展接口)B,并将B的引用传回给客户端
    4 客户端调用B上的操作接口,通过相应的实现组件返回结果
  • 【问题2标准答案】
    1)扩展接口
    2)组件
    3)操作接口
    4)接口ID
    5)扩展接口
    • 根据题干描述,可以看出基础接口这一角色应该对应统一操作接口,组件这一角色应该对应监控组件,扩展接口这一角色应该对应新网络设备的操作接口,客户端这一角色应该对应控制终端。
    • 基础接口对应统一操作接口;
    组件对应监控组件;
    扩展接口对应新网络设备的操作接口;
    客户端对应控制终端。
  • 【心得体会】
  1. MVC架构风格是一种业务逻辑,数据和界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
  2. MVC将整个软件系统划分为模型,视图和控制器三个部分,模型负责维护并保存具有持久性的业务数据,实现业务处理功能,并将业务数据的变化情况及时通知视图;
  3. 此题将MVC架构模式的考查放在了第一题也就是必答题上面来。而将质量属性往往在历年真题中的必答题放入到了选答。
  4. 第一问一如既往考查了MVC架构模式的特点,分为了三层,各个层次分别做什么事情。这个纯概念题除了背诵记忆外没什么心得好说的。
  5. 除了理论之外,还需要回答的内容是控制终端是View,管理模块是Controller,监控组件是Model。为了回答到这个层次,看案例背景还是需要的。
  6. 第二问是让填五个空格。这里我就第一个出错。第一小空应该是扩展接口而不是基础接口,因为题目中说了客户端只能够调用扩展接口。扩展接口模式在我看来应该是模板方法,策略模式等几个设计模式的综合体。实现了客户端和所需要组件的解耦(这个关系都封装至扩展接口中了)。首先基础接口只提供了一个接口ID查找的功能,通过ID找到合适的组件(策略实现),在通过ID查找组件之前,调用扩展接口来返回结果,这个时候一些通用的设备所需要的组件都可以放到这里,通用的找不到时再利用ID查找专用组件。
  7. 所以这里的基础接口对应统一操作接口,扩展接口对应新网络设备的操作接口,组件对应监控组件。

2014年系统架构师案例分析真题第二题(数据建模)

某公司正在研发一套新的库存管理系统。系统中一个关键事件是接收供应商供货。项目组系统分析员小王花了大量时间在仓库观察了整个事件的处理过程,并开发出该过程所执行活动的列表:供应商发送货物和商品清单,公司收到商品后执行收货处理,包括卸载商品、确定收到了订单上的商品、处理与供应商的分歧等。对于已有商品,调整其库存信息,对于新采购的商品,在库存中添加新的商品记录。收货完成后,系统执行入库处理,将商品放到仓库对应的货架上。在付款处理活动中,自动生成应付账款信息,如果查询到该供应商有待付款记录,则进行合并付款,付款完成后消除应付账款记录。最后,仓库管理员根据最新的库存商品,调整出货信息。
小王根据自己观察的过程创建了该事件的1层数据流图,如图 2-1 所示。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第2张图片【问题1】
请用300以内文字说明数据流图(Data Flow Diagram)的基本元素及其作用。
【问题2】
数据流图在绘制过程中可能出现多种语法错误,请分析上图所示数据流图中哪些地方有错误,并分别说明错误的类型。
【问题3】
系统建模过程中为了保证数据模型和过程模型的一致性,需要通过数据-过程-CRUD矩阵来实现数据模型和过程模型的同步,请在表 2-1 所示CRUD矩阵(1)~(5)中填入相关操作。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第3张图片

  • 【问题1我的解答】
  1. 数据流图主要由:加工,数据流,外部实体,数据存储等四个部分所组成。
  2. 数据流图的主要作用是在面向过程的开发中女对系统的功能进行建模。以便更好的对需求进行分析的一个工具。
  • 【问题1标准答案】
No 名字 英文 说明
1 实体/外部代理 External Agent 定义位于项目范围之外,但与正在被研发的系统有交互关系的人、部门、外部系统或组织
2 加工/处理 Process 在输入数据流或条件上执行,或者对输入数据流或条件做出响应的工作
3 数据存储 Data Store 静止的数据,表示系统中需要保存的数据
4 数据流 Data Flow 运动中的数据,表示到一个过程的数据输入,或者来自一个过程的数据输出
  • 【问题2我的解答】
    1)付款处理和付款记录没有输入的数据流。
    2)入库处理到仓库员的数据流:【接受商品清单】这根线有问题,入库处理到库存商品有一根线;
    3)调整出货之后没有数据流没有结束。
    4)入库处理到仓库的数据流,应该是商品上架;
  • 【问题2标准答案】
    四种错误:
    1)D1库存商品到A2仓库管理员:缺少移动数据流的加工。
    2)P5.3调整出货:没有输出数据流,输入输出不平衡。
    3)P5.4付款处理:没有输入数据流,输入输出不平衡。
    4)D2付款记录:数据存储没有输出的数据流。
    • 数据流图中的错误包括两类:第一类是逻辑错误,加工节点输入输出不平衡,包括黑洞、灰洞和无输入三种类型;
    • 第二类是语法错误,比如数据存储不完整、在数据存储与外部代理之间或者各自之间没有经过加工之间发生数据流等。根据图2-1所示,P5.3和P5.4属于逻辑错误,数据流图不平衡,D2没有输出数据流,D1到A2缺少加工等属于第二类错误
  • 【问题3我的解答】
    CRUD:Create,Read,Update,Delete。
- PS1收货处理 PS2入库处理 PS3调整出货 PS4付款处理
供应商 1)CRU 2)R
库存商品 3)CRU 4)UD
付款记录 5)CRUD
  • 【问题3标准答案】
    1)R
    2)R
    3)CRU
    4)RU
    5)CRUD
  1. CRUD(Create\Read\Update\Delete)矩阵用于检查系统建模过程中数据模型和过程模型的一致性,分别表示了加工对于数据的新增、读取、修改和删除四种操作。
  2. 根据需求陈述和表2-1所示内容,P5.1收货处理和P5.4付款处理两个加工分别需要获得供应商的货运信息和付款记录,1.和2.处为读取操作(R);P5.2入库处理中需要添加新的商品记录或者查询并修改现有商品的库存信息,3.处为创建、读取和更新操作;P5.3凋整出货会读取并修改库存商品信息,4.处为读取和修改操作(RU);P5.4付款处理中除了生成付款记录、读取或修改付款记录外,对于己经付款的信息要消除应付款信息,所以5.处为新増、读取、修改和删除四种操作(CRUD)。
  • 【心得体会】
  1. 此题考查了面向过程中数据建模相关的知识。第一题问了数据流图的四个部分。完全没有难度。
  2. 在这里我给出的作用描述是针对整个数据流图的,而标准答案是针对这四个部分的各自作用的。就这点不太一样。
  3. 第二问考查了在数据流图中找错误。数据流图中的错误可以分为逻辑错误和语法错误两个大类。逻辑错误比较容易理解,就是在加工中只有输入没有输出或者只有输出没有输入的错误;这些错误也是比较容易识别出来的。
  4. 语法错误有缺少加工等必要的部件,比如外部实体和数据存储之间一定要有加工,数据一般存储后必定要去读出。只读不写或者只写不读的时候就需要特别的关注一下了。
  5. 第三问考查了CRUD矩阵在数据流图中的应用。这两张图是可以结合起来用,这样才可以获得比较好的展示效果。它的作用是检查系统建模过程中数据模型和过程模型的一致性。CRUD分别代表了Create,Read,Update,Delete。
  6. P5.1收货处理需要供应商提供货运信息;P5.4付款处理需要供应商提供付款记录,这两个信息都从供应商这里获取。所以1和2空都是R操作。
  7. PS3调整出货的时候,需要对库存商品这个数据模型进行RU操作,因为不会对库存商品进行删除,也不会因为出货而新增加库存商品。
  8. P5.4付款处理中除了生成付款记录、读取或修改付款记录外,对于己经付款的信息要消除应付款信息,所以5.处为新増、读取、修改和删除四种操作(CRUD)。

2014年系统架构师案例分析真题第三题(嵌入式系统+构件技术)

构件(component)也称为组件,是一个功能相对独立的具有可复用价值的软硬件单元。近年来,构件技术正在逐步应用于大型嵌入式系统的软件设计。某公司长期从事飞行器电子设备研制工作,已积累了大量成熟软件。但是,由于当初管理和设计等原因,公司的大量软件不能被复用,严重影响了公司后续发展。公司领导层高度重视软件复用问题,明确提出了要将本公司的成熟软件进行改造,建立公司可复用的软件构件库,以提升开发效率、降低成本。公司领导层决定将此项任务交给技术部门的王工程师负责组织实施。两个月后,王工程师经过调研、梳理和实验,提交了一份实施方案。此方案得到了公司领导层的肯定,但在实施过程中遇到了许多困难,主要表现在公司软件架构的变更和构件抽取的界面等方面。
【问题1】
请用200字以内文字说明获取构件的方法有哪几种?开发构件通常采用哪几种策略?并列举出两种主流构件标准。
【问题2】
由于该公司已具备大量的成熟软件,王工程师此次的主要工作就是采用遗留工程 (Legacy Engineering)方法,将具有潜在复用价值的软件提取出来,得到可复用的构件。因此,在设计软件时与原开发技术人员产生了重大意见分歧,主要分歧焦点在于大家对构件概念理解上的差异。请根据你对构件的理解,判断表 3-1 给出的有关构件的说法是否正确,将答案写在答题纸上。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第4张图片
【问题3】
王工程师的实施方案指出:本公司的大部分产品是为用户提供标准计算平台的,而此平台中的主要开发工作是为嵌入式操作系统研制板级支持软件(BSP)。为了提高BSP软件的复用,应首先开展BSP构件的开发,且构件架构应符合国外GENESYS规范定义的嵌入式系统架构风格。图 3-1 给出了架构风格定义的构件通用接口,其中:链接接口 (LIF)是构件对外提供的功能服务接口;局部接口建立了构件和它的局部环境的连接,如传感器、作动器或人机接口;技术相关接口(TDI)提供了查看构件内部、观察构件的内部变量的手段,如诊断等;技术无关接口(TII)用来在运行时配置、复使、重启构件的接口。现需要针对BSP中常用的RS-232串行驱动程序设计一个可复用的软构件,请说明该软构件四类接口的具体功能。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第5张图片

  • 【问题1我的解答】
    直接使用构件和在进行了必要的修改之后使用构件。
  • 【问题1标准答案】
    • 基于构件的软件开发中,可以通过不同的途径来获取构件,主要包括以下4种方法:
    1)从现有构件中获得符合要求的构件,直接使用或做适应性修改,得到可复用的构件;
    2)通过遗留工程(Legacy Engineering),将具有潜在复用价值的软件提取出来,得到可复用的构件;
    3)从市场上购买现成的商业构件,BPCOTS(Commercial Off-The-Shell)构件;
    4)开发新的符合要求的构件。
  • 开发构件通常采取3种策略:
    1)分区(partitioning):指的是将问题情景的空间分割成几乎可以独立研究的部分
    2)抽象(abstraction):是对在给定实践内执行指定计算的软/硬件单元的一种抽象
    3)分割(segmentation):是将结构引入构件的行为,支持对行为性质进行时序推理。
  • 当前主流构件标准有:
    1)CORBA:由OMG(对象管理集团)制定;
    2)COM/DCOM:由Microsoft制定;
    3)EJB:由SUN的Java企业Bean制定
  • 【问题2我的解答】
序号 关于构件的说明 我的解答 标准答案
1 构件是系统的一个封装了设计与实现,而只披露接口的可更换的部分 正确✅ 正确✅
2 构件是解决软件复用的基础,复用的形式可以分为垂直复用和水平式复用,而水平式复用的关键在于领域分析,具有领域特征和相似性,受到广泛关注 错误❌ 错误❌
3 构件构建在平台之上,平台提供核心平台服务,是构件实现和构件组装的基础。构件组装通常采用基于功能的组装技术,基于数据的组装技术和基于配置的组装技术等三类技术 正确✅ 错误❌
4 软件架构为软件系统提供了一个结构,行为和属性的高级抽象,由构件的描述,构件的相互作用(连接件),指导构件集成的模式,以及这些模式的约束组成 正确✅ 正确✅
5 构件可以分为硬件构件,软件构件,应用构件,系统构件。RTL运行时库属于软件构件,由于RTL与应用领域相关,所以RTL属于垂直式复用构件 错误❌ 错误❌
6 硬件构件的功能被给定的硬件结构如ASIC预先确定,是不能修改的,同样软件构件的功能在FPGA或者在CPU上的软件也是确定的,也是不能修改的 错误❌ 错误❌
  • 【问题2标准答案】
    1.√2.×3.×4.√5.×6.×
    每个判断题正确的描述如下:
  1. “构件是系统中的一个封装了设计与实现,而只披露接口的可更换的部分”。此种描述是正确的。
  2. “构件是解决软件复用的基础,复用的形式可分为垂直式复用和水平式复用。而垂直式复用的主要关键点在于领域分析,具有领域特征和相似性,受到广泛关注”。垂直式复用是与领域特性相关的,而水平式复用是一种公用的服务,不予某个特殊领域相关。
  3. “构件构建在平台之上,平台提供核心平台服务,是构件实现与构件组装的基础。构件组装通常采用基于功能的组装技术、基于数据的组装技术和面向对象的组装技术等三种技术”。配置只是一种构件功能组合动态方法,而不是构件组装的技术。
  4. “软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成”。该描述是正确的。
  5. “构件可分为硬件构件、软件构件、系统构件和应用构件。RTL(运行时库)属于软件构件,由于RTL可适应多种应用领域,所以RTL与属于水平式复用构件”。RTL是C/C++语言为用户提供的一种运行时库,如数学库、stdio库等,它可服务于多种应用,而与领域需求无关,所以说RTL不属于垂直式复用构件。
  6. “硬件构件的功能被给定的硬件结构如ASIC预先确定,它是不能修改的。同样,软件构件的功能由在FPGA或者CPU上的软件确定的,我们将加载在软件构件上的软件称为作业。将作业分配给适当的可以执行该作业的硬件单元就创建了新的构件。软件构件的功能所以在构件的寿命期中可以修改”。
  • 【问题3我的解答】
    1.链接接口 (LIF):RS-232串行驱动程序对外提供的功能服务数据传输的接口;
    2.局部接口:RS-232串行驱动程序与它的局部环境的连接。
    3.技术相关接口(TDI):查看RS-232串行驱动内部数据通信负载情况,观察内部变量的变化。
    4.技术无关接口(TII):用来在运行时配置、复使、重启RS-232串行驱动程序。
  • 【问题3标准答案】
    RS-232驱动程序主要完成对RS-232芯片的初始化,实现RS-232数据发送、接收和控制等功能。依据GENESYS规范定义的构件接口含义,RS-232驱动程序构件的接口定义如下:
  1. 链接接口
    RS-232驱动构件的使用者是上层的操作系统或应用软件,本构件应该给他们提供串行接口的数据发送、数据接收服务(1分)。因此,链接接口至少包括以下功能服务:
    • Send():处理机中的程序向RS-232芯片输出数据;
    • Receive():处理机中的程序通过RS-232芯片从外部接收数据;
    • Init232():初始化RS-232芯片。
  2. 局部接口
    RS-232驱动构件的局部接口应该是RS-232芯片为编程提供的各类寄存器和CPU对外围芯片的支持,此接口与硬件紧密相关。就RS-232芯片而言,局部接口至少包括以下功能服务:
    • Intconnect():将RS-232芯片的外部中断向量连接到CPU;
    • Rcad():从RS-232芯片中读取寄存器的内容(包括控制、状态类寄存器和数据输入寄存器);
    • Write():将控制信息或输出的数据写入RS-232芯片的相应寄存器。
  3. 技术相关接口
    RS-232驱动构件的技术相关接口应该是RS-232驱动构件为维护人员提供的芯片诊断接口,此接口与硬件和应用紧密相关。就RS-232芯片使用而言,技术相关接口至少包括以下诊断功能服务:
    • Datacheck():诊断数据传输校验的错误。
  4. 技术无关接口
    RS-232驱动构件的技术无关接口应该是RS-232驱动构件为编程人员提供的芯片初始化或运行时的配置接口。技术无关接口至少包括以下功能服务:
    • Reset():RS-232芯片或驱动构件复位;
    • Restart():RS-232芯片或驱动构件重启动;
    • Rateconfigure():配置、重新配置RS-232传输速率。
  • 【心得体会】
  1. 此题考查的是软件构件和嵌入式系统相关的考题。案例背景和问题似乎没有直接关系,也就是说不看案例背景照样可回答的。
  2. 其实第一问第二问都是考查软件构件的知识,第一问考查了构件的获取方式,构件获取策略,目前常见构件的主流构件标准;这些知识都需要在理解的基础上背出来,对准备论文还是有一定的帮助的。
  3. 第二问考查纯概念的判断,也是最简单的。这里有的概念还有水平式复用和垂直式复用,构件与架构的关系,构件的分类,构件组装等。同样该记忆的要记。
  4. 最后一问也是最难的。考查了嵌入式系统中的构件四类接口的设计。
  5. 首先我们要知道的是构件:RS-232驱动程序是用来做什么的。
  6. 根据经验不难推测出它的作用主要完成对RS-232芯片的初始化,实现RS-232数据发送、接收和控制等功能。
  7. 链接接口是对外提供功能服务的接口,那么就可以推测出RS-232驱动程序的接口有:初始化,接收数据和控制数据等。
  8. 从概念可知晓,局部接口是与它的局部环境的连接。此接口与硬件紧密相关。接口应该包括了读写寄存器和中断向量的控制。
  9. 技术相关接口根据概念应该是提供给技术维护人员用来调试的接口,所以至少应该包括了传输数据诊断等功能。
  10. 技术无关接口为编程人员提供的芯片初始化或运行时的配置接口,这里题目介绍中已经给出了三个接口名称了。
  11. 构件的四个接口分类,让我联想到了4+1视图,不同的侧面看待同一个问题(构件)的思想是通用的。

2014年系统架构师案例分析真题第四题(质量属性)

某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系统的架构设计。公司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属性场景和评估专家的意见等内容部分列举如下:
(a)在正常负载情况下,系统必须在0.5秒内响应用户的交易请求;
(b)用户的信用卡支付必须保证99.999%的安全性;
(c)系统升级后用户名要求至少包含8个字符;
(d)网络失效后,系统需要在2分钟内发现错误并启用备用系统;
(e)在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能;
(f)系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能;
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计;
(h)需要在30人月内为系统添加公司新购买的事务处理中间件;
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性;
(j)主站点断电后,需要在3秒内将访问请求重定向到备用站点;
(k)用户信息数据库授权必须保证99.999%可用;
(l)系统需要对Web界面风格进行修改,修改工作必须在4人月内完成;
(m)系统需要为后端工程师提供远程调试接口,并支持远程调试。
【问题1】
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入图 4-1 中(1)、(2)空白处;并选择题干描述的(a)~(m),填入(3)~(6)空白处,完成该系统的效用树。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第6张图片
图4-1 在线交易系统效用树
【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。

  • 【问题1我的解答】
No 场景描述 分类
a 在正常负载情况下,系统必须在0.5秒内响应用户的交易请求 性能
b 用户的信用卡支付必须保证99.999%的安全性 安全性
c 系统升级后用户名要求至少包含8个字符 功能需求
d 网络失效后,系统需要在2分钟内发现错误并启用备用系统 可用性
e 在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能 性能
f 系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能 权衡点
g 对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计 敏感点
h 需要在30人月内为系统添加公司新购买的事务处理中间件 可修改性
i 现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性 风险点
j 站点断电后,需要在3秒内将访问请求重定向到备用站点 可用性
k 用户信息数据库授权必须保证99.999%可用 安全性
l 系统需要对Web界面风格进行修改,修改工作必须在4人月内完成 可修改性
m 系统需要为后端工程师提供远程调试接口,并支持远程调试 可测试性

1)性能
2)可修改性
3)e
4)j
5)l
6)k

  • 【问题1标准答案】
    同上。
  • 【问题2我的解答】
质量评估属性 分类 解释
风险点 i 系统架构方面存在的隐患,错误的架构决策对系统产生的不利影响
敏感点 g 一个或一组构件所固有的特征,它的改变将引起系统系统中某个质量属性的改变
权衡点 f 多个质量属性的敏感点

• 【问题2标准答案】

  1. 系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
  2. 敏感点是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。
  3. 权衡点是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
  4. 题干描述中,(i)描述的是系统架构风险;(g)描述的是敏感点;(f)描述的是权衡点。
  • 【解题思路】
  1. 首先需要对题干中的所有软件需求描述进行分析与梳理,区分并找出其中的需求分析、软件质量属性描述,或者可能的风险、权衡点或敏感点描述。具体列举如下:
  2. 在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。效用树主要关注性能、可修改性、可用性和安全4个方面,考生首先必须填入对应的质量属性名称,并根据上述分析依次填入合适的标号
No 场景描述 分类
a 在正常负载情况下,系统必须在0.5秒内响应用户的交易请求 性能
b 用户的信用卡支付必须保证99.999%的安全性 安全性
c 系统升级后用户名要求至少包含8个字符 业务需求
d 网络失效后,系统需要在2分钟内发现错误并启用备用系统 可用性
e 在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能 性能
f 系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能 权衡点
g 对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计 敏感点
h 需要在30人月内为系统添加公司新购买的事务处理中间件 可修改性
i 现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性 风险点
j 站点断电后,需要在3秒内将访问请求重定向到备用站点 可用性
k 用户信息数据库授权必须保证99.999%可用 安全性
l 系统需要对Web界面风格进行修改,修改工作必须在4人月内完成 可修改性
m 系统需要为后端工程师提供远程调试接口,并支持远程调试 可测试性

2014年系统架构师案例分析真题第五题(Web架构设计)

某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组,拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如图 5-1 所示。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第7张图片
【问题1】
针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理;并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入表 5-1 中。
【软考系统架构设计师】2014年下系统架构师案例分析历年真题_第8张图片
【问题2】
针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。
【问题3】
为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。
(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcacbed 缓存)
(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。

  • 【问题1我的解答】
    基于DNS的负载均衡是应用层的负载均衡技术。它是在域名地址转化为具体IP地址的时候进行相应的负载均衡。
    反向代理的负载均衡技术是传输层的负载均衡技术。
- - 基于DNS的负载均衡 基于反向代理的负载均衡
系统执行效率 是否考虑内部服务器性能差异及实时负载情况
系统执行效率 是否可以对内部服务器静态资源进行缓存
安全性 是否能屏蔽客户端对真实Web服务器的直接访问
简易性 是否具有实现简单,容易实施及低成本的特点

【问题1标准答案】

  1. 两种机制的基本原理:
  2. 基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡。
  3. 反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
  4. 表格同上。
    【问题2我的解答】
  5. 数据库分区可采用水平分区方式。
  6. 系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,所以使用垂直分区方式并符合需求。
  7. 系统运行时发生的大部分数据库操作为查询操作,引入主从复制机制之后,很多的查询操作都可以放到只读的从数据库中来实现,这样分流了对单个数据库的使用,提高数据库访问效率。
  8. 同时在单个数据库结点发生故障时,如果是从数据库的话,只需要停止掉它就可以了,并将原来的查询请求分流到其他从数据库上做。
    【问题2标准答案】
  9. 本系统中应主要使用水平分区机制。根据已知信息,系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,采用水平分区机制可根据用户标识将用户数据进行水平分割,用户操作时先将请求分发到不同数据库分区,再进行具体数据库操作,以提高数据库访问效率。
  10. 引入主从复制机制所带来的好处:
  11. 避免数据库单点故障:主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。
  12. 提高査询效率:根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据査询操作,从而将査询操作分担到不同的从服务器以提高数据库访问效率。
  • 【问题3我的解答】
    1)MemCache缓存
    2)数据库
    3)MemCache缓存
    4)MemCache缓存
    5)数据库
- MemCache MYSQL查询缓存
缓存架构 独立于数据库层,且支持分布式架构 类似于MYSQL视图层,无法支持分布式架构
缓存数据类型 支持键值方式 不支持键值方式
缓存有效性 服务器关闭时内容清空 数据库服务器重启时内容清空
  • 【问题3标准答案】
    • (a)
    1)Memcached缓存
    2)数据库
    3)Memcached缓存
    4)数据库
    5)Memcached缓存
    • (b) 使用Memcached代替数据库查询缓存的原因:
  1. 缓存架构:数据库查询缓存通常每个数据库只有一个实例,因此存储内容受数据库服务器可用内存限制,可缓存数据有限。而Memcached可采用高速分布式缓存服务器结构,不受数据库服务器约束,可扩展性更好。
  2. 缓存有效性:数据库查询缓存只要在发生写操作时就会失效,即使更新的是数据库中的其他行。而Memcached可通过键值将数据进行散列缓存,有效降低缓存的更新频率,从而提髙缓存的有效性。
  3. 缓存数据类型:数据库查询缓存只能缓存数据库行,对社交网站好友动态显示等典型业务所需要的组合数据缓存缺乏有效支持,而Memcached理论上可缓存任何内容。因此可以将分散在数据库中的关系或者列表组合后进行缓存,以提高缓存数据的针对性和效率。
  • 【心得体会】
  1. 此题是Web架构设计的经典考题。考查了负载均衡技术,内存数据库缓存技术,主从数据库复制技术等一系列的技术。
  2. 首先第一问是考查负载均衡技术。基于DNS的负载均衡机制是为同一个主机名配置多个IP地址。在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点,以达到负载均衡的目的。
  3. DNS 负载均衡的优点是经济、简单易行,并且节点可以位于Internet上任意的位置。但它也存在不少缺点,例如,为了保证DNS数据及时更新,一般都要将DNS的刷新时间设置得较小,但太小就会造成太大的额外网络流量,并且更改了DNS数据之后也不能立即生效;DNS负载均衡采用的是简单的轮转算法,不能区分节点之间的差异,不能反映节点的当前运行状态,不能做到为性能较好的节点多分配请求,甚至会出现客户请求集中在某一个节点上的情况。另外,要给每个节点分配一个Internet上的IP地址,这势必会占用过多的IP地址。
  4. 反向代理是将来自Internet的请求以反向代理的方式动态的转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。
  5. 反向代理负载均衡的缺点主要表现在两个方面。首先,反向代理处于OSI参考模型应用层,因此,必须为每种应用服务专门开发一个反向代理服务器,这样,就限制了反向代理负载均衡技术的应用范围,现在一般都用于对Web服务器的负载均衡;其次,针对每一次代理,代理服务器都必须打开两个连接,一个对外,一个对内。在并发连接请求数量非常大的时候,代理服务器的负载也就非常大,代理服务器本身会成为服务的瓶颈。
  6. 反向代理负载均衡。反向代理负载均衡是将来自Internet上的连接请求以反向代理的方式动态地转发给内部网络上的多个节点进行处理,从而达到负载均衡的目的。反向代理负载均衡既能以软件方式实现,也能在高速缓存器和负载均衡器等硬件设备上实现。7. 反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提高系统性能。另外,由于网络外部用户不能直接访问真实的节点计算机,反向代理负载均衡还具备额外的安全性(同理,基于NAT的负载均衡也有此优点)。
  7. 第二问是考查水平分区和垂直分区。首先水平分区可以将不同的数据库字段放在物理位置不同的数据库中。这样本地的访问大部分都在本地服务器的话,可以大大提高数据访问的效率;使用主从数据复制的策略也可以达到提高访问效率和降低资源冲突的效果。
  8. Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon)是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
  9. Mysql查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存中去检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。

你可能感兴趣的:(#,系统架构设计师---历年真题,系统架构,网络)