代码质量与安全 | 新时代:2023年商业软件开发的五大关键目标

news2024/11/17 12:59:43

在这里插入图片描述

进入2023年,技术趋势仍然聚焦于人工智能、边缘智能和气候变化领域,但供应链增速放缓和日益增长的消费者需求阻碍着创新的步伐。为了在行业中保持竞争力,并实现软件工程预定目标,软件开发领导者需要主动制定预算和时间管理计划,同时确保交付安全、可靠且合规的代码。

2023年的嵌入式软件开发团队,唯有立足于现有资源,提高资源利用率,方能在不断扩大的市场、供应链和人力成本竞争中脱颖而出。以下是新一年商业软件开发的五大关键目标,以及如何利用静态代码分析工具为实现这些目标提供支持。

商业软件开发的五大关键目标

1.最大化利用现有资源

想要最大化利用现有资源,关键在于打造一支实力强大的软件开发团队。通过让软件开发人员保持参与度和工作效率来支持他们,反过来还有助于他们能够战略性地思考如何使用和应用现有工具、工作流和分析。

一个很好的切入点,就是从帮助软件开发团队克服常见的资源密集型障碍开始。根据Perforce对近600名专业汽车软件开发人员的调查显示,质量挑战主要源于代码的复杂性及应用规模的不断扩大。

在这里插入图片描述

△ 汽车软件开发人员最关心的质量问题
要想真正赋予开发人员快速、自信地创建应用程序的能力,需要领导层将商业目标转化为开发成果。尽管市场压力带来了挑战,但只有这样才能满足产品质量、安全和防范要求。

“嵌入式系统软件开发适合勇于面对挑战的人。因为这种开发过程很复杂,需要注意很多小问题和陷阱。”

《嵌入式系统软件开发人员技能》 EmbeddedRelated.com

要想将开发人员的时间、干劲与公司目标保持一致,则必须简化复杂的流程、减少资源浪费并避免过度拖延。静态代码分析工具能对产品质量、安全和防范检查进行更具广度和深度的自动化分析,有效提升嵌入式软件开发的效率。

这就是一个行业预测的正确之处。Forrester 2023年预测报告指出,企业应该将自动化视为提高当今市场竞争力的强有力手段,而不是将其视为整体经济结构转型的催化剂:

“经济导致10%的自动化预算从用于转型变为用于弹性发展。” Forrester 2023年预测报告

现代静态代码分析工具能够在不运行代码的情况下分析代码,并深入研究代码执行和数据流以发现错误。静态分析工具,如Perforce公司旗下的Klocwork,能完美匹配当今缩短的发布时间线,使用差异化分析,即使是微小的代码变更,也能即时、持续地遵从质量和安全性。

只要运行良好,静态代码分析工具就能提供一个高效的开发环境,从而简化复杂的测试,让开发工作稳步向前。

2. 保持行业竞争力

通货膨胀和供应链问题只会增加现有的需求,以保持市场竞争力和缩小差距。在智能家居、电动和自动驾驶汽车、新型医疗器械、可持续技术等的推动下,每个嵌入式系统软件产品市场都将在2023年持续增长。

为了实现这些创新,需要复杂且颇具规模的系统,这使大家纷纷聚焦于嵌入式代码领域。

从软件功能到安全补丁管理,行业和消费者的需求已经从计划发布版本转变为每年多次交付。为了保持竞争力,持续集成和部署现在是必备,那些采用嵌入式系统敏捷流程的企业将取代不采用敏捷流程的企业。

敏捷工作流程的第一步,是重新评估您当前的产品开发周期。Perforce关于航空航天和国防软件开发状况的报告指出,最主要的问题是由漫长的审查周期和测试等待时间造成的生产效率问题。

在这里插入图片描述
△ 航空航天和国防领域的软件开发专业人员最关心的生产效率问题

静态代码分析工具能够显而易见的提升竞争优势:缩短新代码和变更代码的测试和验证时间,加快产品上市。此外,静态代码分析工具可以尽早发现并帮助补救问题,从而降低变更成本。

“我们提倡一个能尽早推动工作流集成的系统。” 《在谷歌构建静态代码分析工具的经验教训》 ACM通讯

3. 降低软件产品召回率,提高企业声誉

对于许多嵌入式产品来说,软件召回是不可避免的事实。美国历史上10大软件产品召回事件中,汽车系统软件产品就占了4起。大家都知道,减少产品召回的最好方法是采取预防措施,而不是等到产品发布之后。但问题是,很难知道该如何应对不断提高的软件复杂程度和不断缩短的产品上市时间。

