论软件系统架构评估及其应用
20250329-作
题目
对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系统质量,降低成本及投资风险,需要对设计好的系统架构进行评估。架构评估是软件开发过程中的重要环节。
请围绕“软件系统架构评估及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述有哪些不同的软件系统架构评估方法,并从评估目标、质量属性和评估活动等方面论述其区别。
3.详细说明你所参与的软件开发项目中,使用了哪种评估方法,具体实施过程和效果如何。
摘要
我司自主研发的某省预约挂号系统以下简称预约挂号系统,该系统集众多功能于一体,旨为提高医疗服务质量和患者体验,但随着用户量的逐年增加,严重阻碍了系统服务质量的进一步提升,为保证系统能持续稳定的运行,我司决定2023年3月对预约挂号系统进行全面升级,计划一年,投资800万。我担任系统架构设计师,主要工作就是系统架构的整体设计,由于系统业务量巨大,老旧系统较多,所以在系统升级之前我们需要进行系统评估。评估方法有很多,我们采用了基于场景的架构权衡评估方法,经过了描述、调查与分析、测试和报告这4个阶段,得到了以SOA架构为主导的架构设计,也得益于架构权衡分析方法正确引导,使系统经受了高并发时期的性能和可用性问题,得到了领导和组员的高度认可。
背景
随着信息化时代的到来,各大医院纷纷拥抱线上系统。我司顺应时代潮流开发了一款集预约挂号、体检预约、报告查询和名医抢号等功能于一体的预约挂号系统,旨为提高医疗服务质量和患者体验,然而,随着用户基数的不断增加,面临着系统性能瓶颈和可用性的严峻挑战,严重阻碍了系统服务质量的进一步提升。为保证预约挂号系统的持续稳定的运行,我司毅然决定2023年3月对预约挂号系统进行权限升级工作,计划一年,投资800万,我担任系统架构设计师,主要的工作涵盖了系统架构的整体设计、技术栈精准选型和各个核心阶段的评审工作。预约挂号系统运行多年,业务量也随用户量的增加成线性增长,由于业务量巨大所以在设计之初我们对系统进行了整体评估,采用架构权衡评估方法,经过描述、调查与分析、测试和报告这4个阶段,我们成功确定了以SOA架构为主导的架构,完美完成了系统架构的升级工作,系统也承受住了高并发带来的性能和可用性问题。
理论
预约挂号系统结构由主应用和各个辅助构件组成的单体应用,业务耦合比较严重,所以设计之前需要对预约挂号系统进行整体评估,系统的评估方法有很多,接下来详细描述一下常用的3种评估方法。
1.基于调查问卷或检查表的评估方法。该方法依赖开发人员主观判断,由开发人员整理调查问卷或检查表来得到系统架构的评估。该方法太依赖开发人员判断,根据领域经验的不同调查效果差异较大。
2.基于度量的评估方法。该方法是提出度量标准,例如:代码行数、圈复杂度等标准。根据度量标准结果来映射系统架构的质量属性,从而得到系统架构的评估结果。该方法需要一个度量指标来衡量评估结果,对度量标准选型有很高的要求,考验开发人员的领域知识。
3.基于场景的评估方法。该方法有三个经典方法,即:软件架构分析方法简称SAAM、架构权衡分析方法简称ATAM和成本收益分析方法简称CBAM。1)SAAM:软件架构分析方法是通过输入系统的问题、需求和架构的描述,然后通过场景开发、架构描述、单个场景评估、场景交互和总体评估等阶段的活动,来对系统架构进行评估。2)ATAM:架构权衡分析方法是通过分析系统的性能、可用性、可修改性和安全性等质量特性,再由描述、调查与分析、测试和报告等阶段,进行架构的评估得到架构评估结果。3)CBAM:成本收益分析方法是先对系统进行架构评估,然后在评估结果的基础上结合公司的现状,从成本和收益两个方面再进行评估,选择适合公司投入成本的架构设计,该方法对架构设计干扰很大。
实践
由于预约挂号系统目前对性能和可用性要求高,迫切需要升级,所以我们选择了ATAM评估方法,我组织了评审会议,通过描述、调查与分析、测试和报告这4个阶段对预约挂号系统进行评估。
1.描述阶段。1)在会议上我描述了ATAM方法的作用、结构和应用场景,并从预约挂号系统目前面临的性能、可用性等质量属性方面解释了为什么选择ATAM方法。2)邀请了部门经理和项目经理,分别介绍了系统的商业目标和开发目标。预约挂号系统目前正在上升期,用户量增长很快要求承受千万级用户量,目前系统升级需要一个确定的系统架构来推动系统的前进等等。3)我描述了在设计过程中整理的适合预约挂号系统的架构,即:轻量级架构SSM、基于Spring的MVC层次式架构和SOA架构这3种架构。a)SSM是一个轻量级的开发架构,使用Spring做开发架构,使用mybatis做数据库连接工具。b)Spring MVC是一个层次式架构,把架构分为表示层、控制层和模型层。c)SOA架构是一个面向服务的架构,结构分为UDDI、WSDL、SOAP和Web service等。
2.调查分析阶段。1)描述架构方法。1.1)轻量级的SSM架构,该架构结构简单,开发方便,投入成本低,特别适合小型项目,且我们的系统很容易就能升级成该架构。1.2)Spring MVC的层次式架构,其结构有层次性、层间解耦、易于维护和低成本等特点,适合独立开发的项目,部分业务逻辑可以在前端页面开发减轻服务器压力。1.3)SOA架构描述,该方法有助于企业集成、结构清晰、粗粒度、易扩展和高性能等,该种架构适合大型的业务复杂的项目。2)质量属性效用树,由于只能选择一个主架构方法我们提出了质量属性。a)系统在名医抢号时期,响应时间不能超过500毫秒。b)系统不可用每年不能超过2个小时。c)系统使用HTTPS方式请求。d)组件间通信会影响性能等等。根据收集到的系统质量属性生成质量属性效用树。根据树上的内容我们进行了优先级排序,得到了性能和可用性要优先满足,其次是安全性和可修改性等。3)分析架构方法和确认架构方法。根据得到的排序后的质量属性效用树,我们推断出SOA架构最满足系统提出的高性能和高可用性的质量属性。
3.测试阶段。1)通过前几轮的分析,最后得出了SOA架构,然后我们邀请了重要的项目干系人和三方医院代表参与了架构的评审,我先描述了SOA架构,讲解其是个层次鲜明的架构,且有帮助企业集成等特点,我又通过4+1视图从不同角度描述了预约挂号系统,利益相关者提出SOA架构成本较高问题等问题,经过讨论收益与投入,SOA架构的投入成本可以接受。2)又对SOA架构进行了多轮的测试确定了架构设计的可行性。
4.报告阶段。总结了SOA架构,收集评估过程中的质量属性效用树、权衡点、风险点、非风险点等问题,整理了解决方案,提交给了项目干系人。
结尾
得益于ATAM的使用,经过一年的不懈努力,我们顺利完成了预约挂号系统的升级工作。2024年3月正式上线,经过一个月的精心推广,又吸引了大批量的用户,经过此次升级,预约挂号系统也为用户突破千万级和名医抢号时所需的高性能和高可用性等问题夯实了基础,目前已经轻松应对名医抢号时期的高并发,且承受了万级的用户请求,显著提升了系统的性能和可用性,升级工作也受到了组员赞誉和领导的高度认可。然而,在项目开发初期部分组员对开发方法理解有模糊之处,这一度阻碍了项目进程的推进,针对该问题,我们迅速行动,通过组间人员的灵活调配,完美解决了这一短板。未来,我们准备对数据库数据进行迁移工作,有了此次项目实施的经历,我们对迁移策略充满信息,并将以更高的要求和标准进行。对我而言,这次项目的升级工作是一个不可多得的机会,我的专业知识和技能经验都有了显著的提升。
总结:写ATAM的时候,
1.体现出来 性能、可用性、安全性、可修改性。
2.还要体现出来 风险点、非风险点、权衡点。
3.写架构:Spring MVC层次式架构、SOA架构。
4.主要描写:调查分析阶段 - 描述架构(适当的写点内容)、质量属性效用树(写多点)、分析架构方法(写多点,架构分析表、风险点、非风险点、权衡点)