015 职能介绍(二):软件工程师

汽车软件这个领域,软件工程师是一个很大的概念。即使对底层软件来说也包括若干个方面,比如操作系统OS,内存管理,底层驱动、刷新策略开发等等。而如今很多公司的软件工程师的职责领域已经不限于底层软件的开发,同时包括软件的整体集成以及测试工作。
1 需求分析
与系统工程师一样,需求分析也是软件工程师的任务之一。有些客户的功能需要底层软件的需求,比如客户的刷新策略,软件工程师需要分析产品和客户功能需求,完成软件设计需求规范。
2 撰写文档
软件工程师所需要撰写的规范,包括但不限于以下几种:软件设计需求规范、软件设计文档,软件测试规范,软件集成测试规范等等。
3 编写软件
编写成熟的、鲁棒性较好的软件是软件工程师的主要职责。编写满足客户的功能需求且符合公司内部规定的标准代码,还需要依靠工程师对规范的理解能力以及执行素养。下面简要谈谈以下几点:
(1)底层驱动程序是软件工程师经常要维护的主要工作之一,在成本的驱使之下,ECU硬件平台的不断降低,不同的芯片,就意味着需要不同的驱动程序。由于驱动程序的特殊性,采用手写的C或者汇编语言是必不可少的。
(2)通讯报文的开发,由于通讯协议的特殊性,往往会有专门的通信诊断、防盗下线软件工程师来负责这项工作。需要对各类通讯总线协议有所了解,如CAN总线、Lin总线、flexray总线,K线等。
(3)软件的升级与维护,随着功能需求的不断增加,软件工程师需要对对现有软件模块的进行不断升级以及对新出现的bug的进行修复。
(4)Autosar基础软件开发,由于其特殊性,需要工程师充分了解Autosar规范,一般公司均有专门的Autosar软件工程师负责这项内容。由于Autosar近年来的逐步推进,这里有必要特别提一下。

4 集成与测试
一个ECU里有上百、乃至上千个模块组成,而组成代码文件会更多!如何正确地,高效地将这些代码文件组件到一个工程里并组合编译是集成过程中软件工程师应该思考的。对于软件+数据的集成,由于只是一个数据在地址中的替换过程,容易编写自动化脚本自动集成;对于模块之间的集成,由于ECU对不同模块中程序的执行顺序有不同的要求,还是手工集成的较多。对于测试这个部分来说,理论上是软件测试工程师的职责。但目前,很多公司为了削减开支,很少设有这个岗位,更多的是由软件工程师自己进行。对于测试部分,分为模块级别的测试,以及集成测试两种。软件工程师根据软件测试规范以及集成测试规范,开展测试,并调试所出现的bug,并完成测试报告。

其他职能
其他职责的包括软件架构设计、软件的更新与维护、工具链的开发、软件代码的评审以及各项支持活动等,这里不再详述。

未经许可禁止转载,氮素你可以分享到朋友圈