个人总结,仅供参考,欢迎加好友一起讨论
文章目录
- 架构 - 案例分析 - 架构设计<架构风格和质量属性>
- 例题1
- 例题2
- 例题3
- 例题4
- 例题5
- 例题6
架构 - 案例分析 - 架构设计<架构风格和质量属性>
例题1
某软件公司为其新推出的字处理软件设计了一种脚本语言,专门用于开发该字处理软件的附加功能插件。 为了提高该语言的编程效率,公司组织软件工具开发部门为脚本语言研制一套集成开发环境。软件工具开发部门根据字处理软件的特点,对集成开发环境进行了需求分析,总结出以下3项核心需求:
(1)集成开发环境需要提供对脚本语言的编辑、语法检查、解释、执行和调试等功能的支持,并要实现各种功能的灵活组合、配置与替换。
(2)集成开发环境需要提供一组可视化的编程界面,用户通过对界面元素拖拽和代码填充的方式就可以完成功能插件核心业务流程的编写与组织。
(3)在代码调试功能方面,集成开发环境需要实现在脚本语言编辑界面中的代码自动定位功能。具体来说,在调试过程中,编辑界面需要响应调试断点命中事件,并自动跳转到当前断点处所对应的代码。
针对上述需求,软件工具开发部门对集成开发环境的架构进行分析与设计,王工认为该集成开发环境应该采用管道-过滤器的架构风格实现,李工则认为该集成开发环境应该采用以数据存储为中心的架构风格来实现。公司组织专家对王工和李工的方案进行了评审,最终采用了李工的方案。
【问题1】
请用200字以内的文字解释什么是软件架构风格,并从集成开发环境与用户的交互方式、集成开发环境的扩展性、集成开发环境的数据管理三个方面说明为什么最终采用了李工的设计方案。
参考答案:
软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义。
从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。 在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道-过滤器架构风格则对用户的交互式数据处理支持有限。
从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖 关系,并可以灵活定义功能之间的逻辑顺序。管道-过滤器架构风格同样以数据格式解耦数据处理过程之间的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。
从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一 的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道-过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。
【问题2】
在对软件系统架构进行设计时,要对架构需求进行分析,针对特定需求选择最为合适的架构风格,因此实际的软件系统通常会混合多种软件架构风格。请对核心需求进行分析,说明为了满足需求(2)和(3),分别应采用何种架构风格,并概要说明采用相应架构风格后的架构设计过程。
参考答案:
为了满足需求(2),应该采用解释器架构风格。具体来说,需要:①为可视化编 程元素及其拖拽关系定义某种语言,并描述其语法与语义;②编写解释器对该语言进行解释;③生成对应的脚本语言程序。
为了满足需求(3),应该采用隐式调用架构风格。具体来说,首先需要定义“断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环 境维护一个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个 记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命 中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。
例题2
某网上购物电子商务公司拟升级正在使用的在线交易系统,以提高用户网上购物在线支付环节的效率和安全性。在系统 的需求分析与架构设计阶段,公司提出的需求和关键质量属性场景如下:
(a)正常负载情况下,系统必须在0.5秒内对用户的交易请求进行响应;
(b)信用卡支付必须保证99.999%的安全性;
(c)对交易请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(d)网络失效后,系统需要在1.5分钟内发现错误并启用备用系统;
(e)需要在20人月内为系统添加一个新的CORBA 中间件;
(f)交易过程中涉及到的产品介绍视频传输必须保证画面具有600*480的分辨率,20帧/秒的速率;
(g)更改加密的级别将对安全性和性能产生影响;
(h)主站点断电后,需要在3秒内将访问请求重定向到备用站点;
(i)假设每秒用户交易请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的交易请求”这一要求是可以实现的;
(j)用户信息数据库授权必须保证99.999%可用;
(k)目前对系统信用卡支付业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;
(l)更改Web界面接口必须在4人周内完成;
(m)系统需要提供远程调试接口,并支持系统的远程调试。
在对系统需求和质量属性场景进行分析的基础上,系统的架构师给出了三个候选的架构设计方案。公司目前正在组织系 统开发的相关人员对系统架构进行评估。
【问题1】
在架构评估过程中,质量属性效用树 (utilitytree) 是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入下图中(1)、(2)空白处;并选择题干描述的(a)~(m),填入(3)~(6)空白处,完成该系统的效用树。
参考答案:
(1)可修改性(2)可用性
(3)(a)(f)
(4)(e)(l)
(5)(d)(h)
(6)(b)(j)
【问题2】
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。
参考答案:
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是指为了实现某种特定的质量属性, 一个或多个构件所具有的特性。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
风险点:(k)
敏感点:(c)
权衡点:(g)
另外:非风险点:(i),可测试性:(m)
例题3
某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户 规模不大,业务也相对简单,系统性能方面不做过多考虑,新系统除了保持现有的四级固定会员制度 外,还需要根据用户的消费金额、偏好、重复性等相关特征动态调整商品的折扣力度,并支持在特定的活动周期内主动筛选与活动主题高度相关的用户集合,提供个性化的打折促销活动。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
(a)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效;
(b)系统应该具备完整的安全防护措施,支持对恶意攻击行为进行检测与报警;
(c)在正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应;
(d)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符。
(e)在正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息;
(f)系统主站点电力中断后,应在5秒内将请求重定向到备用站点;
(g)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作;
(h)系统宕机后,需要在10秒内感知错误,并自动启动热备份系统;
(i)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断;
(j)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计;
(k)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成。
在对系统需求、质量属性描述和架构特性进行分析的基础上,系统架构师给出了两种候选的架构设计方案,公司目前正在组织相关专家对系统架构进行评估。
【问题1】
在架构评估过程中,质量属性效用树 (utility tree)是对系统 质量属性进行识别和优先级排序的重要工具。请将合适的质量属性,填入下图中(1)、(2)空白处,并选择题干描述的(a)~(k),填入(3)~(6)空白处,完成该系统的效用树。
参考答案:
(1)安全性(2)可修改性
(3)(e)
(4)(j)
(5)(h)
(6)(k)
另外:
(a)客户提的需求
(d)需求
(i)可测试性
【问题2】
针对该系统的功能,李工建议采用面向对象的架构风格,将折扣力度计算和用户筛选分别封装为独立对象,通过对象调用实现对 应的功能:王工则建议采用解释器(interpreters) 架构风格, 将折扣力度计算和用户筛选条件封装为独立的规则,通过解释规 则实现对应的功能。请针对系统的主要功能,从折扣规则的可能 改性、个性化折扣定义灵活性和系统性能三个方面对这两种架构 风格进行比较与分析,并指出该系统更适合采用哪种架构风格。
参考答案:
面向对象风格通过编写新的规则实现代码,并通过应用重启或热加载添加规则,可修改性稍差;解释器风格通过编写新的规则文件,并通过导入资源文件或外部配置添加规则,可修改性较好。
面向对象风格通过策略模式定义规则对象,规则以程序逻辑实现,灵活性较差,解释器风格可灵活定义规则计算表达式,灵活性更好。
面向对象风格以编译后代码运算规则,性能好;而虚拟机风格需要加载规则,解析规则,规则运算,再得出结果,性能较差。
面向对象风格:效率高质量高易维护,可修改性高,灵活性稍差,性能好;解释器风格:可修改性高,个性化和灵活性强,性能较差;
由于本项目的目标是提升灵活性,并且规模不大,因此建议采用解释器风格。
例题4
某软件公司拟为某市级公安机关开发一套特种车辆管理与监控系统,以提高特种车辆管理的效率和准确性。在系统需求分析与架构设计阶段,用户提出的部分需求和关键质量属性场景如下:
(a)系统用户分为管理员、分管领导和普通民警等三类;
(b)正常负载情况下,系统必须在0.5秒内对用户的车辆查询请求进行响应;
(c)系统能够抵御99.999%的黑客攻击;
(d)系统的用户名必须以字母开头,长度不少于5个字符;
(e)对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计;
(f)网络失效后,系统需要在2分钟内发现并启用备用网络系统;
(g)在系统升级时,需要保证在1个月内添加一个新的消息处理中间件;
(h)查询过程中涉及到的车辆实时视频传输必须保证20帧/秒的速率,且画面具有600×480的分辨率;
(i)更改系统加密的级别将对安全性和性能产生影响;
(j)系统主站点断电后,需要在3秒内将请求重定向到备用站点;
(k)假设每秒中用户查询请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的查询请求”这一要求是可以实现的;
(l)对用户信息数据的授权访问必须保证99.999%的安全性;
(m)目前对“车辆信息实时监控”业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;
(n)更改系统的Web界面接口必须在1周内完成;
(o)系统需要提供远程调试接口,并支持系统的远程调试
【问题1】
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干描述中的(a)~(o)各选出1个属于系统架构风险、敏感点和权衡点的描述。
参考答案:
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是指为了实现某种特定的质量属性,一个或多个系统组件所具有的特性。
权衡点是指影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
风险点:(m)
敏感点:(e)
权衡点:(i)
解释:
系统的架构风险、敏感点和权衡点是对质量属性效用树进行分析的主要依据,根据相关概念,题干中“对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计”描述的是敏感点;
“目前对‘车辆信息实时监控’业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性”描述的是系统的架构风险;
“更改系统加密的级别将对安全性和性能产生影响”描述的是权衡点。
另外:
(a)需求(b)性能(c)安全性(d)需求(e)敏感点(f)可用性(g)可修改性
(h)性能(i)权衡点(j)可用性(k)非风险(l)安全性(m)风险点(n)可修改性(o)可测试性
例题5
某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系统的架构设计。公司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属性场景和评估专家的意见等内容部分列举如下:
(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】
在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。
参考答案:
系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是指为了实现某种特定的质量属性,一个或多个系统组件所具有的特性。
权衡点是指影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
风险点:(i)
敏感点:(g)
权衡点:(f)
另外:
(a)性能(b)安全性(c)需求(d)可用性(e)性能(f)权衡点(g)敏感点
(h)可修改性(i)风险点(j)可用性(k)安全性(l)可修改性(m)可测试性
例题6
某公司欲为某教育机构开发一个在线教育平台,支持用户完成网上下单购买课程,在线点播视频,在线测试等功能。在系统开发之初,企业对该平台提出了如下要求和质量场景:
(a)10000用户并发点播视频时,视频不卡顿;
(b)用户口令在保存进数据库之前,必须进行MD5码处理;
(c)视频点播支持多平台,当一个平台出现故障后,30秒内将用户请求切换至另一平台;
(d)平台支持的高清视频码率至少达到3Mb/s;
(e)学员不必查看帮助文档,也能正常使用系统;
(f)学员信息数据库授权必须保证99.9%可用;
(g)更改视频加密的方式将对安全性和性能产生影响;
(h)目前对学员学习情况分析功能尚未达成共识,这可能导致部分业务功能模块开发后期需要调整;
(i)用户名要求必须以字母开头,可以包含下划线和数字,长度不少于6个字符;
(j)系统要扩容时,应保证在2人·月内完成所有的部署与测试工作;
(k)对用户隐私的保护要求将影响系统的数据传输协议和处理过程的设计;
(l)系统对学员的操作行为有完整的日志记录;
(m)系统必须提供远程调试接口,并支持系统的远程调试;
(n)更新系统的 Web界面接口必须在1人月内完成;
(o)若每秒学员交卷请求的数量是30个,处理单个请求的时间为20毫秒,则系统保证在1秒内完成用户的请求是可以做到的;
(p)当在线教育平台发生网络失效后,需要在60秒内发现错误并启用备用网络。
在对系统需求,质量属性描述和架构特性进行分析的基础上,系统的架构师给出了三个候选的架构设计方案,公司目前正在组织系统开发的相关人员对系统架构进行评估。
【问题1】
在架构评估过程中,质量属性效用树 (utility tree)是对系统 质量属性进行识别和优先级排序的重要工具。请将合适的质量属性,填入下图中(1)~(4)空白处,并选择题干描述的(a)~(p),填入(5)~(8)空白处,完成该系统的效用树。
参考答案:
(1)性能(2)安全性(3)可用性(4)可修改性
(5)(d)
(6)(b)(i)
(7)(p)
(8)(j)
另外:
(a)性能(b)安全性(c)可用性(d)性能(e)易用性(f)安全性(g)权衡点(h)风险点
(i)需求(j)可修改性(k)敏感点(l)安全性(m)可测试性(n)可修改性(o)非风险点(p)可用性
【问题2】
在架构设计过程中,除了需要考虑经典的4大质量属性,还要考虑其它属性,如:易用性,可测试性。题目中(9)是易用性的示例,(10)是可测试性的示例。
参考答案:
(9)(e)
(10)(m)
【问题3】
在架构评估过程中;需要正确识别系统的架构风险点、非风险点、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险点、非风险点、敏感点和权衡点的定义,并从题干描述中的(a)~(p)各选出1个属于系统架构风险点、非风险点、敏感点和权衡点的描述。
参考答案:
敏感点是一个或多个构件(和/或构件之间的关系)的特性,它能影响系统的某个质量属性。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
风险点是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
非风险点是指不会带来隐患的分析与描述。
敏感点:(k)
权衡点:(g)
风险点:(h)
非风险点:(p)
个人总结:
- 1个质量属性的改变,影响到1-N个功能设计等等,这是敏感点。(质量属性影响功能)
- 1个功能的设计或者实现,影响到1-N个质量属性等等,这属于权衡点。(功能影响到质量属性)
- 风险点,是某一个出现的问题影响到质量属性。
- 非风险点,某个问题,可以接受的。