解释器-架构案例2021(三十一)

  • 软件架构设计与评估

某公司支持用户使用浏览器在线进行基于机器学习的智能应用开发活动。该平台核心应用场景是用户拖拉拽算法组件灵活定义机器学习流程,采用自助方式智能应用设计、实现与部署,并开发新算法加入平台。

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

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

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

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

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

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

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

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

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

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

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

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

【问题1】

请将合适的质量属性名称域入图1-1中( )、( )空白处,并从题干中的(a)~(I)中选择合适的质量属性描述,填入( )~( )空白处,完成该平台的效用树。

答案:

(3)选择e

根据f可以知道,(1)为 性能,(4)填写(j)

由安全得到(5)填写h

由g可以知道(2)为 可修改性,所以6填写(i)

【问题2】

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

答案:

解释器有独立的语法规则,可以通过解释器来解析,非常灵活,扩展性强。

管道过滤则是每个构件的输入和输出,连接件就是管道,过滤器就是构件,构件读取数据,经过处理,再输出,前一个构件的输出是下一个构件的输入。

隐式调用则表示不是直接调用某个方法或者过程,而是通过广播或者触发来实现,构件在多个事件注册,当某个事件触发,则自动调用注册的所有过程,一个事件触发可以导致另一个模块中调用。

从平台支持初学者和高级两个界面,说明系统需要满足灵活性。解释器的扩展性高,无论角色新增还是扩展已有业务都不需要修改代码。而管道过滤主要传递数据,当需要扩展和变动则需要修改代码。隐式调用则强调通过间接方式进行调用,灵活性高于管道过滤,但是低于解释器。

  • 系统设计与建模

某医院拟委托软件公司开发一套预约挂号管理系统,以便为患者提供更好的就医体验,为医院提供更加科学的预约管理。本系统的主要功能描述如下:(a)注册登录,(b)信息浏览,(c)账号管理,(d)预约挂号,(e)查询与取消预约,(F)号源管理,(g)报告查询,(h)预约管理,(i)报表管理和(j)信用管理等。

【问题1】6分

请将合适的参与者名称填入图 2-1中的( )和( )处,使用题干给出的功能描述(a)~(j),完善用例( )~( )的名称,将正确答案填在答题纸上。

答案:

  1. 管理员
  2. 患者
  3. 到(8)则是(a)注册中心、c、f、h、i、j
  1. 到(12)则是b、d、e、g

【问题2】10分

预约人员(患者)登录系统后发起预约挂号请求,进入预约界面。进行预约挂号时使用数据库访问类获取医生的相关信息,在数据库中调用医生列表,并调取医生出诊时段表,将医生出诊时段反馈到预的界面,并显示给预的人员;预约人员选择医生及就诊时间后确认预的,系统返网预约结果,并向用户显示是否预约成功。

采用面向对象方法对预约挂号过程进行分析,得到如图 2-2 所示的顺序图,使用题干中给出的描述,完善图 2-2 中对象( 1),及消息( 2)~( 4)的名称,将正确答案填在普题纸上请简要说明在描述对象之间的动态交互关系时,协作图与顺序图存在哪些区别。

答案:

  1. 是患者
  2. 发起预约挂号请求
  3. 显示给预的人员
  4. 是否预约成功

顺序图强调交互的消息时间顺序。

协作图强调接受和发送消息的结构组织,强调通信方式。

【问题3】9分

采用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型,请分别介绍这3种模型,并详细说明它们之间的关联关系,针对上述模型,说明哪些模型可用于软件的需求分析?

答案:

对象模型描述系统静态结构,主要对象图来建模,是整个系统最基础最核心部分。

动态模型描述系统交互次序,主要状态图来建模。

功能模型描述系统数据表换,主要数据流图DFD来表示。

对象模型描述了动态模型和功能模型的基础数据结构,对象模型中的操作对应于动态模型中的事件功能模型中的函数

动态模型描述了控制结构,告诉我们哪些引起对象的变化,并激活功能。

功能模型描述 由对象模型的操作 动态模型的动作 激活功能,功能模型作用在对象模型的说明上,并且表示了对象值的约束。

相关推荐
qq_1777673742 分钟前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
小程故事多_802 小时前
深度搜索Agent架构全解析:从入门到进阶,解锁复杂问题求解密码
人工智能·架构·aigc
●VON3 小时前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
Gary董3 小时前
高并发的微服务架构如何设计
微服务·云原生·架构
ujainu3 小时前
Flutter + OpenHarmony 实战:《圆环跳跃》——完整游戏架构与视觉优化
flutter·游戏·架构·openharmony
爬山算法4 小时前
Hibernate(74)如何在CQRS架构中使用Hibernate?
java·架构·hibernate
香芋Yu4 小时前
【大模型教程——第二部分:Transformer架构揭秘】第2章:模型家族谱系:从编码器到解码器 (Model Architectures)
深度学习·架构·transformer
从此不归路5 小时前
Qt5 进阶【13】桌面 Qt 项目架构设计:从 MVC/MVVM 到模块划分
开发语言·c++·qt·架构·mvc
java干货6 小时前
微服务:把一个简单的问题,拆成 100 个网络问题
网络·微服务·架构
橙露8 小时前
Vue3+Pinia实战:从零搭建企业级后台管理系统的核心架构
架构