0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式软件开发中遗留代码的挑战

北汇信息POLELINK 2025-02-26 10:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大多数嵌入式软件开发团队在某个阶段都需要使用遗留代码,无论是出于成本考量,还是因为相比迁移到新代码库,复用现有代码更为便捷。问题在于,遗留代码的具体功能可能并不明确,这需要投入精力去理解,并编写新的测试用例来验证其是否仍能按预期运行。即使背景信息和测试用例仍然存在,遗留代码也可能不符合当前的编码规范,或无法满足功能安全及安全标准的要求。

遗留代码通常难以集成到其他系统、适配新数据格式或部署到现代平台及云端托管环境。相关代码可能已不再提供安全更新和补丁,供应商或开源社区的支持也可能逐渐减少甚至消失。然而,如果使用遗留代码不可避免,以下是一些最佳实践建议:

1.测试代码

创建特征测试(Characterization Tests)和单元测试,并使用静态代码分析器等代码质量工具,以理解代码功能并揭示其在功能、性能、安全性和编码标准合规性方面的问题。

2.审查文档

检查原始需求和功能说明,了解代码的来源及其当前运行机制,识别可能不符合新用途的缺失部分。

3.仅重写必要代码

尽管重写整个遗留代码库看似诱人,但此举风险极高:既耗费时间,又可能因知识不完整而引入缺陷或依赖性问题。更好的策略是选择性重写。

4.重构遗留代码

更务实的方案是逐步重构——在不影响代码功能或外部行为的前提下调整其结构。重构还能生成更“整洁”的代码,易于理解维护且更少出错。

5.分阶段实施变更

避免一次性过多修改,否则管理、测试和修复的复杂度会不必要地增加。通过限制变更范围,评审者能更清晰地审查改动,而非淹没在大量变更中。

6.开发者协作

即使并非所有团队成员都熟悉特定遗留代码,也应鼓励团队协作。这有助于共享代码库知识,同时减少时间和精力消耗,且“第二双眼睛”的审查总是有益的。

7.保持新代码规范

例如遵循企业编码最佳实践,并符合适用的编码标准。

8.谨慎尝试AI工具

为加速流程可考虑AI技术,但需保持警惕。AI能快速重写遗留代码,但其输出可能因训练数据和自身理解能力引入功能变化。不过,AI技术(如大语言模型LLM)正在持续改进,值得在结合人工解读和专业经验的前提下进行实验。

9.借助权威资源

可参考Michael C. Feathers和Martin Fowler等专家关于遗留代码和重构技术的著作。

未来维护建议

为避免遗留代码的长期维护问题,在编写或更新代码时:

  • 采用广泛认可的编码标准
  • 编写充分注释和文档化的代码
  • 使用版本控制系统管理和追踪代码变更
  • 实施自动化持续测试,确保代码随时间推移仍保持功能性与可靠性
  • 关键是通过安全编码技术、安全测试及静态分析工具(如Perforce的Helix QAC和Klocwork),遵循代码安全最佳实践,最大限度降低软件生命周期内的安全风险。

总结

对许多嵌入式团队而言,遗留代码的复用不可避免。但通过采用经过验证的技术和工具,混合新旧代码的现代嵌入式项目仍能满足安全与安规标准的要求。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式软件
    +关注

    关注

    4

    文章

    247

    浏览量

    27819
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73136
  • 软件测试
    +关注

    关注

    2

    文章

    245

    浏览量

    19873
  • 嵌入式软件开发

    关注

    0

    文章

    11

    浏览量

    2411
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式软件开发的程序架构

    嵌入式软件开发,包括单片机开发软件架构对于开发人员是一个必须认真考虑的问题。
    发表于 02-02 06:58

    嵌入式软件开发与非嵌入式软件开发的区别?

    嵌入式软件开发与非嵌入式软件开发区别?设备驱动开发与裸机驱动开发区别?
    发表于 04-02 06:29

    嵌入式软件开发的特点有哪些呢

    储存器资源。3.嵌入式软件开发一般需要开发工具、目标系统、测试设备。4.嵌入式
    发表于 11-08 06:58

    什么是嵌入式软件开发

    嵌入式软件开发又是指什么?   随着嵌入式软件系统结构越来越复杂,嵌入式软件
    发表于 04-20 08:43 9139次阅读

    嵌入式软件开发的优缺点浅谈

    嵌入式软件开发的优缺点浅谈 从事嵌入式软件开发的好处是: 1 目前国内外这方面的人都很稀缺。     
    发表于 11-28 15:40 3487次阅读

    嵌入式软件开发与Embedded-GIS

    1.嵌入式软件开发 市场现状 嵌入式操作系统 嵌入式软件开发特点 嵌入式
    发表于 02-28 10:39 36次下载

    嵌入式软件开发构件技术的研究

    随着嵌入式软件复杂性的提高和需求量的增加,如何提高低效的传统嵌入式软件开发方法成为嵌入式领域研究的一个重点。构件技术正是这样一种前沿的
    发表于 12-27 15:59 32次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b><b class='flag-5'>中</b>构件技术的研究

    ARM嵌入式软件开发

    ARM嵌入式软件开发ARM嵌入式软件开发ARM嵌入式软件开发
    发表于 01-15 17:29 65次下载

    基于嵌入式软件开发构件技术的研究

    基于嵌入式软件开发构件技术的研究
    发表于 10-30 15:36 6次下载
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b><b class='flag-5'>中</b>构件技术的研究

    嵌入式软件开发的优势分析

    为什么当今嵌入式行业会如此受欢迎呢?我们从事嵌入式软件开发有什么好处吗?小编就来说说我的看法吧,嵌入式软件开发的优势我们可以从几点来看。
    的头像 发表于 12-21 15:23 5766次阅读

    嵌入式软件开发做什么?嵌入式开发培训学哪些

    嵌入式行业可以说从幕后走到前台,大家对他都很熟悉了,我国嵌入式人才缺口每年在50万左右,相关调查报告称嵌入式软件开发是未来几年最热门和最受欢迎的职业之一。但是还有很多人不知道
    发表于 11-03 10:36 19次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>做什么?<b class='flag-5'>嵌入式开发</b>培训学哪些

    嵌入式软件开发的特点、设计流程、嵌入式软件的结构

    处理器内部储存器资源。3.嵌入式软件开发一般需要开发工具、目标系统、测试设备。4.嵌入式
    发表于 11-03 15:21 38次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>的特点、设计流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>软件</b>的结构

    嵌入式硬件的软件开发工具趋势

    嵌入式硬件的软件开发工具趋势
    的头像 发表于 12-28 09:51 1693次阅读

    嵌入式软件开发流程

    电子发烧友网站提供《嵌入式软件开发流程.ppt》资料免费下载
    发表于 11-17 14:37 5次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>软件开发</b>流程

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发
    的头像 发表于 01-22 15:27 3663次阅读