201605系分下午真题
第 1 题
阅读以下关于软件系统可行性分析的叙述,在答题纸上回答问题1至问题3。
某软件开发企业受对外贸易公司委托开发一套跨境电子商务系统,项目组从多个 方面对该电子商务系统进行了可行性分析,在项目组给出的可行性分析报告中,对项目的成本、收益情况进行了说明:建设投资总额为300万元,建设期为1年,运营期为4年,该方案现金流量表如表1-1所示。
表1-1 系统解决方案现金流量表(单位:万元)
(2)技术可行性。研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。
(3)法律可行性。具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
(4)用户使用可行性。从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等。
【问题2】
(1)开发成本:(a)系统分析师工资、(b)采购数据库服务器
(2)运营成本:(c)系统管理员工资、(f)软件许可证费用
(3)有形收益:(e)销售额同比提高、(g)应用服务器数量减少
(4)无形收益:(d)客户满意度增加
【问题3】
静态投资回收期= 累计净现金流量开始出现正值的年份数-1+∣上年累计净现金流量∣/当年净现金流量 = (3-1)+(390-340)/(200-60) = 2.36年
动态投资回收期 = 累计折现值开始出现正值的年份数-1+∣上年累计折现值∣/当年折现值 = (3-1)+(377.9-295)/((200-60)×0.75) = 2.79年
投资收益率 = 投资收益/投资成本×100% = 594.6/470.5 = 126.38%
掌握系统可行性分析方法是系统分析师的重要技能,特别是成本效益分析方法,能够根据现金流量表计算静态投资回收期、动态投资回收期和投资收益率等可行性指标。
【问题1】
软件系统可行性分析的内容和基本概念是进行软件系统可行性分析的前提。软件系统的可行性分析包括经济可行性、技术可行性、法律可行性和用户使用可行性,分别从项目建设的经效益、技术方案、制度因素和用户使用等四个方面对系统建设的必要性和可能性进行评估。
【问题2】
成本和收益的识别是经济可行性中成本效益分析的基础,成本主要描述系统的投入,收益主要描述系统建成后的产出。软件生存期中的成本按照系统投入的阶段可分为开发阶段的成本和建成后的运营成本两类,软件生存期中的收益按照量化放肆不同可分为有形收益和无形收益。系统分析师工资和采购数据库服务器属于系统开发阶段的投入,所以属于开发成本;系统管理员工资和软件许可证费用属于系统建成后运营阶段的投入,所以属于运营成本;销售额同比提高和应用服务器数量减少都意味着系统收益的增加,可以直接量化,所以属于有形收益;而客户满意度增加同样能够增加系统收益,但是无法直接量化,所以属于无形收益。
【问题3】
投资回收期就是投资收回的期限,也是用系统方案所产生的净现金收入回收初始全部投资所需要的时间。对于投资者来讲,投资回收期越短越好,从而减少投资的风险。计算投资回收期时,根据是否考虑资金的货币时间价值,可分为静态投资回收期和动态投资回收期。投资收益率又成为投资利润率,是指投资收益占投资成本的比率,用来反映投资的收益能力。各指标计算方法:
(1)静态投资回收期=累计净现金流量开始出现正值的年份数-1+|上年累计净现金流量|/当年净现金流量;
(2)动态投资回收期=累计折现值开始出现正值的年份数-1+|上年累计折现值|/当年折现值;
(3)投资收益率=投资收益/投资成本×100%。
### 第 2 题
阅读以下关于系统设计的叙述,在答题纸上回答问题1至问题3。
某软件公司为电子商务企业开发一套网上交易订单管理系统,以提升服务的质量和效率。在项目之初,项目组决定采用面向对象的开发方法进行系统开发,并对系统的核心业务功能进行了分析,具体描述如下:
注册用户通过商品信息页面在线浏览商品,将需要购买的商品添加进购物车内, 点击“结算”按钮后开始录入订单信息。
用户在订单信息录入页面上选择支付方式,填写并确认收货人、收货地址和联系方式等信息。点击“提交订单”按钮后产生订单,并开始进行订单结算。
订单需要在30分钟内进行支付,否则会自动取消,用户也可以手工取消订单。
用户支付完成,经确认后,系统开始备货,扣除该商品可接单数量,并移除用户购物车中的所有商品资料。
生成订单表单,出货完毕,订单生效。为用户快递商品,等待用户接收。
用户签收商品,交易完成。
图2-1 订单处理状态图
答案与解析
- 试题难度:一般
- 知识点:案例分析>系统分析
- 试题答案:【问题1】(1)实体类。实体类映射需求中的每个实体,保存需要存储在永久存储体中的信息,例如,用户、商品等。
(2)控制类。控制类是用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模。例如,结算、备货等。
(3)边界类。边界类用于封装在用例内、外流动的信息或数据流。例如,浏览器、购物车等。
【问题2】
(1)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现系统的行为,而非处理过程;而流程图着重描述处理过程。
(2)流程图一般都限于顺序进程,而活动图则可以支持并发进程。
(3)活动图是面向对象的,而流程图是面向过程的。
【问题3】
(a)取消
(b)待结算
(c)大于30分钟
(d)订单生效
(e)用户签收 - 试题解析:本题主要考查考生对于软件系统设计的理解、掌握和应用。在解答该问题时,应认真阅读题干中给出的需求描述,然后进行类、活动图和状态图建模。【问题1】
识别设计类是面向对象设计过程中的重要工作,设计类表达了类的职责,即该类所担任的任务。在系统设计过程中,类可以分为三种类型:实体类、边界类(或接口类)和控制类。
实体类映射需求中的每个实体,实体类保存需要存储在永久存储体中的信息。题干描述中商品、订单、注册用户、送货信息、购物车等都是实体类。
边界类用于封装在用例内、外流动的信息或数据流。题干描述中商品信息页面、订单信息录入页面和订单表单都属于边界类。
控制类是用于控制用例工作的类,一般是由动宾结构的短语(“动词+名词”或“名词+动词”)转化来的名词。题干描述中订单结算、订单支付、备货、出货等都属于控制类。
【问题2】
本问题主要考查考生对活动图和流程图基础概念的理解。
活动图和流程图的主要区别是:
(1)活动图是面向对象的,而流程图是面向过程的。
(2)活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。
(3)活动图能够表示并发活动的情形,而流程图不能。
【问题3】
本问题主要考查状态图建模的理解和应用。在面向对象的设计过程中,状态图(ststechart diagram)描述了一个实体基于事件反应的动态行为。考生需要对需求进行分析,特别是业务处理过程进行深入理解的前提下完成状态图模型。具体结果如下图所示。
第 3 题
阅读以下关于嵌入式系统能耗管理设计的描述,在答题纸上回答问题1至问题3。
随着嵌入式系统智能化技术的持续发展,系统的能耗问题已成为亟待解决的难题。某宇航公司研发的一款手持式野外辅助装备,需要较长的巡航时间,由于设计时对功耗问题考虑不周,使得产品出现了批次责任事故。公司领导决定抽调王工等5人组建专门的攻关小组,要求在三个月内完成故障归零。王工接到任务后,经反复论证 与实验,给公司提交了一份基于软件动态节能的改进方案,得到了领导及专家的好评。
表3-1实时任务事件参数表
图3-1 任务调度算法
图3-2 设备s1的功率随时间变化情况
**答案与解析** - 试题难度:较难 - 知识点:案例分析>嵌入式方向 - 试题答案:【问题1】
静态节能技术是在编译时刻对代码扫描,找出可以针对目标平台特性优化的部分进行代码重构。
动态节能技术是在设备运行时根据任务负载、功率与输入电压平方的线性关系等进行运行状态以达到节能的技术,主流的动态节能技术有动态电压调节、动态频率调节、动态电源管理、动态电压缩放、体偏压调节、自适应衬底偏置等。
【问题2】
在不违背时限,保证延迟的前提下,合理调度任何到各设备上,求得最佳调度以降低系统能耗。
设备调度策略是直接影响任务实时性能的因素。
【问题3】
s1、s2和s3在不考虑节能调度算法的情况下,100ms周期内的能耗都是60×100=6000mw。
根据图3-2,在考虑了节能调度算法的情况下:
s1的能耗:60×10+60×10+10×20+30×10+60×10+60×10+10×20+30×10 = 3400mw
s1的节能比:(6000-3400)/6000=0.43。
s2的能耗:60×10+60×20+60×10+10×30+30×10+60×20 = 4200mw
s2的节能比为:(6000-4200)/6000=0.3。
s3的能耗:60×10+10×10+30×10+60×30+60×10+60×10+60×10+10×10 = 4700mw
s3的节能比:(6000-4700)/6000=0.22。
本题主要考查考生对嵌入式系统基本知识的掌握程度,尤其是对手持设备节能管理技术的应用。
手持设备的智能化已成为未来嵌入式系统的发展方向,而嵌入式系统的能耗问题始终是嵌入式系统发展的瓶颈。本题首先通过一款手持式野外辅助装备出现待机时间短问题开展了论述,以提问的方式考查考生对节能技术的知识掌握能力,能否分清楚常用的静态/动态节能技术内涵与区别,在分清出动态节能通常采用的方法基础上,以便更好理解后面两个问题;其次,针对动态节能技术,考查考生对设备调度策略的核心算法知识的了解程度;最后,通过一个任务与设备能耗调度事例,考查考生对实际问题的分析和设计能力。此类题目要求考生认真阅读题目对问题的描述,通过对动态能耗管理知识掌握,采用总结、概括和分析等的方式,可从问题描述中发现问题的相关性,以正确回答问题。
【问题1】
本问题提到的手持式野外辅助装备类似于我们日常的手机产品,其电池的待机时间是手持设备的关键考核指标,节能技术是在设备设计时重点要解决的问题。通常节能技术包含了静态节能和动态节能。
静态节能技术主要是利用硬件的能耗特性,将节能方法纳入产品的设计中。此技术能够显著地减少系统局部组件所消耗的能力。静态节能一般采用两种方法,其一是可以通过设计低功耗硬件来节省能量,然而,硬件电路设计方面可优化的步幅已越来越少,且成本大;其二是可以通过使用编译优化技术来生成能量感知的机器代码,这种技术虽然成本小,但是对于降低功耗的潜力不大。
动态节能技术主要在系统运行过程中根据负载的变化来降低能耗,利用底层硬件提供的特征,从系统运行范围内降低系统总体功耗,从而能够节省大量的能量。动态节能通常采用三种技术,其一是动态调频调压技术;其二是动态电源管理技术;其三是任务调度技术。
(1)动态调频调压技术(Dynamic Voltage and Frequency Scaling DVFS)依据处理器的功耗与电路的运行电压之间存在的平方关系,在获取处理器的实时使用情况后,调整电路的运行电压、动态升高或降低运行频率,从而减少能量消耗。
(2)动态电源管理技术(Dynamic Power Management)是在系统运行过程,根据系统的运行情况切换系统各个组件的状态,在满足系统正常服务请求的前提下,使得系统组件处于工作状态的时间最短,从而节省能量。
(3)任务调度技术在保证系统中所用任务满足截止期的情况下,充分利用系统的空间和时间,安排系统中各个任务的运行次序和调度关系,减少任务运行时的抢占次数,减少任务上下文切换次数,从而通过调度来降低系统的运行能耗。
【问题2】
考生首先可从题干“由于设计时对功耗问题考虑不周,使得产品出现了批次责任事故”进行分析,该宇航公司研发的手持式野外辅助装备如果采用静态节能技术,势必带来严重的经济损失(所有设备硬件要重新替换),而采用动态节能技术,可在满足应用需求的基础上,缩短时间周期,降低成本。因此,王工程师提出了采用设备调度节能策略来降低系统能耗。设备调度节能策略的核心思想是:由于系统中能量消耗的主要来源是系统的各种硬件设备,设备工作与关闭两种状态功耗消费差距很大,为了使系统能够节约更多的能量,应该尽可能晚的唤醒一个设备,既在应用任务使用设备时才打开设备。也就是说,在有效调度时刻唤醒设备常常能够节省更多的能量,同时能够及时响应任务的访问请求,保证满足系统的实时性要求,这种算法称为“设备有效时刻调度策略”。
【问题3】
本问题给出了网工编制的节能方案中采用的“有效时刻调度策略”的事例分析,通过事例分析,考生可计算出采用有效调度时刻的策略,在保证周期任务按时完成的前提下,设备能耗消费最少。应仔细分析题干,重点关注“假设初始状态(t=0)设备处于工作状态,且所有设备的工作状态功率为60mW/ms,转换功率为30mW/ms,睡眠功率为10mW/ms。同时假设设备被唤醒的转换时间为10ms。设备待机后被关闭的超时值为10ms”的条件限制,既分析案例仅仅关注周期任务的第一个主周期(t=0开始的100ms)对设备管理;设备的功率在不同的状态(工作、装换和睡眠)其功耗不一样,而节能策略恰恰利用了这一特点,达到节能的作用。考生还应注意到设备从工作到睡眠,不存在装换事件,而从睡眠到工作,存在10ms的装换,并存在不一样的功耗,图3-2已给了t1任务对设备s1的控制过程,如果考生理解了算法的核心思想,在图3-2的提示下,就不难算出三个设备在第一个100ms周期内的各自的功耗,及各自的设备的节能比。
第 4 题
阅读以下关于数据库设计的叙述,在答题纸上回答问题1至问题3。
某航空公司要开发一个订票信息处理系统,以方便各个代理商销售机票。开发小组经过设计,给出该系统的部分关系模式如下:
航班(航班编号,航空公司,起飞地,起飞时间,目的地,到达时间,剩余票数,票价)
代理商(代理商编号,代理商名称,客服电话,地址,负责人)
机票代理(代理商编号,航班编号,票价)
旅客(身份证号,姓名,性别,出生日期,电话)
购票(购票单号,身份证号,航班编号,搭乘日期,购票金额)
在提供给用户的界面上,其核心功能是当用户查询某航班时,将该航班所有的代理商信息及其优惠票价信息,返回给用户,方便用户购买价格优惠的机票。在实现过程中发现,要实现此功能,需要在代理商和机票代理两个关系模式上进行连接操作,性能很差。为此开发小组将机票代理关系模式进行了扩充,结果为:
机票代理(代理商编号,航班编号,代理商名称,客服电话,票价)
这样,用户在查找信息时只需对机票代理关系模式进行查询即可,提高了查询效率。
<div style="text-align: center; clear: both;"> <img src="../images/shiti/2021-04/608/2rS9Zu4cKr.png" style="max-width: 100%;"></div>
假设两个代理商执行之前,该航班仅剩1张机票。<br>
1)请说明上述两个代理商操作的结果。<br>
2)并发操作会带来数据不一致的问题,请具体说明3种问题。<br>【问题3】(10分)<br>
为了避免问题2中的问题,开发组使用库的读写锁机制,操作序列变为表4-2所示。
<div style="text-align: center;">
<strong>表4-2 加入读写锁机制后,两个代理商可能的操作序列</strong></div>
<div style="text-align: center; clear: both;"> <img src="../images/shiti/2021-04/254/dPKzPY54df.png" style="max-width: 100%;"></div>
请填写表中的空白项,并用150字以内的文字说明读写锁机制的缺点。</div>
答案与解析
- 试题难度:一般
- 知识点:案例分析>数据库方向
- 试题答案:【问题1】1)不满足3NF的关系模式存在存储异常问题,包括数据冗余和修改异常。
(1)数据冗余:如果某代理商代理100个航班的售票,那么在机票代理的关系模式中就要出现100个元组,该代理商的名称、客服电话也随之重复出现100次。
(2)修改异常:由于上述冗余问题,当需要修改该代理商的客服电话时,就要修改100个元组中的客服电话值,否则就会出现客服电话值不一致的现象。
2)解决存储异常的典型方案是进行模式分解,但在本题中机票代理已是逆规范化的产物,故可使用触发器在修改时,检查并更新对应数据的方式来解决数据不一致的问题。
【问题2】
1)2个代理商都成功售出1张票,剩余票数为0。
2)数据库的并发操作会带来一些数据不一致问题,例如,丢失修改、读脏数据和不可重复读等。
(1)丢失修改。事务A与事务B从数据库中读入同一数据并修改,事务B的提交结果破坏了事务A提交的结果,导致事务A的修改被丢失。
(2)读脏数据。事务A修改某一数据,并将其写回磁盘,事务B读取同一数据后,事务A由于某种原因被撤消,这时事务A已修改过的数据恢复原值,事务B读到的数据就与数据库中的数据不一致,是不正确的数据。
(3)不可重复读。事务A读取数据后,事务B执行了更新操作,事务A使用的仍是更新前的值,造成了数据不一致性。
【问题3】
(1)加写锁
(2)加读锁
(3)加写锁
(4)等待
(5)得到通知
(6)加写锁
采用封锁的方法虽然可以有效防止数据的不一致性,但封锁本身也会产生一些麻烦,最主要就是死锁问题。也就是说,多个事务申请不同封锁,由于申请者均拥有一部分封锁权,而又需等待另外事务拥有的部分封锁而引起的永无休止的等待。 - 试题解析:本题考查数据库设计及应用,属于比较基础的题目。【问题1】
本问题考查数据库设计中关系范式规范化和反规范化的相关知识。众所周知,关系范式规范化的结果是关系越来越小,关系范式的概念越单一。但是要解答用户的问题,往往会涉及到多表关联操作,影响查询效率。因此应用中经常采用反规范化的方法来提高查询效率。因此开发小组对机票代理关系模式的修改属于反规范化。
但是反规划带来的直接结果是数据冗余存放,如题干描述的机票代理中,代理商名称和客服电话数据就存在于机票代理和代理商两个模式中。这种情况会引起更新异常,比如当代理商名称或客服电话变更时,不仅需要修改代理商关系模式,还需要修改机票代理关系模式,否则会造成数据不一致。
要解决范式规范化带来的问题,主要是保持两个地方存储数据的一致性。常见的方法有两种:一种是通过程序实现,在业务程序中,当修改代理商关系模式数据时,程序同步修改机票代理关系模式;另一种是通过触发器实现,在代理商关系模式上加修改触发器,当修改代理商关系模式数据时,程序同步修改机票代理关系模式。
【问题2】
本问题考查数据库设计中的并发问题和数据库事务隔离级别的基本概念。数据库为众多用户同时提供服务,如果多个用户产生了对同一个数据的并发读取操作,就会产生并发问题。
表4-1描述的是并发的一种可能情况,在允许脏读的条件下,第一个代理商能够正确售票。第二个代理商查询剩余票数时正确,为1张机票,但剩余票数减一操作时出错,因为该机票已经被第一个代理商售出,此时第二个代理商无票可售。
并发问题会造成数据的不一致。在数据库事务隔离界别定义中,定义了并发问题会造成的三种现象,分别是丢失修改、读脏数据和不可重复读,而根据这三种现象,划分了4种不同的事务隔离级别。
【问题3】
本问题考查数据库中基本的读写锁机制,通过提供读锁和写锁的相互阻塞,来解决并发问题。锁机制的基本概念是读取操作之前先加锁,成功后方能读写数据。读操作加读锁,写操作加写锁。读锁会阻塞写锁,即加了读锁的数据,在未释放读锁之前不能加写锁,可以加读锁;同样,写锁会阻塞读锁,在写锁未释放前,不能再加读锁和写锁。其实质是使得相互冲突的并发读写操作,变为串行化读写操作,来解决并发问题。
因此,根据读写锁的基本机制,表4-2中的空应该填写的内容是(1)加写锁、(2)加读锁、(3)加写锁、(4)被阻塞、(5)得到通知、(6)加写锁。
第 5 题
阅读以下关于Web应用的叙述,在答题纸上回答问题1至问题3。
某软件企业拟开发一套基于Web的云平台配置管理与监控系统,该系统按租户视图、系统管理视图以及业务视图划分为多个相应的Web应用,系统需求中还包含邮件服务、大文件上传下载、安全攻击防护等典型Web系统基础服务需求。
答案与解析
- 试题难度:较难
- 知识点:案例分析>系统设计
- 试题答案:【问题1】(1)基础服务支持:因为WebX在阿里巴巴和淘宝用了很多年,对于超大访问量的电子商务网站,WebX经受了考验,被证明是成熟可靠的。
(2)多应用支持:WebX和Spring MVC一样,完全建立在Spring框架之上,可以使用Spring的所有特性。WebX被设计成多个层次,层次间的分界线很清晰,每个层次都足够开放和易于扩展。
(3)可扩展性:WebX对Spring做了扩展,一个组件可以扩展另一个组件,也可以被其他组件扩展。这种机制使WebX具有较好的扩展性,且比未经扩展的Spring更易使用。
【问题2】
(1)A (2)B (3)B (4)A (5)A (6)B
【问题3】
(1)√ (2)× (3)× (4)√ - 试题解析:本题关注大型互联网应用设计,主要考查大型互联网应用开发中的开发架构选择、持久化处理及系统集成等相关技术。【问题1】
本问题考查大型互联网应用的开发架构选择,主要关注Alibaba的WebX框架与轻量级Spring MVC框架的对比。WebX框架是Alibaba公司开发的开源开发框架,WebX本身划分为SpringExt、WebX Framework、WebX Turbine三个主要层次。其中SpringExt层基于Spring,提供扩展组件的能力,是整个框架的基础;WebX Framework层基于Server API,提供各种基础服务;WebX Turbine层基于WebX Framework对网页开发提供进一步支持。从多应用支持角度看,WebX通过多应用路径生成机制,可自动避免一个工程中多个应用URL路径出现冲突;从基础服务支持角度看,WebX框架属于重量级Web开发框架,提供了创建一个Web应用所需要的大量基础功能,系统中集成了前端模板、持久化以及常用的后端服务,包括邮件服务、URL路径映射、后端表单验证、安全攻击防护机制、资源加载、文件上传等大量服务;从可扩展性角度看,WebX中的SpringExt子框架是怼Spring框架的扩展,能简化Spring的配置,加强了Spring组件的扩展性;开发者可以定制、甚至重写WebX框架逻辑,实现新的框架或功能。综上不难看出,WebX框架比传统Spring MVC框架具有更明显的优势,可以更好支持大型复杂Web应用的开发。
【问题2】
本问题考查Hibernate与MyBatis两种持久化方案对不同持久化需求的支持情况。Hibernate与MyBatis均是开源对象/关系映射(ORM)框架,都可以实现JDBC的对象封装,将POJO与数据库表建立映射关系,从而支持在Java程序中使用对象编程思维来操作数据库。二者均可自动生成简单基本的DAO层方法。相对而言,Hibernate开发简洁,因此SQL语句通常是自动生成的,而MyBatis中的SQL语句通常是手工编写的,因此当系统中需要对复杂查询操作的SQL语句进行人工调优时,MyBatis更为方便;Hibernate支持自动化的多表关联操作,但使用时一般要求数据库中的关系设置与实际关联操作有直接的对应关系;由于Hibernate使用时通常自动生成相应的SQL语句,因此具备良好的数据库移植性,而MyBatis中手动编写的SQL语句则通常需要针对不同厂商的数据库进行修改,可移植性不好。
【问题3】
本问题考查Web服务集成方案的选择。REST风格RPC与SOAP RPC是两种常用的Web服务集成方案。相对而言,SOAP将Web服务封装为经典程序设计模型中的对象RPC模式,从而支持Web服务的调用,而REST风格RPC则将Web服务映射为标准的HTTP操作,属于更轻量级的服务集成方案。在REST方案中,HTTP标准的GET、POST、PUT、DELETE操作可直接映射为对题目中配置管理数据和监测数据的CRUD等无状态操作,而SOAP方案则支持上下文及会话状态管理,更适合于需多步执行的有状态操作;且由于REST风格RPC基于标准HTTP协议且无状态,因此客户端请求的处理可以在任何服务器上执行,很容易在服务端实现基于HTTP的负载均衡,从而使服务器具备良好的横向可扩展性;而SOAP作为W3C所定义的SOA架构核心规范之一,基于同架构下的WS-Security规范可提供良好的安全性支持,但REST方案中则缺少对服务安全性的直接支持。