很重要的一点,您需要承认消费者对产品召回事件的态度是模糊的。软件缺陷可能不会让消费者恐慌,但也有可能导致企业声誉受损,引发惨痛代价。正如1994年,英特尔前首席执行官安德鲁·格罗夫(Andrew Grove)在谈到奔腾微处理器的缺陷时所说:“我们被夹在自己和客户两种思维方式之中。前者是基于事实、基于分析的工程师思维方式,后者虽然也没有那么情绪化,但他们都基于自己的习惯做选择。”

与提高竞争力一样,缺陷预防需要持续地监督产品生产过程,并不断地改进产品质量。随着代码库的规模和复杂程度的增加,快速的缺陷检测和补救变得至关重要,因为开发人员无法承担所有的测试,QA也没有时间来追查根本原因。

静态代码分析是预防现场发生缺陷的重要工具,尤其是在涉及软件安全和安全标准时。在桌面上使用,它能够在问题进入代码库之前识别问题;作为持续集成过程的一部分来使用,它可以发现缺陷,强制执行编码标准,并在发布前确保符合标准。

4.让软件合规更轻松

虽然创新很重要,缩短上市时间也很重要,但关注客户需求更加必要。许多嵌入式应用程序需要遵守行业、政府和企业内部的标准。像Perforce旗下Helix QAC这样值得信赖的工具,能帮助确保符合汽车、航空航天、医疗器械和其他嵌入式软件开发行业的功能安全标准(如IEC 61508和ISO 26262)以及编码标准(如MISRA、AUTOSAR和CERT)。有了Helix QAC,开发团队无需下载这些标准的解释、验证和报告,就能在不影响发布速度的情况下在市场取得领先地位。

静态代码分析为开发人员提供了开箱即用的合规性测试和报告,无需解析需求或构建测试。为了满足快速发布周期的需求,Helix QAC和Klocwork等工具支持在代码变更时按需证明合规性,包括复杂的报告机制,以快速审查和确定问题的优先级。

5.培训软件开发人员

目前,超过90%的软件安全问题源于软件设计缺陷或编码缺陷。虽然工具和流程可以提供一些帮助,但培训开发人员应该成为网络安全威胁预防和检测计划的重要组成部分。

经常开展关于CWE列表和 Top OWASP漏洞等常见软件弱点的审查会议,以及与最新的编码标准保持同步,能够在团队中促进最佳实践,并为长期的培训会议奠定良好的基础。

您还可以利用静态代码分析工具自带的培训项目。例如,Klocwork提供的Secure Code Warrior(代码安全卫士)平台,该平台将培训课程和游戏化模式相结合,提高了开发人员的网络技能水平,让他们在开发环境中更好地识别和修复安全漏洞。

制定明确的2023年计划

在一个不明确的计划中发展技术只能是徒劳无功。静态代码分析工具能在不影响产品上市时间的情况下提高开发人员的效率,所以,要想在2023年一直交付安全可靠的代码,您需要考虑采用静态代码分析工具。

Perforce旗下的Helix QAC和Klocwork等静态代码分析工具,可以通过确保高代码质量和合规性,轻松实现商业软件开发的关键目标,从而使软件开发领导者自由地专注于创新。

文章来源:https://bit.ly/3vZX7F0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java设计模式-模板模式Template

介绍 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),z 在一个抽象类公开定义了执行。它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单说&#xff…

中移链合约常用开发介绍 (二)多索引表的使用

一、目的本文详细介绍了开发、部署和测试一个地址簿的智能合约的流程,适用于EOS的初学者了解如何使用智能合约实现本地区块链上数据的持久化和对持久化数据的增删改查。二、智能合约介绍区块链作为一种分布式可信计算平台,去中心化是其最本质的特征。每笔…

17.Isaac教程--机器学习流程

机器学习流程 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 文章目录机器学习流程模拟训练PC 和边缘设备上的推理使用 TensorRT 进行推理Torch推理使用 Tensorflow 进行推理示例PyCodelet配套代码Tensorflow 推理小码TensorRT 推理小码SampleAc…

23种设计模式(三)——模板方法模式【组件协作】

文章目录意图什么时候使用模板方法真实世界类比常说的钩子模板方法的实现模板方法模式的优缺点亦称: Template Method 意图 它的主要思想是,定义一个操作的一系列步骤,对于某些暂时确定不下来的步骤,就留给子类去实现好了&#x…

位图与矢量图的区别

相信大家在日常的工作过程中,经常会听到位图和矢量图,那么位图和矢量图的区别是什么呢? 1.定义 ①位图:称为点阵图像或栅格图像,是由称作像素(图片元素)的单个点组成的。这 些点可以进行不同的排…

测试用例设计方法有哪些?举例说明

众所周知,测试用例是编制的一组测试输入、执行条件及预期结果,专门为的是某个特殊目标,即测试某个程序路径,或是核实是否满足某个特定的需求。一般来讲,常用的测试用例设计方法有五种,分别是:正…

微信小程序中如何实现双向绑定

