开始一个新的开发项目总是令人兴奋的 , 但在嵌入式开发中 , 一些最有趣和最具挑战性的项目往往是如何更新遗留代码库 。 目前市场上有很多产品已经生产多年 , 如果不是十年或更长时间 。 这些代码库虽然功能强大且功能丰富 , 但通常使用不太适合现代软件开发的技术编写 。
团队经常因遗留代码库而苦苦挣扎 , 原因如下:
功能和代码大小的绝对数量(如果不是数百万行代码 , 则为 100000 行)
应用程序代码和硬件之间的紧密耦合
【pua|嵌入式开发:更新遗留代码的5个技巧】过时的工具和开发流程
无法有效地部署新开发人员来处理代码库
虽然可能很容易从头开始 , 但完全从头开始的时间和金钱投资可能是不现实的 。 在这篇文章中 , 我们将研究团队可以遵循的几个技巧来更新他们的遗留代码项目 。
技巧1 – 审核你的应用程序代码
在尝试对任何遗留代码库进行现代化改造之前 , 团队应该审核代码库 。 审计可以由公司团队成员执行 , 审计可以帮助团队准确了解他们的代码当前所处的位置以及他们必须使用的内容 。
审计的输出应该是多倍的 。 首先 , 嵌入式开发团队应该了解代码库当前的位置 。 这应该包括了解当前架构(或缺乏架构)、特性、功能目的和复杂性 。 其次 , 应制定代码库现代化的主要挑战清单 。 可能存在需要仔细考虑和努力进行现代化的关键代码区域、功能等 。 这些应该提前调用 。 最后 , 输出应该足以为如何使代码库现代化提供建议 。 这些建议应该很容易被制作成一个软件现代化计划 , 该计划可以与未来的功能开发集成 , 以使代码与产品开发工作保持同步 。
技巧2 – 生成函数列表和依赖图
至少有两个有用的函数相关资源对于代码库的现代化非常有用;函数列表和依赖图 。
可以通过自动化工具生成功能列表并列出所有功能 。 它们位于代码库中 , 并根据它们所在的模块进行组织 。 单个文件应用程序将只有一个列表 , 其中分解为 5 个模块的应用程序将包含 5 个列表 。 函数列表对于需要模块化的单片应用程序很有帮助 , 因为函数列表可用于确定哪些函数组合在一起并应分组到单独的模块中 。
函数依赖图也可以自动生成 , 它可以帮助团队了解哪些函数正在调用哪些函数以及它们之间的关系 。 依赖图对于理解函数耦合非常有用 , 并且对于识别彼此相关的函数也非常有帮助 。 它们还可用于尝试确定代码中的自然边界存在于何处 , 以便软件可以开始分层 。 他们还可以展示糟糕的架构设计 , 并帮助指导重新编写代码 , 以便在硬件驱动程序、应用程序业务规则等类似问题的领域之间存在清晰的界限 。
技巧3 – 模块化应用程序
今天有很多代码仍然是作为一个单一的、单模块的代码库编写的 , 嵌入式开发团队对代码库等进行现代化改造的第一步是模块化应用程序 。 拆分应用程序可以:
开始创建关注点分离
简化代码合并过程 , 允许多个开发人员轻松地在项目上工作
允许开发人员对模块拥有所有权
加快发展
当然还有更多优势 , 但是将应用程序分解为包含类似功能的内聚模块将大大有助于代码现代化 。
模块化也不需要从严格的、封装的、现代的实现开始 。 相同的概念可以应用于大型遗留项目 , 只是没有一个单独的功能可以分开 , 而是十年的特性和功能 。
技巧4 – 通过增量改进实现现代化
- 伊隆·马斯克|Web前端:Mean Stack开发的组件有哪些?
- 5G技术发展遭遇“拦路虎”,人民日报公开发声,三大运营商该认真反思了
- 抖音|AMD正开发类DirectStorage技术,SSD硬盘速度翻倍
- 支付宝|嵌入式开发:嵌入式软件的8个支柱
- VR生态|打造车上VR生态,苹果正在开发VR驾乘系统
- 阿里巴巴 java开发手册|就业选择:如何找到靠谱的创业公司?可以从这三个维度来评估
- 2K宣布《四海兄弟》开发商Hangar 13负责人哈登·布莱克曼离职
- |嵌入式开发:设计基于 RTOS 的应用程序的最佳实践
- 控制器|从零开始的nrf52832蓝牙开发--蓝牙协议基础
- CPU处理器|日本不甘落后 将联手美国开发2nm芯片工艺:赶超台积电