【软考论文】论基于架构的软件设计方法及应用
本文以该系统为例,主要论述了基于架构的软件设计方法在项目中的具体应用,着重从架构需求、架构设计、架构复审三个阶段展开介绍。在架构需求阶段,通过用户访谈、问卷调查、现场观摩、构造原型的方式全面获取了需求;在架构设计阶段将业务构件映射到层次架构风格中并分析相互作用,产生系统架构;在架构复审阶段,通过SAAM技术分析架构对于不同质量场景的满足情况,综合比选,选出最合适系统开发的方案。目前系统已经稳定运行了一年的时间,获得用户一致好评。
摘要
2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。平台整体逻辑复杂,对系统的高可用和高扩展能力提出了较高的要求。本文以该系统为例,主要论述了基于架构的软件设计方法在项目中的具体应用,着重从架构需求、架构设计、架构复审三个阶段展开介绍。在架构需求阶段,通过用户访谈、问卷调查、现场观摩、构造原型的方式全面获取了需求;在架构设计阶段将业务构件映射到层次架构风格中并分析相互作用,产生系统架构;在架构复审阶段,通过SAAM技术分析架构对于不同质量场景的满足情况,综合比选,选出最合适系统开发的方案。目前系统已经稳定运行了一年的时间,获得用户一致好评。
正文
国务院发布的《关于支持浙江高质量发展建设共同富裕示范区的意见》中提到了浙江到2025年和2035年要实现的共同富裕相关目标。越来越多的上市企业选择对员工开展XXXX计划。我所在的某集团公司,为了集团的发展,需要在XXXX相关服务这一赛道上保持竞争力,根据这一目标,XXXX管理平台这一项目应运而生。2021年初,我所在的研发部承担了公司自研XXXX管理平台项目的建设,为客户公司提供一站式的股权管理服务。我在该项目中中承担架构设计师的职务,主要负责该项目的系统架构、技术方案评估与实现、项目立项论证等工作。整个平台为上市公司提供资金管理、财富管理、税务服务等一站式XXXX相关服务的支持,涵盖股权管理、估值管理、多样化激励方案信息化管理、税务与财务咨询服务及系统个性化定制服务等,更高效、更便捷地为企业客户提供“一篮子”金融解决方案。整个平台涉及证券、税务、银行、电子签署等过个复杂业务逻辑,业务流程复杂、系统可靠性和可扩展性要求较高,影像的范围比较广。
基于架构的软件设计方法包括架构需求、架构设计、架构文档化、架构复审、架构实现和架构演化六个阶段。架构需求阶段明确用户对系统在功能、行为、性能、设计约束等方面的期望,包括需求获取、标识构件和架构评审;架构设计阶段根据需求生成并调整架构决策,包括提出架构模型、映射构件、分析构件相互作用、产生架构和评审;架构文档化阶段对架构设计分析与整理,产生架构规格说明书和架构质量说明书;架构复审阶段评价架构能否满足需求与实现质量属性、层次构件划分是否合理,标识潜在的风险,及早发现设计中的缺陷错误;架构实现阶段对架构进行实现,包括架构分析与设计、构件实现、组装和系统测试;架构演化阶段主要解决开发中用户需求变更问题,包括架构演化计划、构件变动、更新构件相互作用、构件组装测试与技术评审。
本文着重从架构需求、架构设计、架构复审三个阶段,论述基于架构的软件设计方法在项目中的具体应用、 遇到的问题和解决方案。
在架构需求的阶段,主要挑战是XXXX管理平台需要支持客户公司实施XXXX计划的所有环节,同时需覆盖众多上市公司,因此我们需要迅速有效地全面了解客户需求。我们在需求收集阶段将团队划分为若干小组,分别负责不同领域的研究,例如股权小组、税务小组、协议小组等。我们首先选择了具有代表性的几家公司进行重点研究,然后逐步扩大范围。通过与客户公司的董秘及业务人员深入访谈,我们全面了解了XXXX管理系统的核心功能以及激励计划执行过程中各个阶段的用户活动。我们明确了系统需要包括一个管理端和一个员工端,分别供管理员和员工使用;同时,我们规划了多种角色来控制在XXXX计划执行过程中的不同业务逻辑。此外,为了快速收集XXXX方案实施过程中的具体业务流程信息,我们编制了调查问卷并在客户公司的证代、财务等相关人员的协助下发放给这些人员。收集到的数据经过整理后,我们再次与骨干员工进行了需求细节的沟通和确认。在需求分析的后期阶段,我们已经基本完成了大部分业务需求的收集。通过运用快速原型法,我们成功地构建了一个仿真的XXXX管理系统供用户试用和反馈。这一过程不仅让用户参与到设计中,还为项目验收提供了有力的支持和宝贵的经验。
在架构设计阶段,根据我们的经验以及开发人员对各种框架的掌握程度,决定采用分层架构风格作为软件架构的基础。分层架构风格主要包括三个层次:表现层、业务逻辑层和数据访问层。表现层负责处理用户界面和用户体验,分为XXXX管理端和员工端,它通过调用业务逻辑层服务来进行具体的业务逻辑处理。业务逻辑层位于表现层之下,负责处理应用程序的核心业务逻辑,我们将整个系统划分了六个模块的业务,分别是用户权限管理模块、XXXX管理模块、资金归集服模块、税务缴纳模块、电子签署模块以及消息推送模块。在XXXX管理模块,为了保证数据的完整性和正确性,对于证券代表提交的激励计划相关的数据及流程,我们设计了一个复核人角色,只有经过复核人审核才能进行下一步操作。虽然这样的设置牺牲了系统的便利性,但却大大提高了系统的数据正确性。在研发测试过程中,我们发现当批量发起电子协议签署和发送消息时,由于服务层处理逻辑速度较慢,导致用户页面等待的时间较长。为了解决这个问题,我们引入了消息队列来进行异步推送,这样表现层不需要等待服务层的处理结果,从而大大缩短了用户页面等待时间。同时,为了确保消息数据不丢失,我们做了大量的保障措施来保证数据的安全。例如,在消息发送端,增加了消息推送异常数据落库以及告警通知功能;在消息中间件内部存储方面,我们开启了同步刷盘以及数据备份功能;在消息消费端,我们增加了消息处理失败重试以及告警通知功能,一旦消息处理失败,系统会自动重试并及时通知相关人员修复数据问题。数据访问层位于业务逻辑层之下,负责与数据库进行交互并提供数据的存取服务,我们共映射出78张数据库表。我们将不同客户公司的数据通过租户ID字段做了数据隔离;同时,我们采用了主备架构来保证数据的安全性和私密性,当主数据库出现故障时,系统会自动将从数据库切换成主数据库继续提供服务,确保客户公司数据的稳定运行和安全性。
在架构复审阶段,我们采用SAAM来进行设计复审。为了确保评审的顺利进行,我们组织了一个评审小组,由各业务部门的专家、系统分析师、系统设计师以及系统实现人员组成。在评审开始之前,我们收集了需求阶段以及后续阶段的所有场景,并将它们全部列入一个包含已知场景的场景列表中,这个列表为我们的评审提供了详细的背景信息。在会议上,我们根据各个场景的重要性确定了它们在总分中的占比。然后,对列表中的场景进行评估,分析现行架构对于这些场景的满足程度。在评估过程中,我们综合比对多个方案对于场景的表现。例如,评委们提出将所有消息存储在一张表中,会导致消息表单表的数据数据量过大,从而导致消息查询功能的性能问题。为了解决这个问题,我们的团队对消息模块的数据库设计进行了调整。对消息数据表进行了分库分表处理,将原本的一张表拆分成了多个独立的表,减轻单个表的压力。在进行分库分表之前,我们的团队成员对未来消息数据量的预估进行了充分的分析和讨论。根据预估结果,我们将消息表拆分成了8个数据库,每个数据库包含8张表的设计。通过这种分库分表的处理方式,我们成功地保证了每张消息表的数据不会过大,从而提高了消息服务的性能。通过这种复合的评审机制,评审小组成员将对各个架构设计方案进行评分,并综合选取总分最高的方案作为最终的架构设计。这样的评审过程可以确保我们的架构设计能够充分满足各种场景的需求,并提供高可靠性和安全性。
2021年8月,系统正式上线运行,至今已稳定运行了1年多的时间,系统平稳经历了访问量大增、紧急客户公司接入等复杂运维状况。在使用中系统也出现了一些问题,比如线上电子协议的签署功能,短时间内大量用户完成了电子签署操作,导致电子签署模块中所有实例全部宕机。这是由于早期在可靠性方面的需求分析不够周全,系统没有进行充分的容错设计。我们引入心跳机制、快照回滚机制,使签署服务宕机时能够在 10 秒内自动重置恢复运行,最终解决了该问题。实践证明,XXXX管理系统项目能够顺利上线,并且稳定运行,与系统采用了合适的设计方法密不可分。经过这次基于架构的软件设计方法和实施的效果后,我也看到了自己身上的不足之处,在未来还会不断地更新知识,完善本系统在各方面的设计,使整个系统能够更加好用。
【软考论文】论基于架构的软件设计方法及应用