图3-1 GENESYS规范定义的构件接口
试题分析
构件组装
构件组装是指将库中的构件经适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。构件组装技术大致可分为基于功能的组装技术、基于数据的组装技术和面向对象的组装技术。 (1)基于功能的组装技术
基于功能的组装技术采用子程序调用和参数传递的方式将构件组装起来。它要求库中的构件以子程序/过程/函数的形式出现,并且接口说明必须清晰。当使用这种 组装技术进行软件开发时,开发人员首先应对目标软件系统进行功能分解,将系统分解为强内聚、松耦合的功能模块。然后根据各模块的功能需求提取构件,对它进 行适应性修改后再挂接在上述功能分解框架(framework)中。 (2)基于数据的组装技术
基于数据的组装技术首先根据当前软件问题的核心数据结构设计出一个框架,然后根据框架中各结点的需求提取构件并进行适应性修改,再将构件逐个分配至框架中 的适当位置。此后,构件的组装方式仍然是传统的子程序调用与参数传递。这种组装技术也要求库中构件以子程序形式出现,但它所依赖的软件设计方法不再是功能 分解,而是面向数据的设计方法,例如Jackson系统开发方法。 (3)面向对象的组装技术
由于封装和继承特征,面向对象方法比其他软件开发方法更适合支持软件重用。在面向对象的软件开发方法中,如果从类库中检索出来的基类能够完全满足新软件项目的需求,则可以直接应用。否则,必须以类库中的基类为父类采用构造法或子类法生成子类。 试题答案
(3)【问题1】(9分) 获取构件的方法包括:
(1)从现有构件中获得符合要求的构件,直接使用或作适应性(flexibility)修改,得到可重用的构件;
(2)通过遗留工程(legacy engineering),将具有潜在重用价值的构件提取出来,得到可重用的构件;
(3)从市场上购买现成的商业构件,即COTS(Commercial Off-The-Shell)构件;
(4)开发新的符合要求的构件。 开发构件的策略:
分区:指的是将问题情景的空间分割成几乎可以独立研究的部分; 抽象:是对给定实践内执行指定计算的软/硬件单元的一种抽象; 分割:是将结构引入构件的行为,支持对行为性质进行时序推理。
主流构件标准包括:COBRA、COM/DCOM/COM+、EJB(答出其中两种即可)。 【问题2】(6分)
(1)√ (2)× (3)× (4)√ (5)× (6)× 【问题3】(10分)
局部接口:将RS-232芯片的外部中断向量连接到CPU,从RS-232芯片中读取寄存器的内容,将控制信息定稿RS-232芯片寄存器。 技术相关接口(TDI):诊断数据传输校验的错误。
链接接口(LIF):对RS-232芯片初始化,并向其发送数据与从芯片接收数据。 技术无关接口(TII):RS-232芯片或驱动构件复位和重启,重新配置传输速率。
试题9(2014年下半年试题4)
请详细阅读有关软件架构评估方面的说明,在答题纸上回答问题1至问题2。
【说明】
某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系 统的架构设计。公司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属性场景和评估专家的意见等内容部分列举如下:
(a)在正常负载情况下,系统必须在0.5秒内响应用户的交易请求; (b)用户的信用卡支付必须保证99.999%的安全性; (c)系统升级后用户名要求至少包含8个字符;
(d)网络失效后,系统需要在2分钟内发现错误并启用备用系统;
(e)在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能;
(f)系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能;
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计;
(h)需要在30人月内为系统添加公司新购买的事务处理中间件;
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性; (j)主站点断电后,需要在3秒内将访问请求重定向到备用站点; (k)用户信息数据库授权必须保证99.999%可用;
(l)系统需要对Web界面风格进行修改,修改工作必须在4人月内完成; (m)系统需要为后端工程师提供远程调试接口,并支持远程调试。 【问题1】(12分)
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入图4-1中(1)、(2)空白处;并选择题干描述的(a)~(m),填入(3)~(6)空白处,完成该系统的效用树。
图4-1 在线交易系统效用树
【问题2】(13分)
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。 试题分析 略
试题答案
(4)
【问题1】(12分) (1)性能 (2)可修改性 (3)(e) (4)(j) (5)(l) (6)(k)
【问题2】(13分)
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。 敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。 权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。 风险点:(i); 敏感点:(g); 权衡点:(f)。
试题10(2014年下半年试题5)
请详细阅读有关Web应用架构设计方面的说明,在答题纸上回答问题1至问题3。 【说明】
某软件公司开发运维了一个社交网站系统,该系统基于开源软件平台LAMP(Linux+Apache+MySQL+PHP)构建,运行一段时间以来,随着 用户数量及访问量的增加,系统在Web服务器负载、磁盘I/O等方面出现了明显瓶颈,已不能满足大量客户端并发访问的要求,因此公司成立了专门的项目组, 拟对系统架构进行调整以提高系统并发处理能力。目前系统采用了传统的三层结构,系统架构如图5-1所示。
图5-1 某社交网站系统架构
【问题1】(10分)
针对目前出现的Web服务器负载过大问题,项目组决定在客户端与中间层Web服务器之间引入负载均衡器,通过中间层Web服务器集群来提高Web请求的
并 发处理能力。在讨论拟采用的负载均衡机制时,王工提出采用基于DNS的负载均衡机制,而李工则认为应采用基于反向代理的负载均衡机制,项目组经过讨论,最 终确定采用李工提出的方案。请用200字以内的文字,分别简要说明两个机制的基本原理;并从系统执行效率、安全性及简易性等方面将两种机制进行对比,将对 比结果填入表5-1中。
【问题2】(7分)
针对并发数据库访问所带来的磁盘I/O瓶颈问题,项目组决定在数据层引入数据库扩展机制。经过调研得知系统数据库中存储的主要数据为以用户标识为索引的社 交网络数据,且系统运行时发生的大部分数据库操作为查询操作。经过讨论,项目组决定引入数据库分区和MySQL主从复制两种扩展机制。数据库分区可采用水 平分区和垂直分区两种方式,请用350字以内的文字说明在本系统中应采用哪种方式及其原因,并分析引入主从复制机制给系统带来的好处。 【问题3】(8分)
为进一步提高数据库访问效率,项目组决定在中间层与数据层之间引入缓存机制。赵工开始提出可直接使用MySQL的查询缓存(query cache)机制,但项目组经过分析好友动态显示等典型业务的操作需求,同时考虑已引入的数据库扩展机制,认为查询缓存尚不能很好地提升系统的查询操作效 率,项目组最终决定在中间层与数据层之间引入Memcached分布式缓存机制。
(a)请补充下述关于引入Memcached后系统访问数据库的基本过程:系统需要读取后台数据时,先检查数据是否存在于(1)中,若存在则直接从其中读取,若不存在则从(2)中读取并保存在(3)中;当(4)中数据发生更新时,需要将更新后的内容同步到(5)实例中。(备选答案:数据库、Memcacbed 缓存)
(b)请结合已知信息从缓存架构、缓存有效性及缓存数据类型等方面分析使用Memcached代替数据库查询缓存的原因。 试题分析
基于DNS的负载均衡。基于DNS的负载均衡是在DNS服务器中为同一个主机名配置多个IP 地址,在应答DNS 查询时,DNS 服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的节点上去,使得不同的客户端访问不同的节点, 从而达到负载均衡的目的。 DNS 负载均衡的优点是经济、简单易行,并且节点可以位于Internet上任意的位置。但它也存在不少缺点,例如,为了保证DNS数据及时更新,一般都要将 DNS