首页 > 其他分享 >根据软件架构设计与评估的叙述开发一套机器学习应用开发平台

根据软件架构设计与评估的叙述开发一套机器学习应用开发平台

时间:2024-09-26 22:49:17浏览次数:9  
标签:质量 架构 平台 开发 风格 软件架构 构件 叙述 属性

案例

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

【说明】

        某公司拟开发一套机器学习应用开发平台,支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台的核心应用场景是用户通过拖拽算法组件灵活定义机器学习流程,采用自助方式进行智能应用设计、实现与部署,并可以开发新算法组件加入平台中。在需求分析与架构设计阶段,公司提出的需求和质量属性描述如下:
        (a)平台用户分为算法工程师、软件工程师和管理员等三种角色,不同角色的功能界面有所不
同;
        (b)平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问;
        (c)平台支持分布式部署,当主站点断电后,应在20 秒内将请求重定向到备用站点;
        (d)平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模;
        (e)平台主站点宕机后,需要在 15 秒内发现错误并启用备用系统;
        (f)在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒;
        (g)平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作;
        (h)平台需要对用户的所有操作过程进行详细记录,便于审计工作;
        (i)平台部署后,针对界面风格的修改需要在 3 人天内完成;
        (j)在正常负载情况下,平台应在 0.5 秒内对用户的界面操作请求进行响应;
        (k)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致;
        (l)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。

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

【问题 1】(9 分)

        在架构评估过程中,质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。请将合适的质量属性名称域入图 1-1 中(1)、(2)空白处,并从题干中的(a)~(I)中选择合适的质量属性描述,填入(3)~(6)空自处,完成该平台的效用树。

【问题 2】(16 分)

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

【答案】

        本题考查软件架构评估方面的知识与应用主要包括质量属性和架构风格对比两个部分。
        这种题型还是比较简单的。

【问题 1】答案

        (1)性能
        (2)可修改性
        (3)(e)
        (4)(j)
        (5)(h)
        (6)(i)

【问题 2】答案

        应采取解释器风格。
        (1)解释器风格是自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配。
        (2)管道-过滤器风格每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理(计算或增值),产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联。过滤器就是构件,连接件就是管道。
        (3)隐式调用风格是构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。个事件的触发就导致了另一个模块中的过程调用。
        平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式从灵活性上解释器可以通过灵活的自定义规则实现规则的重组。
        从可扩展性上解释器可以包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。可以通过新建规则实现可扩展性。

相关推荐

重塑在线软件开发新纪元:集成高效安全特性,深度解析与评估支持浏览器在线编程的系统架构设计_公司拟开发一套在线软件开发系统,支持用户通过浏览器在线-CSDN博客文章浏览阅读2.2k次,点赞74次,收藏56次。本文深入探讨了为在线软件开发系统设计的架构方案,重点强调支持浏览器在线编程的高效性与安全性。通过对比分析管道-过滤器与仓库架构风格,并结合质量属性效用树进行评估,旨在构建出既满足用户需求又具备高可扩展性和卓越处理性能的系统架构,为开发者提供流畅的在线编程体验。_公司拟开发一套在线软件开发系统,支持用户通过浏览器在线https://shuaici.blog.csdn.net/article/details/1421802202019年系统架构师案例分析试题一-CSDN博客文章浏览阅读1.8k次,点赞54次,收藏67次。系统架构风险:架构设计中潜在的、存在问题的架构决策所带来的隐患。敏感点:为了实现某种特定的质量属性,一个或多个构件所具有的特性。权衡点:影响多个质量属性的特征,是多个质量属性的敏感点。https://shuaici.blog.csdn.net/article/details/1419558002017年系统架构师案例分析试题一-CSDN博客文章浏览阅读2.4k次,点赞38次,收藏49次。确定软件功能需求、软件质量属性、架构风险、架构敏感点、架构权衡点等内容,并采用效用树这一工具对架构进行评估。架构敏感点、架构权衡点等内容,并采用效用树这一工具对架构进行评估。系统架构风险:架构设计中潜在的、存在问题的架构决策所带来的隐患。敏感点:为了实现某种特定的质量属性,一个或多个构件所具有的特性。权衡点:影响多个质量属性的特征,是多个质量属性的敏感点。https://shuaici.blog.csdn.net/article/details/1414254672016年系统架构师案例分析试题一-CSDN博客文章浏览阅读1k次,点赞24次,收藏41次。不同的架构设计决策是架构师必须具有的基本能力:从交互方式方面看,管道-过滤器风格具有顺序结构或有限的循环结构;采用数据仓储风格时,工具之间无直接交互,通过数据仓储间接交互。从数据结构方面看,管道-过滤器风格具有数据驱动的特征,数据到来后就进行计算;数据仓储风格以文件或模型为主要数据结构。从控制结构方面看,管道-过滤器风格具有顺序结构或有限的循环结构;数据仓储风格则以业务功能驱动。https://shuaici.blog.csdn.net/article/details/141326830

