论架构评估

陈杰杰1年前软考-系统架构工程师39

论架构评估

摘要

20211月,我所在公司**公司正在开发一套机器人绕障系统,这里简称《绕障系统》,该项目主要完成机器人自动绕开障碍物并精准到达用户下发的指定位置,我有幸在其中担任系统架构师一职,主要负责整个系统架构设计相关工作,本文以该项目为例,详细阐述基于场景的系统架构评估方法ATAM方法的具体应用,ATAM方法主要包含三个阶段,一是场景和需求的收集,这里我们通过产品经理拿到了业务需求书,再和产品经理一起梳理并收集了相关场景需求,二是在场景和需求的收集后通过评估小组会议描述架构的视图与场景的实现;最后通过评估小组会议确定系统质量属性,分析并构造质量属性模型,梳理出具体的风险点、敏感点和权衡点,对其中的权衡点进行折中;通过以上的具体的架构评估过程,目前项目已经顺利落地。

正文

今年来,建筑机器人行业面临严重的用工老龄化,并且越来越多的年轻人不愿从事辛苦的建筑行业,导致建筑行业用工成本不断上升。公司为解决该问题,同时提升公司科技水平,公司已经成立了建筑机器人导航系统项目,其中为提供机器人的工作效率,安全性和智能化程度,公司与2021年成立《绕障系统》项目组,主要公关机器人自动绕障算法研发工作,我有幸作为作为项目的系统架构工程师,负责整个项目的系统架构设计,整个项目在20211月成立,历时一年。该项目主要分成三层,最上层为接口层,主要负责对外交互,比如接收主控下发的自动走点任务,同时将机器人的运动状态进行上报。中间层为业务逻辑层,主要负责对任务的解析处理,异常处理,再调用算法层算法模块实现具体的业务逻辑。第三层是算法模块层,包含若干个算法模块,比如地图模块,全局路径规划模块,局部路径规划模块,轨迹跟踪算法模块,运动学模块。

系统架构评估是软件开发过程中的重要一环,这里我们采用了基于场景的架构评估方法-ATAM方法。其重要包含三个阶段,第一阶段是场景和需求收集,第二阶段是架构视图和场景的实现,第三阶段是属性模型的构造,分析和折中。在进行系统架构评估时我们通常会找出几个关键的质量属性:性能,可用性,安全性,可修改性。性能有两个维度描述,一个是单位时间能做多少事情,二是一个事件触发后的系统的响应及处理时间;可用性是指系统正常使用的时间占系统整体运行时间的比例;安全性是指系统能给正常用户提供服务的同时又能阻止非授权用户的访问和拒绝服务的能力。可修改性是指,用户提出新的需求时,我们为了满足客户要求进行而进行调整的时间,通常以某次具体的变更为基准,通过评估这些变更的代价来衡量可修改性。

为了更好的对以上各个质量属性做出合理的评估和折中,我们采取了基于场景的系统架构评估方法ATAM方法,接来下我以该项目的架构评估实施过程为例将详细介绍我是如何应用ATAM来对整个系统进行评估的。

第一阶段,场景和需求收集,针对功能场景的需求与收集,我们主要是多次和需求方(建筑机器人项目组)多次开会讨论,收集用户明确需求后来进行确定的,同时,我们也做了竞品分析,知道了服务机器人的一个绕障需求及性能指标,在这两者的基础上,我们梳理出了《绕障系统》所应具备的场景需求。比如,我们要求每次局部规划时间(单次绕障时间)要在30ms内,这是要求保证绕障的实时性;比如在开启绕障后,在任何情况下都不能出现不可接受的安全风险;比如在有10个障碍物的情况下机器也要能够正常的作业;比如在900mm的通道内机器人两边只有6公分安全距离时也能正常的作业;比如在终点有障碍物时,可以有客户选择是否可以跳过改任务点继续作业;比如交付物必须以SDK方式提供,并且要接口清晰,文档完备,便于进行二次开发。这里都是我们和实际作业人员到现场查看具体的作业环境,并且和工作人员一个一个的实际作业场景分析得到。

