引言上篇文章,我们谈到了软件研发的需求和设计,确保软件研发“做正确的事”,并“把事情做正确”,本篇我们将继续软件的编码,发布及测试章节的内容最后,我们谈一谈关于研发管理的软实力:技术研发与产品研发的双轮驱动以及组织文化与人才的基石建设三、软件编码与测试:质量之盾软件编码是将设计转化为可执行代码的过程,需要遵循相应的编程语言规范和组织内部编码标准(例如,谷歌C++代码规范:Google_Cpp_Style_guide_CN.pdf @https://sosohu.github.io/),辅以静态代码扫描和动态测试,代码评审等工作,确保代码质量伴随着AIGC的泛化,AI 辅助编码和代码评审也逐步成为现实,比如Github Copilot X,可以协助程序员实现结对编程同样,类似ChatGPT,也可以帮助我们实现代码评审的工作例如,我们把下面这段冒泡算法的C代码(图12)输送给ChatGPT,GPT会给出非常中肯的评审建议以及重构后的代码,大大减少了代码评审的工作量图12图13是ChatGPT重构后的代码GPT的反馈如下他不仅仅反馈了代码的逻辑错误,对程序的性能也给出了建议(第2条反馈)冒泡排序算法的内层循环条件for (j = 0; j < len - 1 - i; j++)中的len - 1 - i可能会导致数组越界应该将内层循环条件修改为for (j = 0; j < len - 1; j++)在冒泡排序算法中,如果数组已经是有序的,仍会执行完所有的比较和交换操作,造成了性能上的浪费可以在内层循环中增加一个判断条件,如果没有发生交换,即可提前退出循环图13需要注意的是目前GPT仍然是概率算法,他的反馈需要一定的人工复核,确保剔除AI给出的噪音反馈图14测试则是软件质量的守护神,涵盖单元测试、集成测试、功能测试、系统测试及验收测试等不同层次,目的是尽早发现问题、减少后期修复成本、确保软件符合客户需求与期望无论是在V模型或者敏捷开发模型中,软件测试活动的目的是一致的,而测试活动贯穿整个开发周期(图14所示的V模型)早期集成测试能有效缩短交付周期,提高客户满意度图15测试执行过程从时间顺序上可以分为三大部分:单元测试,集成与功能测试和系统验证与验收测试(图15)单元测试聚焦单个代码单元的功能正确性;集成与功能测试检查模块间交互与整体功能完整性;系统与验收测试则验证软件系统在真实环境下的表现是否满足需求通过及早发现问题,测试不仅能节约成本,还能提升软件的稳定性和可靠性,为市场成功奠定坚实基础在实际操作过程中,无论是敏捷或是V模型,测试过程并没有这么严格的顺序区分,往往是循环迭代的反复过程对于如何确保已经验证功能仍然是可信的,往往是需要经验和智慧的积累关于软件测试,我们必须清晰地认识到“测试不是银弹穷尽测试是不可能也不现实”所以,端到端的软件质量保障,从需求到设计,从编码到测试,全链路的保障才是我们需要竭尽全力的目标图16伴随着AGI及数字化技术的发展,测试技术手段也在日益改进,新的测试技术开始逐步开始向RPA,AI赋能的测试手段方向发展(见图16)而对汽车行业软件开发而言,自动化测试技术,RPA,AI,新的应用场景的测试也慢慢开始渗透,成为测试团队的新挑战四、软件发布:舞动的韵律软件发布的全过程是一个严谨有序且不断迭代前行的进入开发阶段后,采用CI/CD(持续集成/持续部署)的实践,包括代码提交、规则检查、代码评审、预编译、软件包构建、内部发布、测试验证以及对外发布等一整套流程,确保软件质量的持续性和稳定性在这一过程中,构建Sanity、自动化测试以及各类环境下的验证是必不可少的环节(见图17)CICD在软件开发全生命周期中体现的核心思想是快速反馈、频繁交付和可靠质量通过自动化构建和部署流水线,让开发团队能够迅速响应变化,减少人工干预带来的延误和错误,确保软件在各个阶段都能高效地完成集成、测试和部署,最终达到高质量、高效率的产品交付目标图17在软件的维护阶段,针对存在的问题和错误进行及时修复,根据用户反馈和市场需求持续进行功能改进与性能优化对于汽车行业的嵌入式软件而言,还涉及到与硬件结合的复杂集成测试,以及类似FOTA,SOTA(空中下载技术)更新等特殊的软件升级场景此外,汽车行业软件发布遵循项目生命周期的各个阶段,如工程样车(EP)、产品及过程验证(PPV)、预试生产(PP)、试生产(P),直至正式投产(SOP)在整个过程中,项目质量管理扮演着关键角色,不仅要保证软件产品的质量和性能,还要确保软件开发与发布过程符合既定的质量标准和国标,企标五、研发基础:技术研发与产品研发的“双轮驱动”技术研发与产品研发虽同属创新范畴,但各有侧重技术研发着眼于长远,追求技术先进性与知识积累,目标是开发出具有竞争优势的技术成果,为未来的市场化产品提供技术支持(TPF过程)产品研发更直接面向市场,关注产品创新与商业化进程,旨在快速推出符合用户需求的新产品,创造价值与利润(PMF过程)如图18所示,技术研发和产品研发在生命周期、市场定位、技术难度、管理手段等方面存在显著差异,但均需紧密围绕用户需求展开技术研发往往领先数年,承担探索未知、孵化前沿技术的角色;产品研发则紧跟市场脉搏,力求在短期内实现产品的更新换代二者相互依赖,共同推动企业技术创新与产品迭代的良性循环当然,因为技术研发与产品研发的定位不同,企业在实际管理过程中,不能把产品研发的管理手段,比如某款车型研发,简单地套用到技术研发管理中(比如,某款新材料或者新动力电池,平台架构等)图18六、研发基础:组织与人才发展的软实力构建软件开发的成功离不开强大的组织支撑与人才队伍建设研发组织应注重能力建设,涵盖组织架构设计、业务流程梳理、数字化工具链集成(如禅道管理软件,CICD工具链,云端软件DevOPS工具链等)、知识管理、信息安全等多个维度同时,建立健全绩效考核与激励机制,确保人才的成长与发展与组织战略目标相一致人才发展方面,提供管理与专业技术两条晋升通道,满足不同类型人才的职业发展需求管理路线涵盖研发主管、经理、总监等专业技术路线包括了高级项目经理、产品经理、质量经理等专业角色;专业技术路线还包括了技术专家、高级专家、资深专家等技术精英通过明确的职业发展路径,激发人才潜能,形成稳定且富有活力的人才梯队,避免“重技术,轻职业化”的问题根据PRTM的产品开发能力成熟度评估模型(图19),软件研发组织的成熟度可以分为5级建议优秀的车企应该向成熟度4级(Stage 3)努力,提升组织的核心竞争力,确保打赢汽车智能化和汽车产业数字化这一仗
图19 (Source:PRTM 产品开发能力)结束,本文为我们勾勒出一幅从理论到实践、从模型选择到组织构建的全景图无论是初涉软件行业的新人,还是寻求优化研发流程的企业管理者,都可以从中汲取宝贵的知识与经验,助力在瞬息万变的科技浪潮中稳操胜券软件开发并非孤立的编程活动,而是涵盖了需求分析、架构设计、编码实践、测试保障、技术研发、产品研发、组织管理与人才培育等多元要素的系统工程唯有深入理解并妥善驾驭这些要素,方能在激烈的市场竞争中立于不败之地<全文完>
0 评论