Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

软件代码质量治理论文

发布时间:2023-09-19 15:21:11 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com)

  摘要:近年来,公司不断加强信息安全体系和能力建设,其中一项重要内容是动态及时维护信息资产及资产价值,以此为依据对信息资产风险进行评估,并采取措施规避、降低资产面临的威胁和脆弱性(漏洞)。研发部需要找到适合部门的管理及技术手段,提升部门的安全能力建设,同时结合自身面临的复杂局面,从提升全体员工安全意识到代码审核和制定部门制度,来全面提升集团的信息安全体系和能力建设。

  关键词:代码质量;质量治理;代码审计;Sonar

  Software Code Quality Governance

  LIU Haifeng,LIN Lin

  (Guoneng Netcom Technology(Beijing)Co.,Ltd.,Beijing 100011)

  【Abstract】:In recent years,the Company has continuously strengthened its information security system and capacity building.One of the important contents is to dynamically and timely maintain information assets and asset values,evaluate information asset risks on this basis,and take measures to avoid and reduce the threats and vulnerabilities(loopholes)faced by assets.The R&D department needs to find the management and technical means suitable for the department to improve the security capability of the department.At the same time,in combination with the complex situation faced by itself,it should comprehensively improve the information security system and capacity building of the group from improving the security awareness of all staffto code review and formulating department systems.

  【Key words】:code quality;quality management;code audit;Sonar

  0引言

  目前公司要求项目上线前申请上线安全检测,网络安全中心通过专业手段检测到漏洞并督促项目组完成整改。这在很大程度上降低了安全风险,但是随着部门业务范围的增大,组织架构跟随业务调整,部门内部按业务划分成10个小组,每个小组独立管理,人员迅速扩充,素质参差不齐。个别项目组因为都是新来员工,对公司相关制度流程不熟悉,版本管理控制不严,发版不规范,代码质量更加无从保证[1]。如果将大大小小上百个项目统一规范管理,控制发版规范流程,提升代码交付质量是部门面临的一个亟需解决的难题。各国为了解决安全问题提出了各种安全开发模型,安全开发生命周期(Security Development Lifecycle,SDL)、敏捷的SDL模型、ISO/IEC 27034、McGraw的7个接触点模型BSI和软件安全开发成熟度模型BSIMM。不管哪种开发模型,都是在解决安全开发和安全质量保障。现在比较成熟的是开发人员使用的Idea开发工具支持2个代码检查插件。一个是Alibaba Guide偏向于代码规范/安全规约方面的检查,由阿里巴巴手册扩展而来;另一个是Sonarlint偏向于代码质量、设计/隐藏的风险问题检查,包括代码标准规范、潜在缺陷、复杂度、重复、注释、糟糕的设计等。部门原搭建了统一的Jenkins服务,对代码提供打包服务,但是由于项目和人员的扩充,部分项目并没有采用,Jenkins同时提供集成代码质量审核工具Sonar服务,结合部门亟需解决的大而不统的局面,研发部代码质量改进QC小组决定通过强制所有项目纳入Jenkins和Sonar管理并考核的办法,提升部门安全开发建设能力[2]。

  1实施方案制定

  部门通过集成公司已有资源,并结合开发人员实际情况采用以上管理工具来实现对代码的闭环管理。公司统一采用SVN管理代码,小组统一搭建Jenkins管理平台及SonarQube代码质量审核工具,并制定部门技术管理办法,强制性要求所有组将项目纳入到Jenkins管理,并开发一套可以分析部门存在问题以及查看各项目改进情况趋势图分析Sonar-Web工具[3]。SonarQube是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。通过插件形式,可以支持众多计算机语言,比如Java、C#、Go、C/C++、PL/SQL、Cobol、JavaScrip、Groovy等。Sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具来检测代码,帮助发现代码的漏洞、异味等信息。最终制定的代码治理架构图如图1所示。