一、双向绑定 在微信小程序中如何实现双向绑定?在开始之前先介绍下什么是双向绑定,js中定义变量数据后,通过{{}}绑定到模板中,这个过程是单向绑定,即数据的更新只能是js中更新了数据,模板中跟着修改。但是如…

深度学习笔记:神经网络(3)

关于本章之前内容可以参考以下之前文章: 1 https://blog.csdn.net/Raine_Yang/article/details/128473486?spm1001.2014.3001.5501 2 https://blog.csdn.net/Raine_Yang/article/details/128584916?spm1001.2014.3001.5501 神经网络的输出层设计 机器学习问题一般…

2022年12月青少年软件编程(Python) 等级考试试卷(三级)

2022. 12 青少年软件编程(Python) 等级考试试卷(三级) 一、 单选题(共 25 题, 共 50 分) 1.列表 L1 中全是整数, 小明想将其中所有奇数都增加 1, 偶数不变, 于是编写了如下图 所示的…

高级树结构之平衡二叉树(ALV树)

文章目录平衡二叉树简介失衡类型&处理办法RR型失衡【左旋调整】调整演示代码实现LL型失衡【右旋调整】调整演示代码实现RL型失衡【先右旋后左旋调整】调整演示代码实现LR型失衡【先右旋后左旋调整】调整演示代码实现插入操作综合代码演示平衡二叉树简介 在数据有序的情况下…

Codeforces Round #842 (Div. 2)

Codeforces Round #843 (Div. 2) 传送门 不想搞的很累&#xff0c;对自己不做要求&#xff0c;有兴趣就做。 A. Greatest Convex #include <bits/stdc.h>using namespace std; const int maxn 1e6 10; vector<int> cnt[maxn]; map<int, int> mp;int mai…

nvm安装 疑难问题解决

nvm介绍 NVM是node.js的版本管理器&#xff0c;设计为每个用户安装&#xff0c;并在每个shell中调用。nvm可以在任何兼容posix的shell (sh、dash、ksh、zsh、bash)上运行&#xff0c;特别是在这些平台上:unix、macOS和windows WSL。 nvm安装 &#xff01;&#xff01;重要&a…

强化学习在智能补货场景的应用

本文作者&#xff1a;应如是&#xff0c;观远算法团队工程师&#xff0c;毕业于伦敦帝国理工学院计算机系&#xff0c;主要研究方向为强化学习、时间序列算法及其落地应用。深耕零售消费品场景&#xff0c;解决供应链运筹优化问题。为客户提供基于机器学习的AI解决方案。1. 背景…

2023.Q1 go语言记录

1. Go 语言数组声明和初始化var variable_name [SIZE] variable_type&#xff0c;eg&#xff1a;var balance [10] float32var balance [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}balance : [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}长度不确定的初始化var balance [...]float…

少儿Python每日一题(21):八皇后问题

原题解答 本次的题目如下所示: 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即,…

【Ansible】Ansible Playbook 的任务控制

Ansible Playbook 的任务控制 文章目录Ansible Playbook 的任务控制一、Ansible 任务控制基本介绍二、条件判断1.解决第一个问题2.nginx 语法校验三、循环控制四、Tags 属性五、Handlers 属性一、Ansible 任务控制基本介绍 任务控制类似于编程语言中的 if …、for …等逻辑控制…

MSF社会工程学

● Metasploit发现两个远程代码执行漏洞 ○ 问题都出在WEB组件方面 ○ MSF不受影响 ● 安全面前任何软件都是平等的 ○ 没有绝对安全的软件 为什么要说社会工程学 ● Metasploit可以很好的配合到社会工程学攻击的各个阶段 ● Setoolkit工具包大量依赖Metasploit ● 基于浏览器…

[SUCTF 2019]EasySQL

目录 预先知识 信息收集 思路 源码分析 非预期解 预期解 补充 预先知识 环境 use mysql; create table if not exists my_table( id int PRIMARY key auto_increment, name VARCHAR(20), age int); insert into my_table values(NULL,xiao,19); insert into my_table v…

BUFF80双模蓝牙5.2热插拔PCB

键盘使用说明索引&#xff08;均为出厂默认值&#xff09;软件支持一些常见问题解答&#xff08;FAQ&#xff09;首次使用测试步骤蓝牙配对规则&#xff08;重要&#xff09;蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功能层1配置的功能默认的快捷键蓝牙参数蓝牙…

Jetpack Compose中的Canvas

Jetpack Compose中的Canvas API 使用起来感觉比传统View中的要简单一些&#xff0c;因为它不需要画笔Paint和画布分开来&#xff0c;大多数直接就是一个函数搞定&#xff0c;当然也有一些限制。 Compose 直接提供了一个叫 Canvas 的 Composable 组件&#xff0c;可以在任何 Co…