阅读以下关于软件系统分析的叙述,在答题纸上回答问题1至问题3。
【说明】
某软件企业为电信公司开发一套网上营业厅系统,以提升服务的质量和效率。项目组经过分析,列出了项目开发过程中的主要任务、持续时间和所依赖的前置任务,如表1-1所示。在此基础上,绘制了项目PERT图。
表1-1网上营业厅系统PERT图
问题内容:
【问题1】(10分)
PERT图采用网络图来描述一个项目的任务网络,不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况。针对表1-2中关于PERT图中关键路径的描述(1)〜(5),判断対PERT图的特点描述是否正确,并说明原因。
表1-2
PERT图特点描述
【问题2】(5分)
根据表1-1所示任务及其各项任务之间的依赖关系,计算对应PERT图中的关键路径及项目所需工期。
【问题3】(10分)
根据表1-1所示任务及其各项任务之间的依赖关系,分别计算对应PERT图中任务C~G的松弛时间(SlackTime),将答案填入(a)〜(e)中的空白处。
此题就是一道送分题,没有什么好说的,唯一错的地方就是关键路径越多,项目越复杂,这个是正确的,关键路径越多,项目管理上更加复杂,风险度也越高。
2、阅读以下关于基于MDA(Model Driven Archtecture)的软件开发过程的叙述,在答题抵上回答问题1至问题3。
【说明】
某公司拟开发一套手机通讯录管理软件,实现对手机中联系人的组织与管理。公司系统分析师王工首先进行了需求分析,得到的系统需求列举如下:
用户可通过查询接口查找联系人,软件以列表的方式将查找到的联系人显示在屏幕上。显示信息包括姓名、照片和电话号码。用户点击手机的“后退”按钮则退出此软件。
点击联系人列表进入联系人详细信息界面,包括姓名、照片、电话号码、电子邮箱、地址和公司等信息。为每个电话号码提供发送短信和拨打电话两个按键实现对应的操作。用户点击手机的“后退”按钮则回到联系人列表界面。
在联系人详细信息界面点击电话号码对应的发送短信按键则进入发送短信界面。界面包括发送对象信息显示、短信内容输入和发送按键三个功能。用户点击发送按键则发送短信并返回联系人详细信息界面;点击“后退”按钮则回到联系人详细信息界面。
在联系人详细信息界面内点击电话号码对应的拨打电话按键则进入手机的拨打电话界面。在通话结束或挂断电话后返回联系人详细信息界面。
在系统分析与设计阶段,公司经过内部讨论,一致认为该系统的需求定义明确,建议基于公司现有的软件开发框架,采用新的基于模型驱动架构的软件开发方法,将开发人员从大量的重复工作和技术细节中解放出来,使之将主要精力集中在具体的功能或者可用性的设计上。公司任命王工为项目技术负责人,负责项目的开发工作。
【问题1】
请用300字以内的文字,从可移植性、平台互操作性、文档和代码的一致性等三个方面说明基于MDA的软件开发方法的优势。
【问题2】(8分)
王工经过分析,设计出了一个基于MDA的软件开发流程,如图2-1所示。请填写图2-1中(1)~(4)处的空白,完成开发流程。
【问题3】(10分)
王工经过需求分析,首先建立了该手机通信录管理软件的状态机模型,如图2-2所示。请对题干需求进行仔细分析,填写图2-2中的(1)~(5)处空白。
【问题1我的解答】
可移植性:
互操作性:从平台无关模型到平台相关模型的转变,保证了平台之间的互操作性;
文档代码一致性:从代码框架生成代码,从而保证文档代码一致;
【问题2我的解答】
1.概要设计
2.详细设计
3.平台无关模型
4.平台相关代码
【问题3我的解答】
1.退出此软件
2.联系人详细信息界面
3.点击后退按钮
4.点击拨打电话按键
5.拨打电话界面
此题第三空的十分是送分题,而第一空都需要对模型驱动框架有一定的了解的前提下作答才可以,第三个问题考查了状态机模型;
第二个问题考查了开发流程方法,类图和序列图都属于UML建模工具,所以第二空就是UML建模(这个理解的角度不同,在我作答的时候,UML图都用在详细设计中,囧),而第一空多了操作脚本和模型描述,有了模型的描述,但没有跨平台,所以就该写与平台无关模型;
平台无关的模型需要通过映射机制转化为平台有关的模型,这个时候就需要使用组件模型模版;最后一空就是模型生成的源代码;这四个选项第一空觉得有些难推理出来,其他还是比较容易作答的。
在这里模型驱动开发也算是一个新的概念,但没有模型驱动框架的知识,照样也是可以回答第三和第二空的;通过问题2也间接的告诉我们在自己的项目中,该如何使用模型驱动框架来设计开发流程,推进开发工作;
在模型驱动框架中,首先我们该使用UML对软件建模,然后描述平台,建模与平台无关的模型,把与平台无关模型转化为平台相关模型后,最后使用代码框架来生成源代码并发布;
最后再看看第一问,第一问只有了解了一定的模型驱动框架的知识才可以很好的作答。说到MDA,首选让我联想到的便是TDD测试驱动开发,模型驱动框架这里说了三个特征:可移植性,代码文档一致性,平台互操作性;而测试驱动开发也有测试代码自动生成,跨平台测试等相似的特点;
先扯扯MDA的可移植性,在MDA中有平台无关的模型,无关模型可以转化为平台相关的模型,而且一个无关模型可以转化为多个平台相关的模型,这样我想移植到哪里,就转化为该平台上能使用的相关模型,那么可移植性可想而知就是非常强大了;
文档和代码的一致性可以通过自动化生成来实现,这个总算是答对的;
而平台互操作的说明是整个项目开发都是使用这个高标准话的开发流程,那么平台互操作性也是很好。
关于MDA这种框架的核心技术为什么会存在?这个在此题的背景说明中也进行了很好的说明,把开发人员从繁杂琐碎的开发工作中解放出来,把主要的精力可以集中在功能的实现和可用性设计上;这个解释和TDD又可以不谋而合了,TDD让我们可以更加重视单元测试,同时更注重测试代码的接口设计。
3、阅读以下关于安全攸关嵌入式系统相关技术的描述,在答题纸上回答问题1至问题3。
【说明】
某公司机电管理系列产品被广泛应用于飞行器后,外场事故频繁发生,轻则飞机座舱显示机电设备工作异常,重则系统预警,切入备份运行。这些事故给航空公司带来重大经济损失。
公司领导非常重视航空公司的问题反馈,责令公司王总带队到现场进行故障排查。经过一个多月的排查,故障现象始终未复现,同时,公司实验室内也在反复复现故障,结果未取得显著成效,但发现产品存在偶然丢失协议包的现象。随后,公司领导组织行业专家召开故障分析会。王总在会上对前期故障排查情况进行了说明,指出从外场现象看CCDL协议包丢失是引起系统报警、切换的主要原因。图3-1给出了机电管理产品的工作原理,机电管理系统主要承担了对飞行器的刹车、燃袖和环控等子系统进行监视与控制,它对飞行器而言是安全攸关系统,因此,从系统结构上采用了双余度计算机系统。具体工作流程简要说明如下:
1.机电管理系统由1号计算机和2号计算机组成,双机互为余度备份;
2.双机中分别驻留了一个100ms周期的CCDL任务,完成双机间的交叉对比和实时监控等工作。10ms定时器作为任务的工作频率;
3.交叉对比协议包包含一组“AA55”报头、消息长度、数据和校验码;
4.2号机将协议包通过422总线发送给1号机(422总线接口芯片有8级缓冲);
5.1号机通过中断方式将422总线数据接收到大环形缓冲区中(大小为4096B);
6.100ms的CCDL定时任务将大环形缓冲区的数据以512B为单位拷贝到小环形缓冲区中(大小512B);
7.CCDL任务按照协议包格式解析小环形缓冲的数据,如果校验错误,丢弃当前协议包;
8.在协议包格式正确的情况下,进行数据交叉比对,比对正确则输出;比对不正确,并连续不正确超过门限,则报警。 问题内容: 【问题1】(12分)
王总汇报时指出,在设计安全攸关系统软件时,往往不重视安全攸关软件设计方法,
不遵守C语言安全编码规范,导致程序质量较差,代码中存在支全隐患。请简要说明表
3-1给出的C语言代码是C语言安全编码标准中(如:MISARC标准)不允许采用的代码 结构的原因。 表3-1 C语言代码实例
【问题2】(10分)
请根据自己对图3-1所示机电管理系统工作原理的分析,用300字以内的文字说明本实例中可能存在哪三方面数据传输时丢失协议包现象,并简要说明原因。
【问题3】(3分)
针对以上分析出的三种丢包原因,请举例给出两种以上的修改丢包bug的可能的方法
如果有嵌入式软件开发经验,此题真心不难,在第二问中问什么时候才会丢包,回答这个问题需要有一定的设计经验,缓冲区不够缓冲的时候会丢包,小环形缓冲区出现校验错误的时候会发生丢包,做协议包交叉比对时,发现数据不一致,也会发生丢包。
如何防止丢包,增加缓冲区的大小,可有效避免丢包,升级总线到485,那么也可以避免丢包(虽然我还不清楚485与422有啥区别),防止丢包其实就是增强了系统的可靠性。
4、阅读以下关于数据管理的叙述,在答题纸上回答问题1至问题3。
【说明】
某软件企业开发了一套新闻社交类软件,提供常见的新闻发布、用户关注、用户推荐、新闻点评、新闻推荐、热点新闻等功能,项目采用MySQL数据库来存储业务数据。系统上线后,随着用户数量的增加,数据库服务器的压力不断加大。为此,该企业设立了专门的工作组来解决此问题。
张工提出对MySQL数据库进行扩展,采用读写分离,主从复制的策略,好处是程序改动比较小,可以较快完成,后续也可以扩展到MySQL集群,其方案如图4-1所示。李工认为该系统的诸多功能,并不需要采用关系数据库,甚至关系数据库限制了功能的实现,应该采用NoSQL数据库来替代MySQL,重新构造系统的数据层。而刘工认为张工的方案过于保守,对该系统的某些功能,如关注列表、推荐列表、热搜榜单等实现困难,且性能提升不大;而李工的方案又太激进,工作量太大,短期无法完成,应尽量综合二者的优点,采用Key-Value数据库+MySQL数据库的混合方案。
经过组内多次讨论,该企业最终决定采用刘工提出的方案。 问题内容:
【问题1】(8分)
张工方案中采用了读写分离,主从复制策略。其中,读写分离设置物理上不同的主/从服务器,让主服务器负责数据的(a)操作,从服务器负责数据的(b)操作,从而有效减少数据并发操作的(c),但却带来了(d)。因此,需要采用主从复制策略保持数据的(e)。
MySQL数据库中,主从复制是通过binary log来实现主从服务器的数据同步,MySQL数据库支持的三种复制类型分别是(f) 、 (g)
、 (h)。 请将答案填入(a)~(h)处的空白,完成上述描述。
【问题2】(8分)
李工方案中给出了关系数据库与NoSQL数据的比较,如表4-1所示,以此来说明该新闻社交类软件更适合采用NoSQL数据库。请完成表4-1中的(a)
~ (d)处空白。
表4-1关系数据库与NoSQL数据库特征比较【问题3】(9分)
刘工提出的方案采用了Key-Value数据库+MySQL数据库的混合方案,是根据数据的读写特点将数据分别部署到不同的数据库中。但是由于部分数据可能同时存在于两个数据库中,因此存在数据同步问题。请用200字以内的文字简要说明解决该数据同步问题的三种方法。
此题考查数据库设计。第一题除了MySQL的机制外,其他都是比较基本的问题,第二空NoSQL考的也比较基础,如果能很好的区分关系数据库与NoSQL的话,问题也不大;第三空考查了数据库的同步问题。
在主从数据库中,主数据库负责写数据,从数据库负责读出数据来显示。采用主从数据库主要还是从性能上面的考虑,解决了单个数据库读与写的负担大,可能会出现延迟的情况,但是采用主从数据库在带来速度提升的同时,也会产生读到数据没有及时更新的情况,为了解决这个情况,我们要对其进行主从数据库之间的数据同步。
主从数据库的同步方法这里介绍了三种:第一种是使用触发器完成同步;第二种是使用定时定期的任务来实现同步;第三种是通过数据库插件来完成数据的同步;第三种方法让我想不到。在MYSQL中数据库的复制是基于这三种方法:基于SQL语句的复制,基于行数据的复制;混合复制模式。主从数据库的运用一般常用在大型Web型信息系统的开发当中。
最后在第二问中考查到了NoSQL数据库,NoSQL它的意思是Not Only SQL;它一般用在海量数据的存储过程中,而且水平扩展性比关系型数据库强得多;在数据结构上,关系数据库是结构化数据,NOSQL是非结构化的数据;关系型数据库是强事务型数据库,NoSQL是弱事务型的,而且NoSQL还有弱实时性的特点。
5、阅读以下关于Web应用系统的叙述,在答题纸上回答问题1至问题3。
【说明】
某公司因业务需要,拟在短时间内同时完成“小型图书与音像制品借阅系统”和“大学图书馆管理系统”两项基于B/S的Web应用系统研发工作。
小型图书与音像制品借阅系统向某所学校的所有学生提供图书与音像制品借阅服务。所有学生无需任何费用即可自动成为会员,每人每次最多可借阅5本图书和3个音像制品。图书需在1个月之内归还,音像制品需在1周之内归还。如未能如期归还,则取消其借阅其他图书和音像制品的权限,但无需罚款。学生可通过网络查询图书和音像制品的状态,但不支持预定。
大学图书馆管理系统向某所大学的师生提供图书借阅服务。有多个图书存储地点,即多个分馆。捜索功能应能查询所有的分馆的信息,但所有的分馆都处于同一个校园内,不支持馆际借阅。本科生和研究生一次可借阅16本书,每本书需在1个月内归还。教师一次可借阅任意数量的书,每本书需在2个月内归还,且支持教师预定图书。如预定图书处于被借出状态,系统自动向借阅者发送邮件提醒。借阅期限到达前3天,向借阅者发送邮件提醒。超出借阅期限1周,借阅者需缴纳罚款2元/天。存在过期未还或罚款待缴纳的借阅者无法再借阅其他图书。图书馆仅向教师和研究生提供杂志借阅服务。
基于上述需求,该公司召开项目研发讨论会。会议上,李工建议开发借阅系统产品线,基于产品线完成这两个Web应用系统的研发工作。张工同意李工观点,并提出采用MVP(Model View Presenter)代替MVC的设计模式研发该产品线。 问题内容:
【问题1】(6分)
软件产品线是提升软件复用的重要手段,请用300字以内的文字分别简要描述什么是软件复用和软件产品线。
【问题2】(16分)
产品约束是软件产品线核心资产开发的重要输入,请从以下已给出的(a)~(k)各项内容,分别选出产品的相似点和不同点填入表5-1中(1)~(8)处的空白,完成该软件产品线的产品约束分析。
(a)项目当前状态; (b)项目操作; (c)预定策略; (d)会员分类; (e)借阅项目数量; (f)项目的类型和属性; (g)检索功能;
(h)与支付相关的用户信息; (i)图书编号; (j)教师 (k)学生
表5-1产品约束分析
【问题3】(3分)
MVP模式是由MVC模式派生出的一种设计模式。请说明张工建议借阅系统产品线采用MVP模式代替MVC模式的原因。
【问题1标准答案】
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等切有关方面。
软件产品线是个产品集合,这些产品共享个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线是个十分适合专业的开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本,
【问题2标准答案】
(1) (4) f项目的类型和属性: i图书编号g检素功能(2) a项目当前状态(3) b项目操作
(5) (8) d会员分类: j教师k学生h与支付相关的用户信息(一个要付费,一个不要)
(6) e借阅数量(7) c预定策略
【问题3标准答案】
MVP与MVC相比,最大的差异在于层次之类的耦合度不一样。MVP将M与V彻底分离,所有交互均通过P传达,这样,有利于软件构件及架构的重用,也利于修改,有良好的可扩展性。
本体考察了Web应用框架和软件产品线软件复用等架构方面的知识;
软件复用就是使用已有的软件建立新的软件,软件复用我一直也以为只是代码的复用,其实不然,除了代码以外,知识,设计体系结构等的复用也包括其中,
而软件产品线是一个产品集合,这些产品都有一个公共的特征集,它是软件组织的一个开发方法,能够有效提高软件生产率和开发质量,缩短开发周期,降低开发成本。
在第三问中考察了MVC MVP之间的区别,MVP在MVC的基础上,进一步实现了M层和View层之间的解耦,所有的通信都需要经过P层,MVP的架构更加有利于架构的重用性,也更加方便于修改,提高了系统的可扩展性。
最后聚焦第二个问题,项目当前的状态是项目的通用数据,而我选择了项目的类型与属性;在标准答案中将项目的类型与属性:图书编号都归类到了相似点中;会员分类有教师和学生,原来属性都要写入表格中。
此类题型没有理论部分的支撑,但名为产品约束条件,所以对于原文背景的理解能力将决定获得的分数。这也是系分常考题。