可靠性设计技术

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

可靠性设计技术

题目

随着软件的日益普及,系统中软件成分不断增加,是得系统对软件的依赖越来越强。软件的可靠性对系统的可靠性影响越来越大。而实践证明,保障软件可靠性具有最高效,最经济,最重要的手段是在软件设计阶段采取措施进行可靠性控制,为此提出了软件可靠性设计的概念,软件可靠新设计就是在常规的软件设计中,应用各种方法和技术,使软件设计在兼顾用户功能可性能需求的同时,全面满足软件的可靠性要求。软件可靠性设计应和软件的常规设计紧密结合,贯穿于软件设计过程的始终。

请围绕软件可靠性设计技术的应用为论题,依次从以下三个方面进行论述。

1、  概要叙述参与管理和开发的软件项目以及你在其中所承担的主要工作

2、  结合实际项目,论述你在项目开发过程中,进行软件可靠性设计时遵循的基本原则;论述你在该项目中所采用的具体的可靠性设计技术

3、  阐述你在具体的可靠性设计工作中,为了分析影响软件和可靠性的主要因素,所采用的可靠性分析方法。

摘要

 2021年,我所在的公司正在开发一套建筑机器人绕障系统,简称《绕障系统》,该项目主要的目标是是建筑机器人能在复杂的建筑工地实现自动作业,并且能自动避开障碍物。能够接收用户的作业的起点终点和行走要求参数,并执行对应作业,使机器人安全到达目标点。在该项目中,我担任系统架构工程师一职,主要负责项目的系统架构搭建,方案设计,和系统的可靠性设计。本文将以该项目为例,详细参数可靠性设计的应用,这里我主要采取了三种可靠性设计,容错机制的恢复块设计,在错误发生时能停止作业并且允许客户排除故障后继续作业;容错机制中的冗余设计,设置多种安全机制,当有一个异常时就开始触发安全判断;检错技术,在触发异常时,比如脱离了预定轨迹时能及时告警停车。

