一、问答题
1、阅读以下关于软件系统设计的叙述,在答题纸上回答问题1至问题3。
[说明]某文化产业集团委托软件公司开发一套文化用品商城系统,业务涉及文化用品销售、定制、竞拍和点评等板块,以提升商城的信息化建设水平。该软件公司组织项目组完成了需求调研,现已进入到系统架构设计阶段。考虑到系统需求对架构设计决策的影响,项目组先列出了可能影响系统架构设计的部分需求如下:
(a) 用户界面支持用户的个性化定制;
(b) 系统需要支持当前主流的标准和服务,特别是通信协议和平台接口;
(c) 用户操作的响应时间应不大于3秒,竞拍板块不大于1秒;
(d) 系统具有故障诊断和快速恢复能力;
(e) 用户密码需要加密传输;
(f) 系统需要支持不低于2G的数据缓存;
(g) 用户操作停滞时间超过定时限需要重新登录验证;
(h) 系统支持用户选择汉语、英语或法语三种语言之一进行操作。
项目组提出了两种系统架构设计方案:瘦客户端C/S架构和胖客户端C/S架构,经过对,上述需求逐条分析和讨论,最终决定采用瘦客户端C/S架构进行设计。
[问题1](8分)
在系统架构设计中,决定系统架构设计的非功能性需求主要有四类:操作性需求、性能需求、安全性需求和文化需求。请简要说明四类需求的含义。
[问题2] (8分)
根据表1-1的分类,将题干所给出的系统需求(a) ~ (h) 分别填入(1) ~ (4)
表1-1需求分类
问题3 (9分)
请说明瘦客户端C/S架构能够满足题干中给出的哪些系统需求(只需要回答出三个系统需求)。
参考答案:
[问题1]
系统性能需求( Performance Requirements) : 指响应时间、吞吐量、准确性、有效性、资源利用率等与系统完成任务效率相关的指标。可靠性、可用性等指标可归为此类。
安全性需求( Security Requirements ) :系统向合法用户提供服务并阻止非授权用户使用服务方面的系统需求。
操作性需求( Operational Requirements) :与用户操作使用系统相关的一些需求 。
文化需求( Cultural Requirements) : 带有文化背景因素的系统需求。
[问题2]
(1) (a) (b)
(2) (c)(d)(f)
(3) (e) (g)
(4) (h)
[问题3]
b,c,h(此题不严谨)
解析:
对于问题1,根据软件架构设计的常识,可以将非功能性需求分为操作性需求、性能需求、安全性需求和文化需求四类。操作性需求关注用户如何与系统交互;性能需求关注系统的效率和响应速度;安全性需求关注系统的保护和用户数据的安全;文化需求则涉及到系统在不同文化背景下的适应性和用户体验。
对于问题2,根据题干给出的系统需求和每个需求的特性,将其归类到表1-1的相应类别中。其中,有些需求如b可能涉及到多个类别的交叉,这里我们按照其主要特性进行归类。
对于问题3,瘦客户端C/S架构能够满足的系统需求主要包括对通信协议和平台接口的支持(满足系统集成和互操作性的要求)、对响应时间的性能要求(保证用户操作的及时响应)以及多语言支持(提升用户体验和文化适应性)。因此,答案中的三个需求b、c和h是瘦客户端C/S架构能够直接满足的。
2、阅读以下关于软件系统建模的叙述,在答题纸上回答问题1至问题3。
[说明]某公司欲建设-一个房屋租赁服务系统,统一管理房主和租赁者的信息,提供快捷的租赁服务。本系统的主要功能描述如下:
1.登记房主信息。记录房主的姓名、住址、身份证号和联系电话等信息,并写入房主信息文件。
2.登记房屋信息。记录房屋的地址、房屋类型(如平房、带阳台的楼房、独立式住宅等)、楼层、租金及房屋状态(待租赁、已出租)等信息,并写入房屋信息文件。-名房主可以在系统中登记多套待租赁的房屋。
3.登记租赁者信息。记录租赁者的个人信息,包括:姓名、性别、住址、身份证号和电话号码等,并写入租赁者信息文件。
4.安排看房。已经登记在系统中的租赁者,可以从待租赁房屋列表中查询待租赁房屋信息。租赁者可以提出看房请求,系统安排租赁者看房。对于每次看房,系统会生成一条看房记录并将其写入看房记录文件中。
5.收取手续费。房主登记完房屋后,系统会生成一份费用单,房主根据费用单交纳相应的费用。
6.变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态的请求。系统将根据房主的请求,修改房屋信息文件。
[问题1](12分)
若来用结构化方法对房屋租赁服务系统进行分析,得到如图2-1所示的顶层DFD,使用题干中给出的词语,给出图2-1中外部实体E1~E2、加工P1~P6以及数据存储D1~D4的名称。
[问题2] (5分)
若采用信息工程(Information Engineering)方法对房屋租赁服务系统进行分析,得到如图2-2所示的ERD.请给出图2-2中实体(1) ~ (5) 的名称。
[问题3](8分)
(1)信息工程方法中的'实体(entity) ”与面向对象方法中的“类(class) ”之间有哪些不同之处?
(2)在面向对象方法中通常采用用例(Use Case)来捕获系统的功能需求。用例可以按照不同的层次来进行划分,其中的Essential Use Cases和Real Use Cases有哪些区别?
参考答案:
[问题1]
E1:房主
E2:租赁者
P1:登记房主信息
P2:登记房屋信息
P3:登记租赁者信息
P4:查询租赁房屋信息
P5:安排看房
P6:变更房屋状态
D1:房主信息文件
D2:租赁者信息文件
D3:房屋信息文件
D4:看房记录文件
[问题2]
(1) 房主
(2) 房屋
(3) 房屋信息文件
(4) 租赁者
(5) 看房记录
[问题3]
(1)实体用于数据建模,而类用于面向对象建模。实体只有属性,而类有属性和操作。
(2) Essential Use Cases可翻译为抽象用例,Real Use Cases可翻译为基础用例。他们是区别在于: 基础用例是实实在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。
解析:
<问题1>根据题目描述和DFD(数据流图)的一般知识,可以识别出外部实体E1和E2分别代表房主和租赁者信息实体。加工P1-P6分别对应房主、房屋、租赁者的信息登记、查询房屋信息、安排看房和变更房屋状态等处理过程。数据存储D1-D4分别是房主、租赁者、房屋信息和看房记录的文件。
<问题2>在ERD(实体关系图)中,实体代表系统中的主要对象,根据题目描述和ERD图,可以识别出房主、房屋、房屋信息文件、租赁者和看房记录等五个实体。
<问题3>(1)信息工程中的实体主要关注数据模型,而面向对象中的类包含数据和操作,更全面地描述对象的属性和行为。另外,实体通常是静态的,类则包含对象的生命周期和行为。(2)Essential Use Cases和Real Use Cases的主要区别在于,基础用例与具体用户需求对应,是直接从用户需求中获取的,而抽象用例是从基础用例中提炼出的公共部分,更偏向于概念层次,主要是为了优化系统结构和避免重复工作。
3、阅读以下关于嵌入式实时系统相关技术的叙述,在答题纸上回答问题l和问题2。
【说明】
某公司长期从事宇航领域嵌入式实时系统的软件研制任务。公司为了适应未来嵌入式系统网络化、智能化和综合化的技术发展需要,决定重新考虑新产品的架构问题,经理将论证工作交给王工负责。王工经调研和分析,完成了新产品架构设计方案,提交公司高层讨论。
【问题1】(14分)
王工提交的设计方案中指出:由于公司目前研制的嵌入式实时产品属于简单型系统,其嵌入式子系统相互独立、功能单一、时序简单。而未来满足网络化、智能化和综合化的嵌入式实时系统将是一种复杂系统,其核心特征体现为实时任务的机理、状态和行为的复杂性。简单任务和复杂任务的特征区分主要表现在十个方面。请参考表3-1给出的实时任务特征分类,用题干中给出的(a)~(t)20个实时任务特征描述,补充完善表3-1给出的空(l)~(l4)。
(a)任务属性不会随时间变化而改变;
(b)任务的属性与时间相关;
(c)任务仅可以从非连续集中获取特征变量;
(d)任务变量域是连续的;
(e)功能原理不依赖于上下文;
(f)功能原理依赖于上下文;
(g)任务行为可以用step-by-step顺序分析方法来理解;
(h)许多任务在产生访问活动时相互间是并发处理的,很难用step-by-step方法分析;
(i)因果关系相互影响;
(j)行为特征依赖于大量的反馈机制;
(k)系统内构成、策略和描述是相似的;
(l)系统内存在许多不同的构成、策略和描述;
(m)功能关系是非线性的;
(n)功能关系是线性的;
(o)不同的子任务是相互独立的,任务内部仅存在少量的交互操作;
(p)不同的子任务有很高的交互操作,要把一个单任务的行为隔离开是困难的;
(q)域特征有非常整齐的原则和规则;
(r)许多不同的上下文依赖于规则;
(s)原理和规则在表面属性上很容易被识别;
(t)原理被覆盖、抽象,而不会在表面属性上被识别。
【问题2】(11分)
王工设计方案中指出:要满足未来网络化、智能化和综合化的需求,应该设计一种能够充分表达嵌入式系统行为的,且具有一定通用性的通信架构, 以避免复杂任务的某些特征带来的通信复杂性。通常为了实现嵌入式系统中计算组件间的通信,在架构上需要一种简单的架构风格,用于屏蔽不同协议、不同硬件和不同结构组成所带来的复杂性。图3-l给出了一种“腰(Waistline)”型通信模式的架构风格。腰型架构的关键是基本消息通信(BMTS),通常, BMTS的消息与时间属性相关,支持事件触发消息、速率约束消息和时间触发消息。
请用400字以内的文字说明基于BMTS的消息通信网络的主要特征,说明三种消息的基本含义,并举例给出两种具有时间触发消息能力的网络总线。
参考答案:
[问题1]
(1) (c)
(2) (d)
(3) (o)
(4) (p)
(5) (g)
(6) (h)
(7) (k)
(8) (l)
(9) (i)
(10) (j)
(11) (n)
(12) (m)
(13) (e)
(14) (f)
[问题2]
BMTS是从一个计算组件传输消息到另外一个或多个接收组件,这样的传输具有高可靠、低延迟和微小抖动等特点。
(l)事件触发消息(Event-triggered messages):此类消息是在发送端有某重要事件发生 时产生的偶发消息。建立消息间不存在最小时间(Minimum Time)。此类消息从发送到接收之间的延迟是不能确定的。在发送产生时, BMTS可能要处理许多消息,要么在发送者或消息被丢失时做相应处理。
(2)速率约束消息(Rate-constrained messages) :此类消息是偶发性产生的,而不考虑发送者承诺消息不超出最大消息速率。在给定的故障假设条件内,BMTS承诺不超过最大的传输时延(Latency)。抖动依赖于网络负载或最坏情况下的传输时延和最小传输时延的范围。
(3)时间触发消息(Time-triggered messages):此类消息是指发送者和接收者遵循一个精确的时间片周期完成消息的发送与接收。在给定的故障假设条件内, BMTS承诺消息将被在指定的时间片、确定的抖动条件下发送或接收。
具有时间触发消息能力的网络总线包括: TTE总线、FC总线、AFDX总线。
解析:
问题1:
根据题干给出的实时任务特征描述和表3-1的实时任务特征分类,我们需要将表中的空白部分进行填充。填充的内容需要与描述中的(a)~(t)实时任务特征相符合。通过对比和分析,得出了上述答案。
问题2:
对于问题2,我们需要解释基于BMTS的消息通信网络的主要特征,以及三种消息的基本含义,并给出具有时间触发消息能力的网络总线例子。BMTS消息通信网络具有高可靠性、低延迟和微小抖动的特点。事件触发消息、速率约束消息和时间触发消息是BMTS中的三种消息类型。事件触发消息是在特定事件发生时发送的消息,其延迟不确定;速率约束消息确保消息传输速率在一定范围内,并承诺最大传输延迟;时间触发消息则按照精确的时间片周期进行发送和接收。TTE总线、FC总线和AFDX总线是具备时间触发消息能力的网络总线例子。
4、阅读以下关于分布式数据库缓存设计的叙述,在答题纸,上回答问题1至问题3.
[说明]某企业是为城市高端用户提供高品质蔬菜生鲜服务的初创企业,创业初期为快速开展业务,该企业采用轻量型的开发架构(脚本语言+关系型数据库)研制了一套业务系统。业务开展后受到用户普遍欢迎,用户数和业务数量迅速增长,原有的数据库服务器已不能满足高度并发的业务要求。为此,该企业成立了专门的研发团队来解决该问题。张工建议重新开发整个系统,采用新的服务器和数据架构,解决当前问题的同时为日后的扩展提供支持。但是,李工认为张工的方案开发周期过长,投入过大,当前应该在改动尽量小的前提下解决该问题。李工认为访问量很大的只是部分数据,建议采用缓存工具MemCache来减轻数据库服务器的压力,这样开发量小,开发周期短,比较适合初创公司,同时将来也可以通过集群进行扩展。然而,刘工又认为李工的方案中存在数据可靠性和一致性问题,在宕机时容易丢失交易数据,建议采用Redis来解决问题。 在经过充分讨论,该公司最终决定采用刘工的方案。
[问题1](9分)
在李工和刘工的方案中,均采用分布式数据库缓存技术来解决问题。请说明分布式数据库缓存的基本概念。
表4- 1中对MemCache和Redis两种工具的优缺点进行了比较,请补充完善表4-1中的空(1) ~ (6) 。
表4-1
[问题2](8分)
刘工认为李工的方案存在数据可靠性和一致性的问题,请说明原因。
为避免数据可靠性和一致性的问题,刘工的方案采用Redis作为数据库缓存,请说明基本的Redis与原有关系数据库的数据同步方案。
[问题3](8分)
请给出Redis分布式存储的2种常见方案和Redis集群切片的几种常见方式。
参考答案:
[问题1]
分布式数据库缓存指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。
(1)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
(2)不支持
(3)支持
(4)不支持
(5)支持
(6)弱支持,只能保证事务中的每个操作连续执行
[问题2]
数据仅存在于内存中,宕机或重启数据将全部失效,这属于数据可靠性问题。
MemCache不支持事务,存在数据一致性问题。
读数据时,先读Redis中的数据,如果Redis没有,则从原数据库读取,并同步更新Redis数据。写数据时,先写入原数据库中,并同步更新至Redis中。
[问题3]
(1)主从、Cluster
(2)客户端分片、Twemproxy、Redis Cluster、Proxy + Redis Cluster
解析:
[问题1]
分布式数据库缓存是为了减轻数据库压力和提高响应速度而在应用系统和数据库之间加入的缓存层。关于MemCache和Redis的优缺点比较,根据已知信息和常见特性进行填充。
[问题2]
李工的方案使用MemCache,其数据存储在内存中,因此一旦服务器宕机或重启,数据会丢失,这是数据可靠性的问题。另外,由于MemCache不支持事务,存在数据一致性的问题。Redis作为缓存与数据库之间的数据同步,在读操作时先查Redis再查数据库,写操作时先写数据库再更新Redis,以确保数据的可靠性和一致性。
[问题3]
Redis的分布式存储方案包括主从复制和Redis Cluster。Redis集群切片的常见方式有客户端分片、Twemproxy、Redis Cluster以及通过Proxy进行集群切片等。
5、阅读以下关于Web系统设计的叙述,在答题纸上回答问题1至问题3。
[说明]
某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件,使用的报文交换标准和通信协议也不尽相同,使用传统的EAI解决方案根本无法实现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于ESB的面向服务架构(SOA)集成方案实现业务整合。
[问题1](7分)
请说明什么是面向服务架构(SOA)以及ESB在SOA中的作用与特点。
[问题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]
SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统-和通用的方式进行交互。
ESB作用与特点:
1、SOA的一种实现方式, ESB在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合;
2、描述服务的元数据和服务注册管理;
3、 在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步
模式、异步模式等;
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
(问题2)
(c)业务层
(i) UDDI
(h) publish
(e)企业服务总线ESB
(g)安全验证和质量管理
(j)组件层
[问题3]
1、引入https协议或采用加密技术对数据先加密再传输
2、采用信息摘要技术对重要信息进行完整性验证
3、交易类敏感信息采用数字签名机制
解析:
<问题1>解析:
答案中详细解释了SOA的概念以及ESB在SOA中的作用与特点。SOA是一个将应用程序的不同功能单元通过定义良好的接口和契约进行连接的组件模型。ESB作为SOA的一种实现方式,起到总线作用,连接和整合各种服务,并具有数据传输、转换和服务的动态交互等特点。答案解释清晰,符合题目要求。
<问题2>解析:根据提供的系统架构图,答案中正确地填写了各个组成部分的位置。数据层、界面层和业务层是基本层次结构,而ESB、UDDI、publish等是架构中的重要元素,它们的位置和功能在答案中得到了正确的标注和解释。符合题目要求。
<问题3>解析:答案列举了三种针对银行信息系统数据交互安全性需求的信息系统安全保障措施。包括采用https协议或加密技术、使用信息摘要技术进行完整性验证以及对交易类敏感信息采用数字签名机制。这些措施能够有效保障数据的传输安全、完整性和来源真实性。答案符合题目要求。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!