技术领域
本发明属于高安全软件研发集成方法。
背景技术
传统的嵌入式软件开发模式,团队开发成员将代码开发完成后才进行集成,集成过程很容易出现问题,且问题很难排查。持续集成技术是一种软件开发实践,鼓励团队开发人员经常集成他们的工作,每次集成都通过自动化的流水线(包括代码构建、代码测试等)来验证,从而可以尽早发现并修正集成问题,确保每次集成都会生成稳定的版本。
持续集成技术在互联网行业得到了广泛的应用,在嵌入式软件领域应用较少,尤其是嵌入式高安全软件领域。原因在于互联网行业通常采用测试驱动开发模式,开发人员同时负责代码开发与测试,便于持续集成流水线的设计。而嵌入式高安全软件开发强调测试人员的独立性,开发人员和测试人员必须属于不同的团队。此外,嵌入式高安全软件研发需要消除需求理解的二义性,且对开发/测试环境,代码质量,以及测试项目都有严格的规定,现有的持续集成技术无法直接应用。
发明内容
发明目的
提供一种适用于嵌入式高安全软件的持续集成方法,持续集成流水线的设计在确保高效的同时,着重考虑安全因素,确保研发环境的正确性,消除需求理解的二义性,以及确保测试人员的独立性。
发明技术解决方案
本发明的实施包括以下步骤:
1)建立Git分布式版本控制系统,其分支管理策略如下:一是,Master分支,主版本分支,管理代码的主版本变更;二是,Develop分支,主开发分支,管理所有的需求变更代码,代码需要开发流水线执行成功,并且通过领域内专家代码审查;三是,Test分支,三方测试分支,存放第三方测试人员编写的测试用例;四是,Feature分支,功能分支,每一条需求变更对应一个Feature分支,Feature分支根据应根据需求变更ID创建,以建立与需求变更的关联。
2)开发人员从需求管理平台获取需求变更;
3)开发人员根据需求变更更改代码,并编写自测试用例,用于验证代码变更运行符合开发人员预期;
4)开发人员提交更改代码和自测试用例至Git版本管理服务器对应需求变更的Feature分支。
5)持续集成平台管理并执行持续集成的开发流水线,开发流水线基于Git的Feature分支,包含以下步骤:
5.1)对持续集成开发流水线涉及的开发环境的正确性进行检测,确保开发环境的正确性,可采取工具版本匹配性检测,或直接从特定配置管理仓库中检出最新的开发工具脚本的方法;
5.2)从Git版本管理服务器的对应需求变更的Feature分支检出代码和自测试用例;
5.3)执行代码构建操作,如果代码构建过程中报出警告或错误,中止开发流水线执行;
5.4)采用cppCheck等代码检查工具对代码进行静态扫描,如果代码扫描出问题,中止开发流水线执行;
5.5)执行自测试用例,如果自测试用例执行报出警告或错误,中止开发流水线执行;
5.6)无论开发流水线执行成功与否,均需要反馈开发流水线执行结果。
6)如果步骤5)的开发流水线每个环节均执行成功,提交变更代码至领域内专家进行人工审查,如果人工审查不通过,在需求管理平台记录审查问题单;如果人工审查通过,将Git版本管理服务器对应需求变更的Feature分支合并入Develop分支;
7)第三方测试人员编写测试用例,并提交测试用例至Git版本管理服务器的Test分支,根据不同的安全等级,测试可能包含单元测试,部件测试和配置项测试;
8)持续集成平台管理并执行持续集成的测试流水线,测试流水线基于Git的Develop分支和Test分支,包含以下步骤:
8.1)对持续集成测试流水线涉及的测试环境的正确性进行检测,确保测试环境的正确性,可采取工具版本匹配性检测,或直接从特定配置管理仓库中检出最新的测试工具脚本的方法;
8.2)根据安全等级要求,执行单元测试、部件测试和配置项测试;
8.3)无论测试流水线执行成功与否,均需要反馈测试流水线执行结果。
积极效果
本发明通过合理的持续集成流水线设计,兼顾了嵌入式软件研发的高效与安全,高效体现在测试介入之前引入代码静态分析环节,从而尽可能早的通过工具暴露问题,安全体现在强化对研发环境的正确性管理,以及全方位的代码质量保证措施,包括代码静态分析、代码自测试、领域内专家代码审查以及第三方测试。
附图说明
图1一种面向嵌入式高安全软件的持续集成方法示意图。
具体实施方式
以图1所示的示例详细说明具体实施方式。
前提操作:
1)创建Git分布式版本控制系统,创建主版本Master分支、主开发Develop分支和第三方测试Test分支;
2)基于Jenkins持续集成管理平台设置开发流水线,流水线环节涵盖开发环境检测、代码构建、代码静态分析、代码自测试和结果反馈;
3)基于Jenkins持续集成管理平台设置测试流水线,流水线环节涵盖测试环境检测、代码三方测试和结果反馈。
需求变更流程:
1)系统人员下发新的变更需求,并录入到需求管理平台,假设需求编号为REQ001;
2)软件开发人员在需求管理平台接收到需求编号为REQ001的新增需求;
3)软件开发人员请求在Git版本管理服务器上创建Feature-REQ001的功能分支;
4)软件开发人员从Git版本管理服器上克隆Feature-REQ001分支,根据需求REQ001开始编码,并编写自测试用例(用于验证所写代码运行符合开发人员自身预期);
5)软件开发人员提交变更代码和自测试用例至Git版本管理服务器上的Feature-REQ001分支;
6)软件开发人员基于Feature-REQ001分支执行开发流水线,假设各流水线环节执行均成功,无警告或错误报出;
7)软件开发人员提交领域内专家进行代码审查,从第三方角度确保开发人员对需求理解的正确性,假设领域内专家认定开发人员提交的代码实现与需求一致;
8)软件开发人员发起分支合并请求,将Feature-REQ001的分支合并至主开发分支Develop分支;
9)第三方测试人员监测到Develop分支新增合并,根据软件安全等级开展测试用例编写工作,编写完成后提交至Test分支;
10)第三方测试人员基于Develop分支(被测代码)和Test分支(测试用例),执行测试流水线,假定变更部分的测试用例执行出错,第三方测试人员在需求管理平台创建问题单;
11)软件开发人员接收到问题单后,根据问题单修改代码和自测试用例,执行步骤5)-步骤8);
12)第三方测试人员监测到Develop分支新增合并,根据软件安全等级开展测试用例编写工作,编写完成后提交至Test分支;
13)第三方测试人员基于Develop分支(被测代码)和Test分支(测试用例),执行测试流水线,假定所有变更部分的测试用例均执行成功,至此需求REQ-001的持续集成任务完成。
机译: 一种执行安全软件应用程序和一种非安全软件应用程序的方法
机译: 一种执行安全软件应用程序和一种非安全软件应用程序的方法
机译: 提供一种与安全软件客户端应用程序相关的增强认证水平的方法,该安全软件客户端应用程序由应用程序分发实体按顺序传输给客户端计算机设备;系统,软件客户端应用程序实例或客户端计算设备,第三方服务器实体以及程序和计算机程序产品