正文   

 随着建筑行业的快速发展,外加越来越多的年轻人不再愿意从事辛苦的建筑行业,建筑行业面临着严重的用工难和用工老龄化问题。据国家统计局数据显示:传统建筑行业从业者更多的集中在高龄农民工中,其中30岁以下群体重从事建筑及装修行业的仅占15%,而50岁以上人群比例确高达42.7%。随着公司建筑机器人的快速发展,建筑机器人应用而生,同时为了提高建筑机器人的智能化程度的高安全性和高可靠性,公司进行了一系列的技术研发。

    20211月《绕障系统》也应用而生,而我有幸作为该项目的系统架构师,主要负责整个系统的架构设计,项目人员包括项目经理,开发,测试等共计20余人。从2021年开始到2021年底顺利结束。耗时12个月。该项目主要完成了若干导航相关核心算法的开发,对外接口的开发,这里重要用了中间件进行通信使用,包含了逻辑管控相关代码,也包含地图处理,全局路径规划,局部路径规划,速度规划,轨迹跟随和运动学等算法。整套系统最终以SDK的方式进行输出给到建筑机器人导航系统进行调用。

    《绕障系统》因为需要在工地作业,里面包含了复杂的情况,特别是在一些没有封闭的阳台上更加明显,所以整个系统在可靠性要求这块要求特别严苛。可靠性设计一般包含3个原则:一是可靠性是软件设计的一部分,应在系统整体架构设计时就应该考虑到,做可靠性设计同时不能影响正常的功能和非功能需求;二是可靠性设计的目标是为了提高系统的安全性,目的是为了提高系统的可靠性;三是所有的可靠性设计应确认软件的可靠性目标,不能无限扩大,并且需要在功能,用户需求和开发费用之后进行考虑。可靠性设计通常包含三个部分:一个是容错机制,其中包含三个方法,一个是恢复块设计,一个是N版本程序设计,一个是冗余设计。第二种是检错机制;第三是减低程序复杂度。在这里我使用了三种方式,一是恢复块技术,二是冗余设计,三是检错机制。以下将详细论述我是如何在项目中使用这三种技术的。

    恢复块设计,恢复块设计是指选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块,一个恢复块包含若干个包含有若干个功能相同,设计差异的程序块文本,一旦运行文本故障,则使用备份文本进行替换。恢复块的方法就是软件包含一系列恢复块。这里《绕障系统》在接收到所有的任务信息时,都会进行一次安全备份,当机器人行驶过程中遇到故障导致停车时,可以让用户介入,排查清除故障后,我们在控制pad上可以允许客户执行继续操作,当执行继续操作时,机器人调用之前备份的任务信息,并查找最近的一次任务作业,按照最近一次任务重新继续作业。不需要用户再继续重头开始进行长时间的之前重复过的作业(比如机器人运行到了99个点,机器人可以直接从99号任务点继续作业,而不是再次从1号作业点重新开始任务),也无需重启整个机器人,保证了在触发异常后再排查异常后,能够快速恢复之前的作业任务,继续作业,保证了作业的连续性,提高了整个机器人的作业效率。

    冗余设计,冗余设计是指在一套完整的软件系统之外,设计一种不同的路径,不同的算法或者不同的实现方法或不同系统作为备份,在系统出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常工作。缺点就是费用和资源的消耗会有所增加。在《绕障系统》中,特别是在安全模块这部分,为了保证整个机器人的安全性,我们做了几道冗余设计,包括使用R2000激光雷达对障碍物进行识别和提取,获取到周边的障碍物信息,这里是软件算法的第一层保护;第二是使用了超声波做了安全停障,因为他们在不同的高度,能够对不同的障碍物进行监控,这里是使用软件作为第二层保护;第三是我们再次使用了硬件触边机制,当激光雷达,超声波都失效时,还能有最后一套硬件急停的保护,当机器人一触碰到墙壁或者其他物品时能够快速停车,保证了机器人的安全性。

   第三是检错机制,在软件系统中,无需在线容错的地方,或者不能采用冗余设计技术的部分,如果对可靠性要求较高,故障可能会引发严重后的情况下,一般会使用检错机制,在软件出现故障后能够及时发现并告警,其缺点是不能够自动恢复解决告警。比如在《绕障系统》中,也采用了几种检错机制,比如当我们检测到机器人偏离了轨迹,并且偏离的距离超过了我们设计的阈值,这是就会触发安全告警;比如机器人安装了两个距离传感器,当检测到前进方向前面的地面有距离突变时,我们也能及时触发告警机制。使机器人安全停下,保证了机器人不发生倾翻的风险。

    在设计初期,为了分析影响可靠性设计的因数,我们采取了可靠性分析方法。在软件可靠性设计之前和软件可靠性设计过程中,都需要采用软件可靠性分析和预测的方法。常用的软件可靠性分析方法有故障树分析法;失效模式和失效分析方法等。故障树是一种自顶向下的软件可靠性分析方法;失效分析和响应分析方法是指在软件前期通过识别软件失效模式,分析造成的后果,研究分析各种失效模式产生的原因。《绕障系统》在设计初期时架构设计时就考虑了不同的场景,其中就包含了安全性。包含机器人在任何时候都不能触发不可接受的严重错误,对各个模块进行分析处理。比如撞墙,比如机器人速度失控,这里我们采用了是写模式和失效分析方法,通过讨论加了机器人在可靠性设计部分的工作,如上文提到了冗余设计和检错机制。

    《绕障系统》通过上述的可靠性设计方法之后,整体满足了系统的安全性和可靠性指标,系统也成功上线,到目前为止,整个系统已经适配了超过28款建筑机器人,超过1500个项目上进行使用。客户反馈良好,公司领导也比较满意。当然,比如在添加过多冗余设计时,整个系统相对复杂度也提高了,系统的成本也提高了。在软件过程中系统资源消耗也比预期要高,这也是我们之后要考虑的一个点,系统也在不断的迭代开发中。希望整套系统能在建筑机器人行业闯出自己的一片天。

 


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

相关文章

系统架构风格

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

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

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

论架构评估

论架构评估摘要2021年1月,我所在公司**公司正在开发一套机器人绕障系统,这里简称《绕障系统》,该项目主要完成机器人自动绕开障碍物并精准到达用户下发的指定位置,我有幸在其中担任系统架构师一职,主要负...

发表评论    

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