■ 方义 方伟 朱烨 /中国航发动控所
通过引入以开发和运营维护一体化为核心的信息化管理理念——DevOps,建立标准化流程、建设统一工具链以提高自动化能力和增强智能反馈机制,实现了开发环境、测试环境和生产环境的高相似度及可编程、自动化的全生命周期配置维护管理,从而适应快速变化、高可用性、高可靠性要求,帮助组织更快地获取价值与反馈。
在完成原型机的设计后,功能的完善、问题的修复、硬件环境的变化以及用户体验等需求,会导致软件的频繁变更,使得软件维护的成本远超过软件原型设计阶段的成本,在这种交付压力和人员投入的平衡性被逐渐打破的局面下,提高软件持续交付能力成为了人们关注的焦点。
DevOps是Development和Operations的组合,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。DevOps可以看作开发、技术运营和质量保障三者的交集。
中国航发动控所的创新团队以DevOps作为信息化管理理念,通过建立标准化流程、统一工具链建设、完善自动化能力、提高可视化反馈机制,来缩短软件迭代的循环周期,完成了持续集成、持续部署、状态看板和性能监测的功能,从而提高了软件研发效率。
图1 自动化工具链路集群部署图
以提高持续交付质量为目标,建立高度自动化的研发流程,包括自动化测试执行、自动化测试回归、自动化发布和部署等,节约劳动力,提高生产效率。
重新定义项目关联的唯一标识,以配置管理作为流程驱动的基础,打通9个工具间的数据,以数据中心为载体,将软件研发过程的碎片数据规格化和可视化,积累组织资产,提供性能监测基础。
搭建全生命周期的持续集成平台,涵盖编译构建、静态分析、单元测试、数据追踪、数据分析等分布式自动化节点,实现软件研发过程的自动化执行,自动化发布和自动化部署。
目前已完成单点环境的资源部署,并形成与软件研发流程相融合的自动化链路。服务器集群的部署如图1所示。
为了在提高软件交付质量的同时缩短软件迭代周期,可视化的反馈机制作为工具链的后端显得尤为重要,结合工作场景,反馈的形式包括邮箱、即时通信和监控看板,工具间的数据打通是实时反馈的基础,关键技术在于突破各通信交互间的接口。
Hubot方案:基于异步处理与TCP通信,采用当前最流行的nodejs框架,通过调用即时通信系统的接口单点接入,实现用户个性反馈;通过单点接入技术与流程的结合,向软件研发人员定时(每天、每周)、实时推送定制化消息,实现人机交互的沟通模式。
TBox方案:借鉴OSGI模块化设计和C/S部署架构,为所有的自研工具打造一个下载管理和监控的平台,构造线程池管理消息队列,采集在线情况并存储为组织级的度量数据,该方案原理如图2所示。
报表展示方案:基于数据库读取的报表工具,从海量的数据中提取和加工为项目评估数据,以实时看板提高对用户的反馈速度,提高项目运行效率,其方案原理如图3所示。
通过UI的设计后,项目的过程数据和健康状态通过仪表盘的方式实时展示给团队成员。
图2 TBox系统架构图
图3 基于实时数据库的报表展示系统架构图
图4 软件研发过程自动化状况
图5 软件研发过程中优化的活动分布
基于DevOps的安全关键软件研发工具链分阶段部署上线后,已在100个项目上投入使用,根据2017年年底统计的数据,按照软件研发的5大过程来看,自动化取得的成效如图4所示,优化了原有25个活动中的16个活动,优化的活动分布如图5所示。
除此以外,还实现了54个自研软件工具、6个商用软件工具和20台设备的管理,为用户提供了统一的工具/设备环境的下载使用和监控平台,为频繁迭代的自研工具提供了管理手段;同时工具/设备的使用情况得到实时监控,采集周期精确到60s,截至2017年已累积了9个月的工具使用数据。
与此同时,实现了140个关键业绩指标(KPI)数据中88个的自动采集,52个KPI数据的半自动采集,覆盖4类决策场景,并利用B/S架构的设计,方便不同场地的接入查询,利用即时通信系统及时地通知到个人。截至2017年年底,完成智能推送消息8714条,有效提高了项目和组织管理效率。
基于DevOps的安全关键软件研发工具链自上线以来,有超过100个软件研发项目在该平台上使用,管理了约150人规模的科研人员。本项目在方案探索和研制过程中克服了诸多关键技术和难点,对项目管理、软件工程等的经典方法论进行了有机整合,技术创新总结如下:
● 实现了基于版本的软件全生命周期数据的管理,打通了9类工具间的数据互联,利用项目和软件版本作为关键索引解决了数据孤岛问题;
● 利用分布式的部署环境支持多样性的自动化服务,为软件研发流程提供了大量的自动化工作,解决了流程操作的重复性工作和人工检查的重复性工作;
● 以应用商店为平台,建立了组织内部的“云管理商店”,对生命周期的研制环境进行了有效的监控和管理,确保可实时基于历史项目的过程数据和对应的工作环境,产出期望的工作产品,以满足控制软件30年内的数据可快速恢复、检索的要求;
● 实现了140个KPI数据中88个的自动采集,52个的半自动采集,覆盖4类决策场景,采集周期精确到60s,B/S架构的设计能方便不同地点的接入,同时利用即时通信系统给个人推送定制化消息,消息的延时在120s以内。
基于DevOps的安全关键软件研发工具链集成,一方面继承了原有的成熟需求管理、配置管理等货架管理平台的优势,利用了原有的技改建设基础;另一方面依据自身的研发组织及技术特点进行了大量的集成、定制及自动化开发。通过对软件研发全生命周期工程数据及管理数据的分类、标记和整合,解决了原有系统中的数据孤岛、数据冲突、数据检索困难等问题,促进了嵌入式控制软件研发的效率和质量控制能力。
通过大量管理活动的自动化集成及文档的自动化生成集成,使得软件研发人员可以更关注于软件开发测试技术本身,节省不必要的流程签署及文档生成工作。
创新项目保留了原有的成熟的货架软件研发管理工具,在继承了上百个项目近10年的开发过程及数据的基础上,对所有的生命周期数据进行了标记和分类,开发了数据总线及大量自动化操作,采用了仪表盘、语义识别机器人等新的信息化技术,为后续进一步提升嵌入式控制软件研发提供了保障和技术基础。