软件代码质量治理论文

  部门目前大部分项目采用Maven构建,Jenkins服务器安装Maven Integration插件,创建Maven项目,配置项目(从SVN拉取代码)。公司禁止了SSH端口,因此不能远程部署,服务器上可以通过HTTP协议下载运行的代码包进行部署。部门还有少量Android、.Net、Node项目均可以通过按照相关插件满足项目组配置需求。通过SonarQube提供的监测页面,查看各项目代码质量问题,并通过自主研发的Sonar-web对部门的质量改进变化趋势做监测分析[4]。

  2实践效果展示

  通过各小组共同努力,一个月之内部门正在建设和改造的103个项目纳入管理并完成Sonar的集成,以前部门大部分项目需要发版人员更新SVN最新代码到本地,再上传到服务器,现在使用Jenkins一键打包,服务器上脚本抓取代码包,大大提高了发版效率。通过Sonar的集成,直观的看到每个项目存在的问题、漏洞、覆盖率、重复、异味问题等。

  将Sonar监测的结果纳入考核之后,开发人员也更加重视相关问题,本地开发软件Idea中装SonarLint插件,开发过程中有相关问题提示,并且提供各种语言的开发手册,开发人员可参考手册和提示来规范自己的代码质量[5]。以下问题总结均来自真实的项目改进过程发现的一小部分问题:同一个VUE组件中函数同名,参数不同;If else块内容相同;判断对象为空的块里还要使用这个对象;逻辑判断用=号而不是==;Map里put同一个key两次;布尔类型还要用==来判断;不及时删除无用的变量;复杂度过高;奇怪的命名;New Exception但不抛出;双重否定;多余的判断;字符串和数字比较;应该初始化的配置属性,在调用中赋值。

  通过使用Sonarlint工具,大家总结出来一系列提升代码质量的技巧,比如:Controller的返回原来Controller返回的都是String,在代码中用了Jackson序列化,这个以后要改成返回DTO对象,这样便于自动生成文档。DTO对象要加 apimodelproperty加描述;弃用Fastjson包,改用Jackson;尽量减少Common HTTP的使用,改用Resttemplate;每个模块应该定义自己的异常类和异常编码。各项目组都通过质量改进过程都积累了经验,提升开发人员开发代码水平。

  代码质量改进QC小组还自己开发了一套监测工具,可以查看部门所有项目整体情况,分析每个项目的一个改进趋势过程。

  从分析具体某个项目的一周指标变化趋势,可以看到,经过两个月以来的变化,问题逐步减少、覆盖率增加、重复率降低。部门也以这3个指标作为对项目的考核。

  经过两个月的试运行,结合实际运行情况,制定了一套标准对所有项目进行考核:

  (1)除采用低代码工具开发的应用系统外,所有应用系统均应使用Jenkins进行构建。

  (2)含有应用系统研发工作内容的项目,测试环境发版由测试人员负责,生产环境发版由项目组指定专人负责。采用外购成品软件或是采用部门产品实施的项目除外。

  (3)对于已采用自建Jenkins的遗留项目,如不再演进,可不必迁移至部门Jenkins。

  (4)部门代码审查管理要求如下:

  1)部门采用Sonar搭建统一代码审查平台,以下系统须纳入部门代码审查:正在研发或升级改造的系统、纳入部门产品和平台类的系统、稳定运行的“老”系统的新增模块、除使用低代码工具开发的应用系统外,均须进行代码审查。

  2)对于新增代码,原则要求问题(漏洞、异味、安全热点等)动态变化总数不超过100,问题修复时间不超过一周。对于存在大量已有代码的情况,考核以下指标:问题减少数:在问题数大于300的情况下,问题数每周减少不少于300个,优先消除阻断、严重、主要三个级别的漏洞。

  3)重复率:每周降低3%,直至达标(低于3%)。

  4)单元测试覆盖率:每周增加2%,直至达标(新增代码覆盖率达80%)。

  3实践总结

  部门代码质量提升小组通过以上一系列措施总结为:规范化、自动化、流程化、中心化,达到了对部门代码质量的治理[6]。

  (1)规范化:首先建立了专业代码质量提升小组团队,树立规范意识,将代码质量管理当成一个规范化、流程化管理推广。小组成员需要确定代码执行规范,结合实际,小组选择《阿里巴巴Java开发手册》,确定规范执行监测工具等制定规范化标准。

  (2)自动化:工欲善其事必先利其器,规范标准制定好后怎样能保证每个人都能按照规范编写代码,如果只靠个人自觉性那是不靠谱的,必须要有工具来做支撑,提交到SVN的代码,必须通过Jenkins打包,集成SonarScan,通过SonarQube查看各项目的质量情况,并通过自己研发的Sonar-web查看各项目的质量改进过程。

  (3)流程化:有了工具可以帮助我们高效实现代码规范的落地,但是没有制度和流程的约束,随着时间的推移,代码质量意识在团队中就会慢慢被淡化,最终又会回到初始的混沌状态,所以我们必须在制度和流程上强制采取质量保证措施。
       (4)中心化:部门按小组分成多个小团队,每个小团队各自为阵,这时就很难从细节上去保证规范的落实,并且每个小团队适用的规范也不尽相同,不能用一套标准去要求所有人,到这个阶段更多的关注点应该放在方法论的输出上,而非具体的执行细节,具体的执行细节可以让各个团队自己去实施,但是需要有一套统一的评分标准来评估每个团队的实施状况。根据Sonar-web中出具的各系统问题、重复率、覆盖率为标准来对各项目组进行绩效考核。

  4结语

  全面提升信息安全建设水平和能力需要各个环节的质量把控,通过搭建统一的代码管理平台集成代码质量审查工具,并制定对监控结果进行改进的管理制度,督促代码质量审核结果的改进,避免不规范的写法、不合理的逻辑,防止XSS攻击,防SQL注入,以提升代码质量。最终用户对部门的整体交付速度和质量满意度也得到提升,同时提升了部门的专业化队伍形象。

  参考文献

  [1]廖鹏举,高文东,王慧.浅谈企业软件代码质量管理[J].信息系统工程,2020(5):114-116.

  [2]李家宏.提高软件源代码质量的路径和方法研究[J].中国认证认可,2022(6):28-33.

  [3]张海锐,吴毅坚,赵文耘.面向代码设计质量监控的软件度量指标集研究[J].计算机应用与软件,2020,37(3):13-21+66.

  [4]史蓓娜.代码覆盖率测试工具Istanbul的应用[J].电脑知识与技术(学术版),2020,16(8):59-61.

  [5]何斌,孙俊若,汪圣利,等.嵌入式软件内部质量度量方法研究[J].电子产品可靠性与环境试验,2020,38(S01):73-77.

  [6]陈立前,董威,尹良泽,等.面向代码质量提升的软件工程能力素质培养[J].软件导刊,2022,21(7):1-5.

关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/63332.html

相关内容

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml