Administrator
发布于 2025-05-09 / 1 阅读
0
0

ATAM评估

 2020年6月,我参加了风险洞察系统的开发,在该项目中我担任系统架构师。该系统主要业务是为民警提供人员在辖区内的实时动态,为辖区提供安保全方面的软件支撑。本文结合该项目的实践,以风险洞察为例,主要论述了软件系统架构评估方法。系统评估采用了ATAM评估方法。首先通过描述介绍阶段向大家介绍ATAM方法,然后描述系统的商业动机和介绍系统的架构。其次,建立评估小组开会调查和分析阶段获风险预警服务的场景,根据场景生成质量效用树,分析场景中的风险点、敏感点、权衡点。然后再测试评估阶段,根据风险预警服务的特性确定优先级,针对质量属性采取对应的方案。通过以上技术方案的实施,系统的安全性和可用性达到了很好的效果,最终项目上线,稳定运行。

随着节假日和重大活动的人流量增多,派出所需要在人流量大的区域进行对人员、车辆的管控,掌握区域内人员及车辆的实时轨迹,对于标签人员进行对应的预案和措施管理,为区域提供保障。我司此承建了该项目的开发,风险洞察项目,能够对标签人员关注工作对象进入辖区及时发现、在辖区内风险行为及时关注、离开辖区及时掌握去向的目标。深度挖掘辖区内未掌握潜在工作对象,智能分析潜在风险隐患,风险线索深度研判,进而为民警提供情报线索,使民警能够精准的掌握辖区内所在对象的轨迹,对于不同的标签人员进行相应的预案,执行对应的措施,使辖区内的安保得到有效的支撑。我在项目中担任架构师,负责系统的架构以及中间件的选型。项目使用的Java语言开发,前端使用的是vue技术框架,后端使用的是springboot、mybatis等技术框架栈,项目采用前后端分离的模式开发,Nginx代理服务器做负载均衡。项目的模块分为活动配置、区域配置、管控对象、推送信息、风险预警、预案配置、线索研判、全息档案、情行闭环、系统保障等。整个项目共耗时8个月,2021年2月顺利通过验收。

对于大型的系统来说,良好的系统架构至关重要,将直接关系到系统的质量。在软件架构评估中,人们普遍关注的质量属性包括性能、可用性、可修改性、安全性等。性能是指系统的响应能力,即要经过多长时间才能对某个事物做出响应,或者在某段时间内系统所能处理的事件个数。可用性,即系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在故障出现时系统能够恢复正常的速度来表示。安全性,是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。可修改性,是指能够快速以较高的性价比对系统进行变更的能力。
结合项目实际,我们的软件架构评估方法主要采用了基于场景的评估方法—架构权衡分析法(ATAM),下面将从重点从描述阶段、调查和分析阶段、测试评估阶段介绍ATAM方法在项目中的实际运用。

描述介绍阶段。组织项目团队建立评估小组共同学习ATAM,促进大家达成架构评估的共识。评估小组主要有评估小组负责人、项目决策者、测试、运维、开发、系统分析师、客户代表。然后组织项目例会,介绍ATAM方法,它是一种基于场景的软件评估方法,对系统的多个质量属性基于场景进行评估。通过评估确认系统存在的风险,并检查各自的非功能性需求是否满足需求。该系统的商业动机是通过设备采集人员的人员、车辆、事件的信息进行一系列规则比对后进行辖区内预警,可分为区域配置服务、管控对象服务、风险预警服务、线索研判服务、全息档案服务、情行闭环服务、系统保障服务等,最后架构组长向项目成员描述了系统将要采用的springcloud微服务架构,以及各业务线的领域功能,系统分为持久层、缓存层、中间件、服务层、网关层、客户端和代理层等,持久层框架使用的是Mybatis、缓存使用的Redis技术、中间件使用的DataHub、网关层使用的是zuul、客户端使用的vue、代理使用的nginx等。通过以上建立评估小组开会后,我们通过ATAM的研究讨论,完成了架构评估的前期准备工作,达成了架构评估的共识。

调查和分析阶段。通过收集评估小组的质量属性要求,建立质量属性效用树,完成每个场景的风险点、敏感点和权衡点分析。风险预警服务涉及到大量人员、车辆信息,需要权衡业务方、开发、测试、运维人员等成员的质量属性要求。首先组织会议,邀请项目组成员发表意见。场景如下:1.比如客户代表要求服务预警时间的时间不能超过15s。2.比对每条预警的记录要有比对日志,影响了数据存储和预警性能。3.当主数据库发生故障后,10秒内自动切换至从数据库。4.出现异常引导用户至错误页面,不能展示异常栈信息。5.风险预警增加设备厂商对接时,开发工作需要2天内完成。6.民警使用系统签收预警时需要支持快捷用语。7.预警中间件异常将会导致系统不可预警。8.对人员车辆的信息加密将会影响系统查询性能。根据以上场景生成质量效用树,最后分析出风险点为第7条、敏感点为第8条、权衡点为第2条。通过以上的措施,我们使用建立质量效用树的方法,完成了风险点、权衡点、敏感点分析,提高了架构评估的有效性。

测试评估阶段。进行场景的优先级排序,评估场景的对应方案,输出评估报告。根据风险预警服务的特性,预警中间件如果宕机或其他异常将会导致系统没有预警将会重大影响整个业务。首先组织评估小组进行会议讨论,确定了不同场景的优先级。系统的可用性最高,性能其次,安全性可修改性可靠性易用性最低。针对各个质量属性采取的方案如下:针对预警消息中间件问题时,采用主备模式,当其中一台主机出现异常时,备机可继续替代其工作,同时还加了中间件异常报警的机制,以便通知运维人员进行维护。预警时间小于15s,消息队列每天1千万的数据流,对数据库查询将会性能降低,采用Redis缓存机制的方式将比对规则数据进行提前预热存入缓存。比对预警日志,由于消息队列数据数据量较大,大量插入操作势必会造成IO写入问题,采用队列转发模式,建立日志队列,将日志数据转发到日志队列中。错误页面消息通过统一异常框架处理。对人员车辆信息加密导致查询性能降低时,权衡之后将数据的安全性放在首位。民警签收预警快捷用语,建立一种数据表,将快捷用于导入到数据库中。最后制定了评估报告,将评估过程和结果都汇总整理成文档,其中包括质量属性效用树、风险点、敏感点、权衡点、每次评估会议纪要以及最终架构决策。通过以上措施,我们实施了ATAM架构评估,制定评估,提升了架构评估的全面性。

通过以上架构评估的实施后,使得系统开发工作完成的非常顺利,系统开发的质量得到了保证,为后续项目的顺利实施提供了有力的支撑,使得系统的性能、可用性、安全性、可修改性增强。最终项目在2020年12月成功上线,稳定运行,同时也抓捕了若干名违法违规人员,获得了用户的好评。
  尽管如此,这个过程还是有需要改进的地方。其中对于风险预警功能方面。没有考虑到其他厂商有时因为故障原因而导致预警消息不推送,后续我们增加了对消息队列推送厂商的监控解决了此问题。经过此次架构评估的实施后,我深刻体会到了架构评估是软件开发过程中的重要环节,丰富了许多架构评估方面的知识,同时发现了自身的一些缺点,学如逆水行舟,不进则退,仍需要加强自身的修炼,利用工作之余多学习新的理论知识,努力将自己的架构评估知识扩大提高,理论联系实际,并应用到项目实践中,为公司的腾飞尽一份力量。


评论