试题一 软件架构(MYC 架构、扩展接口模式)
MVC架构风格最初是Smalltalk-80中用来构建用户界面时采用的架构设计风格。其中M代表模型(Model),V代表视图(View),C代表控制器(Controller)。在该风格中,模型表示待展示的对象,视图表示模型的展示,控制器负责把用户的动作转成针对模型的操作。模型通过更新视图的数据来反映自身的变化。
在本系统中,模型(M)代表监控组件、视图(V)代表控制终端、控制器(C)代表管理模块。
试题二 系统开发(数据流图元素、找 DFD 错误、CRUD矩阵)
【问题1】(8分)
请用300以内文字说明数据流图(Data Flow Diagram)的基本元素及其作用。
四种元素:
(1) External Agent(实体/外部代理):定义位于项目范围之外,但与正在被研发的系统有交互关系的人、部门、外部系统或组织。
(2) Process(加工/处理):在输入数据流或条件上执行,或者对输入数据流或条件做出响应的工作。
(3) Data Store(数据存储):静止的数据,表示系统中需要保存的数据。
(4) Data Flow(数据流):运动中的数据,表示到一个过程的数据输入,或者来自一个过程的数据输出。
试题三 嵌入式(构件获取和开发、构件标准、特点判断、构件接口)
【问题1】(9分)
请用200字以内文字说明获取构件的方法有哪几种?开发构件通常采用哪几种策略?并列举出两种主流构件标准。
基于构件的软件开发中,可以通过不同的途径来获取构件,
主要包括以下4种方法:
(1) 从现有构件中获得符合要求的构件,直接使用或做适应性修改,
得到可复用的构件;
(2) 通过遗留工程(Legacy Engineering),
将具有潜在复用价值的软件提取出来,得到可复用的构件;
(3) 从市场上购买现成的商业构件,
BPCOTS(Commercial Off-The-Shell)构件;
(4) 开发新的符合要求的构件。
开发构件通常采取3种策略:
(1) 分区(partitioning):
指的是将问题情景的空间分割成几乎可以独立研究的部分;
(2) 抽象(abstraction):
是对在给定实践内执行指定计算的软/硬件单元的一种抽象;
(3) 分割(segmentation):
是将结构引入构件的行为,支持对行为性质进行时序推理。
当前主流构件标准有:
(1) CORBA:由OMG(对象管理集团)制定;
(2) COM/DCOM:由Microsoft制定;
(3) EJB:由SUN的Java企业Bean制定。
试题四 软件架构(质量属性效用树、架构风险、敏感点、权衡点)
【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。
权衡点是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
题干描述中,(i)描述的是系统架构风险;(g)描述的是敏感点;(f)描述的是权衡点。
试题五 Web应用(负载均衡(DNS、反向代理)、主从复制、数据库分区、Memcached)
【问题1】(10分)
针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的并发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理;并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对比结果填入表 5-1 中。
两种机制的基本原理:
基于DNS的负载均衡机制通过DNS服务器实现,通常通过循环复用具有同一域名的多个主机地址的服务器实现负载均衡。
反向代理负载均衡则是将来自Internet的连接请求以反向代理的方式动态转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
两种机制的基本原理
【问题2】(7分)
针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。
(1)本系统中应主要使用水平分区机制。根据已知信息,系统数据库中存储的主要数据为以用户标识为索引的社交网络数据,采用水平分区机制可根据用户标识将用户数据进行水平分割,用户操作时先将请求分发到不同数据库分区,再进行具体数据库操作,以提高数据库访问效率。
(2) 引入主从复制机制所带来的好处:
①避免数据库单点故障:主服务器实时、异步复制数据到从服务器,当主数据库宕机时,可在从数据库中选择一个升级为主服务器,从而防止数据库单点故障。
②提高査询效率:根据系统数据库访问特点,可以使用主数据库进行数据的插入、删除及更新等写操作,而从数据库则专门用来进行数据査询操作,从而将査询操作分担到不同的从服务器以提高数据库访问效率。
【问题3】(8分)
为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。
(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcacbed缓存)
(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。