Published on

论软件系统架构风格

Authors

摘要

2021年6月,我参与了某机场航班节点运行保障系统的开发工作,该系统的主要目标是优化航班保障作业流程,提高航班地面运行保障效率。我在该项目中担任系统架构师,主要负责系统整体架构设计和架构实现等工作。本文以机场航班节点运行保障系统为例,主要论述了软件系统架构风格在该项目中的具体应用。该项目包含三个子系统,其中航班数据中心使用仓库风格,航班节点运行保障子系统主要使用MVC架构和独立构件风格,对账子系统主要使用数据流和虚拟机风格。系统遵循可靠性、可维护性和经济性原则,满足易扩充、高可靠、易维护和可管理要求,在性能和安全性方面均满足系统技术规范的要求。该项目历时15个月,最终系统顺利上线,获得用户好评。

正文

航班节点运行保障对机场的运行保障及协同调度至关重要,现有航班节点运行主要依靠人工记录实现,航空器到达与离开、客舱门打开与关闭、乘务人员和旅客人员到达与离开,客梯车到达与离开、食品车到达与离开、保洁员到达与离开等节点均需要记录保障。由于现有航班节点运作主要依赖人工记录,造成诸多问题。一方面,节点保障记录依靠地面保障人员通过纸质表单进行记录,人力成本较高,工作量大,易出现漏填、误填,对于机场站坪监控员来说,高峰状态下保障效率难以满足需求。另一方面,现有的航班节点运作实时性差,数据不及时,不利于及时发现问题和分配资源。

为进一步优化现有航班保障作业流程,提高航班地面运行保障效率,客户机场集团委托我公司承建该机场航班节点运行保障系统,我在项目中担任系统架构师,主要负责系统整体架构设计和架构实现等工作。机场航班节点运行保障系统由三个子系统组成,分别是航班数据中心、航班节点运行保障子系统和对账子系统。航班数据中心主要负责汇聚航班计划、航班动态和客货邮行等数据并向其它系统提供数据服务;航班节点运行保障子系统处理核心业务,包括生成、记录保障节点和电子签单等功能;对账子系统主要包括机场与各航空公司进行费用结算和对账等功能。

在软件系统开发中,架构风格反应了众多系统所共有的结构和语义特性,并指导如何将各个构件和子模块有效地组织成一个完整的系统。常用的架构风格有数据流风格、调用/返回风格、独立构件风格、虚拟机风格和仓库风格等。数据流风格是按顺序从前往后逐步执行程序,代表的风格有批处理和管道过滤器;调用/返回风格中,构件之间存在互相调用的关系,一般是显示调用,代表的风格有主程序/子程序、面向对象和层次结构;独立构件风格,其构件之间是相互独立的,不存在显示的调用关系,而是通过某个事件触发、异步的方式来执行,代表的风格有进程通信、事件驱动系统;虚拟机风格自定义一套规则供使用者使用,使用者基于这套规则来开发构件,能够跨平台适配,代表的风格有解释器、基于规则的系统;仓库风格是以数据为中心,所有的操作都是围绕建立的数据中心进行的,代表的风格有数据库系统、超文本系统和黑板系统。 

通过需求分析和团队评审决定,航班数据中心使用仓库风格,航班节点运行保障子系统使用MVC架构和独立构件风格,对账子系统使用数据流和虚拟机风格。

航班数据中心是一个共享数据源,汇聚了航班计划、航班动态和客货邮行等数据,并为其它系统提供数据服务,适合采用仓库风格进行构建。将获取到的航班等相关数据,经过数据清洗后统一汇聚至数据中心,通过API和数据订阅的方式向应用层的服务提供数据接口,供航班节点运行保障子系统和对账子系统使用,子系统围绕航班数据进行业务处理。

航班节点运行保障系统包括PC端和移动端,面向地面保障工作人员处理核心节点保障业务。该子系统使用了MVC架构和独立构件风格。MVC架构中,Module是模型,用于处理应用系统中数据逻辑,并在数据库存取数据;View是视图,用于处理数据显示的部分,依据模型数据创建;Controller是控制器,处理用户交互的部分,负责从视图读取数据,控制用户输入,并向模型发送数据。节点保障记录完成后,通过事件驱动的隐式调用方式,触发后续电子签单和结算对账等事件,这样的设计使每个构件都是相对独立的个体,它们之间不存在显示调用,从而降低服务之间的耦合度,提高系统的灵活性。

对账系统主要功能是依据航班节点保障记录,基于特定的规则,每月生成对应的账单和对账数据,用于机场和航空公司进行费用结算。该子系统使用数据流风格和虚拟机风格。账单是基于可配置的规则来生成的,系统向用户提供规则配置界面,配置自定义流程后,由解释引擎来按流程解释执行;每一类账单都是一个批处理任务,任务中的每一步必须在其前一步结束后才能开始,数据必须是完整的,以整体的方式传递。

经过近15个月的项目开发,该机场航班节点运行保障系统顺利投入使用,我们协助客户对航班节点保障、地空协同运行进行全面的功能和性能的测试和试运行,运行至今客户反馈良好。所选用的架构风格经过实践证实,有效的将各子系统组织成完整的航班节点运行保障系统,满足对可靠性、可维护性和安全性方面的相关要求。经过项目团队成员的共同努力,最终保证了该系统的顺利交付。

在本项目中,还存在一些不足之处,比如我们对于用户的移动终端操作易用性方面考虑不周,实际节点保障工作场景下,对用户交互和易用性要求较高,后期经过和用户共同打磨,对移动终端界面进行了优化和部分重构,有效解决了该问题;另一个不足是对系统的监控和运维自动化方面,在自动预警和告警方面还有待改进,目前系统的部分功能仍依赖人工监控,计划通过使用自动化运维工具覆盖,以提高系统监控和运维效率,减少运维人员成本。

后续我们将持续改进,小步重构,不断优化系统,并持续提升团队和个人技术水平,更好的完成软件系统开发工作,为行业提供优质的软件系统。