第二阶段:架构视图和场景的实现,在这个阶段,我们先由多方人员包含了需求方人员,专业领域专家,项目经理,架构设计师和架构实现人员组成了架构评估小组。首先,对ATAM的评估方法做了详细的介绍,让小组内成员对整个ATAM架构评估方法有个具体的了解,知道各个评估过程需要做的具体事情。然后我做为架构师,对我们的架构视图进行了详细的描述。主要包括我们所使用的系统架构为独立构件风格,以及我们的架构可以如何实现之前收集的场景需求。比如针对性能要求:要求每次局部规划时间应小于30ms,这里我们主要做了资源调度的方式实现。比如在终点有障碍物时应由用户选择是否可以跳过当前任务直接进行下一项作业,我们采用了配置文件的方式和消息接收的方式实现可以有用户手动实时修改或者在配置文件中默认设置进行生效。比如用户希望能在不同场景下使用不同的绕障方式,这里我采用了策略模式,在不同的场景,我们局部规划算法有三个具体模块包含,teb算法,dwa算法,apf算法,算法的不同对应的使用场景也不同,以此满足用户实际需求。

第三阶段:属性模型构造、分析和折中。经过评估小组多次会议之后,我们对对单一的质量属性做了分析。性能方面,如单次局部规划时间消耗应小于30ms,单次全局路径规划时间应小于150ms,这里我们主要是做了资源调度。安全性方面,比如在任何情况下都不能出现用户无法接受的安全分险,比如撞墙。这里我们采用了冗余设计的思想,除了使用感知获取到的障碍物信息,我们也使用了避障雷达和超声波进行安全检测,通过防跌落传感器保证不掉入沟槽,从而保证保证行走的安全性,当然这里我们舍弃了无法保证每次都以最小的时间进行计算,同时客户也运行在极端场景时间消耗可以大于30ms。在可用性方面,我们通过配置的方式,可以由用户设置在不同场景使用不同的决策来进行作业,比如在某个终点有障碍物时,我们支持跳过该站点从而继续作业。在可修改性方面,我们使用了基于SDK的开发方式,统一了各个模块的接口,同时也提供了测试用例,以方便进行维护和二次开发。

该系统经过以上的详细的架构评估过程。所以在开发阶段比较顺利,同时也让该系统的整体的安全性,可用性,性能和可修改性都达到了设计的要求,《绕障系统》在2021年底也顺利交付给到客户使用,系统陆续的应用对将近28款建筑机器人的实际作用中,持续的稳定运行,使该项目得到了客户和公司领导的一致好评。

当然,该项目还是有一些不足,比如在评估过程也有确认,为满足系统的高实时性和安全性,整个系统对硬件资源消耗过高,对于i7处理器,需要单核50%的cpu消耗,这就限制了该套系统使用场景,再这里需要再次思考不同的场景使用不同的策略,以满足不同的客户需求,之后我们将从算法优化,逻辑优化和性能优化三个方向进行优化,所以整个系统其实还有较大的优化空间,后续我们会继续进行迭代开发,不断演化,让该系统越来越好,力争能在建筑机器人领域闯出一片天。

 


标签: 软考
每天进步一点点!

相关文章

可靠性设计技术

可靠性设计技术题目随着软件的日益普及,系统中软件成分不断增加,是得系统对软件的依赖越来越强。软件的可靠性对系统的可靠性影响越来越大。而实践证明,保障软件可靠性具有最高效,最经济,最重要的手段是在软件设...

系统架构风格

论软件系统架构风格摘要2021年,我所在的公司需要开发《******绕障系统》,之后简称《绕障系统》,该系统为建筑机器人导航系统的一个子系统,主要完成的任务是:实现机器人自主导航从A点到地图任意一点B...

论基于架构的软件设计方法的应用

论基于架构的软件设计方法的应用摘要2021年,我所在公司正在开发一套《AGV自动绕障系统》,该项目主要功能为完成机器人自动绕开障碍物并到达指定目标位置。我在该项目中担任系统架构师一职,主要负责对整个项...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。