赞
踩
试题一(25分)阅读以下关于软件架构设计的叙述,在答题纸上回答问题 1~3。
【说明】某软件公司为某品牌手机厂商开发一套手机应用程序集成开发环境,以提高开发手机应 用程序的质量和效率。在项目之初,公司的系统分析师对该集成开发环境的需求进行了调研和分析,具体描述如下。
a.需要支持和兼容该厂商的全系列硬件。
b.经过调研,手机应用开发人员更倾向于使用Android系统,因此集成开发环境的界面需要与 Android平台上的主流开发工具的界面风格保持一致。
c.支持相关开发数据在云端存储,需要保证在云端存储数据的机密性和完整性
d.支持用户备份和加载配置。
e.支持不同模型的自动转换,在初始需求中定义的机器性能条件下,对于一个包含 50 个对象的设计模型,将其转换为相应代码框架时所消耗时间不超过5S
f.能够连续运行的时间不小于 360 小时,意外退出后能够在 10s之内自动重启。
G.集成开发环境具有丰富的插件库。
h.支持应用开发过程中的代码调试功能,开发人员可以设置断点并启动调试。编辑器可以自动卷屏并命中断点, 能通过变量监视器查看当前变量取值。
在对需求进行分析后,公司的架构师小张查阅了相关的资料,认为该集成开发环境应该 采用管道-过滤器(Pipe-Filter)的架构风格。公司的资深架构师王工在仔细分析后,认为应该采用数据仓储(Data Repository)的架构风格。公司经过评审,最终采用了王工的方案。
【问题1】(10分)识别软件架构质量属性是进行架构设计的重要步骤,请分析题干中的需求描述,填写表1-1中(1)~(5)处的空白。
参考答案
(1)f (2)性能 (3)g (4)h (5)b
【问题2】(7分)请在阅读题干需求描述的基础上,从交互方式、数据结构、控制结构和扩展方法 4个方面对两种架构风格进行比较,填写表1-2中(1)~4)处的空白
参考答案
(1)星型(2)数据流(3)数据流驱动(4)模型适配
【问题3】(8分)在确走采用数据仓库架构风格后,王工给出了集成开发环境架构图。请填写图1-1中(1)~(4)处的空白,完成该集成开发环境的架构图。
参考答案
(1)语法结构树(2)编辑器(3)适配器(4)应用模拟器工具
试题二(25分)
阅读以下关于系统设计的叙述,在答题纸上回答问题至问题3。
【说明】某软件公司为知名制造企业开发一套网上销售系统,以增加销售的渠道和效率。在项目之初,项目组决定采用面向对象的开发方法进行系统开发,并对系统的核心业务功能进行了分析,具体描述如下:注册用户通过商品信息页面在线浏览商品,将需要购买的商品添加进购物车内,点击“结算”按钮后开始录入订单信息。
用户在订单信息录入页面上选择支付方式,填写并确认收货人、收货地址和联系方式等信息。点击“提交订单”按钮后产生订单,并开始进行订单结算。订单需要在30分钟内进行支付,否则会自动取消,用户也可以手工取消订单。用户支付完成,经确认后,系统开始备货,扣除该商品可接单数量,并移除用户购物车中的所有商品资料。
生成订单表单,出货完毕,订单生效。为用户快递商品,等待用户接收。用户签收商品,交易完成。
【问题1】(12分)识别设计类是面向对象设计过程中的重要工作,设计类表达了类的职责,即该类所担任的任务。请用300字以内的文字说明设计类通常分为哪三种类型,每种类型的主要职责,并针对题干描述案例涉及的具体类为每种类型的设计类举出2个实例。
参考答案
在系统设计过程中,类可以分为三种类型:实体类、边界类(或接口类)和控制类。
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息。题干描述中商品、订单、注册用户、送货信息、购物车等都是实体类。边界类用于封装在用例内、外流动的信息或数据流.题干描述中商品信息页面、订单信息录入灾面和订单表单都属于边界类。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词“或”名词+动词”)转化来的名词。题干描述中订单结算、订单支付、备货、出货等都属于控制类。
【问题2】(3分)在面向对象的设计过程中,活动图(activity diagram)阐明了业务用例实现的工作流程。请用300字以内的文字给出活动图与流程图(flowchart)的三个主要区别。
参考答案
活动图和流程图的主要区别有以下三点
(1)活动图是面向对象的,而流程图是面向过程的。
(2)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。
(3)活动图能够表示并发活动的情形,而流程图不能。
【问题3】(10分)在面向对象的设计过程中,状态图(statechart diagram)描述了一个实体基于事件反应的动态行为。请根据题干描述,填写图2-1中的(a)~(e)空白,完成订单处理的状态图。
参考答案
(a)取消(b)待结算©大于30分钟(d)订单生效(e)用户签收
试题三(25分)
阅读以下关于嵌入式系统可靠性设计方面的描述,回答下列问题。【说明】某宇航公司长期从事宇航装备的研制工作,嵌入式系统的可靠性分析与设计已成为该公司产品研制中的核心工作,随着宇航装备的综合化技术发展,嵌入式软件规模发生了巨大变化,代码规模已从原来的几十万扩展到上百万,从而带来了由于软件失效而引起系统可靠性降低的隐患。公司领导非常重视软件可靠性工作,决定抽调王工程师等5人组建可靠性研究团队,专门研究提高本公司宇航装备的系统可靠性和软件可靠性问题,并要求在三个月内,给出本公司在系统和软件设计方面如何考虑可靠性设计的方法和规范。可靠性研究团队很快拿出了系统及硬件的可靠性提高方案,但对于软件可靠性问题始终没有研究出一种普遍认同的方法。
【问题1】(9分)请用200字以内文字说明系统可靠性的定义及包含的4个子特性,并简要指出提高系统可靠性一般采用哪些技术?
参考答案
系统可靠性定义:系统在规定的时间内及规定的环境条件下,完成规走功能的能力,就是系统无故障运行的概率。
根据国家标准《软件工程产品质量 第1部分:质量模型》(GB/T16260.1-2006)的规定,系统可靠性包括:成熟性、容错性、易恢复性和可靠性的依从性4个子特性。
提高系统可靠性一般采用以下4类技术:
(1)冗余技术;
(2)软件容错技术;
(3)双机容错技术;
(4)集群技术。
【问题2】(8分)
王工带领的可靠性研究团队之所以没能快速取得软件可靠性问题的技术突破,其核心原因是他们没有搞懂高可靠性软件应具备的特点。软件可靠性一股致力于系统性地减少和消除对软件程序性能有不利影响的系统故障,除非被修改,否则软件系统不会随着时间的推移而发生退化。请根据你对软件可靠性的理解,给出下表所列出的硬件可靠性特征与其对应的软件可靠性特征之间的差异或相似之处将答案写在答题纸上。
参考答案
(1)从硬件角度分析,由于硬件一旦生产完成,其可靠性指标将会随着使用时间延长而逐步老化,从而带来可靠性隆低,即呈现失效率服从浴缸曲线;而软件不存在随时间延长而老化的现象,因此,在不考虑软件演化的情况下,失效率在统计上是非增的。
(2)由于硬件是由多种电子器件组成,即使不使用材料劣化也会导致失效;而软件就不同了,软件一旦调试完成,固化到设备中,在不考虑存储介质的老化因素的前提下,即使不使用该软件,软件也永远不会发生失效。
(3)由于硬件存在可更换性,其硬件通过维修,可恢复原始状态;而对于软件而言,一旦需要维护,必然是存在需求更改、程序存在bug等现象,其维护必然会创建新的软件代码。
(4)一般而言,硬件失效存在一个发展过程,在发生故障之前必然会有报警现象出现,而软件失效之前很少会有警告。
问题3】(8分)
王工带领的可靠性研究团队在分析了大量相关资料基础上,提出软件的质量和可靠性必须在开发过程构建到软件中,也就是说,为了提高软件的可靠性,必须在需求分析、设计阶段开展软件可靠性筹划和设计。研究团队针对本公司承担的飞行控制系统制定出了一套飞控软件的可靠性设计要求。飞行控制系统是一种双余度同构型系统,输入采用了独立的两路数据通道,在系统内完成输入数据的交叉对比、表决、制导率计算,输出数据的交叉对比、表决、输出等功能,系统的监控模块实现对系统失效或失步的检测与定位。其软件的可靠性设计包括恢复块方法和N版本程序设计方法。请根据恢复块方法工作原理完成下图,在(1)-(4)中填入恰当的内容。并比较恢复块方法与N版本程序设计方法,将比较结果(5)~(8)填入下表中。
参考答案
1.恢复块方法:
(1)主块
(2)验证测试
(3)输出正确结果
(4)异常处理
2.恢复块方法与N版本程序设计的比较
(5)表决
(6)反向恢复
(7)差
(8)好
试题四(25分)阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3.
【说明】
某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计,给出该系统的部分关系模式如下:航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价) 代理商(代理商编号,代理商名称,客服电话,地址,负责人)机票代理(代理商编号,航班编号,票价)旅客(身份证号,姓名,性别,出生日期,电话)购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)在提供给用户的界面上,其核心功能是当用户查询某航班时,将该航班所有的代理商信息及其优惠票价信息,返回给用户,方便用户购买价格优惠的机票。在实现过程中发现,要实现此功能,需要在代理商和机票代理两个关系模式上进行连接操作,性能很差。为此开发小组将机票代理关系模式进行了扩充,结果为:
机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)这样,用户在查找信息时只需对机票代理关系模式进行查询即可,提高了查询效率。
【问题1】(6分)机票代理关系模式的修改,满足了用户对代理商机票价格查询的需求,提高了查询效率。但这种修改导致机票代理关系模式不满足3NF,会带来存储异常的问题,1)请具体说明其问题,并举例说明,2)这种存储异常会造成数据不一致,请给出解决该存储异常的方案。
参考答案
因为不满足3NF,具体问题有数据冗余和更新异常,数据冗余:代理商名称和客服电话存在于两个关系模式,而且机票代理关系模式中,该代理商代理了多少个航班,则代理商名称和客服电话被重复存储多少次。
更新异常:当代理商名称或客服电话变更时,不仅需要修改代理商关系模式,还需要修改机票代理关系模式,否则会造成数据不一致。可采用两种方案实现。
(1)通过程序实现,当修改代理商关系模式数据时程序同步修改机票代理关系模式
(2)通过触发器实现,在代理商关系模式上加修改触发器,当修改代理商关系模式数据时,程序同步修改机票代理关系模式。
【问题2】(9分)
在机票销售信息处理系统中,两个代理商的售票并发执行,可能产生的操作序列如表4-1所示
假设两个代理商执行之前,该航班仅剩1张机票:
1)请说明上述两个代理商操作的结果
2)并发操作会带来数据不一致的问题,请具体说明3种问题。
参考答案
1)第一个代理商能够正确售票。第二个代理商查询剩余票数时正确,为I张机票但剩余票数减一操作时出错,因为该机票已经被第一个代理商售出,此时第二个代理商无票可售。
2)并发操作会带来数据不一致问题具体为:丢失修改、读脏数据、不可重复读。
【问题3】(10分)为了避免问题2中的问题,开发组使用库的读写锁机制操作序列变为表4-2所示
请填写表中的空白项,并用150字以内的文字说明读写锁机制的缺点。
参考答案
(1)加写锁(2)加读锁:(3)加写锁(4)被阻塞(5)得到通知(6)加写锁
读写锁的缺点:读写锁会造成读写操作的互相阻塞实际使得用户的操作被串行化,降低了系统的并发性能。设计不好的情况下,可能会出现资源的交叉锁定,形成死锁。
试题五(25分)阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题 1~3。【说明】某公司自主研发的网络教学平台因业务扩展,导致系统访问量不断增大,现有系统访问速度缓慢,有时甚至出现系统故障瘫痪等现象。面对这一情况,公司召开项目组讨论会议,寻求该商务平台的改进方案。讨论会上,王工提出可以利用镜像站点、CDN 内容分发等方式解决并发访问量带来的问题。而李工认为,仅仅依靠上述外网加速技术不能完全解决系统现有问题,如果访问量持续增加,系统仍存在崩溃的可能。李工提出应同时结合 Web 内网加速技术优化系统改进方案,如综合应用负载均衡、缓存服务器、Web应用服务器、分布式文件系统、分布式数据库等。经过讨论,公司最终决定采用李工的思路,完成改进系统的设计方案。
【问题1】(10分)针对李工提出的改进方案,从a-j中分别选出各技术的相关描述和对应常见支持软件填入表 5-1中的(1)~(10)处。
(a)保存静态文件,减少网络交换量,加速响应请求
(b)可采用软件级和硬件级负载均衡实现分流和后台减压
©文件存储系统,快速查找文件
(d)FastDFS
(e)HAProxy
(f)JBoss
(g))Hadoop Distributed File System (HDFS)
(h) Apache Tomcat
(i) squid
(j)MongoDB
参考答案
(1)(b) (2)(e) (3) (a) (4)(i) (5)© (6)(d) (7)(g) (8)(f) (9)(h) (10)(j)
(5)和(7)、(8)和(9)的答案可互换。
【问题2】(9分)李工指出:在采用缓存服务器时,要特别小心缓存雪崩的问题。请用300字以内的文字说明缓存雪崩的原理和应对策略。
参考答案
缓存雪崩的原理主要是由于原有缓存失效(过期)导致数据未加载到缓存中,或者缓存同一时间大面积失效,从而导致所有请求都去查询数据库,对数据库造成巨大压力,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃。
针对缓存雪崩问题,可以采取以下几种应对策略:
1使用集群保持缓存层的高可用性,
2使用限流降级组件来防止在高并发场景下对这些资源造成过大的压力。
3缓存不过期:设置缓存中保存的key永不失效,避免大量缓存同时失效的问题。
4优化缓存过期时间:避免大量的key在同一时刻同时失效。
5数据预热:将相关的缓存数据直接加载到缓存系统。
6双层缓存策略:使用C1作为原始缓存,C2作为拷贝缓存。当C1失效时,可以访问C2。为C1和C2设置不同的失效时间,以实现更平滑的缓存过渡。
【问题3】(6分)针对 B2C 商务购物平台的数据浏览操作远远高于数据更新操作的特点,指出该系统应采用的分布式数据库实现方式,并分析原因。
参考答案
系统应采用的分布式数据库实现方式为一主多从分布、读写分离。
原因:在购物网站中,读操作远多于写操作,在原始的数据库中,当写入的时候必须要锁住数据表,当小数据量的时候并不会出现瓶颈问题。当数据量暴增时,读写数据必然会受到很大的影响。如果把读操作和写操作分离开来,性能将大大提高。
今天就更新到这,有疑问的评论区讨论哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。