【2018年】试题一 阅读以下关于软件系统设计的叙述,在答题纸上回答问题 1 至问题 3。
【说明】
某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、
竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项目组完成了需求调研,
现已进入到系统架构设计阶段。考虑到系统需求对架构设计决策的影响,项目组先列出了可能
影响系统架构设计的部分需求如下:
(a)用户界面支持用户的个性化定制;
(b)系统需要支持当前主流的标准和服务,特别是通信协议和平台接口;
(c)用户操作的响应时间应不大于 3 秒,竞拍板块不大于 1 秒;
(d)系统具有故障诊断和快速恢复能力;
(e)用户密码需要加密传输;
(f) 系统需要支持不低于 2G 的数据缓存;
(g)用户操作停滞时间超过一定时限需要重新登录验证;
(h)系统支持用户选择汉语、英语或法语三种语言之一进行操作。
项目组提出了两种系统架构设计方案:瘦客户端 C/S 架构和胖客户端 C/S 架构,经过对上述需求逐条分析和讨论,最终决定采用瘦客户端 C/S 架构进行设计。
【问题 1】 (8 分)在系统架构设计中,决定系统架构设计的非功能性需求主要有四类:操作性需求、性能需求、安全性需求和文化需求。请简要说明四类需求的含义。
系统性能需求(Performance Requirements):指响应时间、吞吐量、准确性、有效性、资源利用率等与系统完成任务效率相关的指标。可靠性、可用性等指标归为此类。
安全性需求(Security Requirements):系统向合法用户提供服务并阻止非授权用户使用服务方面的系统需求。
操作性需求(Operational Requirements):与用户操作使用系统相关的一些需求。
文化需求(Cultural Requirements):带有文化背景因素的系统需求。
【问题 2】 (8 分) 将题干所给出的系统需求(a)~(h)分别填入(1) ~ (4)。
争议项:(a)操作性需求 或 文化需求 (d)操作性需求 或 性能需求
【问题 3】(9 分)请说明瘦客户端 C/S 架构能够满足题干中给出的哪些系统需求(只需要回答出三个系统需求)。
瘦客户端C/S架构能更好满足:(a)(b)(d)(h)
(a)无论胖还是瘦,要做到用户界面的个性化都没有问题,但从更新的角度来看,胖客户端针对新增的个性化要求,更新起来比较困难。所以相对来说,瘦客户端更有优势。
(b)从单次实现来看,都能实现,但要随时保持最新,瘦客户更有优势。 (c)胖客户端,在客户端的运算能力强一些。
(d)瘦客户端将业务逻辑迁移到应用服务器上,所以有故障只要修复服务器上的内容,而胖客户端要更新所有客户端,工作量大,所以此情况下瘦客户端有优势。
(e)瘦客户端与胖客户端无明显差异。 (f)胖客户端做到2G数据缓存很容易,而瘦客户端不容易实现。 (g)瘦客户端与胖客户端无明显差异。
(h)瘦客户端与胖客户端均可做到,但若涉及到更新,瘦客户端有优势。
【2018年】试题二 阅读以下关于软件系统建模的叙述,在答题纸上回答问题 1 至问题 3。
【说明】
某公司欲建设一个房屋租赁服务系统,统一管理房主和租赁者的信息,提供快捷的租赁服务。本系统的主要功能描述如下:
- 登记房主信息。记录房主的姓名、住址、身份证号和联系电话等信息,并写入房主信息文件。
- 登记房屋信息。记录房屋的地址、房屋类型(如平房、带阳台的楼房、独立式住宅等)、楼层、租金及房屋状态(待租赁、已出租)等信息,并写入房屋信息文件。一名房主可以在系统中登记多套待租赁的房屋。
- 登记租赁者信息。记录租赁者的个人信息,包括:姓名、性别、住址、身份证号和电话号码等,并写入租赁者信息文件。
- 安排看房。已经登记在系统中的租赁者,可以从待租赁房屋列表中查询待租赁房屋信息。租赁者可以提出看房请求,系统安排租赁者看房。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。
- 收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。
- 变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。
【问题 1】(12 分)
若采用结构化方法对房屋租赁服务系统进行分析,得到如图 2-1 所示的顶层DFD。使用题干中给出的词语,给出图 2-1 中外部实体 E1~E2、加工 P1~P6 以及数据存储 D1~D4 的名称。
E1:房主 E2:租赁者
P1:登记房主信息 P2:登记房屋信息 P3:登记租赁者信息
P4:查询租赁房屋信息 P5:安排看房 P6:变更房屋状态
D1:房主信息文件 D2:租赁者信息文件 D3房屋信息文件
D4:看房记录文件
【问题 2】(5 分)若采用信息工程(Information Engineering)方法对房屋租赁服务系统进行分析,得到如图 2-2 所示的 ERD。请给出图 2-2 中实体(1)~ (5)的名称。
(1)房主 (2)房屋 (3)房屋 (4)租赁者 (5)看房记录(或房屋状态)有争议
【问题 3】 (8 分)
(1)信息工程方法中的“实体(entity)” 与面向对象方法中的“类(class)”之间有哪些不同之处?
(2)在面向对象方法中通常采用用例(Use Case)来捕获系统的功能需求。用例可以按照不同的层次来进行划分,其中的Essential Use Cases 和 Real Use Cases 有哪些区别?
(1)实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。
(2)Essential Use Cases
可翻译为抽象用例,而Real Use
Cases可翻译为基础用例。他们是区别在于:基础用例是实实在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。参考《系统分析师》11.5.2 用例模型
(1)包含关系。当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例。
【2018年】试题四 阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题 1 至问题 3.
【说明】
某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,该企业采用轻量型的开发架构(脚本语言+关系型数据库)研制了一套业务系统。业务开展后受到用户普遍欢迎,用户数和业务数量迅速增长,原有的数据库服务器已不能满足高度并发的业务要求。为此,该企业成立了专门的研发团队来解决该问题。
张工建议重新开发整个系统, 采用新的服务器和数据架构,解决当前问题的同时为日后的扩展提供支持。但是,李工认为张工的方案开发周期过长,投入过大,当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据,建议采用缓存工具 MemCache 来减轻数据库服务器的压力,这样开发量小,开发周期短,比较适合初创公司,同时将来也可以通过集群进行扩展。然而,刘工又认为李工的方案中存在数据可靠性和一致性问题,在宕机时容易丢失交易数据,建议采用 Redis 来解决问题。在经过充分讨论,该公司最终决定采用刘工的方案。
【问题 1】 (9 分)在李工和刘工的方案中,均采用分布式数据库缓存技术来解决问题。请说明分布式数据库缓存的基本概念。
表 4-1 中对 MemCache 和 Redis 两种工具的优缺点进行了比较,请补充完善表 4-1 中的空(1)~ (6)。
【问题 2】 (8 分)
刘工认为李工的方案存在数据可靠性和一致性的问题,请说明原因。
为避免数据可靠性和一致性的问题,刘工的方案采用 Redis 作为数据库缓存,请说明基本的Redis 与原有关系数据库的数据同步方案。
(1)Memcache没有持久化功能,所以掉电数据会全部丢失,而且无法直接恢复,这存在可靠性问题。
(2)Memcache不支持事务,所以操作过程中可能产生数据的不一致性。
同步方案:读取数据时,先读取Redis中的数据,如果Redis没有,则从原数据库中读取,并同步更新Redis中的数据,写回时,写入到原数据库中,并同步更新至Redis中。
【问题 3】 (8 分)请给出 Redis 分布式存储的 2 种常见方案和Redis 集群切片的几种常见方式。
Redis分布式存储的2种常见方案:
1.主从复制模式 2. 哨兵模式 3. 无中心结构的集群模式
Redis集群切片的常见方式:
1.客户端切片:即在客户端采用一致性哈希算法将Redis数据的key进行散列,通过hash函数,特定的key会映射到特定的Redis节点上。
2.中间件切片:在应用和Redis之间通过twemproxy等代理中间件,通过一致性 hash 等算法将数据进行分片。
3.服务端分片:Redis Cluster 集群中的每个节点负责处理一部分插槽 slot,使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽。
【2018年】试题五 阅读以下关于 Web 系统设计的叙述,在答题纸上回答问题 1 至问题 3。
【说明】
某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件,使用的报文交换标准和通信协议也不尽相同,使用传统的 EAI解决方案根本无法实现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于 ESB 的面向服务架构(SOA)集成方案实现业务整合。
【问题 1】 (7 分)请说明什么是面向服务架构(SOA)以及 ESB在 SOA 中的作用与特点。
SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用方式进行交互。
ESB作用于特点:
1、SOA的一种实现方式,ESB在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合;
2、描述服务的元数据和服务注册管理;
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
【问题 2】 (12 分)基于该信息系统整合的实际需求,项目组完成了基于 SOA 的银行信息系统架构设计方案。该系统架构图如图 5-1 所示:
请从(a)~ (j)中选择相应内容填入图 5-1 的(1)~ (6),补充完善架构设计图。
(a)数据层 (b)界面层 (c)业务层 (d) bind (e) 企业服务总线 ESB (f) XML
(g) 安全验证和质量管理 (h) publish (i) UDDI (j) 组件层 (k) BPEL
【问题 3】(6 分)
针对银行信息系统的数据交互安全性需求,列举 3 种可实现信息系统安全保障的措施。
1、引入https协议或采用加密技术对数据先加密再传输
2、采用信息摘要技术对重要信息进行完整性验证
3、交易类敏感信息采用数字签名机制