2015年11月系统架构设计师案例分析题
试题一
某软件公司拟为某市级公安机关开发一套特种车辆管理与监控系统,以提高特种车辆管理的效率和准确性。在系统需求分析与架构设计阶段,用户提出的部分需求和关键质量属性场景如下:
(a) 系统用户分为管理员、分管领导和普通民警等三类;
(b) 正常负载情况下,系统必须在0.5秒内对用户的车辆查询请求进行响应;
(c) 系统能够抵御99.999%的黑客攻击;
(d) 系统的用户名必须为字母开头,长度不少于5个字符;
(e) 对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(f) 网络失效后,系统需要再2分钟内发现并启用备用网络系统;
(g) 在系统升级时,需要保证在1个月内添加一个新的消息处理中间件;
(h) 查询过程中涉及到的车辆实时视频传输必须保证20帧/秒的速率,且画面具有600*480的分辨率;
(i) 更改系统加密的级别将对安全性和性能产生影响;
(j) 系统主站点断电后,需要再3秒内将请求重定向到备用站点;
(k) 假设每秒中用户查询请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的查询请求”这一要求是可以实现的;
(l) 对用户信息数据的授权访问必须保证99.999%的安全性;
(m)目前对“车辆信息实时监控”业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;
(n) 更改系统的Web界面接口必须在1周内完成;
(o) 系统需要提供远程调试接口,并支持系统的远程调试。
在对系统需求和质量属性场景进行分析的基础上,系统的架构师给出了三个候选的架构设计方案。公司目前正在组织系统开发的相关人员对系统架构进行评估。
问题1
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入图1-1中(1)、(2)空白处;并选择题干描述中的(a)~(o),将恰当的序号填入(3)~(6)空白处,完成该系统的效用树。
问题2
在架构评估过程中需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干描述中的(a)~(o)各选出1个属于系统架构风险、敏感点和权衡点的描述。
试题二
某公司拟研制一款高空监视无人直升机,该无人机采用遥控一自主复合型控制实现垂直升降。该直升机飞行控制系统由机上部分和地面部分组成,机上部分主要包括无线电传输设备、飞控计算机、导航设备等,地面部分包括遥控操纵设备、无线电传输设备以及地面综合控制计算机等。其主要工作原理是地面综合控制计算机负责发送相应指令,飞控计算机按照预定程序实现相应功能。经过需求分析,对该无人直升机控制系统纵向控制基本功能整理如下:
(a) 飞控计算机加电后,应完成系统初始化,飞机进入准备起飞状态;
(b) 在准备起飞状态中等待地面综合控制计算机发送起飞指令,飞控计算机接收到起飞指令后,进入垂直起飞状态;
(c) 垂直起飞过程中如果飞控计算机发现飞机飞行异常,飞行控制系统应转入无线电遥控飞行状态,地面综合控制计算机发送遥控指令;
(d) 垂直起飞达到预定起飞高度后,飞机应进入高度保持状态;
(e) 飞控计算机在收到地面综合控制计算机发送的目标高度后,飞机应进入垂直升降状态,接近目标高度;垂直升降过程中出现飞机飞行异常,控制系统应转入无线电遥控飞行;
(f) 飞机到达目标高度后,应进入高度保持状态,完成相应的任务;
(g) 飞机在街道地面综合控制计算机发送的任务执行结束指令后,进入飞机降落状态;
(h) 飞机降落过程中如果出现飞机飞行异常,控制系统应转入无线电遥控飞行;
(i) 飞机降落到指定着陆高度后,进入飞机着陆状态,应按照预定着陆算法,进行着陆;
(j) 无线电遥控飞行中,地面综合控制计算机发送着陆指令,飞机进入着陆状态,应按照预定着陆算法,进行着陆。
问题1
状态图和活动图是软件系统设计建模中常用的两种手段,请用200字以内文字简要说明状态图和活动图的含义及其区别。
问题2
根据题干中描述的基本功能需求,架构师王工通过对需求的分析和总结给出了无人直升机控制系统纵向控制状态图(图2-1)。请根据题干描述,提炼出相应状态及条件,并完善图2-1所示状态图中的(1)~(5),将答案填写在答题纸中。
问题3
根据题目中描述的基本功能需求,架构师王工给出了无人直升机控制系统纵向控制的顶层活动图(图2-2)。请根据题干描述,完善图2-2活动图的(1)-(9),将答案填写在答题纸中。
试题三
某宇航公司长期从事宇航装备的研制工作,嵌入式系统的可靠性分析与设计已成为该公司产品研制中的核心公司,随着宇航装备的综合化技术发展,嵌入式软件规模发生了巨大变化,代码规模已从原来的几十万扩展到上百万,从而带来了由于软件失效而引起系统可靠性降低的隐患。公司领导非常重视软件可靠性工作,决定抽调王工程师等5人组建可靠性研究团队,专门研究提高本公司宇航装备的系统可靠性和软件可靠性问题,并要求在三个月内,给出本公司在系统和软件设计方面如何考虑可靠性设计的方法和规范。可靠性研究团队很快拿出了系统及硬件的可靠性提高方案,但对于软件可靠性问题始终没有研究出一种普遍认同的方法。
问题1
请用200字以内文件说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?
问题2
王工带领的可靠性研究团队之所以没能快速取得软件可靠性问题的技术突破,其核心原因是他们没有搞懂高可靠性软件应具备的特点。软件可靠性一般致力于系统性地减少和消除对软件程序性能有不利影响的系统故障。除非被修改,否则软件系统不会随着时间的推移而发生退化。请根据你对软件可靠性的理解,给出表3-1所列出的硬件可靠性特征对应的软件可靠性特征之间的差异或相似之处,将答案写在答题纸上。
序号 |
硬件可靠性 |
软件可靠性 |
1 |
失效率服从浴缸曲线。老化状态类似于软件调试状态 |
(1) |
2 |
即使不适用,材料劣化也会导致失效 |
(2) |
3 |
硬件维修会恢复原始状态 |
(3) |
4 |
硬件失效之前会有报警 |
(4) |
问题3
王工带领的可靠性研究团队在分析了大量相关资料基础上,提出软件的质量和可靠性必须在开发过程构建在软件中,也就是说,为了提高软件的可靠性,必须在需求分析、设计阶段开发软件可靠性筹划和设计。研究团队针对本公司承担的飞行控制系统制定出了一套飞控软件的可靠性设计要求。飞行控制系统是一种双余度同构型系统,输入采用了独立的两路数据通道,在系统内完成输入数据的交叉比对、表决“制导率计算,输出数据的交叉对比、表决、一输出等功能,系统的监控模块实现对系统失效或失步的检测与宠位。其软件的可靠性设计包括恢复块方法和N版本程序设计方法。请根据恢复块方法工作原理完成图3-1,在(1)~(4)中填入恰当的内容。并比较恢复块方法与N版本程序设计方法,将比较结果(5)~(8)填入表3-2中。
表3-1 恢复块方法
表3-2 恢复块方法与N版本程序设计的比较
|
恢复块方法 |
N版本程序设计 |
硬件运行环境 |
单机 |
多机 |
错误检测方法 |
验证测试程序 |
(5) |
恢复策略 |
(6) |
向前恢复 |
实时性 |
(7) |
(8) |
试题四
某软件公司拟开发一套贸易综合管理系统,包括客户关系管理子系统和商品信息管理子系统两部分。客户关系管理子系统主要管理客户系统,并根据贸易业务需要频繁向客户发送相关的电子邮件、短信等提醒信息。商品信息管理子系统主要为客户提供商品信息在线查询功能,包括商品基本信息、实时库存与价格等。
在对系统进行数据架构设计时,公司项目组的架构师王工主张采用文件系统进行数据管理,原因是目前公司客户和商品数量不大,且系统功能较为简单,采用文件系统进行数据管理简单直观,开发周期短。架构师李工则建议采用关系数据库进行数据管理,原因在于公司目前正处在高速扩张期,虽然目前的客户和商品数量不大,但随着公司快速发展,需要管理的数据必然飞速膨胀,采用关系型数据库作为数据存储层,系统的扩展性更强,并能够对未来可能增加的复杂业务提供有效支持。经过讨论,项目组初步采纳了李工的意见,决定采用关系数据库存储客户数据,并针对业务特征对系统性能进行优化。
问题1
请从设计难度、数据冗余程度、数据架构、应用扩展性等4个方面对关系型数据库管理系统和文件系统两种数据存储方式进行比较,填写表4-1中(1)~(4)。
|
设计难度 |
数据冗余程度 |
数据架构 |
应用扩展性 |
关系型数据库 |
(1) |
遵守数据库范式,数据冗余较少 |
以数据库为中心组织、管理数据 |
(4) |
文件系统 |
针对特定应用系统设计,难度较小 |
(2) |
(3) |
符合特定应用系统要求的文件数据很难在不同的应用系统之间共享 |
问题2
对系统的核心业务需求进行认真分析后,公司的资深架构师张工提出一种内存数据库和关系数据库的混合存储架构,其核心思想是将需要频繁读写的数据存入内存数据库,而将相对固定不变的数据存入关系数据库。请首先分析内存数据库和关系数据库在数据模型、读写性能、存储容量、可靠性等方面的差异,填写表4-2中(1)~(4)的空白,并根据张工的思路指定各种业务数据的存储方式,填写表4-3中(5)~(9)中的空白。
表4-2 内存数据库和关系数据库比较
|
主要数据模型 |
读写性能 |
存储容量 |
可靠性 |
内存数据库 |
(1) |
内存直接读写,性能相对较高 |
(3) |
(4) |
关系数据库 |
关系模式 |
(2) |
基于磁盘存储,存储容量大 |
内建恢复机制,可靠性较高 |
表4-3 业务数据存储方式
业务数据 |
存储方式 |
客户基本信息 |
关系数据库 |
客户电子邮件 |
(5) |
客户联系电话 |
(6) |
商品基本信息 |
(7) |
商品库存信息 |
(8) |
商品价格信息 |
(9) |
试题五
某信息技术公司计划开发一套在线投票系统,用于为市场调研、信息调查和销售反馈等业务提供服务。该系统计划通过大量宣传和奖品鼓励的方式快速积累用户,当用户规模扩大到一定程度时,开始联系相关企业提供信息服务,并按照信息服务种类和用户投票数量收取费用。
为了降低开发成本和提高开发效率,项目组经过讨论后决定采用轻量级Java EE开发框架设计系统应用架构。在应用架构设计中,除了满足系统主要功能需求,还需要考虑的因素包括:
1、项目开发采用MySQL数据库存储数据,一但将来可能移植到其它数据库平台;
2、系统开发过程中尽可能降低或者消除SQL语句开发的工作量;
3、投票系统中数据之间的关系复杂,需要支持数据对象的聚合和继承等关系。
项目组基于MVC模式设计出了投票系统的架构,包括表示层、业务逻辑层、数据持久层和数据层。在具体讨论数据持久层采用哪种技术方案时,老王建议采用成熟的Hibernate框架,小李则认为iBatis更加灵活,更适合作为投票系统数据持久层开发技术。
问题1
请用300以内文字说明什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?
问题2
针对在线投票系统的实际应用需求和要求,项目组应选用哪种技术实现数据持久层?请用200字以内文字说明其采用该技术的原因。
问题3
数据持久层是Web应用系统框架中重要的组成部分,主流的数据持久层技术分别基于不同的技术方案,请在表5-1中(1)-(4)处分别根据(a)~(d)所列技术的方案类别填入其序号。
技术方案 |
实现技术 |
JDBC封装 |
(1) |
SQL Mapping |
(2) |
O/R Mapping |
(3) |
Entity Bean |
(4) |
(1)BMP,CMP
(2)iBatis/MyBatis
(3)SpringJdbcTemplate
(4)TopLink,JDO,Hibernate
试题一是必答,试题四、五为选答。考试过程中,选择了更加熟悉的题目进行答题,题号为1、4、5。
参考答案:
试题一
问题1:
(1) 安全性
(2) 可修改性
(3) k
(4) l
(5) j
(6) n
问题2:
架构风险:架构可能会给系统带来的潜在的问题。
敏感点:是一个或多个构件或多个构件之间的影响质量的特性。
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
架构风险:m
敏感点:e
权衡点:i
试题四
问题1:
(1) 针对业务模型进行设计,难度较大
(2) 基于文件数据管理,数据冗余较大
(3) 以关系型数据库为中心组织、管理数据
(4) 针对一般性、通用性设计,数据库数据可以在不同的应用之间进行共享
问题2:
(1) k-v键值对
(2) 基于数据库IO读写,性能相比较内存读写要慢
(3) 基于内存存储,存储容量较小
(4) 不保证每次请求都能命中,缓存会失效
(5) 关系数据库
(6) 关系数据库
(7) 内存数据库
(8) 内存数据库
(9) 内存数据库
试题五
问题1:
数据持久层是指在软件系统当中负责完成数据持久化(将数据保存到数据库)操作的软件结构上的逻辑分层。
使用数据持久层可以使项目结构清晰、模块复用、便于数据库迁移等优点。
问题2:
项目组应该选用老王的建议,使用Hibernate作为数据持久层的框架。首先Hibernate比较成熟,对于投票系统而言完全可以胜任。其次Hibernate极大的减少了SQL语句的开发工作量,而iBatis则是基于SQL Mapping的工具,需要编写大量的SQL。然后对于表示对象之间的聚合和继承等关系,Hibernate具有天生的优势,可以做到完全的面向对象编程。最后Hibernate支持多种数据库,可以比较容易的做到数据库迁移。
问题3:
(1) SpringJdbcTemplate
(2) iBatis/MyBatis
(3) TopLink,JDO,Hibernate
(4) BMP,CMP