软件体系架构课堂测试10 –综合案例分析
软件体系架构课堂测试10 –综合案例分析
一、请详细阅读有关Web应用架构设计方面的说明,在答题纸上回答问题1.1至问题1.3。(20分)
【说明】
某公司拟开发一个物流车辆管理系统,该系统可支持各车辆实时位置监控、车辆历史轨迹管理、违规违章记录管理、车辆固定资产管理、随车备品及配件更换记录管理、车辆寿命管理等功能需求。其非功能性需求如下:
(1)系统应支持大于50个终端设备的并发请求;
(2)系统应能够实时识别车牌,识别时间应小于1s;
(3)系统应7X24小时工作;
(4)具有友好的用户界面;
(5)可抵御常见SQL注入攻击;
(6)独立事务操作响应时间应小于3s;
(7)系统在故障情况下,应在1小时内恢复;
(8)新用户学习使用系统的时间少于1小时。
面对系统需求,公司召开项目组讨论会议,制订系统设计方案,最终决定65基于分布式架构设计实现该物流车辆管理系统,应用Kafka、Redis数据缓存等技术实现对物流车辆自身数据、业务数据进行快速、高效的处理。
【问题1.1】(8分)
请将上述非功能性需求(1)~(8)归类到性能、安全性、可用性、易用性这四类非功能性需求。
【问题1.2】(7分)
经项目组讨论,完成了该系统的分布式架构设计,如图1所示。请从下面给出的(a)~(j)中进行选择,补充完善图1中(1)~(7)处空白的内容。
(a)数据存储层
(b)Spuct2
(c)负载均衡层
(d)表现层
(e)HTTP协议
(f)Rcdis数据缓存
(g)Kafka分发消息
(h)分布式通信处理层
(i)逻辑处理层
(j)CDN内容分发
【问题1.3】(5分)
该物流车辆管理系统需抵御常见的SQL注入攻击,请用200字以内的文字说明什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式。
二、阅读以下关于系统分析与设针的叙述,在答题纸上回答问题2.1至问题2.3。(20分)
【说明】
某商校拟开发一套图书馆管理系统,在系统分析阶段,系统分析师整理的核心业务流程与需求如下:
系统为每个读者建立一个账户,并给读者发放读者证(包含读者证号、读者姓名),账户中存储读者的个人信息、借阅信息以及预订信息等,挂有读者证可以借阅图书、返还图书、查询图书信息、预订图书、取消预订等。
在借阅图书时,需要输入读者所借阅的图书名、ISBN号,然后输入读者的读者证号,完成后提交系统,以进行读者验证,如果读者有效,借阅请求被接受,系统查询读者所借阅的图书是否存在,若存在,则读者可借出图书,系统记录借阅记录;如果读者所借的图书已被借出,读者还可预订该图书。读者如期还书后,系统清除借阅记录,否则需缴纳罚金,读者还可以选择续借图书。同时,以上部分操作还需要系统管理员和图书管理员参与。
【问题2.1】(5分)
采用面向对象方法进行软件系统分析与设计时,一项重要的工作是进行类的分析与设计。请用200字以内的文字说明分析类图与设计类图的差异。
【问题2.2】(10分)
设计类图的首要工作是进行类的识别与分类,该工作可分为两个阶段“”首先,采用识别与筛选法,对需求分析文档进行分析,保留系统的重要概念与属性,删除不正确或冗余的内容;其次,将识别出来的类按照边界类、实体类和控制类等三种类型进行分类。
请用200字以内的文字对边界类,实体类和控制类的作用进行简要解释,并对下面给出的候选项进行识别与筛选,将合适的候选项编号填入表2-1中的(1)~(3)空白处, 完成类的识别与分类工作。
表2-1图书管理系统类识别与分类表格
候选项:
a)系统管理员 b)图书管理员 c)读者
d)读者证 e)账户 f)图书
g)借阅 h)归还 i)预订
j)罚金 K)续借 I)借阅记录
【问题2.3】(5分)
根据类之间的相关性特点,可以将类之间的关系分为组合(composition),继承(inheritance),关联 (association),聚合(aggregation)和依赖 (dependency)等5种, 请用300字以内的文字分别对这5种关系的内涵进行叙述,并从封装性、动态组合和创建对象的方便性三个方面对组合和继承关系的优缺点进行比较。
三、 阅读以下关于软件架构设计的叙述,在答题纸上回答问题3.1至问题3.3 (20分)
【说明】
某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。
为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。
【问题3.1】(8分)
该系统使用过程中,由于同样的数据分别存在于数据库和缓存系统中,必然会造成数据同步或数据不一致性的问题。该企业团队为解决这个问题,提出了如下解决思路:应用程序读数据时,首先读缓存,当该数据不在缓存时,再读取数据库;应用程序写数据吋,先写缓存,成功后再写数据库;或者先写数据库,再写缓存。
王工认为该解决思路并未解决数据同步或数据不一致性的问题,请用100字以内的文字解释其原因。(6分)
王工给出了一种可以解决该问题的数据读写步骤如下:(2分)
读数据操作的基本步骤:
1.根据key读缓存;
2.读取成功则直接返回;
3.若key不在缓存中时,根据key (a) ;
4.读取成功后, (b) ;
5.成功返回。
写数据操作的基本步骤:
1.根据key值写 (c) ;
2.成功后 (d) ;
3.成功返回。 .
请填写完善上述步骤中(a)~(d)处的空白内容。
【问题3.2】(6分)
缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的杳询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。
经过运维人员的深入分析,发现存在两种情况:
(1)用户请求的key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力;
(2)系统运行期间,发生了黒客攻击,以大量系统不存在的随机key发起了査询请求,从而导致了数据库服务器的宕机。
经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询。 请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。
【问题3.3】(6分)
缓存系统中的key—般会存在有效期,超过有效期则key失效;有时也会根据LRU算法将某些key移出内存。当应用软件查询key时,如key失效或不在内存,会重新读取数据库,并更新缓存中的key。
运维团队发现在某些情况下,若大量的key设置了相同的失效时间,导致缓存在同一时刻众多key同时失效,或者瞬间产生对缓存系统不存在key的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。
请用100字以内文字,给出解决该问题的两种不同思路。
四、阅读以下关于软件系统设计的叙述,在答题纸上回答问题 4.1至问题 4.3(20分)
【说明】
某软件企业受该省教育部门委托建设高校数字化教育教学资源共享平台,实现以众筹众创的方式组织省内普通高校联合开展教育教学资源内容建设,实现全省优质教学资 源整合和共享。该资源共享平台的主要功能模块包括:
(1)统一身份认证模块,提供统一的认证入口,为平台其他核心业务模块提供用 户管理、身份认证、权限分级和单点登录等功能:
(2) 共享资源管理模块:提供教学资源申报流程服务,包括了资源申报、分类定 制、资料上传、资源审核和资源发布等功能:
(3)共享资源展示模块z 提供教育教学共享资源的展示服务,包括资源导航、视 频点播、资源检索、分类展示、资源评价和推荐等功能:
(4) 资源元模型管理模块依据资源类型提供共享资源的描述属性、内容属性和展示属性,包括共享资源统一标准和规范、资源加工和在线编辑工具、数字水印和模板 定制等功能:
(5) 系统综合管理模块提供系统管理和维护服务,包括系统配置、数据备份恢 复、资源导入导出和统计分析等功能。
项目组经过分析和讨论,决定采用基于 Java EE 的 MVC 模式设计资源共享平台的 软件架构,如图 2-1 所示。
【问题4.1】(10分)
MVC架构中包含哪三种元素,它们的作用分别是什么?请根据图 2所示架构将JavaEE 中 JSP、Servlet、Service、JavaBean、DAO 五种构件分别填入空 (1)--(5) 所示位置。
图2资源共享平台软件架构
【问题4.2】(5 分)
项百组架构师王工提出在图 2所示架构设计中加入EJ B构件,采用企业级 JavaEE架构开发资源共享平台。请说明EJB构件中的 Bean (构件)分为哪三种类型,每种类型Bean 的职责是什么。
【问题4.3】(5分)
如果采用王工提出的企业级 JavaEE 架构,请说明下列(a)-(e) 所给出的业务功能构件中,有状态和无状态构件分别包括哪些。
(a):Identification Bean ,(身份认证构件〉
(b):ResPublish Bean(资源发布构件)
(c)ResRetrieval Bean(资源检索构件)
(d)OnlineEdit Bean(在线编辑构件)
(e)Statistics Bean(统计分析构件)
五、阅读以下关于Web系统设计的叙述,在答题纸上回答问题1至问题3。(20分)
【说明】
某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理、转账汇款、自助缴费、理财投资、贷款管理、网上支付、财务报表分析等业务功能。但是,由于原有以分行为主体的银行信息系统中,多个业务系统采用异构平台、数据库和中间件,使用的报文交换标准和通信协议也不尽相同,使用传统的EAI解决方案根本无法实现新的业务模式下异构系统间灵活的交互和集成。因此,为了以最小的系统改进整合现有的基于不同技术实现的银行业务系统,该银行拟采用基于ESB的面向服务架构(SOA)集成方案实现业务整合。
【问题5.1】(6分)
请说明什么是面向服务架构(SOA)以及ESB在SOA中的作用与特点。
【问题5.2】(6 分)
基于该信息系统整合的实际需求,项目组完成了基于SOA的银行信息系统架构设计方案。该系统架构图如图5-1所示:
图5-1 基于SOA的银行信息系统架构设计
请从(a)~ (j)中选择相应内容填入图5-1的(1)~ (6),补充完善架构设计图。
(a)数据层
(b)界面层
(c)业务层
(d) bind
(e) 企业服务总线ESB
(f) XML
(g) 安全验证和质量管理
(h) publish
(i) UDDI\
(j) 组件层
(k) BPEL
【问题5.3】(8分)
针对银行信息系统的数据交互安全性需求,列举3种可实现信息系统安全保障的措施。