• 查询稿件
  • 获取最新论文
  • 知晓行业信息
官方微信 欢迎关注

铁路信息系统软件开发平台的研究与设计

唐伟忠, 舒雨姗, 张明曦

唐伟忠, 舒雨姗, 张明曦. 铁路信息系统软件开发平台的研究与设计[J]. 铁路计算机应用, 2023, 32(7): 34-40. DOI: 10.3969/j.issn.1005-8451.2023.07.07
引用本文: 唐伟忠, 舒雨姗, 张明曦. 铁路信息系统软件开发平台的研究与设计[J]. 铁路计算机应用, 2023, 32(7): 34-40. DOI: 10.3969/j.issn.1005-8451.2023.07.07
TANG Weizhong, SHU Yushan, ZHANG Mingxi. Research and design of software development platform for railway information systems[J]. Railway Computer Application, 2023, 32(7): 34-40. DOI: 10.3969/j.issn.1005-8451.2023.07.07
Citation: TANG Weizhong, SHU Yushan, ZHANG Mingxi. Research and design of software development platform for railway information systems[J]. Railway Computer Application, 2023, 32(7): 34-40. DOI: 10.3969/j.issn.1005-8451.2023.07.07

铁路信息系统软件开发平台的研究与设计

基金项目: 中国国家铁路集团有限公司科技研究开发计划重点课题(N2021S015)
详细信息
    作者简介:

    唐伟忠,高级工程师

    舒雨姗,助理工程师

  • 中图分类号: U29 : TP39

