@[toc]
题目
某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。
该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程,采用自助方式进行智能应用设计、实现与部署,并可以开发新算法组件加入平台中。
在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
- (a)平台用户分为算法工程师、软件工程师和管理员等三种角色,不同角色的功能界面有所不同;
- (b)平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问;
- (c)平台支持分布式部署,当主站点断电后,应在20秒内将请求重定向到备用站点;
- (d)平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式;
- (e)平台主站点宕机后,需要在15秒内发现错误并启用备用系统;
- (f)在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒;
- (g)平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作;
- (h)平台需要对用户的所有操作过程进行详细记录,便于审计工作;
- (i)平台部署后,针对界面风格的修改需要在3人天内完成;
- (j)在正常负载情况下,平台应在0.5秒内对用户的界面操作请求进行响应;
- (k)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致;
- (l)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。
在对平台需求、质量属性描述和架构特性进行分析的基础上,公司的架构师给出了三种候选的架构设计方案,公司目前正在组织相关专家对平台架构进行评估。
问题1
在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。
请将合适的质量属性名称填入图1-1中(1)、(2)空白处,并从题干中的(a)-(i)中选择合适的质量属性描述,填入(3)-(6)空白处,完成该平台的效用树。
图1-1机器学习应用开发平台效用树
【答案一】
(1)性能(2)可修改性
(3) (e)
(4) (j)
(5) (h)
(6) (i)
问题:2
针对该系统的功能,赵工建议采用解释器(interpreter)架构风格,李工建议采用管道过滤器(pipe-and-filter)的架构风格,王工则建议采用隐式调用(implicit invocation)架构风格。
请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格。
【答案二】
更适合采用解释器风格。
1.管道和过滤器风格,每个模块从它的输入端接收输入数据流,在其内部经过处理后,按
照标准的顺序,将结果数据流送到输出端,以达到传递一组完整的计算结果实例的目的。机器学习流程变更后,需要重新设置过滤器,所以灵活性和可扩展性不好。
2.隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件,系统自动调用在这个事件中注册的所有过程。但事件触发者也并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,所以不适合本案提到的机器学习流程的定义,扩展性方面可以通过注册事件来实现,扩展性较好。
3.解释器可以看做是一个虚拟机,可以仿真硬件的执行过程和一些关键应用。通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。解释器可以通过自定义流程规则及配套流程解释引擎开发,做到用户层面的流程自定义,扩展性也很好。