刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题一(共25分)

阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题 1和问题 2。

【说明】

某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程,采用自助方式进行智能应用设计、实现与部署,并可以开发新算法组件加入平台中。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:

(a) 平台用户分为算法工程师、软件工程师和管理员等三种角色,不同角色的功能界面有所不同:

(b)平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问:

(c)平台支持分布式部署,当主站点断电后,应在 20 秒内将请求重定向到备用站点;

(d)平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式:

(e)平台主站点宕机后,需要在 15 秒内发现错误并启用备用系统;

(f)在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒;

(g)平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作;

(h)平台需要对用户的所有操作过程进行详细记录,便于审计工作;

(i)平台部署后,针对界面风格的修改需要在 3 人天内完成:

(j)在正常负载情况下,平台应在 0.5 秒内对用户的界面操作请求进行响应;

(k)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致;

(l)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。

在对平台需求、质量属性描述和架构特性进行分析的基础上,公司的架构师给出了三种候选的架构设计方案,公司目前正在组织相关专家对平台架构进行评估。

【问题2】(16分)

针对该系统的功能,赵工建议采用解释器(interpreter)架构风格,李工建议采用管道-过滤器(ppe-and-hlter)的架构风格,王工则建议采用隐式调用(implicit invocation)架构风格。请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

管道-过滤器风格具备高内聚低耦合、支持软件重用、扩展性好、支持并发等优点,但它有编写复杂、不适合处理交互应用等缺点;

隐式调用基于事件触发思想,具备支持软件重用、改进系统方便等优点,但它有构件放弃了对系统计算的控制、事件传递中的数据交换存在问题、语义依赖于被触发事件的上下文约束等缺点。

解释器通常包括解释引擎、代码存储区、记录解释引擎当前工作状态的数据结构、记录源代码被解释执行进度的数据结构。它含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,其缺点是执行效率比较低。优点:语法由很多类(每个规则对应一个类)表示, 容易改变及扩展;缺点:如果语法规则数量太多,会增加系统复杂度,性能下降。

本题中,由于需要交互操作,显然管道-过滤器风格不合适;基于事件触发的隐式调用风格也不合适;只有解释器风格通过灵活自定义规则,具备较强的灵活性和可扩展性,适合本题中的机器学习应用。


解析:

本题要求针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析。管道-过滤器风格虽然扩展性好,但不适合处理交互应用;隐式调用风格在事件驱动下有其优点,但在系统计算和事件数据交换上存在一定问题;而解释器风格通过灵活自定义规则和扩展语法规则,既可以满足用户通过拖拽定义机器学习流程的需求,也可以方便地添加和修改算法组件。因此,综合考虑,解释器风格更适合该平台的核心应用场景。

创作类型:
原创

本文链接:【问题2】(16分)针对该系统的功能,赵工建议采用解释器(interpreter)架构风格,李工建议

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share