试题一是必答题
阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。
【说明】
某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对简单,系统性能方面不做过多考虑。新系统除了保持现有的四级固定会员制度外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。
在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效;
(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警;
(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;
(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符;
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息;
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点;
(g)系统支持横向存储扩展,要求在2人•天内完成所有的扩展与测试工作;
(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统;
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断;
(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;
(k)支持对系统的外观进行调整和配置,调整工作需要在4•人天内完成。
在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。
【问题1】(12分)
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称填入图1-1中(1)、(2)空白处,并选择题干描述的(a)~(k)填入(3)~(6)空白处,完成该系统的效用树。
【问题2】(13分)
针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能;王工则建议采用解释器(interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。请针对系统的主要功能,从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。
【问题1】
(1)安全性
(2)可修改性
(3)(e)
(4)(j)
(5)(h)
(6)(k)
【问题2】
应该选择解释器架构风格。
折扣规则的可修改性:解释器风格比面向对象方式实现强。面向对象相对固定,将其封装为对象,有变化需要修改源代码。解释器风格折扣规则是独立的语法规则,由解释器可对变化的规则进行解析,调整时仅需要调整规则描述,无须修改源代码。
个性化折扣定义灵活性:解释器强于面向对象,面向对象架构风格需要将用户筛选条件封装为对象,调整筛选条件时需要修改源代码灵活性较低。解释器可以根据用户灵活解释执行规则,以规则数据的方式描述用户筛选条件,支持规则的动态加载与处理,灵活性较高。
系统性能:面向对象优于解释器。面向对象的实现相对固定,将折扣力度和筛选条件内置在系统源代码中,处理速度快,性能高,而解释器是运行期动态绑定执行,处理速度慢,性能低。
【问题1】本题主要考查考生对软件架构评估、软件质量属性以及架构评估中相关概念的理解与掌握。考生应该在熟记基础概念的基础上结合实际问题灵活掌握并应用这些概念。在解答本题时,首先需要对题干中的所有软件需求描述进行分析与梳理,区分并找出其中的需求分析、软件质量属性描述,或者可能的风险、权衡点或敏感点描述。具体列举如下:
(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效,对应易用性属性。
(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警,对应安全性属性。
(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;对应性能属性。
(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符,对应系统的设计约束。
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息,对应性能属性。
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点,对应可用性属性。
(g)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作,对应可修改性属性。
(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统,对应可用性属性。
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断,对应可测试性属性。
(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计,对应安全性属性。
(k)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成,对应可修改性属性。
【问题2】在解答本题时,需要从可修改性、灵活性和系统性能三个方面进行综合考虑。从可修改性来看,解释器风格折扣规则是独立的语法规则,由解释器可对变化的规则进行解析,修改更容易。而面向对象相对固定,有变化需要修改具体的类。从灵活性来看,解释器可以根据用户灵活解释执行规则,优于面向对象。从系统性能来看,面向对象优于解释器。综合三个方面来看,解释器的优势更大,所以该系统更适合采用解释器风格。