tag 标签: 软件开发

相关博文
  • 2024-1-19 14:52
    0 个评论
    来源:康谋自动驾驶 康谋新闻丨走进康谋科技——您的自动驾驶解决方案合作伙伴 原文链接:https://mp.weixin.qq.com/s/-TCNNviK_u8wK0Y3qMHkNA 欢迎关注虹科,为您提供最新资讯! #自动驾驶 #数据采集 #软件开发 致一直以来关注和支持虹科自动驾驶的朋友们: 面对日益增长的行业需求,虹科自动驾驶事业部正式更名为“康谋”。这一重要改变代表了虹科持续发展进程中新的里程碑,也体现了我们在自动驾驶领域不断创新的精神。 康谋 keymotek 象征 “关键汽车技术”,我们希望通过不断拓展、完善自动驾驶工具链,为客户提供全方位、智能化的解决方案,助力自动驾驶商业化落地。 “康”代表着我们的愿景——为大家带来 更加安全、舒适和便捷的出行方式 ;“谋” 则体现了我们的核心竞争力和优势——以专业的团队和先进的技术为基础,以高效的方法和丰富的经验为依托, 通过创新帮助客户成功 。 由衷感谢您对康谋的支持和信任,我们期待与您一起共创自动驾驶领域的崭新篇章。请继续关注我们的最新动态,共同见证康谋的成长与飞跃! 康谋主营业务 01数据采集: 数据采集、储存与管理 02软件开发 :组件开发、软件数据回放、数据清洗 03仿真模拟测试: 场景重建、传感器模型开发、软件在环测试 04系统集成与测试: 硬件在环测试、硬件数据回放 关于康谋自动驾驶 康谋科技有限公司是原虹科自动驾驶业务孵化出来的独立公司,专注于自动驾驶领域。 我们以数据为驱动力,提供高性能的数据采集、记录、传输方案,针对各种驾驶场景进行精准的仿真模拟,以及对大量自动驾驶数据进行高效、高质量处理。我们的一站式服务能够满足自动驾驶领域研发测试的全流程需求。 通过深入了解客户需求,结合行业最新技术和趋势,我们致力于为客户提供最适配的自动驾驶解决方案,助力客户在自动驾驶领域取得更大突破。
  • 热度 6
    2023-12-13 11:29
    445 次阅读|
    0 个评论
    随着汽车朝着电动化、自动化、智能化、网联化的“四化”趋势发展,芯片的研发和生产变得越来越关键。国产芯片代表着中国的科技雄心和自主创新的追求。实现这些目标需要面对严峻的技术挑战,其中之一就是确保国产芯片开发和应用的质量和可靠性。 VectorCAST 工具的应用为解决这一挑战提供了强大的支持,它具有丰富的测试功能,有助于确保基于国产芯片的软件 代码的可靠性和安全性。 1 国产车规级芯片趋势 近年来,国内厂商在车规级 MCU ( Microcontroller Unit )市场取得了令人瞩目的进展,尤其是在中低端车规 MCU 领域。它们已经成功进入了一些与安全性能相关性较低的汽车控制模块,如雨刷控制、车窗控制、遥控器、环境光感应、动态流水灯等领域。此外,他们也逐渐开始研发面向未来汽车智能化需求的高端 MCU ,使芯片能够处理复杂的计算任务,从而实现汽车智能化需求,包括提升座舱控制的智能化水平和支持先进的驾驶辅助功能等。这一趋势为国内汽车产业提供了更多的选择和竞争力,有望在未来进一步推动智能化汽车技术的发展。 2 嵌入式软件测试的重要性 嵌入式软件测试在国产芯片的软件应用中扮演着至关重要的角色。 提高质量和可靠性 :在软件应用开发的过程中,开发团队应该注重测试和质量保证,以确保软件在不同场景下的稳定性和可靠性。这包括全面的单元测试、集成测试和系统测试,以及在实际环境中的验证与测试。通过这些测试,可以及早发现并纠正潜在问题,确保软件应用在实际使用中表现出色。在许多关键应用领域,如自动驾驶和通信系统,这些步骤对确保系统的质量和可靠性尤为关键。 满足行业标准和法规 :许多行业,如汽车、航空航天和医疗设备,都有严格的法规和标准,要求嵌入式软件必须经过充分测试以确保安全性和合规性。国产芯片开发和软件应用必须满足这些标准,以便在国际市场上获得认可和接受。 安全性 : 嵌入式软件测试在确保国产芯片的安全性方面也起着至关重要的作用。安全漏洞可能会导致潜在的风险,因此测试可以帮助识别和修复这些漏洞,从而提高国产芯片的安全性。 3 引入 VectorCAST 作为嵌入式软件代码测试工具的背景 VectorCAST 是一款强大的嵌入式代码测试工具,为国产芯片的开发和测试提供了可靠的支持。它具有广泛的功能,包括代码覆盖率分析、动态测试和自动化测试生成等。这些功能有助于确保嵌入式软件在国产芯片中的质量、可靠性和安全性。 VectorCAST 能够无缝集成到多种嵌入式开发环境和编译器中,支持不同国产芯片的体系结构,帮助开发人员识别和解决问题,提高测试覆盖率,从而提供可靠的测试和验证。 在国产芯片的开发与应用中,采用 VectorCAST 将不仅有助于确保芯片质量和可靠性,在激烈的市场竞争中提升其竞争力,还能够满足行业标准和法规,并提供高水平的安全性。 4 VectorCAST 对基于不同国产芯片的软件开发的适用性—— VectorCAST RSP VectorCAST 的适用性不仅限于 ARM 、 RISC-V 芯片体系结构,而是具有广泛的适用性,可以支持不同国产芯片的开发与应用。 支持不同编译器和开发环境: VectorCAST 具有广泛的兼容性,可以与各种不同的编译器和开发环境集成。这包括国产芯片开发环境所使用的编译器和集成开发环境( IDE )。它可以与常见的编译器如 GreenHills 、 Keil 、 IAR 等进行集成。如图 1 所示。 多体系结构支持和支持实时操作系统( RTOS ): VectorCAST 支持多种芯片体系结构,包括 x86 、 ARM 、 RISC-V 等国产芯片架构。 VectorCAST 支持任何具有商业性质的实时操作系统。这些强有力的支持使其适用于不同的芯片开发项目。 支持测试生成和执行: VectorCAST 提供了测试用例自动生成和执行的功能。 VectorCAST 使用源代码、编译器信息和硬件信息来生成测试套件( Test Harness ,如图 2 为其组成部分示意图)。测试套件和测试数据进行耦合就会形成测试用例,执行后就会覆盖代码的各个部分,以确保代码的正确性。此外, VectorCAST 还可以自动生成测试用例,然后将其加载到车规级芯片的板卡中执行。如图 2 ,所示,这有助于快速、全面地测试嵌入式软件。 为什么 VectorCAST 可以对基于不同国产芯片的软件开发都有着很高的适用性,是怎么做到的?主要是由于 VectorCAST RSP (Runtime Support Package) 对 VectorCAST 的扩展支持。 VectorCAST RSP 提供了一个接口层,允许用户在嵌入式目标处理器上使用 VectorCAST 测试技术和方法。 VectorCAST RSP 使得测试用例在用户目标平台 ( 与编译器相同的平台 ) 上运行—— VectorCAST 生成的测试用例可执行程序将被下载到嵌入式目标板,并在其上执行。 VectorCAST RSP 一般需要针对特定的目标 CPU 、交叉编译器和运行时环境 ( 或内核 ) 进行定制。 图 1 VectorCAST 支持众多编译器与芯片结构体系 图 2 测试套件基本组成示意图 图 3 VectorCAST 目标板测试基本原理示意图 图 4 VectorCAST 支持自动生成具有高覆盖度的测试用例 VectorCAST 适用于基于不同国产芯片的代码编译环境、体系结构和实时操作系统的代码开发项目。在基于国产芯片进行的应用程序相关的软件代码产品开发,如汽车热管理控制器等等,它可以帮助开发团队确保软件在各种芯片运行的质量和可靠性,从而提高国产芯片的竞争力和市场认可度。 5 结论 VectorCAST 可以帮助基于国产车规级芯片软件开发的汽车软件供应商确保嵌入式软件代码的高质量和可信度,从而提高其在市场上的竞争力。通过自动化测试和集成, VectorCAST 有助于减少嵌入式测试和调试周期,从而加速产品上市时间,降低开发成本。 VectorCAST 的未来发展方向将进一步增强其适应性,以满足国产芯片行业不断变化的需求。 通过使用 VectorCAST ,汽车软件供应商可以提高其产品的可信度,降低开发成本,并更快地将产品推向市场,从而提高其在全球市场上的竞争力。 作为 Vector 中国的合作伙伴,北汇信息专注于汽车电子测试,不仅提供相应的工具和技术支持服务及培训,还针对不同的应用提供相应的解决方案。如,提供完整的软件生命周期的软件测试服务;提供专业的汽车电子测试系统搭建及测试咨询服务;提供完整的汽车新能源测试服务等。助力国内客户的研发效率提升。
  • 热度 3
    2023-5-18 22:40
    2543 次阅读|
    0 个评论
    上位机用来干什么 对于硬件工程师来说,上位机的主要作用就是提供一个良好的用户界面,方便用户使用硬件功能。另一个重要的优势是上位机的开发方式和开发环境相对下位机来说更加人性化。完善的IDE,丰富的硬件资源,大量的第三方库,使得做一个软件往往比做一个完善的硬件更容易。我们可以在计算机使用按钮,鼠标,键盘,下拉列表等作为输入信息的途径。用户的学习成本极低。同时也可以用文字输出框,波形显示控件,表格,声音作为信息的输出途径。信息获取直观,方便。本文将以我制作的模拟信号发生器上位机作为蓝本,介绍它的开发流程,难点,以及未来展望。 2. 介绍常用开发工具、语言。为什么用它 自身经历出发 我知道的常用上位机开发语言有Java、C++、C#、labview、python、html+js(electron)。很多的嵌入式开发工具就是Java开发的,比如stm32cubemx、RT-stdio、瑞萨电子的e2sIDE。Java常用来开发手机端的app。 C++常常配合QT来开发图形化界面,QT是一个跨平台的GUI框架,框架本身也是由C++编写的。纯的QT开发完全是用C++编写的,但是C++的学习难度大,对开发者要求较高。 C#也是上位机开发的常用语言,它以Vsstido作为开发IDE,所以比较适合Window下的软件开发,开发框架是WPF或者是Winform。说实话我最开始也考虑这个,问题在于我的电脑配置低,带不动IDE。 Labview是图形化编程的IDE,比较贴合硬件工程师的思维,所有的语法,功能,接口都以图形空间的方式展示,所见即所得。还是因为软件的体积过大,我不想用。 最后我选择的是Python+QT的方式进行上位机的开发,它可以说是解决我的需求的最优解。不需要庞大的IDE编写,类c的语法,强大的包管理器,丰富的代码案例。这里的QT的接口用python进行了封装,所以还是采用python的语法编写执行逻辑。 Electron实际上是把网页开发html+js+css的流程,封装一下用来开发客户端软件。由于和网页开发比较像,所以每个electron软件都内置一个chrome内核,故采用electron开发的软件都比较的大。Electron也有包管理npm为其提供第三方库拓展应用程序的功能。 Electron界面也比较美观,可移植性比较强。最重要的是我没学过网页开发。 总结一下,python作为一个胶水语言把GUI框架,信号处理,串口通信这些功能给融合到一起。虽然python应用程序打包后也很大,内置了python解释器,但是它第三方库多。 开发起来简单,快速。 3. 开发环境配置 下载python解释器 https://www.python.org/ftp/python/3.10.9/python-3.10.9-amd64.exe 或者,从清华大学开源软件镜像网站下载 安装好后如图 在cmd输入python 说明环境变量没有问题。 终端中输入exit()退出python程序。 Python的包管理器叫做pip,我们需要更新pip的版本以便支持最新的第三方库。 更新的命令python -m pip install --upgrade pip 接着换源,把网络上存放的包的网址替换成国内镜像。 阿里,腾讯,网易,清华….都可以。 地址 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple 换源的方式由临时换源和永久换源 临时换源的意思就是在下载第三方库时,手动指定下载的网站。 永久换源的意思是 建立一个配置文件存放下载第三方包的镜像地址 临时换源 pip install PyQt5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com -i后面的参数是豆瓣源地址 永久换源 以Window为例 (1)windows环境下: 比如windows用户名是 admin 那么建立 admin主目录下的 pip子目录,在此pip子目录下建立pip的配置文件:pip.ini 在这c:\users\admin\pip\pip.ini # coding: GBK index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = https://pypi.tuna.tsinghua.edu.cn #清华大学:https://pypi.tuna.tsinghua.edu.cn/simple #阿里云:http://mirrors.aliyun.com/pypi/simple/ 换源后。 下载开发所需的工具。 编辑器geany,pycharm,vscode…都行 第三方包: PyQT5:python下的QT库,可以使用Qdesigner工具拖拽设计界面。 使用信号与槽功能设计交互事件。 Serial:串口通信库 Matplotlib:绘制图表 Pyqtgraph:绘制波形 PIL:图像处理 这个放在信号发生器的文章里写 Scipy:信号处理的库这个放在示波器的文章里写 pyuic5 -o ui_a.py serial.ui 把UI设计文件转换成py文件 4. 功能实现 事件响应 QT的事件响应通过信号与槽完成。按钮,菜单选项,滑块,文本框,下拉列表等在出现特定操作时,会发出信号,这个信号会触发其绑定的槽函数。槽函数会处理该信号要对应的操作。 类似于中断和中断服务函数。 不过在实现具体的事件响应前,应该指定相关控件的信号。比如按钮有单击信号,按下信号等。如图 例如 self.send=self.pushButton_2#获取按钮控件对象 def send_handl(self):#自定义槽函数send_handl 处理具体的按下操作,比如发送数据 self.send.clicked.connect(self.send_handl)#把按钮控件按下信号绑定到槽函数send_handl() #按下按钮执行send_handl函数 通信 我使用的是串口通信,python中通过serial库实现串口通信。 self.uart =serial.Serial(port, 9600)#串口对象构造参数 端口号(字符串),波特率(整型) self.uart.readline()#串口读取函数 self.uart.write(data.encode())#串口写入函数 data.encode()#表示对发送的信息进行编码,编码为utf-8 data.decode()#表示对接收的信息解码 为了保证能够及时发送和接收,这里有两种解决方案。1.使用定时器周期性的判断读取缓存区是否有数据,并把数据显示出来。2.使用多线程,把读取数据的任务单独放一个线程中,提高响应速度。 显示 波形 显示波形用的是Pyqtgraph,下位机发送的数据是一连串的数字。Value1:value2:…..等为了保证及时接收串口数据,使用PYQT里的Qtimer类创建了一个定时器,每隔20ms读取一次串口缓冲区的内容。并把内容记录在字符串data中,把data按照分隔符”:”的拆分,拆分成字符串数组x ,判断x的长度。如果x的长度不等于1,则说明缓冲区里面有内容。把字符串数组里每个元素转换成数值并保存在队列里。创建另一个定时器,用于界面绘制,定时器每个100ms读取一次队列,每次读取256个元素,把元素内容存入数组中,使用PyQtgraph库读取数组绘制图形 self.timer.timeout.connect(self.update)定时更新数据 self.timer.start(50) def init(self): win = pg.GraphicsLayoutWidget() win.setBackground("w") self.plot = self.widget.addPlot() self.plot.setMouseEnabled(x=False, y=False)#禁止鼠标拖动 self.plot.showAxes(True, showValues=(True, True, True, True), size=20)#显示坐标轴 vb = self.plot.getViewBox() vb.setBackgroundColor('w')#设置画布背景 self.curve = self.plot.plot(pen='black') win.show() def update(self):#更新数据 # a=range(0,1000,1) if(q.full()): #print("ok") for i in range(0, 256, 1): x=str(q.get()) try: a =int(re.sub("\D","",x)) except ValueError: print(a ) self.curve.setData(a)#把数据填入图表中 self.curve.setPos(self.ptr, 0) self.ptr += 1 5 . 项目案例 做一个简易的串口助手 点击这里创建一个主界面。 界面分成三部分第一部分控件区,提供按钮、列表、文本框控件,布局。 第二部分界面设计区,可以把控件拖拽到此区域。 第三部分,对象查看器,通过树状图展示了从视图到空间的关系。下方的数学编辑器可以编辑设计区的任何对象的属性。例如,位置,是否可见… 这里用到了button,list,label,textview控件。 在Qdesiger内可以设置控件发出的信号类型,但是一般不在这里设置。不过我们可以通过在这的信号与槽工具看看,相关的控件有哪些信号。 左击选中一个控件,拖拽出一条线再松手。 设计好后保存成xxx.ui文件 使用pyuic5 -o ui_a.py xxx.ui把ui文件转换成py文件。 也可使用vscode插件,自行百度。 接下来需要在主文件导入界面文件。 在此之前需要导入pyqt5的一些库。 之后附上代码这里就不加了。 from ui_a import Ui_MainWindow#导入ui转py文件 class MyWindow(QtWidgets.QMainWindow,Ui_MainWindow):#继承父类QWidget 这个MyWindow就是我们设计功能的主类,所以需要继承PyQT和MainWindow类。以便操作他们派生的对象。 在MyWindow构造函数中,初始化父类对象和界面组件对象。 在def ini_ui(self):初始化控件 self.com=self.comboBox获取控件对象 把控件的信号绑定到槽函数comfun上, self.com.activated.connect(self.comfun) 编写槽函数 def comfun(self): global ser, serialPort serialPort=self.com.currentText()#获取当前的串口号 print(serialPort) ser.port=serialPort#设置串口对象的串口号 其他控件都差不多 发送槽函数 def sendhand(self): global serialPort, ser if self.pushButton.text() == '断开'and serialPort != None: send_str=self.textEdit.toPlainText() ser.write(send_str.encode('utf-8')) 定时器定时监控接收缓冲区 def time_out(self): global ser, timer_value data = ser.read_all() txt=str(data.decode()) if (len(txt)!=0): self.textBrowser.append(txt) self.timer.start(timer_value) 要在打开串口后,开启定时器,并且在回调函数执行末尾开启定时器。 重复执行回调函数 app=QApplication(sys.argv) timer_value=100#间隔100ms读一次串口 baudRate = 115200 ser=serial.Serial(timeout=0.5) ############ com_list=get_com_list() if com_list!= #默认为第一个端口 else: serialPort = None w.show_dialog(str='请先打开串口') ############ #开启图形化界面 w=MyWindow() w.show()#w-ui-show ui里有布局 #w.show_dialog("123456") #程序进行循环等待状态 app.exec() 6 . 其他资料 Python学习: https://www.educoder.net/paths/85 交互式python学习,适合有编程基础的。 PyQT学习: https://www.bilibili.com/video/BV15R4y1s7JD/?vd_source=9030595337abea343e2125e65d245d46 Pyqtgraph绘制波形教程:https://gitee.com/zsbyg/pyqtgraph_my_cookbook/tree/master 我会把我的学习时的代码打包,供其下载。
  • 热度 10
    2023-5-12 10:07
    1183 次阅读|
    0 个评论
    2023 年汽车行业趋势:软件开发人员需要了解的内容
    汽车行业一直在经历重大变化,因为它正在努力适应不断增长的市场需求 , 以及与电动 化 、自动驾驶和 混动汽车 相关的挑战。 新兴汽车行业软件趋势 在 过去,您 只需要掀开 引擎盖, 就可以 对汽车的工作原理有一个 大致 的 了解 。然而, 现在 事情 已经没有 那么简单 了 。 现在的 车辆配备了大量软件 以提升 用户体验,并为驾驶员提供 更为 安全和便利 的 功能。所有这些软件的设计都必须考虑到 功能安全 和 信息安全 。 电动汽车的增加 据《华尔街日报》报道 ,电动汽车占 2022 年所有新车销量的 10% 。 因此,我们调查的 45% 的汽车专业人士表示,电动汽车正在广泛推动他们的设计工作,而 45% 的人表示电动汽车产生了一定的影响,比去年增加了 7% ,这可能并不奇怪。 虽然重点可能更多地转向电动汽车, 但汽车专业人士最关心的仍然是汽车的安全性。由于目前还没有专门针对电动汽车的功能安全标准,因此对于传统汽车重要的标准,对于电动汽车也同样重要,其中最重要的就是 ISO 26262 。 随着电子元件数量的增加, ISO 26262 对电动汽车至关重要,因为它适用于车辆中的所有电气和 / 或电子系统。 《 2023 年汽车软件开发状况报告》的主要内容 我们调查了来自全球的 400 名汽车 专业人士,以更好地了解他们遇到的挑战以及他们如何跟上不断变化的行业和客户需求。在调查中,我们询问了使用哪些最佳实践和工具来应对这些重大变化。 这些回复的完整结果可在 2023 年汽车 软件开发状况调查报告中 找到。 强调资源和人才的最大化 全球经济是今年对汽车组织影响最大的主要市场状况,通货膨胀、向远程 办公 / 混 合 办公 的转变、供应链和芯片短缺等相关条件也是首要问题。 尽管在 2022 年汽车行业放缓后,预计今年的汽车销量将反弹 —— ABI Research 预测 2023 年新消费和商用车销量将增长 5%—— 但制造商和供应商需要明智地利用其资源来提高生产水平并满足消费者需求。 为了确保他们处于增长轨道上, 38% 的调查对象表示,他们将专注于保持行业竞争力, 26% 的人将最大限度地利用现有资源。 作为受访 者商业 战略的一部分, 17% 的受访者表示他们将专注于培养现有人才。为现有团队成员提供所需的培训,以及招聘和留住合适的人才,是 今年报告 的总体趋 势。 汽车软件 网络信息 安全仍然与 功能 安全同等重要 根据网络安全和数据管理平台 Upstream 最近的一份报告,从 2021 到 2022 年,针对车辆的 API 网络攻击数量增加了 380% ,占 总事件 的 12% 。随着汽车软件安全风险的升级,我们调查的汽车专业人员主要关注的 网络信息 安全问题是执行安全编码实践的困难。 但是,这些担忧可能会鼓励开发团队采用更强大的安全实践。事实上,在我们调查的人中,有 73% 的人已经或正在实施左移策略,这是指他们在 SDLC 早期执行测试的方法。通过更早的测试,可以更轻松地识别和纠正软件安全漏洞、 错误 和 缺陷 。 此外,绝大多数汽车专业人士表示,他们将被要求遵守 ISO/SAE 21434 ,这是一项专注于车辆电子系统中网络安全风险的汽车标准。虽然安全标准主要是客户的要求,而不是市场强制要求,但它对于汽车开发至关重要,因为当前的安全关键标准不 足以涵盖网络安全风险。 标准合 规 性仍然至关重要 汽车软件开发过程的一个重要部分是确保软件符合关键的行业标准和 指南 。如前 所述,汽车 功能安全 标准 ISO 26262 对于所有汽车软件开发都至关重要,我们调查的受访者中有 80% 必须遵守该标准。 此外,根据我们调查的人,证明合 规 性的主要挑战是难以满足所有安全要求并提供必要的证据证明所有合规性要求已得到满足。 再加上验证和 审核 软件的相关挑战(被受访者认为是最耗时的任务),执行必要的标准可能是一项艰巨的任务。 执行和验证功能标准合 规 性的最有效方法之一是使用 静态分析工具 。 了解有关 2023 年新兴汽车软件开发趋势的更多信息 随着越来越多的硬件组件 被软件 取代,汽车软件不仅 需要 安全而且安全至关重要。 通过回顾行业研究,您不仅可以跟上今年的挑战,还可以跟上未来几年的挑战。 免费下载《 2023 年汽车软件开发状况报告》,其中包含 70 多页的分析、信息图表以及有关主要挑战、最佳实践和新兴趋势的信息。
  • 热度 4
    2022-12-9 09:40
    963 次阅读|
    0 个评论
    在任何新的软件开发项目开始时都应考虑软件安全性。开始一项工作可能会让人望而却步,因为需要做出许多决定,并且必须仔细考虑。这通常包括定义项目需求、选择正确的流程、选择正确工具和确保软件安全。 出于这个原因,我们组织了一个循序渐进的指南,帮助您完成新项目中最耗时和最困难的挑战,以确保您的项目取得成功。 安全软件开发最佳实践 安全的软件开发最佳实践可以简单地分为四个主要部分: 1. 了解您的项目要 求 2. 定义软件开发流程 3. 为项目选择合适的工具 4. 设置 DevSecOps SAST 工具(如 Klocwork )可以帮助您满足每个部分的建议指南。 了解您的项目要求 在项目开始时,您需要考虑几个因素 。通过查看这些内容,它将帮助您更好地了解您的项目要求。 概述项目 花时间了解项目本身,并提出有助于指导整个开发生命周期决策的问题。像这样的问题: • 正在开发什么类型的项目?(嵌入式、云服务、前端 / 后端软件等) • 这个项目面向哪个行业?( 汽车 、 航空航天 、企业、 医疗 、 金融 等) • 软件将如何使用以及在什么设置下使用?(企业、中小企业、 B2B 、 B2C 等) 定义项目愿景 对应用程序将提供的内容有一个愿景,有助于为工作树立一颗指路明灯。通过制定客户问题、痛点以及应用程序将如何解决这些问题的明确规范,将有助于确保您提供正确的解决方案。 确定合规性要求 确定作为项目行业、供应链、业务或客户要求的一部分是否存在代码合规性要求。 此外,您还需要确定需要什么级别的信息安全、功能安全和质量合规。这可能包括编码标准,例如: • CWE • CERT • CVE • OWASP • DISA-STIG • MISRA • AUTOSAR 从项目一开始就选择并遵循一个标准将减少将来的合规性难题。 选择灵活的编程语言 确保您的编程语言(无论是 C 、 C++ 、 C# 、 Java 或 JavaScript ) - 最适合您的项目。选择最合适的编码语言可为您带来以下好处: • 易于开发 • 代码的可维护性 • 接触熟练的开发人员 • 明确的编码标准和最佳实践 您选择的语言可以决定您的软件是否保持价值和活力。 开发代码设计 花时间制定设计规范。通过这样做,您能够验证系统逻辑,确定所有组件是否将一起正确执行,并帮助确保软件安全。这可能意味着成功发布和代价高昂的重新设计之间的区别。 建立代码架构 规划您的代码库以确保其井井有条。请务必考虑以下事项: • 文件命名约定 • 为项目定义模块 • 层次和结构 通过提前完成这项工作,您可以为开发人员提供一个清晰的模板去遵循,以便将来更轻松地进行维护。 定义您的软件开发流程 虽然您的开发过程对于您的项目需求和要求是独一无二的,但我们建议您考虑以下几点: 确定需要实施哪些软件安全最佳实践 根据行业的不同,您的开发项目可能需要遵循特定的最佳实践和标准。此时,您应该使项目要求与开发过程保持一致。这可能包括遵循功能安全标准 (如 IEC 61508 )和遵循安全编码实践(如 CERT 或 CWE )。 静态分析器 (如 Klocwork )可以帮助执行项目可能需要的任何标准、最佳实践和条件。 与开发方法保持一致 无论您的开发过程是 Agile/Waterfall, Scrum/Kanban 还是您当前可能拥有的任何其他过程,都无关紧要。重要的是,您需要在适合您的业务、开发人员和开发团队打算交付项目的方式的开发流程上保持一致。 在方法上保持一致的目的是拥有一个确保组织和沟通以及帮助防止开发过程中出现问题的过程。 组织您的环境设置 一般来说,确定并创建项目所需的环境以确保整个团队使用相同的设置非常重要。最佳做法是,应为以下对象设置单独的环境:开发、用户验收测试 ( UAT )、阶段化和生产。 使用存储库工具 使用版本控制工具(如 Helix Core )建立源代码存储库。这使您的开发团队能够: • 花更少的时间处理工具和流程。 • 停止在手动工作流程上浪费时间,使他们能够重新开始编码。 • 高效处理数以万计的文件以及数 PB 级的数据。 • 将代码中的更改内容与更改原因联系起来。 除了代码存储库之外,还应考虑使用其他工具或流程来存储和跟踪其他与项目相关的内容。这包括: • 将项目使用的工具和组件保留在整个团队可以轻松使用的地方。 • 为计划、文档和开发人员入职提供中心位置。 • 在项目管理软件(如 Helix ALM )或问题跟踪软件中定义工作任务。 通过建立这些存储库,您可以帮助确保您的开发高效、内容安全,并且知识易于快速上手新开发人员。 通过安全编码实践强制实施软件安全性 通过遵循安全编码实践,将安全实施构建到开发过程中,并使用安全编码工具帮助强制实施合规性。此外,为您的团队提供安全培训和学习材料,以帮助发展安全文化。 SAST 工具(如 Klocwork )可以帮助解决这些问题。 将检查合并到开发管道中 在整个开发管道中实施安全检查有助于强制实施良好的编码实践。在开发代码时,请务必注意安全,建议您在开发人员的 IDE 、 CI/CD 管道 中以及在持续集成构建期间使用 SAST 扫描。 出于测试和重构目的,请确保开发人员正在编写单元测试,并且质量保证正在编写功能测试。通常,请考虑所有可能的测试策略,并确保尽可能创建并自动化安全性和其他测试。 为您的项目任务和功能定义 “ 完成 ” 即使任务或功能看起来已完成并在开发人员的桌面上编译,但事实并非如此。你需要有一个明确的流程来定义工作 —— 从头到尾。 最佳做法包括: • 需求捕获 • 工作范围 • 定义验收标准 • 为代码开发单元和功能测试用例 • 进行 同行代码评审 • 集成测试、安全测试以及从所有阶段到最终环境测试的自动化 鼓励反馈和沟通 团队和开发人员之间的反馈和沟通对于项目的成功至关重要。 重要的是,您的开发人员能够从代码提交中获得快速反馈,以便他们能够及早解决编码问题,并为项目干系人提供有关项目进度、指标和潜在风险的见解。 在自动化之外,为开发人员提供足够的时间进行代码审查、规划和回顾非常重要。这些都将有助于确保在消除通信障碍时保持高开发速度。 为您的项目选择合适的工具 项目的一个重要部分是选择正确的工具。工具选择很重要,因为它有助于标准化您的项目,并使团队中的每个人都能 “ 说同一种语言 ” 。这为以下方面提供了整个团队的好处: • 生产力 • 公共知识 • 测试和调试 • 入职 为了帮助确保为团队选择最有效的工具集,请考虑以下准则: • 研究和查看所有工具选项,并根据项目和团队要求对其进行评估。 • 了解工具选择的成熟度以及可用的支持类型,例如技术支持、帮助资源和主动维护。 • 考虑工具、团队的经验水平以及招聘新开发人员的能力将受到怎样的影响。 • 检查工具集之间的兼容性。 无论您选择哪种工具集,我们都建议它包括以下内容: • 代码存储库和版本控制 ,用于跟踪和管理对源代码、数字资产和大型二进制文件的更改。 • 静态代码分析器和 SAST 工具,用于强制实施安全编码实践,并识别缺陷、漏洞和合规性问题。 • 应用程序生命周期管理工具在项目的整个 应用程序生命周期 管理中提供端到端的可追溯性。 为您的软件开发项目设置 DevSecOps 将 DevOps 的速度和规模 与安全编码实践相结合 , DevSecOps 是必不可少的软件安全最佳实践。通过遵循 DevSecOps 方法,您可以: • 尽可能多地自动化流程 — 安全性、配置、管理、测试等。这将为开发人员腾出时间专注于新的代码和功能。 • 定义成功 / 失败指标,并主动监控和报告项目结果。这有助于您更快地发现问题和漏洞,做出更明智的决策,并在整个应用程序中强制实施项目要求。 • 采取措施保护您的基础架构。安全性不仅对您的最终产品很重要,而且对您公司的程序和政策也很重要。确保您从整体上考虑安全性,并从上到下促进安全文化。 • 持续监控和实施软件安全合规性。将安全工具(如 SAST 、 DAST 和 SCA )集成到 DevSecOps 管道中,以便在整个开发生命周期中主动跟踪和实施安全性。 选择 Perforce 工具以确保项目成功 Klocwork SAST for C,C++,C#,Java,JavaScript,Python,and Kotlin 可识别安全性、质量和可靠性问题。这有助于强制遵守编码标准,以确保您的代码免受安全漏洞的影响。 Klocwork 旨在轻松扩展到任何规模的项目,使您能够在编写代码时自动进行源代码分析。 此外, Klocwork 的差异分析使您能够仅对已更改的文件执行快速增量分析 ,同时提供与完整项目扫描结果相同的结果。这确保了尽可能短的分析时间。 通过使用 Klocwork ,您还将获得以下好处: • 在开发早期检测代码漏洞、合规性问题和规则冲突。这有助于加快代码审查和手动测试工作。 • 执行行业和编码标准,包括 CWE 、 CERT 、 OWASP 和 DISA STIG 。 • 报告一段时间内和跨产品版本的合规性。 了解 Klocwork 如何帮助确保您的下一个项目取得成功。注册免费试用版。
相关资源
  • 所需E币: 5
    时间: 2024-3-12 10:48
    大小: 2.37MB
    上传者: htwdb
    由于船用机械设备各项功能的发展进步,船用机械设备的智能性、自动化程度、精密度较之前有较大的提升,随着诊断方法和设备的进步,早期的一些信号监测处理方法已不能满足现代设备要快而准的识别故障类型的需求。为了人们能提早发现船舶设备发生的故障及原因,及时修复,减少船舶灾难事件,需要对船舶设备运行状况进行实时监测。因此针对故障诊断方法研究和创新以及软件开发,从而实际应用于船舶设备,及时对其监测和诊断是必要的。  机械故障诊断技术经40多年的发展在取得进步的同时仍存在许多亟待解决的问题,如智能诊断系统薄弱,故障诊断方法有限等。本文首先介绍了故障诊断的发展背景,对现有船用设备机械系统中信号处理方法的国内外研究现状及存在的不足进行了说明,详细介绍了在故障诊断中的基本信号分析方法。着重研究了自适应滤波方法,在其基础上推导维纳滤波方法,提出其在C#语言中的实现方法,利用维纳法在软件中对获得的振动信号进行消噪方面的处理。其次,比较VisualStudio(简称VS)与Labview基于本项目的功能效果,表明VS的优越性,并使用C#语言开发在.NET4.0框架下,VisualStudio(下文简称VS)环境运行的振动信号采集和分析窗体软件,将数据处理的方法和界面操作功能进行分模块编程,文中按照系统建模分类对软件进行介绍,模块分为:数据采集、信号分析、数据存储和参数设置等,使系统的数据分析能力提高。接下来,按照软件包含的信号处理方法介绍软件操作流程,采用的处理方法有:离散傅立叶变换、小波变换、魏格纳分布等,使用仿真信号验证软件可靠性的基础上,到船舶上现场试验采集数据进行实验分析,验证结果表明监测系统能够准确获取目标信号、判断设备故障功能。最后总结全文,讨论了该方法实现过程的不足及软件今后的发展方向
  • 所需E币: 1
    时间: 2023-5-12 10:40
    大小: 4.45MB
    深入浅出Node.js-(InfoQ软件开发丛书)-田永强
  • 所需E币: 1
    时间: 2023-4-23 23:51
    大小: 93.02MB
    上传者: EPTmachine
    MODBUS软件开发实战指南,杨更更著,Pg284,2017.03_14200361.pdf
  • 所需E币: 4
    时间: 2023-2-14 10:19
    大小: 24.19MB
    上传者: 北汇信息
    该报告来自北汇合作伙伴Perforce公司与AutomotiveIQ的联合报告《2022年汽车软件开发现状报告》。来自全球的近600名汽车软件开发专业人士完成了对业内头部关注问题和新兴趋势的调查。您可以下载免费的报告副本来了解他们所分享的见解,其中包含以下信息:•汽车软件和技术开发的主要关注点。•自动、半自动、网联及电动汽车的影响。•行业领先者高效追随新兴趋势的方法和实践。
  • 所需E币: 2
    时间: 2023-2-14 10:18
    大小: 1021.46KB
    上传者: 北汇信息
    汽车行业一直在通过不断地革新来适应,相关市场中电动、自动驾驶和混合动力汽车持续增长的需求与挑战。本文将带您了解《2022年汽车软件开发现状》报告中强调的一些值得注意的趋势。该报告来自北汇合作伙伴Perforce公司与AutomotiveIQ的联合报告《2022年汽车软件开发现状报告》。来自全球的近600名汽车软件开发专业人士完成了对业内头部关注问题和新兴趋势的调查。您可以下载免费的报告副本来了解他们所分享的见解,其中包含以下信息:•汽车软件和技术开发的主要关注点。•自动、半自动、网联及电动汽车的影响。•行业领先者高效追随新兴趋势的方法和实践。
  • 所需E币: 1
    时间: 2022-12-26 10:47
    大小: 3.31MB
    上传者: 浪遏飞舟Aivan
    CMMI软件开发模型,值得珍藏
  • 所需E币: 0
    时间: 2022-11-14 23:49
    大小: 35.26MB
    上传者: 世界心
    基于AUTOSAR规范的车用电机控制器软件开发pdf版,供参考
  • 所需E币: 3
    时间: 2022-10-11 09:51
    大小: 808.63KB
    上传者: czd886
    变电站视频监控系统三维智能布点软件开发与应用
  • 所需E币: 5
    时间: 2022-7-7 21:22
    大小: 50.75MB
    上传者: 西风瘦马
    嵌入式多核系统软件开发:嵌入式Intel体系结构实用指南[(美)Max.Domeika].pdf
  • 所需E币: 3
    时间: 2022-6-6 16:11
    大小: 1.1MB
    上传者: xyzzyxaaa
    61虚拟振动试验研究验证及软件开发M(公开).pdf
  • 所需E币: 1
    时间: 2022-5-2 21:08
    大小: 870.33KB
    上传者: ZHUANG
    基于AUTOSAR规范的汽车ECU软件开发方法
  • 所需E币: 1
    时间: 2022-3-10 21:41
    大小: 296.32KB
    上传者: ZHUANG
    Ada与机器人控制系统软件开发.
  • 所需E币: 3
    时间: 2022-3-10 21:39
    大小: 1.19MB
    上传者: ZHUANG
    基于面向工业机器人控制器的软PLC系统软件开发分析
  • 所需E币: 2
    时间: 2022-3-3 22:11
    大小: 248.59KB
    上传者: ZHUANG
    基于VC与开放式运动控制器的并联机器人控制软件开发
  • 所需E币: 2
    时间: 2022-3-3 21:58
    大小: 215.28KB
    上传者: ZHUANG
    基于VC与PMAC的仿生四足机器人控制软件开发
  • 所需E币: 3
    时间: 2022-3-3 17:24
    大小: 352.14KB
    上传者: ZHUANG
    一种搬运机器人控制系统的软件开发与研究
  • 所需E币: 1
    时间: 2022-3-2 18:23
    大小: 46.59MB
    上传者: 西风瘦马
    2131495_深入浅出Android软件开发教程.pdf
  • 所需E币: 1
    时间: 2022-3-2 12:30
    大小: 29.05MB
    上传者: 西风瘦马
    3208933_软件开发之殇.pdf
  • 所需E币: 2
    时间: 2022-1-6 09:41
    大小: 1.63MB
    上传者: ZHUANG
    基于嵌入式Linux的农田信息采集系统的软件开发
  • 所需E币: 2
    时间: 2022-1-6 09:58
    大小: 3MB
    上传者: ZHUANG
    基于嵌入式的车载导航系统及其软件开发