标签:质量,架构,平台,开发,风格,软件架构,构件,叙述,属性
From: https://blog.csdn.net/g984160547/article/details/142529621

相关文章

  • 在 VS Code 中配置 C/C++ 开发环境(详细指南)
    前言VisualStudioCode(VSCode)是一个广泛使用的代码编辑器,支持多种编程语言,包括C和C++。本指南将详细介绍如何在VSCode中设置C/C++开发环境,适合新手。1.安装编译器1.1.Windows系统推荐使用MinGW-w64:下载MinGW-w64访问MinGW-w64官网。选择适合你系统......
  • 网页开发算法
    我认为这些算法非常重要,特别是对于Web开发。网页开发算法算法类型排序、搜索、散列、图、树遍历、动态编程、捕获、压缩、安全性。奖励:用于模式匹配和文本处理的正则表达式。并发和异步编程。Web开发前端最关注的模式和算法:反跳:一种用于搜索输入或API调用......
  • 每个开发人员都应该了解的基本 Express 请求属性
    在项目后端工作时,处理请求和响应至关重要。有效管理这些请求对于客户端和服务器之间的顺利通信至关重要。以下是每个开发人员都应该熟悉的一些常见且重要的请求属性。1.请求ipexpress.js中的req.ip是请求对象的一个??属性,它提供发出请求的客户端的ip地址。它返回一个......
  • 每个开发人员都应该掌握的 JavaScript 数组方法(第 1 部分)
    “能力越大,责任越大。”—本叔叔,蜘蛛侠(2002)就像蜘蛛侠必须掌握他新发现的能力一样,开发人员需要掌握javascript强大的数组方法才能高效、负责任地进行编码。让我们深入研究一些必须知道的数组方法!1.查找find()方法返回满足所提供的测试函数的第一个数组元素的值。ar......
  • OJ在线评测系统 后端 判题机模块预开发 架构分析 使用工厂模式搭建
    判题机模块预开发(架构师)(工厂模式)判题机模块是为了把代码交个代码沙箱去处理得到结果返回代码沙箱梳理判题模块和代码沙箱的关系判题模块:调用代码沙箱把代码和输入交给代码沙箱去执行代码沙箱:只负责接受代码和输入返回编译的结果不负责判题这两个模块完全解耦......
  • 游戏开发的未来(没有引擎!?)
    您无需等待游戏开发者设计关卡、角色或动作。??♂?相反,游戏会在你玩的过程中自动生成!这可能听起来像科幻小说,但由于谷歌开发的一项新技术,它正在成为现实。??♂?这个新的游戏引擎,称为“GameandGen”使用人工智能(AI)来动态创建游戏世界。?你不需要任何传统的编码来制作关卡或设......
  • WaterCloud:一套基于.NET 8.0 + LayUI的快速开发框架,完全开源免费!
    前言今天大姚给大家分享一套基于.NET8.0+LayUI的快速开发框架,项目完全开源、免费(MITLicense)且开箱即用:WaterCloud。可完全实现二次开发让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。项目介绍WaterCloud是一套基于ASP.NET8.0MV......
  • 使用duxapp开发 React Native App 事半功倍
    Taro的ReactNative端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发壳是用来打包调试版或者发版安装包使用的代码是运行在壳上的js代码Taro壳子的代码仓库https://github.com/NervJS/taro-native-shellduxapp中更进一步,你不需要太关注壳子什么......
  • 开发人员人工智能入门:揭秘基础知识部分
    开发者们大家好!人工智能不再只是一个梦想。它就在这里并改变我们构建软件的方式。它可以使应用程序更好、更有用。但如何开始在项目中使用人工智能呢?本系列旨在为您提供踏上人工智能开发之旅的基础知识。在第一部分中,我们将深入研究核心概念并提供使用langchain和openai的实践......
  • ECU电控软件开发及测试介绍
        伴随着电动化、智能化、网联化等技术发展的时代背景,各行各业电子电气架构都在发生深度变革。新型架构逐渐取代传统架构,比如汽车、工程机械、储能、船舶等领域,电子电气架构从传统分布式向域集中式,甚至向着中央集中式发展,控制器功能呈现集中化、复杂化的特点。为了提升开......