Research and design of software development platform for railway information systems

  • 摘要: 针对铁路信息系统软件开发技术多样化、系统间互联互通和数据共享困难、软件研发力量亟待增强、软件开发管理机制不完善等问题,基于容器化、服务化、平台化的架构理念,应用微服务、数据仓库、企业应用集成等技术,构建铁路信息系统软件开发平台,为铁路信息系统的软件设计、实现、测试、部署及项目管理工作提供一整套高度集成的工具。该平台的应用有助于规范和优化铁路信息系统软件研发工作流程,强化软件开发技术选型统一管理,显著提升软件开发资源复用水平,为多主体协同研发提供强有力的支持,并有益于建立客观公正的软件研发项目团队评价与选用机制,促进铁路信息系统软件整体研发效能的全面提升。
    Abstract: In view of the problems such as diversity of software development technologies for railway information systems, difficulties in interconnectivity and data sharing among those systems, urgent need to increase software development strength, and imperfect management mechanism of software development, the software development platform for railway information systems is built based on the architecture concept of containerization, service and platform by using microservice, data warehouse, enterprise application integration and other technologies. This platform provides one suite of highly integrated tools for software design, implementation, testing, deployment and project management of railway information systems. The use of this platform is helpful to standardize and optimize the work flow of software development of railway information systems, strengthen the unified management of software development technology selection, significantly improve the level of software development resource reuse, provide strong support for multi-party collaborative software development, and help establish an objective and fair evaluation and selection mechanism of software development project teams, thus promoting the overall efficiency and effectiveness of software development of railway information systems.
  • 铁路信息化历经数十年持续建设,铁路信息系统已基本实现各专业关键业务场景全覆盖,在运输组织、调度指挥、客货营销、办公综合等方面发挥着重要作用。铁路信息化进入云计算时代以来,随着铁路企业数字化转型战略的实施,铁路信息系统软件组件化、微服务化、容器化的架构设计理念逐渐普及,同时对国产化、开源、自主可控[1]要求也越发迫切,对铁路信息系统的研发质量和服务能力等提出更高要求。尤其是近几年,信息化建设步伐明显加快,铁路信息化研发人才队伍快速壮大,各种新技术、新体系、新理念逐步被应用于铁路信息系统软件开发项目中。中国国家铁路集团有限公司(简称:国铁集团)的《“十四五”铁路网络安全和信息化规划》指出,铁路信息系统数量众多、开发平台不统一、系统间互联互通和数据共享困难、铁路信息系统软件整体研发力量薄弱、软件开发过程信息化管理体制不顺畅等问题依然突出,亟待构建统一的铁路信息系统软件开发环境,建立健全软件开发、测试评价技术标准体系,促进软件研发质量、持续集成和交付能力的提高。

    为此,依据铁路信息系统软件开发工作标准规范,研究提出铁路信息系统软件开发平台(简称:铁路软件开发平台)设计方案,依托该平台建立高效的多主体联合研发机制,促进铁路信息系统软件研发效能评价体系的持续完善,提升铁路信息系统软件整体交付能力。

    (1)开发技术选型统一管理

    创建铁路信息系统软件开发技术栈仓库,划分基础技术库与创新技术库,建立铁路软件开发技术栈更新审核体系,按照技术选型 “一主一备”原则,为待开发软件项目确定1种主要技术与1种备选技术,对铁路信息系统软件的开发技术选型实施统一管理与风险管控。

    (2)开发与运行环境一体化管理

    采用无侵入代码的方式隔离软件开发与运行环境,使用动态环境参数配置技术实现环境之间自动同步与自动切换,实现软件开发与运行环境一体化管理的目标,降低数据安全与网络安全隐患。

    (3)开发资源复用能力显著提升

    面向多主体联合研发软件项目,统一铁路信息系统软件开发技术架构,搭建可共享的资源池,集成软件开发资源仓库,建立模板化、组件化、服务化开发体系,显著提升软件开发资源复用能力,减少铁路信息系统软件研发项目中重复开发造成的资源浪费。

    (4)开发过程规范化与共享资源管理流程化

    建立完善的铁路信息系统软件开发规约,集成设计、实现、测试、部署及项目管理等各类工具软件,对铁路信息系统软件开发过程进行规范化管理;对各研发主体创建共享资源、获取既有资源进行严格的流程化管理,提升软件开发效率与交付质量。

    (5)开发效能持续提升

    采集铁路信息系统软件开发过程中产生的代码变更日志、提交次数、合并请求数等数据,构建开发效能度量指标体系[2],采用开发效能分析方法,建立分析模型,对开发效能进行评价与分析,促进研发团队交付效率、交付质量和交付能力的持续提升。

    基于服务化、容器化、平台化的架构理念,应用SpringCloud微服务框架、GreenPlum数据仓库、Redis分布式缓存、MQ消息队列等技术[3-5],构建铁路软件开发平台,实现设计、实现、测试、部署全过程一体化管理;该平台架构如图1所示。

    图  1  铁路信息系统软件开发平台架构示意

    (1)资源层:采用WebHook技术,以Maven、npm等资源仓库为基础,以Gitlab、Jenkins、Docker等工具软件为支撑,实现系统容器化持续集成,保持系统高效快速迭代。

    (2)数据层:基于数据仓库对业务数据进行汇聚整合,对系统字典数据、业务数据、消息、缓存、文件等数据进行分类存储和代理转发。

    (3)应用层:采用微服务架构对各类公用功能进行集成管理,提供统一身份认证、项目协作管理、测试管理、共享服务管理、研发效能评价分析等应用服务。

    (4)网关层:以微服务架构为基础,使用Nacos进行服务配置及服务治理,采用负载均衡技术减轻服务压力;通过API路由统一认证,实现铁路内外网数据安全可靠传输。

    (5)展示层:基于vue.js为移动端和电脑端提供用户交互服务,提供可视化报表统计及数据分析等;可按项目类别、用户权限等不同动态装配业务路由及功能界面。

    开发技术选型不统一、研发流程不规范、研发效能难以定量分析等是影响铁路信息系统研发工作质量的关键因素,通过技术与管理多措并举,对影响研发质量的各个环节实施精细化管理,建设铁路信息系统软件开发平台,其功能划分为环境管理、资源复用、集成与部署、项目管理4个功能域,如图2所示。

    图  2  铁路信息系统软件开发平台功能结构

    为软件开发人员提供统一的登录及访问权限控制功能,搭建集群化资源池、资源仓库、源代码仓库,为多主体协作开发提供有力支持,有效提高软件开发效率。

    提供单点登录、访问权限、角色控制等统一身份认证功能,软件开发人员通过一次认证后即可直接访问多个工具软件及开发资源。

    (1)单点登录:基于OIDC协议对铁路统一身份认证平台[3]进行二次封装,实现用户单点登录后即可在铁路软件开发平台中的资源仓库、源代码管理、集成测试等工具软件间来回顺畅切换操作,避免管理多重登录密码的繁琐,提高研发工作效率。

    (2)访问控制:基于角色的访问控制(RBAC,Role Based Access Control)技术建立铁路软件开发平台的统一访问控制,基于并发控制、请求超时、IP地址等规则提供合法性校验和请求过滤,保障多主体联合研发过程中的数据与信息安全。

    搭建集群化共享资源池、资源仓库、源代码仓库,为铁路信息系统软件开发提供全面的资源环境支持,使开发过程更加快速、敏捷。

    (1)集群化资源池[4]:在主机虚拟化的基础上,以集群化方式搭建数据库、消息服务、分布式缓存等共享资源池,开发人员根据实际项目需求获取资源连接,使用完毕后将其释放,无需重复建设造成服务器资源浪费。

    (2)资源仓库:依托内外网数据传输平台,解决外网资源库的自动同步与安全访问,集成Maven、npm等第三方资源仓库[3],为铁路软件开发平台搭建统一的资源仓库,对开发资源的申请、审核、使用、更新等实施全过程管控。

    (3)源代码管理:搭建基于Git的统一源代码仓库,规范源代码编写、调试、集成、发布、交付等过程,实现源代码版本控制和持续集成,提升源代码安全风险防范能力。

    实现公用服务、数据资产、可视化组件、工具模板等资源的一体化管理,方便软件开发人员快速获取所需资源,提高资源复用率,降低开发成本,提升研发效率和质量。

    对铁路信息系统软件项目中的公用服务进行解耦拆分和标准化集成,提供服务共享及安全管控,减少相似软件功能的重复开发,提升整体研发效能。

    (1)服务市场:采用SpringCloud微服务框架,对软件项目中实现相似功能的重复代码进行抽取与改造,形成通用方法并封装为服务,由铁路软件开发平台发布后形成服务市场,开发人员提出服务使用申请并通过审核后,即可通过轻量级API接口对服务进行调用。

    (2)服务管控:通过代理服务器为开发人员提供统一调用接口,记录服务调用日志,统计服务调用的次数及频率,分析服务活跃程度及服务质量,实时监测服务的健康状态及网络资源使用情况,确保服务稳定可靠运行。

    基于数据抽取–转换–加载(ETL,Extract-Transform-Load)工具与分布式数据仓库,构建数据集成[4]服务与数据应用服务,实现数据高效处理与安全共享。

    (1)数据集成:面向关系数据库、文件服务器、Rest接口等多种类型的数据源,基于开源ETL工具Kettle提供可视化数据采集界面,实现对多源异构数据的采集、清洗、加工和整合,降低对数据来源系统的访问压力,减少对数据的重复处理,提升数据处理效能,提高数据可用性。

    (2)数据应用:对清洗、加工、整合后的数据资源建立申请、审核、使用、监控等管控机制,基于用户身份识别及访问权限控制,以低代码报表设计、Restful接口等方式提供数据预览、数据拉取、数据统计分析等功能,实现数据高效、安全共享。

    面向通用场景,提供基于图形组件的可视化表单设计与报表管理功能,通过自动生成代码的方式,满足简单通用页面快速创建与数据统计分析报表个性化定制需求。

    (1)可视化表单设计:提供基于HTML5开发的可拖拽式表单设计界面[6],通过拖拽图形组件、配置组件参数等方式设计表单模板,根据表单模板自动生成规范、可用的源代码[7],为开发人员及业务人员提供所见即所得的表单设计功能,实现软件项目中简单通用页面的快速创建。

    (2)报表管理:对成熟的商业化报表中间件进行二次封装,方便开发人员进行报表设计、发布、更新、扩展等操作,以可视化图表的形式实现数据统计多样化展示与数据多维度交互分析,满足开发人员快速定制个性化数据统计分析报表的需求。

    构建应用脚手架、开发规范模板和基础组件库,实现迅速创建软件应用工程,提供多种可选技术框架与公用代码资源,规范开发流程,提高开发效率,提升开发效能。

    (1)应用脚手架:提供前端组件化开发模板、微服务框架模板、项目依赖与插件配置模板等多样式应用脚手架[8],规范软件应用工程代码框架,实现一键式快速生成软件应用工程代码。

    (2)开发规范模板:提供编程规约[9]、数据库规约、软件工程规约及异常日志、提交日志等开发规范模板,为多主体联合研发软件项目建立规范化软件开发流程,提高软件开发效能。

    (3)基础组件库:对开源工具类、UI框架等进行定制化封装,对自主研发的业务抽象类及通用工具类进行整合集成,为开发人员提供面向铁路业务的公用基础组件库,有效提升代码质量和开发效率。

    提供开发与运行环境的参数集中配置、测试管理、远程部署等功能,实现铁路信息系统软件集成与部署动态化、规范化,以利于在多主体联合研发软件项目中明确分工、落实责任、提高效率。

    构建统一的参数配置服务器,提供各类配置使用及监控功能,支持开发环境配置参数与运行环境配置参数的自动同步与自动切换,降低开发人员调整环境参数的复杂度,实现开发与运行环境一体化管理。

    (1)配置中心:基于微服务体系与SpringCloudConfig框架,建立分布式参数配置中心,实现对数据库连接池、中间件、日志、环境等参数的集中配置和动态管理,解决传统模式下参数更新不灵活、测试与运行环境无法自由切换、配置文件分散等问题。

    (2)配置监控:基于参数命名合法性、参数值合理性、参数变更有据性等判别规则,建立对动态参数配置的监控机制,实现参数配置异常情况的及时预警,提高参数配置变更的严谨性、可追溯性,保障铁路信息系统软件运行稳定性。

    面向多人协作软件开发工作模式,提供统一接口管理、代码自动测试构建、漏洞安全检测功能,为开发团队提供自动化代码管控手段,有效管理源代码安全风险,提升项目持续交付能力。

    (1)接口管理:基于WebSocket实现支持多人协作的接口管理功能,实现接口管理可视化、接口文档自动更新、Mock数据自动生成、接口自动测试等,解决前后端接口测试分离、接口文档更新不及时、复杂接口测试难度较大等问题。

    (2)持续集成:采用WebHook技术对Gitlab、Jenkins、Docker等工具软件进行集成,通过配置执行脚本的方式,实现源代码提交后自动执行代码测试和代码构建[7],及时发现源代码中存在的问题,有效管控源代码质量,提升软件持续交付能力。

    (3)漏洞扫描:基于源代码漏洞数据库,建立源代码安全脆弱性检测机制[8],对项目源代码、日志注入、空指针引用、文件上传、第三方仓库(Maven、npm等)引用等进行全面扫描;对存在漏洞的项目,拒绝进入交付环节,保证铁路信息系统软件的高安全性。

    提供远程部署代理及可视化部署监控功能,开发人员无需连接应用服务器(通常为Windows、Linux服务器)即可部署程序、获知程序状态,简化铁路信息系统软件的部署流程,有效降低应用服务器面临的信息安全风险。

    (1)远程部署代理:基于JavaAgent动态代理技术和ASM字节码增强技术,以Web方式实现铁路信息系统软件程序包的远程传输、启停、更新、状态监测等,简化开发人员部署程序包的操作,提高铁路信息系统软件的部署效率。

    (2)可视化部署监控:以命令交互方式提供可视化部署监控界面,实现JVM信息获取、线程状态监控、服务异常日志处理、程序更新监控、进程调试等功能,方便开发人员开展软件运维支持工作。

    提供知识文档管理、项目协作管理、效能评价分析功能,对项目的需求确立、任务划分、计划安排、文档协作、项目执行、效能评价分析、风险管控等流程进行规范化管理。

    提供支持多用户在线的文档协作、文档预览、资源共享功能,对软件开发相关的知识文档资源进行统一管理与有效管控。

    (1)文档协作管理:采用消息传输、异步I/O、负载均衡等技术,提供文档创建、多人在线编辑、日志记录、权限控制等功能,降低文档协作过程中的沟通与协调成本,提升开发人员的工作效率。

    (2)文档资源管理:采用文本提取、图像识别等技术,以多级目录形式对文档资源进行管理,提供pdf、txt、jpg、docx等多种文档的在线预览、关键字检索等功能,对铁路信息系统软件研发过程中创建的项目文档、需求文档、技术文档等知识文档资源实施统一管理。

    对项目的计划、执行、测试、交付过程提供模块化、流程化、规范化的管理,提升项目协作效率,提高项目交付质量。

    (1)项目管理:采用工作流技术构建项目立项、开发、交付、评审、实施、整改、结项的全流程模板,支持按照科研课题、降本增效、统型项目等类别进行分类定制,实现铁路信息系统软件项目生命周期规范化、流程化管理。

    (2)需求管理:提供对需求条目的维护、变更、评审功能,基于需求条目生成项目工作分解结构(WBS,Work Breakdown Structure),指导开发工作合理安排与有序推进,解决实际软件开发成果与项目需求不一致的常见性问题,突出需求对项目的牵动作用。

    (3)协作管理:将模块化任务细分为作业、事件及路线,支持设定关键作业或最小化可行产品(MVP,Minimum Viable Product),并显示作业更新状态;通过监控作业状态及持续时间自动识别任务协作瓶颈,便于及时补齐工作短板。

    (4)缺陷管理:以任务模块为最小单元,提供对缺陷的记录、审查、跟踪、解决、验证、关闭等功能,对软件测试流程进行有效管控,提高测试工作效率,保证铁路信息系统软件的交付质量。

    基于项目研发行为数据构建多维度效能度量指标,通过效能分析方法与分析模型,对开发团队的研发效能进行客观综合的评价与分析,为立项单位选择项目研发团队提供依据,同时指导项目研发团队复盘项目进展全过程,准确把握研发能力短板,以开展持续改进。

    (1)研发效能度量:提供基础统计和分析工具,以数据可视化的方式表达效能度量指标,为不同部门、团队、用户提供多维度效能度量数据看板,帮助用户分析研发效能水平,洞察效能瓶颈。

    (2)研发效能分析:采用趋势分析、下钻分析、相关性分析、累积流图分析等分析方法,运用分析模型与逻辑,生成研发效能报告,分析问题根本原因并提供改进建议,实现研发效能分析智能化。

    基于图形组件与分布式服务,实现可视化表单设计及代码自动生成,以接口形式对外提供服务,为移动端(即手机、平板等移动设备)和电脑端应用提供表单代码复用功能;可视化表单设计实现过程如图3所示。

    图  3  可视化表单设计实现过程示意

    基于HTML5 canvas提供可拖拽式表单设计界面,对vue.js基础组件进行封装和扩展,支持丰富的页面布局、参数样式、数据绑定及事件配置等特性,自动生成JSON格式的表单定义描述,并采用Base64编码方式对表单代码及数据进行压缩加密;以Restful方式对外提供统一调用接口,采用工作流引擎Activiti支持页面流可视化配置,为移动端和电脑端应用提供统一的表单页面跨终端共享与自动解析框架,实现跨终端表单代码的高效复用。

    基于分布式数据仓库Greenplum构建数据集成服务,实现多源异构数据的采集、清洗、加工、集成,为软件研发提供便捷高效的数据共享服务;多源异构数据集成共享实现过程如图4所示。

    图  4  多源异构数据集成共享实现过程示意

    基于数据管道技术,采用Kettle数据ETL工具、XXL-JOB分布式任务调度、Activiti工作流引擎、FileBeat轻量级日志传送等技术,提供ETL可视化处理界面,实现高效可靠的数据采集与数据处理功能;以OpenAPI方式提供规范化的分布式数据开放共享服务,基于Grafana和Prometheus设计网关监控与异常报警体系,建立数据资源的申请、使用、变更、监控等全流程管控机制。

    基于《软件研发效能度量规范》(T/IQA15-2022)中定义的E3CI软件研发效能度量框架,结合目标管理工具—目标与关键成果法(OKR,Objectives and Key Results),以数据驱动的方式自动采集研发行为数据,构建软件项目的研发效能评价分析体系;软件研发效能评价分析框架如图5所示。

    图  5  软件研发效能评价分析框架

    围绕需求管理和代码提交2条主线,通过API接口监控、日志分析等手段,自动采集需求变更、代码提交、缺陷处置、集成部署等研发行为数据,形成定量分析样本。从交付价值、交付质量、交付速率3个维度,针对需求、代码、环境等定义明确的度量指标;采用效能判定表、逻辑树等方法,对分析样本进行趋势分析、均值分析、下钻分析及关联分析,采用可视化图表对研发过程进行复盘,及时发现存在的不足,为改善项目研发管理工作提供数据支持。

    铁路信息系统软件开发平台将项目管理、环境支持、服务共享、集成部署等纳入一体化集中管理,基于组件化、服务化、容器化的架构理念,应用微服务、数据仓库、企业应用集成等技术,以建立铁路信息系统软件统一技术栈为重点,力图在构建规范、完备的铁路信息系统软件开发技术体系的基础上,为软件设计、实现、测试、部署、交付以及多主体联合研发提供便捷工具,强化软件项目对研发资源的共享与集成能力,对提高研发团队持续交付质量、严格规范信息化建设工作流程将发挥积极作用。

    现阶段该平台只能为开发人员提供基于JAVA语言及JavaScript语言的软件开发支持功能,后续将研究对该平台进行扩展,把C、C#、Python等其它主流计算机编程语言集成到该平台中,为开发人员提供多种编程语言支持,以扩大该平台的适用性,降低研发团队的技能门槛,提升铁路信息系统软件整体研发效能。

  • 图  1   铁路信息系统软件开发平台架构示意

    图  2   铁路信息系统软件开发平台功能结构

    图  3   可视化表单设计实现过程示意

    图  4   多源异构数据集成共享实现过程示意

    图  5   软件研发效能评价分析框架

  • [1] 马 丹. 铁路信息化历程与“互联网+铁路”创新发展探讨——新中国成立70年来铁路信息化建设回顾与展望 [J]. 理论学习与探索,2019(4):32-35.
    [2] 张 明. 铁路信息化评价考核指标体系研究 [J]. 铁路计算机应用,2017,26(4):32-35.
    [3] 姚洪磊, 张 彦, 周泽岩. 基于PKI/CA技术的铁路身份认证体系[C]// 2013年中国智能自动化学术会议论文集, 2013-08-24, 扬州. 北京: 中国自动化学会智能自动化专业委员会, 2013: 361-366.
    [4] 马建军,李 平,马小宁, 等. 铁路一体化信息集成平台总体架构及关键技术研究 [J]. 中国铁道科学,2020,41(5):153-161. DOI: 10.3969/j.issn.1001-4632.2020.05.18
    [5] 张文升. 分布式数据库Greenplum研究与应用 [J]. 金融科技时代,2017(6):48-50. DOI: 10.3969/j.issn.2095-0799.2017.06.009
    [6] 冯 喆,张 强. 低代码开发平台在企业数字化转型中的应用研究 [J]. 互联网周刊,2022(10):13-15.
    [7] 孙恒一,段 琳. 基于源代码持续集成的研发项目管理应用研究 [J]. 数字技术与应用,2016(12):66-67. DOI: 10.19695/j.cnki.cn12-1369.2016.12.049
    [8] 胡 蔷,王月梅. 铁路网络与信息系统安全风险集中管控平台的研发与应用 [J]. 铁路计算机应用,2014,23(6):35-39.
    [9] 龚永峰. 软件研发项目的效能提升 [J]. 中小企业管理与科技(上旬刊),2019(9):80-81.
  • 期刊类型引用(5)

    1. 王乔,马志强,张雅琴,孔庆玮,付冰珂. 中老铁路货物运输生产系统多语言策略研究. 铁路计算机应用. 2025(01): 34-38 . 本站查看
    2. 吴孟畅. 基于C#的钢筋混凝土刚构桥设计软件开发. 交通科技与管理. 2025(01): 17-21+143 . 百度学术
    3. 李杨,戴琳琳,阎志远,江琳,李晓楠. 铁路客票电子票库系统服务化改造设计与应用. 铁路计算机应用. 2024(04): 34-38 . 本站查看
    4. 张自平. 基于Java Web组件技术的软件项目文档管理系统. 信息记录材料. 2024(05): 172-174 . 百度学术
    5. 谭冠华,汪峥,范琪,任继强. 铁路机制砂智能化生产管理系统设计. 铁路计算机应用. 2023(09): 59-64 . 本站查看

    其他类型引用(1)

图(5)
计量
  • 文章访问数:  299
  • HTML全文浏览量:  88
  • PDF下载量:  100
  • 被引次数: 6
出版历程
  • 收稿日期:  2022-08-11
  • 刊出日期:  2023-07-24

目录

/

返回文章
返回