2023年3月我公司承担了某某市集中式保障性租赁住房管理系统的建设,在项目中我担任架构师角色,主要负责系统的架构设计工作。该系统的上线将解决大部分中低收入家庭住房困难问题,主要包括群众意向登记平台、企业发布审核平台、区县审核管理平台和综合信息管理平台,同时集统一身份认证、短信收发等技术。
项目建设初期我们对当前主流的软件架构进行了评估,利用到了架构均衡评估方法,具体用到了基于场景的评估方法,针对特定目标的场景从性能、可用性、可修改性和安全性进行评估,最终选择了层次架构风格。项目历时9个月,于2023年12月顺利完成并成功上线,目前为止运行稳定。实施证明,合理有效的软件架构评估,能保证项目的顺利实施,提高开发效率,降低开发成本。
随着社会的发展,人们对于衣食住行方方面面的关注程度越来越高,尤其是住房方面更为突出,考虑到大部分中低收入家庭住房困难问题,相关政府部门提出了集中式保障性租赁住房正常,于是发起了该项目。
2023年3月我公司承担了某某市集中式保障性租赁住房管理系统的开发建设,我在该项目中担任系统架构设计师职责,主要负责系统整体架构的设计。该系统包括群众意向登记平台、企业发布审核平台、区县审核管理平台和综合消息管理平台,功能涵盖统一身份认证、短信收发、负载均衡等技术,采用B/S风格为整体架构。其中群众意向登记平台主要功能是对企业发布的集中式房源信息进行公示,群众通过统一身份认证登录平台后就可以浏览房源并进行意向的申请。企业发布审核平台主要是对本企业下所运营的保障性租赁住房项目的申请、房源的发布、意向登记报名消息的初审、房源的分配和房屋租赁合同的签订等进行管理。针对群众意向登记平台提交的意向消息进行初审,再由区县审核管理平台进行终审和备案,之后既可以对申请的人员进行房屋的分配以及租赁合同的签订。综合消息管理平台则是对其他三个平台消息的查询和统计,起到整体监督和管理的作用,此平台的主要使用者为某某市住房建设管理局的相关工作人员。
软件架构评估方法有很多种,常用的有三种类型,软件架构分析方法、架构均衡分析方法、成本效益分析方法,其中软件架构评估方法最初是关注软件的可修改性,后来也用于其他属性例如可移植性等。架构均衡方法关注软件多个属性,例如性能、安全性、可修改性、可用性等,其又细分为基于调查问卷和调查表的评估方法、这种方法依赖于评估人员的个人经验。基于度量的评估方法,这种评估方法需要对质量属性进行具体的度量映射。基于场景的评估方法是前两者的这中,它考虑到了具体的质量属性场景,根据不同的场景进行评估。成本效益分析方法,主要考虑关系到成本效益方面的因素,对软件架构进行评估。通过权衡,我们的软件架构评估方法主要采用了基于场景的评估方法—架构权衡分析法(ATAM),过程主要包含场景与需求收集,架构视图与场景实现,属性模型构造分析,折中四个方面。下面将从重点从前面三个方面介绍ATAM方法在项目中的实际运用。
1、场景和需求收集
由于项目比较大,涉及的系统多,对项目的质量有很高要求,若不提前确认项目的场景和需求,将无法为架构评估提供依据。鉴于此,在架构评估的第一步,我们进行了场景和需求收集。我们召集了项目的关键干系人成立评估小组,包含架构人员、设计人员、管理人员和客户代表,在和他们宣讲软件评估过程和思想以后,收集他们对于场景的设想与需求。场景包括功能性和非功能性需求,功能需求主要按照项目的功能要求确定,非功能需求我们按照项目需求确立了可用性、性能、安全性、可修改性、互操作性、功能性、可变性等,并对非功能需求需要进行细化的描述,包括需求、约束和环境,例如对于性能的要求,需要细化到用户点击某一个页面,在正常网络情况下页面响应时间需要控制在2s之内。在场景收集中,不同角色关注的视角不同,因此我们需要尽可能覆盖到不同类别的人员,以保证场景不会遗漏。通过这个环节,我们收集了全面的场景和需求,为软件架构评估提供了关键的依据。
2、架构视图和场景实现
在场景和需求收集以后,若不与项目的架构结合起来做匹配,也无法针对场景对架构做评估。因此,我们第二步进行了架构视图和场景实现。我们向评估小组展现了项目的整体架构与思想,对不同的场景介绍了架构设计方案。例如对于综合消息管理系统的用户查看统计报表的场景,需求是每天24:00更新报表,因此架构设计方案为数据通过跑定时任务进行批处理,而非实时处理。对于用户关键的个人信息,例如手机号、身份证号,场景需求是保证用户敏感数据安全,因此我们的架构设计为用HTTPS对数据通道进行加密,同时APP前端对敏感数据做脱敏处理。通过这样的方式将架构设计与具体场景匹配起来。同时,也建立了质量属性效用树,将涉及的质量属性进行图形化表示,以更加直观展示。评估项目这个环节还需要对场景进行划分,我们召集了评估小组成员对场景的优先级进行投票,对场景进行排序。通过这个方式,使评估小组成员可以对架构和场景的匹配有了很好的认识,也对场景进行了分级处理,为后续的评估工作提供了重要参考。
3、属性模型构造和分析
在获得项目的需求和场景之后,若不对质量属性以及质量属性之间的关系进行分析,也无法对软件架构进行评估。因此,我们进行了属性模型构造和分析。首先我们对单一的属性抽取出来做详细分析,对属性确立了参数化指标。例如我们在通过场景分析后,确立了可用性的指标,对于接口的成功率需要达到99.8%,页面响应时间需要控制在2s以内。我们还对质量属性之间的关系做了分析,很多属性之间会有对冲关系,鱼翅熊掌不可兼得,在这个时候我们往往要基于项目实际做权衡与取舍。例如,性能和安全这两个指标往往会有冲突,我们在APP登录的时候由于要做鉴权处理,会导致登录时间有几秒的延迟,会对性能有影响,这个时候就需要依据项目需求进行权衡。经过权衡利弊分析,我们选择了安全性而牺牲了一部分性能,确保用户的敏感信息不受到泄露。通过这个过程,我们对每个质量属性都进行了详细的分析,细化了指标,也分析了属性之间关系,使得评估小组成员对质量属性有了更深入的认识。
经过全体项目组成员的共同努力,该项目于2023年12月顺利完成并成功上线运行,在项目验收大会上得到了公司领导和客户的一致认可和好评,该项目的成功与开发初期选择采用微服务架构的关系密不可分。但是在项目的开发过程中也遇到了一些小问题,在系统测试阶段,我们接到了一个关于系统登录的政策性要求,登录时必须对接政务服务网的统一身份认证服务,这在我们最初的场景收集中是没有的,经过项目组的评审,我们迅速制定了计划并与政务服务平台进行对接,最终没有对项目的工作产生影响。
实践证明,架构评估方法在选择系统架构的过程中起到了非常重要的作用,使用其可以有效地避免后期出现的问题,大大地提高开发效率,降低开过过程中的风险。今后我会继续学习架构评估方面的技术,在今后的项目建设中,能更好的发挥架构评估在项目选择架构中应用,同时结合其他架构思想,为更多项目服务,也能为公司带来更大的收益。