1.试题-(共25分):阅读以下关于软件架构设计与评估的叙述在答题纸上回答问题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)空白处,完成该系统的效用树。
【答案】(1)安全性(2)可修改性(3)e(4)j(5)h(6)k
【考点】
软件系统架构评估主要关注质量属性。主要包括以下几种:性能、可靠性、可用性、安全性、可修改性、功能性、可变性、互操作性。
- 性能关注系统的响应能力;
- 可靠性关注系统在错误面前的维持功能能力;
- 可用性关注系统能够正常运行的时间比例;
- 安全性关注系统阻止非授权用户使用的能力;
- 可修改性关注系统能够快速进行变更的能力;
- 功能性关注系统能完成期望工作的能力;
- 可变性关注架构的变更能力;
- 互操作性关注软件与其他系统或环境的相互作用能力。
【问题2】(13分)针对该系统的功能,
李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对应的功能:
王工则建议采用解释器(interpreters)架构风格,将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规则实现对应的功能。
请针对系统的主要功能,从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构风格进行比较与分析,并指出该系统更适合采用哪种架构风格。
【答案】
在比较李工的面向对象架构风格与王工的解释器架构风格时,我们可以从折扣规则的可修改性、个性化折扣定义灵活性和系统性能三个方面进行分析。
1. 折扣规则的可修改性
- **面向对象架构**:
- 折扣规则通常被封装为类,修改规则可能需要修改类的实现,或者创建新的子类。这种方式在规则较多时可能导致类的数量激增,维护成本增加。
- 适合于规则相对稳定的场景,修改时需要重新编译和部署。
- **解释器架构**:
- 折扣规则以文本或其他形式定义,修改规则只需更改规则文件,无需重新编译代码。这种方式使得规则的更新更加灵活和快速。
- 适合于规则频繁变动的场景,能够快速响应业务需求的变化。
2. 个性化折扣定义灵活性
- **面向对象架构**:
- 通过继承和组合,可以实现一定程度的个性化折扣定义,但可能需要创建大量的类来处理不同的个性化需求。
- 对于复杂的个性化需求,可能会导致设计复杂度增加,难以管理。
- **解释器架构**:
- 允许用户通过定义规则来实现个性化折扣,用户可以直接修改规则文本,灵活性高。
- 可以支持动态生成和组合规则,满足多样化的个性化需求。
3. 系统性能
- **面向对象架构**:
- 在性能上,面向对象的实现通常会有较好的运行效率,因为编译后的代码是直接执行的。
- 适合于对性能要求较高的场景,尤其是在规则复杂且调用频繁的情况下。
- **解释器架构**:
- 解释器的性能可能较低,因为每次执行规则时都需要解析规则文本,可能导致性能瓶颈。
- 适合于规则相对简单或不频繁调用的场景,性能影响较小。
结论
综合考虑折扣规则的可修改性、个性化折扣定义灵活性和系统性能:
- 如果系统需要频繁修改折扣规则,且需要支持多样化的个性化折扣定义,王工的解释器架构风格更为适合。它提供了更高的灵活性和可维护性,能够快速响应业务需求的变化。
- 如果系统对性能要求极高,且折扣规则相对稳定,李工的面向对象架构风格可能更为合适,能够提供更好的运行效率。
3.试题二(共25分)
阅读以下关于软件系统设计与建模的叙述在答题纸上回答问题1至问题3。
【说明】
煤炭生产是国民经济发展的主要领域之一其煤矿的安全非常重要。某能源企业拟开发一套煤矿建设项目安全预警系统,以保护煤矿建设项目从业人员生命安全。本系统
的主要功能包括如下(a)~(h)所述
(a)项目信息维护
(b)影响因素录入
(c)关联事故录入
(d)安全评价得分
(e)项目指标预警分析
(f)项目指标填报
(g)项目指标审核
(h)项目指标确认
【问题1】(9分)
王工根据煤矿建设项目安全预警系统的功能要求,设计完成了系统的数据流图,如图2-1所示。请使用题干中描述的功能(a)~(h),补充完善空(1)~(6)处的内容并简要介绍数据流图在分层细化过程中遵循的数据平衡原则。
煤矿建设项目安全预警系统数据流图:
【答案】(1)f(2)g (3)h(4)d (5)b(6)e
层间平衡:数据流个数一致,方向一致
图内平衡:有输入无输出的黑洞,有输出无输入的奇迹,输入不足的灰洞
【问题2】(9分)请根据【问题1】中数据流图表示的相关信息,补充完善煤矿建设项目安全预警系统总体ER图(见图2-2)中实体(1)-(6)的具体内容
【答案】(1)项目管理员(2)项目经理标(4)项目信息 (5)影响因素(3)项目指(6)关联事故
【问题3】(7分)在结构化分析和设计过程中,数据流图和数据字典是常用的技术手段,请用200字以内的文字简要说明它们在软件需求分析和设计阶段的作用。
【答案】
在分析阶段:
数据流图通过图形化的方式展示系统中数据的流动和处理过程,帮助分析师和开发人员理解系统的功能需求。
数据字典则是对系统中所有数据元素的详细描述,包括数据类型、格式、意义及其相互关系。它为数据流图中的元素提供了具体的定义,确保团队对数据的理解一致,减少了歧义和误解。
在设计阶段结构化:
根据不同的数据流图类别来初始化系统结构图;
根据数据字典中的数据存储描述来建立数据库存储设计。
未完待编辑……