刘永清 韩泽华 马素玲 甘丽清 焦艳斌
(1.国网信息通信产业集团有限公司 北京市 100000 2.北京中电普华信息技术有限公司 北京市 100000)
标准是对重复性事物和概念所做的统一规定,以科学技术和实践经验的结合成果为基础,经有关方面协商一致,由主管机构批准,以特定形式发布作为共同遵守的准则和依据。技术标准是对标准化领域中需要协调统一的技术事项所制订的标准,是从事科研、设计、工艺、检验等技术工作以及商品流通中共同遵守的技术依据。在人们日常的工作、作业管理中,存在大量的、具有重要意义和广泛影响的标准。经济全球化背景下,技术标准越来越成为产业竞争的制高点,“得标准者得天下”这一命题已成为人们开展工业制造、生产经营中的广泛认识。在知识经济时代,标准先行,在高技术产业领域表现犹为明显,标准决定质量,高标准才有高质量。
2021年10月,中共中央、国务院印发了《国家标准化发展纲要》,明确提出要“强化标准实施应用”,“提升标准化技术支撑水平,推动标准化工作向数字化、网络化、智能化转型”。国家电网公司对技术标准实施工作非常重视,印发了《国家电网有限公司技术标准实施评价管理办法》,并超前布局研发“国家电网公司技术标准实施评价管理系统”,全力推动技术标准在省(市)电力公司和科研、产业单位精准落地。
信息系统的开发、建设和实施是国网信息通信产业集团有限公司的主营业务之一,该业务具有技术更新快、流程复杂、高度线上化、人员流动性大等特点,研发各环节涉及标准种类多,更新频繁,但现有的标准只能以查阅方式指导工作,不能直接固化到作业过程中。同时,以传统作业指导书为主要载体开展标准实施的模式难以满足信息通信业务开展过程中对“灵活维护岗位标准体系、开发人员快速掌握岗位标准、在开发中实现标准即时实施监督评价”等需求。因而迫切需要探索技术标准实施的新模式,使研发人员在研发过程中快速、精准查找到满足自己需求的标准,并可以便捷利用标准,比如将标准自动化或半自动化的嵌入到系统设计、代码开发、软件测试等活动中,让标准能更直接的“干预”和指导研发过程。
标准数字化指利用数字技术对标准本身及生命周期全过程赋能,使标准承载的规则与特性能够通过数字设备进行读取、传输与使用的过程。DevOps 是一组过程、方法和系统的统称,通过促进开发、运维和QA 之间的沟通、协作和整合,实现软件产品持续部署和交付,提高企业产品快速交付能力。国家电网公司近几年对标准数字化及DevOps 方法进行持续研究与优化,将二者有机结合,梳理软件研发的标准工艺流程并进行数字化落地。
本文的目标旨在解决技术标准在软件研发过程中使用缺乏便利性及落实难的问题,介绍软件研发标准工艺流程成果,以及标准数字化落地实践的相关功能。
标准数字化应用总体架构包含三个部分:流程标准、标准实施以及标准检索,其中标准实施与标准检索在流程标准的基础之上构建。流程标准包括DevOps 标准工艺流程和项目管理流程;标准实施包括标准管理、“五维一体”模型、标准调度运行图、并通过工具将标准落地到软件的设计、开发、测试、运行各阶段;标准检索提供岗位标准智能推荐,以及标准检索等功能。总体架构如图1所示。
图1:标准数字化应用总体架构图
通过软件项目类型、项目阶段、适用岗位角色等标签分类实现标准精细化管理;通过“五维一体”模型、标准调度运行图宏观展示标准流程工艺,使各角色人员更快、更有效地掌握每个工作环节的工作内容与要求;标准智能推送功能依据当前人员岗位自动推送标准;根据搜索热度推送标准,解决不同岗位频繁获取同类标准的需求;标准实施将标准数字化后,将相关规则、参数、模板、触发事件固化到研发工具的设计、开发、测试、运行各环节,如在EA 工具中嵌入预置公共信息模型(CIM),在代码开发工具中嵌入代码模板、安全验证插件、数据混淆算法等。
依据“综合标准化法”理念,参考国内外DevOps 实践,结合国家电网公司、信通产业集团及子公司的相关研发管理方法,面向不同研发项目类型和环节开展软件研发标准工艺梳理,并同时将项目管理要素融入到软件研发标准工艺中,形成标准相关的矩阵式模型。
2.1.1 划分研发项目类型
根据研发项目特点和用途,将常用的研发项目划分为有一定差异性特征的项目。信通产业集团的研发项目分为四种类型:科研创新类、平台建设类、业务应用类、产品研发类。
其中科研创新类项目包含国家/国网/集团科技项目、技术服务项目、技术标准项目等;平台建设类项目为技术平台或平台组件研发项目,如统一应用开发平台、企业流程管理平台等;业务应用类项目为支撑业务管理及流程协同的生产经营类项目,如人资管理、营销管理、生产管理等;产品研发类项目是指按需求紧迫程度持续交付,投入市场后根据客户反馈情况迭代研发,并按产品方式运营的项目。
2.1.2 根据项目类型划分作业流程环节
不同类型的项目研发过程各环节存在差异。科研创新类项目过程划分为:需求分析、系统设计、原型开发、系统测试、示范验证、成果转化6 个环节;平台建设类项目过程划分为:需求分析、技术选型、平台设计、功能开发、系统测试系统投运6 个环节;业务应用类项目过程划分为:业务调研、需求分析、系统设计、功能开发、系统测试、系统部署、实施及运维7 个环节;产品研发类项目过程划分为:竞品分析、需求分析、技术选型、产品设计、功能开发、产品测试、产品发布7 个环节。
以科研创新类项目为例,研发流程如图2所示。
图2:科研创新类项目研发流程示例
2.1.3 “五维一体”模型定义
对于每个流程环节,按5 个维度梳理作业内容,包括管理和作业指导类适用标准、阶段的输入作业模板、成果输出模板、涉及岗位人员角色及作业辅助工具5 方面,并对梳理后的成果依托作业标准实施评估系统进行固化和验证,形成有机结合的“五维一体”模型,如图3所示。
图3:“五维一体”模型图
通过标准调度运行图,可以更加直观展示各项目类型的标准工艺流程,包括各阶段涉及的人员角色、适用标准、输入与输出模板、工具。使各角色人员更快、更有效地掌握每个工作阶段的作业内容与要求,降低研发人员准入门槛。无论是项目管理者还是研发工程师能在项目建设全过程中,查看各阶段标准要求,指导项目建设工作。
调度运行图如图4所示。
图4:调度运行图示例
将标准工艺流程固化到数字化作业标准实施评估系统,通过标准驱动软件研发工作。根据标准使用者的实际岗位角色自动化匹配与本岗位最相关的标准,提供标准的查看、下载等功能;根据标准的搜索热度,给软件研发人员推送最常用、热度更高的标准信息;标准使用者还可以根据自己的实际岗位,结合本岗位任职和职业发展通道,有目的性地导出岗位作业指导书,进一步提升岗位能力。
建设“五维一体”模型,依据该模型,通过嵌入技术,将研发各环节标准(如规则、参数、模板、触发事件)嵌入到软件设计、研发、测试、发布及运维各阶段,利用设计工具、开发工具、测试工具、安全渗透工具等,提升代码研发质量和效率。
以科研创新类项目为例,通过软件研发标准工艺流程梳理,形成作业输入模板28 个,成果输出模板68 个,匹配标准40 个,辅助工具12 个,涉及人员角色11 个。以下描述科研创新类项目“五维一体”模型固化过程:
3.1.1 需求分析
依据科研创新类项目研发指南,制定需求调研计划,确定需求调研对象,通过现场沟通及调研问卷等方式进行访谈调研,对收集到的需求进行深入的细致需求分析,得出《用户规格需求说明书》、《软件需求规格说明书》等文档,并依托原型法,进行初步的原型设计,进一步细化功能,以便于用户进行需求确认,达成共识。
科研类项目在需求分析阶段需要固化的信息如下:
(1)人员角色。客户代表、需求工程师、UI 工程师。
(2)作业输入模板。立项依据:《合同》、《中标通知书》、《任务书》或其它立项依据;其它立项材料:《工作分解结构WBS》、《可行性研究报告》。
(3)成果输出模板。《用户需求调研记录》、《用户规格需求说明书》、《软件需求规格说明书》、《界面原型设计》(初稿)(可选)、《需求分析报告》。
(4)辅助工具。需求阶段:需求管理系统、WPS、Visio、Axure。
(5)适用标准。《需求管理过程规范》。
3.1.2 系统设计
从软件需求规格说明书出发,根据需求分析阶段确定的功能范围设计系统的整体结构,划分功能模块、确定系统架构,形成具体设计方案,主要包括技术方案、概要设计,数据库设计等,并依托原型法,细化设计,进一步明确系统功能,作为后续开发人员进行开发的依据。
科研类项目在系统设计阶段需要固化的信息如下:
(1)人员角色。
架构师、UI 工程师、UE 工程师
(2)输入作业模板。《用户需求规格说明书》、《软件需求规格说明书》、《界面原型设计》(初稿)(可选)。
(3)输出作业模板。《技术方案》、《概要设计说明书》、《领域模型设计》(可选)、《数据库设计》、《界面原型设计》(可选)。
(4)工具。设计管理系统、WPS、Visio、Axure、EA。
(5)适用标准。《国家电网公司统一应用平台界面交互技术规范》、《数据库设计规范》。
3.1.3 原型开发
通过代码编写以及相关的集成工作,实现系统或组件的落地,并完成单元测试及系统联调等工作。
科研类项目在原型开发阶段需要固化的信息如下:
(1)人员角色。开发工程师、集成工程师。
(2)输入作业模板。《技术方案》、《概要设计说明书》、《领域模型设计》、《数据库设计》、《界面原型设计》。
(3)输出作业模板。《单元测试报告》、《用户手册》、源代码(可选)、发布包(可选)。
(4)工具。研发任务管理系统、Eclipse、SG-BPM、Gitlab、Gradle、Maven。
(5)适用标准。《国家电网公司一体化“国网云”第5 部分:应用构建组件》、《国家电网公司统一应用平台模块技术规范》、《微服务架构设计导则》、《国家电网公司2020年度基础平台软件管控范畴及其版本的目标要求》、《JAVA 编码规范》。
3.1.4 系统测试
依据任务书的要求,制定系统测试计划,制作测试用例及测试数据,进行相关的功能测试、安全测试、性能测试等,并出具相应的测试报告。
科研类项目在系统测试阶段需要固化的信息如下:
(1)人员角色。测试工程师、QA 工程师。
(2)输入作业模板。《系统测试计划》、《系统测试用例》、《可行性研究报告》、用户需求规格说明书》、《软件需求规格说明书》、《概要设计说明书》、《界面原型设计》(可选)。
(3)输出作业模板。《缺陷登记表》、《功能非功能检测报告》、《性能检测报告》、《安全检测报告》。
(4)工具。缺陷管理系统、代码卫士、findBugs、loadrunner、fortify、checkmarx。
(5)适用标准。《国家电网公司信息系统测试管理细则编制工作方案》、《国家电网公司信息系统测试与版本管理细则》、《国家电网公司信息系统非功能性需求规范》、《国家电网公司信息系统功能、性能测试规范》、《国家电网公司移动应用软件安全技术要求及测试方法》、《JAVA 编码规范》。
3.1.5 示范验证
对通过系统测试阶段验证的系统或组件进行发布,进行科技项目验收,以及进行相应的示范验证及成果转化等工作。
科研类项目在示范验证阶段需要固化的信息如下:
(1)人员角色。配置管理工程师、实施工程师。
(2)输入作业模板。发布包(可选)。
(3)输出作业模板。《技术报告》、《工作报告》、《项目总结报告》、《项目验收汇报》、《决算报告》、《经费支出明细表》、《应用证明》。
(4)工具。人工辅助验证,利用WPS 形成报告。
(5)适用标准。《国家电网公司敏捷研发实施细则》、《国家电网公司敏捷迭代研发管理办法》、《国家电网公司信息系统测试与版本管理细则》。
3.1.6 成果转化
对科研创新类项目技术成果进行后评估和组合应用,在商业项目、产品孵化等工作中予以转化,以创造更加商业价值。
依据具体成果情况,开展下一步成果推广或产品研发工作。
3.2.1 设计过程
针对设计阶段用户界面设计不规范、随意性强的问题,通过界面设计工具提供界面原型模板,按照应用平台界面交互技术规范进行交互体验设计,包括界面布局、双列导航布局、顶部主导航布局等,进而规范页面控件,如日期、按钮、文本域等常用控件。驱动项目组快速开展界面原型设计,并将原型转换为代码。
3.2.2 开发过程
在代码开发阶段,将相关标准,比如编码规范要求,转化成具体代码检查工具,添加到开发平台中,通过代码检查工具实时对编写的代码进行检查,及时指导开发人员规范编写代码,使开发人员的产出成果可以直接符合代码编写规范。代码检查工具嵌入方式如图5所示。
图5:代码检查工具
3.2.3 测试过程
将软件研发标准落地到源代码静态扫描工具中,提供源码扫描服务,对代码库中工程师提交的源代码进行定时自动化安全扫描,解决分布式研发代码安全扫描;将代码安全相关的标准解析嵌入到代码扫描服务中,针对开发工程师将开发代码,提交到代码库中后,定时安全自动化扫描代码。实现了标准嵌入到测试过程中,保证了代码库中的代码安全可靠。自动化扫描工具嵌入方式如图6所示。
图6:自动化扫描工具
3.2.4 运维过程
通过端口安全扫描工具对运行中的程序接口进行动态扫描,检查代码安全性;将代码安全标准落实到代码运行期,进行安全渗透测试;利用自动化运维工具对已经部署上线的系统进行端口动态扫描,实现流量分析,检查sql 注入、xss等安全渗透问题。运维工具嵌入方式如图7所示。
图7:自动化运维工具
标准数字化成果在本单位“大研发”体系基础支撑平台及生产经营管理“一系统”研发项目上已经得到全面应用。企业相关的技术标准都可以得到很好地管理和落地实施,通过标准调度运行图和“五维一体”模型可以指导项目成员在各阶段合理、有序推进任务。软件研发人员可以快速查看到与自己相关的技术标准,以及在项目各阶段的工作任务,应该有什么输入,输出什么成果,参考和遵守哪些管理标准、技术规范等。此外,将标准落实到软件研发的界面设计、代码开发、测试、运维等各阶段,大大提高了软件开发的效率和质量。
后续将对软件研发标准工艺流程进一步优化,加强标准数字化工作的深化落地,逐步在所有研发项目中有序推广实施,实现根据岗位和项目类型的适用技术标准细化智能识别推荐能力。同时,将深化标准应用检验、技术标准数字化转换及机器读写等工作,运用人工智能、知识图谱等新技术,进一步提升软件研发标准驱动研发项目交付过程的质效。