【软考论文】论软件架构评估在系统中的实践
本文以平台系统架构为例,论述了软件系统的架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述了其性能、可用性、可修改性和安全性的具体含义。然后着重探讨在项目架构评估过程中,我们采用体系结构权衡分析方法 ATAM的评估过程和效果,项目评估小组经过对项目的风险点、敏感点和权衡点的讨论后生成了质量效应树,并顺利的完成了项目的建设。目前系统已稳定运行一年多,从而验证了该项目采用ATAM 架构评估保证了系统的顺利完成。
摘要
2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。整个平台以多租户的模式,进行统一的管理及日常运营。平台整体逻辑复杂,对系统的高可用和高扩展能力提出了较高的要求。本文以平台系统架构为例,论述了软件系统的架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述了其性能、可用性、可修改性和安全性的具体含义。然后着重探讨在项目架构评估过程中,我们采用体系结构权衡分析方法 ATAM的评估过程和效果,项目评估小组经过对项目的风险点、敏感点和权衡点的讨论后生成了质量效应树,并顺利的完成了项目的建设。目前系统已稳定运行一年多,从而验证了该项目采用ATAM 架构评估保证了系统的顺利完成。
正文
随着国务院发布《关于支持浙江高质量发展建设共同富裕示范区的意见》中提到浙江到2025年和2035年要实现的共同富裕相关目标。越来越多的上市企业选择对员工开展XXXX计划。我所在的某集团公司,为了集团的发展,需要在XXXX这一赛道上保持竞争力,根据这一目标,XXXX管理平台这一项目应运而生。2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。整个平台以为上市公司提供资金管理、财富管理、税务服务等一站式支持,涵盖股权管理、估值管理、多样化激励方案信息化管理、税务与财务咨询服务及系统个性化定制服务等,更高效、更便捷地为企业客户“一篮子”金融解决方案。整个平台涉及证券、税务、银行、电子签署等过个复杂业务逻辑,业务流程复杂、系统可靠性和可扩展性要求较高,影像的范围比较广。
架构评估是软件开发过程中的重要环节,在软件架构评估中的质量属性有:性能、可用性、可修改性、安全性、可测试性、可靠性和易用性等。其中前 4 个质量属性是质量效应树的重要组成部分。性能是指系统的响应能力,即经过多长时间对事件做出响应。可用性是指系统能够正常运行的比例,通过用两次故障之间的时间长度或出现故障时系统能够恢复的速度来表示。可修改性是指系统能以较高的 性价比对系统做出变更的能力。安全性是指系统向合法用户提供服务时,能够阻止非授权用户的使用企图或拒绝服务的能力。
比较常用的架构评估方法有三种:基于问卷调查的评估方式、基于场景的评估方式和基于度量的评估方式。基于调查问卷的方式关键是要设计好问卷或,它在很大程度上依赖于评估人员的主观推断,不适合本项目。基于度量的方式是建立在软件架构度量的基础上的,涉及三个基本活动,首选需要建立质量属性和度量之间的映射原则,然后从软件架构文档中获取度量信息;最后根据映射原则分析推导出系统的质量属性。它能提供更为客观和量化的质量评估,但它对评估人员及其使用的技术有较高的要求。不适合本项目。基于场景的方式是通过分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。故本项目采用了基于场景的评估方式,根据不同质量属性使用了 ATAM 作为系统架构评估的方法。
在进行架构评估的过程中,我们项目评估团队的主要成员包括了评估团队的负责人、项目的决策者、架构设计师、用户、开发人员、测试人员以及系统部署人员等所有项目的参与者。我在此担任的角色是项目评估团队的负责人以及系统架构师。架构评估经历了四个主要阶段:描述和介绍阶段,调查和分析阶段,测试阶段以及报告阶段。接下来,我将对这四个阶段进行详细的阐述。
在描述和介绍阶段,我首先对ATAM进行了详细的介绍,ATAM主要关注系统在不同场景下的表现,以便发现潜在的风险并确保系统的稳定性和可靠性。业务部门也对系统的目的和商业动机进行了阐述,他们强调该项目的目的是通过XXXX管理平台挖掘出有价值的客户服务信息,这一目标对于公司的发展具有重要意义,因为它可以帮助公司更好地了解客户需求,提高客户满意度,从而提升公司在XXXX服务领域的竞争力。业务部门还关注系统的性能,我们需要确保系统的架构设计合理,能够有效地处理大量的客户请求,并提供准确、及时的服务。作为架构设计师的我,描述了系统将要采用的微服务架构,并将系统拆分为多个子模块,例如用户服务、股权服务、电子签署服务等、每个子模块负责处理特定的业务逻辑。这样一来,每个子模块都可以独立地进行开发、测试和部署,从而提高了开发效率和质量。同时,子模块之间的通信选择使用轻量级的通信机制来实现,降低了系统的耦合度。最后,我们初步决定系统服务端使用Spring Cloud框架进行开发,因为Spring Cloud提供了一整套微服务相关的解决方案,包括服务注册与发现、配置中心、负载均衡等,我们可以更轻松地构建和管理分布式系统,提高系统的可扩展性和可维护性。
在调查分析阶段,不同业务人员基于各自的考虑提出了各自的要求。其中,系统可靠性是最为关键的要求之一,为了确保系统的稳定性和持续运行,系统在发生故障时必须能够在10分钟内恢复正常操作。这意味着系统需要具备高度的容错能力和故障排除能力,我们采用了多节点集群部署的方式对所有服务进行了集群化部署,我们在每个服务中添加了验证服务可用性的拨测接口,并通过公司的拨测平台对所有服务节点进行服务可用性验证,当某一个节点出问题,拨测平台会通过企业微信给项目组成员发送告警通知;同时,我们为所有节点服务器的CPU、内存、磁盘空间等指标配置了Prometheus监控,并设定了告警阈值。在项目初期,为了便于问题定位,我们将日志级别设置为debug级别,这导致磁盘空间使用率迅速超过了预设的80%阈值。运维人员在接收到告警后,立即进行了日志文件的备份和清理,并增加了定时脚本来定期清理日志文件,确保了服务的稳定性和高可用性。XXXX计划管理模块的快速修改优化也是另一个重要的需求,为了满足客户不断变化的需求,系统需要能够快速响应并进行相应的修改,我们决定采用敏捷开发方法来建设此项目,每2周一个迭代,每完成一个迭代就给客户做演示,以便根据最新的客户需求进行调整和优化,让系统可以更好地适应市场需求,提供更加高效和灵活的管理功能。此外,系统性能也是重要要求之一。页面操作的响应速度对用户体验至关重要,因此系统需要确保用户操作能在1秒内得到响应,以提供流畅且高效的交互体验。我们对系统架构进行了优化,通过在服务中引入Redis缓存中间件来缓存服务相关信息,从而减少数据库查询次数以提高接口响应速度。同时,我们还开启了数据库慢查询语句监控告警功能,以便项目成员在收到慢查询告警后及时对SQL语句进行优化调整。在消息推送和电子签署模块方面,我们采用了RocketMQ消息中间件来异步处理大量的消息推送和电子签署任务,从而减少用户页面等待时间。对于前端工程,我们也采用了多种技术进行优化,例如合并CSS样式表和JS脚本、异步加载第三方资源等方法来减少HTTP请求数量。最后,开发人员提出了并行开发的方案,通过将不同的功能模块分配给不同的开发人员并行开发,加快整体的开发进度,减少各个阶段之间的等待时间,提高系统的交付速度和质量。
针对这些场景我们分析了项目开发过程中的风险点、敏感点和权衡点。经过分析,该项目中存在以下风险点:系统故障后,如果不能在短时间内恢复,则会对客户公司的业务办理产生影响。敏感点有:用户的密码加密级别、电子协议签署方式的修改。权衡点有:切换电子协议签署的方式能提升用户操作的体验,同时带来系统性能的下降。
在测试阶段:经过评估小组集体讨论,确定了不同场景的优先级如下:系统的可用性最高,性能其次,可修改性及安全性优先级较低。在保证数据安全性方面,数据库采用了主备架构,当主数据库出现故障,将从数据库切换成主数据库继续提供服务。在用户数据安全性方面,采用了非对称加密及信息摘要技术。
最后形成了评估报告,经过对架构的评估,确定了系统的风险点、敏感点、权衡点和非风险点,最后以文档的形式表现。其包括的内容包括:架构分析方法文档、架构的不同场景及各自的优先级、质量效应树、风险点决策、非风险点决策及每次的评估会议记录。
2021年8月,系统正式上线运行,至今已稳定运行了1年多的时间,系统平稳经历了访问量大增、紧急客户公司接入等复杂运维状况,获得领导和同事的好评。但在系统运行过程中,我也发现了系统中存在的一些不足。首先是分层结构的多层调用降低了系统的性能。其次是分层所带来的级联修改问题,上层逻辑的修改可能会导致下层逻辑随之修改。这些问题将是我今后在同类系统的架构决策方面需要重点考虑的因素。
【软考论文】论软件架构评估在系统中的实践