当前位置: 首页 > article >正文

软件架构之-论软件系统架构评估以及应用

论软件系统架构评估以及应用

  • 摘要
  • 正文

摘要

        2023年2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院,以及渔船图纸审查机构提供一个便捷化的服务平台。在此项目中,我作为项目组成员参与项目的建设工作,并担任系统架构师一职,全权负责该项目的需求分析和架构设计等工作。该项目以实现渔船电子化审图为统一目标,为长三角地区渔船建造设计院、渔船审图机构、以及第三方技术审图公司提供一体化服务,推进长三角地区渔船建造行业发展。我们经过实践认为架构评估是软件项目开发中重要环节,本文以该项目为例,主要讨论了项目架构评估方法,包括:架构权衡分析法(ATAM)以及软件架构分析法(SAAM)等,选择正确的系统架构评估方法,对于保证架构设计的合理性,完整性,和针对性,保证系统质量,降低成本以及投资风险,都是很有必要的。渔船图纸审查项目的系统架构经过严格、规范化的评估并付诸实施,历时10个月,项目最终上线,赢得了客户的良好评价。

正文

        近年来,随着国家对渔船建造行业的大力支持,以及渔船建造技术的快速发展,渔船建造的规模越来越大,针对渔船建造图纸数量也迅速增加,传统的纸质化审图已经越来不能满足渔船建造设计院的需求,对于存在问题图纸的修改审核、设计师往往奔走与设计院与审图机构之间,耗费大量人力、物力。2023年初长三角地区某省为了推进渔船建造业的一体化发展,实现渔船审图“零跑腿”的业务需求,发起了渔船图纸电子化审查项目,该项目投资1000万元,计划10个月完成,并对项目了公开招标,我公司成功中标。
        2023年2月,接到系统开发研发任务后,我所在部门领导高度重视,第一时间成立了专门的开发小组,抽调并组织骨干力量进行系统开发。本人有幸在该项目中担任系统架构师角色,全面主持了该项目的架构设计以及开发工作,并在项目中实践了系统架构评估方法以及应用,得到了项目组成员认可。下面重点阐述我在本项目中的实践。

        目前最主要的架构评估方法分为两种,分别详述如下:
        1、 架构权衡分析法(ATAM)
        ATAM主要针对性能、可用性、安全性、可修改性等质量属性进行评价和折中,其目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力方法。ATAM的主要活动包括:需求收集、架构视图描述、属性模型构造和分析、架构决策与折中等。
        2、 基于场景的架构分析法(SAAM)
        SAAM把任务形式的质量属性都具体化为场景,使用场景技术为评估技术,以场景代表描述体系结构属性的基础,描述了各种系统必须支持的活动和将要发生的变化。SAAM的目标是描述应用程序属性的文档,验证基本的体系结构假设和原则。SAAM评价活动包括:场景开发、架构描述、单个场景评估、多个场景交互评估、总体评估。

        选择正确的体系架构评估方法,能够保证架构设计的合理性、完整性和针对性,保证系统质量、降低成本以及投资风险。所以渔船图纸审核项目组在对架构评估方法选择时,结合平台自身的重要性以及涉及较多重点审图机构特点,仔细考察,反复对比了两种主要方法,最终采用了ATAM为架构评估方法。
        渔船图纸审查系统平台本身是一个涉及面比较广泛、影响比较大的项目,它向前对接某省内所有渔船设计院机构,向后对接某省所有渔船图纸审核机构,全省所有渔船图纸数据审核都需经过此平台。所以渔船图纸审核平台建设对于非功能质量属性要求非常高,需要分析很多重要且关键的质量属性,例如:性能、可用性、安全性、可修改性等,并在各质量属性中做好权衡、折中。而ATAM在评估技术、关注质量属性、特定目标、方法活动、产出质量属性效应树等各方面都完美匹配渔船图纸审查平台的需求。在架构设计完成之后,渔船图纸审查项目组设计了架构评估工作流程。参加架构平台的人员来自比较重要的渔船设计院的首席架构师、负责人、以及审图机构的相关专家、技术负责人以及相关领导等。重要干系人一起参与整个额架构评估工作,整个工作分4个阶段进行。
        一、 描述和介绍阶段
        作为渔船图纸审查项目的架构师,我首先项大家介绍了ATAM架构评估方法的流程以及细则,确保大家理解ATAM方法的运作过程。然后有项目产品负责人着重阐述了项目建设的业务动机,包括项目的关键性业务需求、技术指标、功能范围、以及渔船设计院、以及审图机构的相关诉求等,确保大家明确渔船图纸审查平台建设目的。最后有我来描述平台总体架构设计、各业务模块划分以及交互、关键技术选型等。
        二、 调查和分析阶段
        由各单位代表提出场景述求,并加以记录和归类整理,生成质量属性效应树。比如,渔船设计院负责人提出,在大量图纸上传、以及图纸预览的情况下,平台需有能力处理100万次并发请求的能力,归类为性能属性。渔船审图机构专家提出“由于审图中包含图纸的敏感信息,所以网络请求需要提升加密力度,比如采用RSA算法”归类为安全属性;同时渔船审图机构技术负责人提出“渔船图纸审查平台作为省级应用平台,必须有技术手段保证机房发生问题时,秒级切换到备用机房”归类为可用性;我们项目组人员也指出“在后期迭代过程中,系统要容易扩展新功能”归类为客修改属性。
        经过调查所有相关方的诉求后,我们收集了上百个场景,并根据重要性对这些场景设置了权重,通过归纳整理,我们分析后发现,大多数场景权重都集中在:性能、可用性、安全性、可修改性四个属性。然后,我们组织项目主技术负责人、技术骨干、架构小组进行分析,进一步识别其中的权衡点、敏感点和风险点。比如“采用RSA加密算法虽然能提升安全性,但计算量比较大,影响请求响应时间”属于权衡点;“对可用性达到99.999%的要求可能会因为采用主动沉余技术,而造成投入的软硬件成本几句增加”属于敏感点;“如果机房建设未能如期完成,可能导致系统架构部分实现,而影响整体功能”属于风险点。
        三、 测试阶段
        由于我们在前一阶段确定了场景的权重,并因此归纳了渔船图纸审查平台对于质量属性的优先级,级性能和可用性最高,而安全性和可修改性较低。我们依据属性优先级来检验我们最终的架构方案,并充分评估实现方案的可行性和合理性。性能方面,我们设置了三个中心机房,在每个机房部署了100套微服务实例,并做好负载均衡策略,并模拟100万条并发数据进行请求。可用性方面,六个机房互为主备,避免机房不可用;机房内采用双网关以及负载均衡硬件,提升接入层的可用性;应用层采用负载均衡分布式集群微服务架构,提升服务器整体可用性;数据层采用Mysql主从模式的主动沉余,以及分库,分表技术进一步降低出现问题的影响范围。在权衡点决策时,我们依据先保证系统性能的原则。比如我们采用计算量不大的对称加密算法,保证系统性能不受影响,但通过定时自动更新对称密钥机制来降低对称密钥被破解的风险,从而在性能和安全性之间达到最佳选择。
        经过架构评估,我们将评估过程和结果汇总整理成文档。文档包括:架构分析方法文档、不同场景以及优先级,质量属性效应树,权衡点决策、风险点评估、会议记录等。
        综上所述,由于运用了ATAM的评估方法和活动流程,我们做成了合理的架构决策,保证了项目架构设计的正确性,验证了各项质量需求,保证了系统实现、测试、验收工作的顺利实施,历时10个月,项目顺利上线,并且得到了业内外行业认可,我们还持续优化并身故扩展机房规模,在百万级的并发访问的情况下,系统性能经受了性能考验。这也充分说明了,以ATAM为代表的架构评估方法是验证架构设计的重要手段。

