嵌入式软件开发,为什么没有架构师这个岗位?
我是老温,一名热爱学习的嵌入式工程师关注我,一起变得更加优秀!
在互联网纯软件技术领域,我们经常会看到互联网大厂设立“软件架构师”的岗位,负责系统设计、技术选型和性能优化等工作,而且架构师的岗位薪资通常也比较高。
然而,在嵌入式软件技术领域,一般很少能见到企业招聘“嵌入式软件架构”这个岗位,是因为嵌入式软件不需要进行架构设计,所以不设立架构相关的岗位吗?
本文尝试从以下三个维度展开进行分析:
1、什么是嵌入式软件架构师?2、为什么嵌入式软件要有架构思维?3、嵌入式软件工程师如何培养架构思维?
希望能帮助嵌入式工程师理解软件架构思维的重要性,并能找到提升自身架构能力的方法。
1、什么是嵌入式软件架构师?
架构师,顾名思义,是指负责嵌入式软件系统整体的架构设计、技术选型和解决关键问题的岗位,通常扮演着高级技术专家的角色。
虽然大部分企业没有明确设立嵌入式软件架构师这个岗位,但架构设计的工作通常由资深的嵌入式软件工程、技术负责人或者系统工程师承担。
(1)嵌入式软件架构师的核心职责有哪些?
--系统级架构设计:根据硬件资源设计合理的软件架构,确保系统能满足实时性、低功耗、高可靠性等关键指标,制定模块化和可扩展的代码结构,降低模块间的耦合度。
--技术选型与标准化:选择合适的RTOS或者裸机开发模式,制定通信协议的实现标准和接口,评估第三方库的适用性和可移植性。
--性能优化与可靠性保障:优化内存使用,调整堆栈管理和动态内存分配策略;设计看门狗机制和错误恢复策略,提高系统的稳定性;制定OTA升级方案以确保固件的可维护性。
(2)嵌入式软件架构师 VS 互联网软件架构师
从以上对比可以看出,嵌入式软件架构师更加注重底层硬件的适配,通过软件设计策略,让硬件资源达到最优的使用率。
2、为什么嵌入式软件要有架构思维?
虽然很多嵌入式软件项目规模较小,但在平时的开发里面,架构思维仍然至关重要,以下列举几个关键的原因。
(1)硬件资源受限,必须高效进行利用
某些嵌入式设备采用低功耗的单片机芯片进行设计,内存和计算资源通常比较受限,如果没有良好的架构设计,其代码可能会存在内存泄漏、任务调度不合理、外设驱动高度耦合的情况。
(2)系统复杂度越来越高
早期的嵌入式设备功能相对比较单一,但现代的嵌入式系统功能已经越来越复杂,通常需要RTOS进行多任务调度,网络协议通信,AI推理等等,如果没有清晰的模块化架构设计,代码将会变得越来越臃肿,以至于难以维护。
(3)可维护性决定产品生命周期
嵌入式设备的生命周期通常比较长,工业设备可达10年以上,如果代码架构混乱,将会导致后续功能迭代困难,Bug难以定位和修复,新成员接手代码的成本非常高。
(4)软件定义硬件,成为行业趋势。
过去的嵌入式软件开发是以硬件设计作为主导的,软件设计只是辅助。但现在越来越多的智能硬件产品,依赖软件实现差异化竞争,因此,良好的软件架构能提高开发效率,降低硬件依赖,并且支持更快的产品迭代。
3、嵌入式软件工程师如何培养架构思维?
(1)注重模块化编程设计
遵循高内聚低耦合的设计原则,每个模块只负责单一的功能;使用头文件进行接口封装,隐藏源代码的实现细节,采用面向对象的思想,提高代码的可复用性,如以下示例代码。[*][*][*][*][*][*][*][*][*][*][*][*][*]// 代码模块化设计:UART驱动接口typedef struct { void (*init)(uint32_t baudrate); void (*send)(uint8_t *data, uint16_t len); void (*receive)(uint8_t *buffer, uint16_t len);} uart_driver;// 使用接口,而不是直接操作寄存器uart_driver uart1 = { .init = uart1_init, .send = uart1_send, .receive = uart1_receive};(2)学习优秀的开源代码架构
至少学习一款RTOS的使用,比如FreeRTOS,学习任务调度,内存管理,IPC机制,研究设备树和驱动模型,理解platform_device和platform_driver等Linux驱动框架的设计思想。
(3)掌握架构设计工具
善于运用架构设计工具,如使用UML描绘状态图,用以描述系统行为;使用PlantUML绘制架构演进路线,使用PC-Lint或Cppcheck等静态分析工具,发现潜在的软件架构问题。
(4)参与完整项目,积累设计经验
从小型的MCU裸机开发,逐步过渡到中小型的RTOS项目,尝试根据具体的业务逻辑来重构旧代码,优化现有的代码架构设计,关注热门行业领域的嵌入式技术动态和架构趋势。
4、总结概括
嵌入式软件架构师的岗位职责并不是不存在,而是由于这个技术领域和相关行业特点,这一角色通常是由经验比较丰富的开发者兼任,随着现代的嵌入式系统功能越来越复杂,架构思维将会成为嵌入式软件工程师的核心竞争力之一。
对于嵌入式软件工程师来说,与其等待企业设立架构师岗位,不如在实际项目里面,主动培养整体的系统架构思维。
嵌入式软件的整体发展方向,一定是更高效率、更低功耗、更强可维护性、更高可扩展性,而良好的架构设计正是实现这一目标的关键!
-END-
往期推荐:点击图片即可跳转阅读
被灵魂拷问!嵌入式为啥要关注AI?这到底能产生什么样的价值?
嵌入式软件工程师,一定都知道这门技术,现在全世界都在使用它!
嵌入式软件工程师,技术栈发展的三个阶段,天花板到底有多高?
我是老温,一名热爱学习的嵌入式工程师
关注我,一起变得更加优秀!
页:
[1]