http://www.lryc.cn/news/2379207.html

相关文章:

  • 低延迟与高性能的技术优势解析:SmartPlayer VS VLC Media Player
  • pytorch小记(十九):深入理解 PyTorch 的 `torch.randint()` 与 `.long()` 转换
  • 深入解析Spring Boot与微服务架构:从入门到实践
  • 【交互 / 差分约束】
  • 宝塔面板部署前后端项目SpringBoot+Vue2
  • 现代生活健康养生新视角
  • 鸿蒙Next API17新特性学习之如何使用新增鼠标轴事件
  • 多模态大语言模型arxiv论文略读(八十一)
  • 3.4/Q2,Charls最新文章解读
  • 通过觅思文档项目实现Obsidian文章浏览器在线访问
  • Python列表全面解析:从入门到精通
  • 5月18总结
  • 赋予AI更强的“思考”能力
  • Linux Bash | Capture Output / Recall
  • 2025/5/18
  • 基于Quicker构建从截图到公网图像链接获取的自动化流程
  • LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项
  • uniapp自定义日历计划写法(vue2)
  • Java IO框架
  • 数据库2——查询
  • Mamba LLM 架构简介:机器学习的新范式
  • Android 性能优化入门(一)—— 数据结构优化
  • 数据库中的锁机制
  • 【网络入侵检测】基于Suricata源码分析运行模式(Runmode)
  • AI日报 - 2025年05月19日
  • Spring源码主线全链路拆解:从启动到关闭的完整生命周期
  • Linux常用命令(十四)
  • 规则联动引擎GoRules初探
  • 基于OpenCV中的图像拼接方法详解
  • AI大模型学习二十六、使用 Dify + awesome-digital-human-live2d + ollama + ChatTTS打造数字人