ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ASPICE落地最后一公里:自研工具如何沉淀量化数据让研发效率可见

ASPICE落地最后一公里:自研工具如何沉淀量化数据让研发效率可见 ASPICE这几年在国内汽车行业真是被聊烂了尤其是和功能安全ISO 26262绑在一起之后几乎每家做Tier 1、做域控制器、做自动驾驶方案的公司都在推。但说实话大部分团队推到一半就卡住了——不是流程文件写不出来而是不知道推完之后怎么证明这东西有用。老板要的是降本增效工程师烦的是无休止的文档质量部盯着一堆过审证据最后变成一个为了过审而做流程的死循环。我自己从2019年开始完整经历了三个项目的ASPICE实施从被审核员挑战到后来自己当内部评估员去审别人再到2022年开始主导自研研发管理工具用自动化手段去承载ASPICE流程要求。今天这篇就围绕一个核心问题展开ASPICE流程落地之后怎么用自研工具把量化数据沉淀下来让研发效率的提升真正看得见。这中间会涉及怎么写流程文件才不会被工程师骂、怎么把ASPICE的流程域拆成工具的功能模块、以及最关键的——哪些数据能证明效率在变好哪些数据只是自欺欺人。1. 为什么ASPICE流程落地容易死在最后一公里1.1 大多数人理解的ASPICE流程落地其实是文档补全运动很多团队拿到ASPICE要求之后的第一反应是找咨询公司要一套模板然后让项目经理和质量工程师把模板翻译成公司的流程文件。于是你会看到这样的场景公司内部Wiki上挂着一堆SWE.1、SWE.2、SWE.6的过程描述每个文件都写得冠冕堂皇但实际开发的时候工程师还是该怎么写代码就怎么写代码只在阶段节点快到了的时候花两个礼拜补文档。这就是典型的最后一公里问题流程文件在纸面上存在但和实际研发动作是脱节的。ASPICE审核员其实也心知肚明所以他们在审核的时候不会只看你的流程文件写得好不好而是会随机抽项目看你的计划、监控、需求追溯、变更管理、验证记录、评审记录是不是真实存在并且和代码提交记录、测试执行记录能对得上。我第一次接受外部审核的时候就被问到一个问题你SWE.1软件需求分析的评审报告里写了12个参与人但为什么版本控制系统的提交记录里这12个人只有3个人有实际代码提交我当时就意识到如果流程和工具的联动不够这种对不上的审计发现会源源不断。1.2 纯靠人工维护流程证据研发团队会先崩溃ASPICE的底层逻辑是过程质量决定产品质量所以它对证据的要求非常苛刻。举个例子一张软件需求的状态变更可能同时牵涉到需求评审记录、影响分析、双向追溯矩阵、变更请求、验证结果。这些数据如果靠人工去维护每个需求变更至少要花掉一个人半天时间而且大概率会漏掉一两项。我当时做过一个统计一个中等规模的智能座舱项目大概600多条软件需求2000多个软件单元每周的变更请求平均在80条左右。如果完全靠人工维护追溯矩阵和变更记录需要全职配置一个质量工程师加半个配置管理员还只能做到看起来全做不到真正一致。这也是为什么我后来坚持要自研研发管理工具的核心原因ASPICE要的不是文档是数据和数据之间的一致性。而一致性靠人肉是维护不住的只能靠工具在流程流转的过程中自动产生、自动校验、自动提醒。2. 自研研发管理工具的架构思路从流程域到功能模块的映射2.1 不要一上来就想着做一个Jira先拆流程域很多人一听自研工具就头大觉得要做一个对标Jira、Polarion、Codebeamer的东西。这个东西单靠一个研发团队的成本是扛不住的。我当时定的策略是只做ASPICE里工具能产生差异化价值的部分其他环节沿用已有工具通过接口或手动导入打通数据链路。先看ASPICE在软件层级的流程域有哪些核心诉求ASPICE流程域核心活动对工具的核心要求SYS.2 系统需求分析需求获取、分析、确认需求条目化管理、评审留痕、状态流转SWE.1 软件需求分析软件需求定义、可验证性检查需求属性自定义、疑似重复/冲突检测SWE.2 软件架构设计架构设计、接口定义模块/组件层级管理、架构与需求的双向追溯SWE.3 软件详细设计与单元构建单元设计、代码实现设计与代码的关联、静态检查结果接入SWE.4 软件单元验证单元测试、静态分析测试用例管理、测试结果与单元追溯SWE.5 软件集成与集成测试集成策略、集成测试集成构建记录、测试与架构的追溯SWE.6 软件合格性测试需求级测试测试用例与需求追溯、缺陷闭环SUP.1 配置管理基线、变更、配置项基线管理、变更控制、产物关联SUP.8 配置管理过程保证一致性与完整性检查数据一致性校验、审计追踪我们自研的工具最终只覆盖了三个核心模块需求与追溯管理、变更与基线管理、验证与测试闭环。这三个模块恰好对应ASPICE审核时最容易出问题的三个点——需求可追溯性、变更影响分析、验证与需求的一致性。2.2 自研工具的模块设计原则让流程要求变成系统强制动作工具设计的时候我给自己定了一个原则凡是ASPICE要求必须做的动作系统里就要做成不做完就流转不下去的强制动作。比如一条软件需求要从Draft变成Approved系统里必须完成以下前置条件需求描述的非空校验包括验收标准字段至少一次评审记录的关联评审结论必须为通过需求与上级系统需求的追溯链接不能为空如果有变更必须关联变更请求单。这样做的好处是工程师不需要去记流程文件里写了什么系统的操作路径就是流程本身。审核员来了直接看系统的操作日志和数据的完整性比看一百页流程文件都有说服力。2.3 自研边界之外的集成方案不重复造轮子需求追溯、变更、测试闭环我们自研了但代码仓库我们用的是GitLab、CI/CD流水线Jenkins、缺陷管理初期用的禅道后来迁到自研这些没有重复开发。关键是要做好数据打通。以单元验证为例ASPICE的SWE.4要求单元测试结果要能追溯到具体的软件单元。我们的做法是Jenkins构建结束后会把测试报告JUnit XML格式推送到自研工具的测试管理模块自研工具根据Git提交中涉及的源文件路径自动关联到对应的软件单元如果测试有失败用例系统自动创建一个缺陷记录并和失败的测试用例绑定软件单元的验证状态会根据最新一次测试执行结果自动更新。这样一来单元测试通过率单元测试覆盖率测试用例与软件单元的追溯完整性这些数据就都是自动产生的不需要任何人工维护。3. 最关键的环节哪些量化数据能真实反映研发效率提升3.1 不要只盯着需求吞吐量那是最容易被刷的指标一谈到量化数据很多管理者第一反应是需求交付周期需求吞吐量。我不是说这些指标没用而是它们太容易被形式化地优化了。举个例子如果团队为了让需求平均交付周期变短把大需求拆成很多小需求每个小需求都走一遍快速通道周期数据确实好看了但需求之间的关联性和完整性反而容易被破坏。我自己的经验是要选择那些和ASPICE能力等级强相关、同时又很难通过表面功夫刷出来的指标。这类指标通常都指向数据的一致性、闭环率和自动化占比。3.2 我最看重的六个量化指标指标一需求追溯完整性Traceability Completeness这个指标反映的是从系统需求到软件需求、从软件需求到架构设计、从架构设计到单元设计、从单元设计到测试用例这四级追溯链路的完整程度。计算方法很简单已经建立追溯链接的需求条目数除以应建立追溯链接的需求条目总数。这个数据在自研工具里是实时的因为每一次追溯关系的新增或删除都会有日志。为什么要关注它因为追溯不完整是最典型的过程质量问题审核员几乎必查。而且它很难通过补来糊弄——如果项目后期追溯完整率只有60%你要补的话得把需求、设计、测试全部过一遍补的时间比流程要求的时间还长。指标二变更影响分析率Impact Analysis RateASPICE的SUP.8和变更管理都要求变更前必须做影响分析。我们统计的是所有已关闭的变更请求中明确记录了受影响需求、受影响模块、受影响测试用例的比例。这个指标直接反映团队的变更管理成熟度。很多项目做到后面需求变更频繁如果影响分析率低就会出现改了一个接口结果三个模块的测试全挂了而且挂了都不知道为什么挂这种状况。我们自研工具的做法是变更请求里必须选择影响的需求/模块并且系统会基于追溯矩阵自动提示如果你改了这条需求下面这些设计和测试可能会受影响请确认。这一招能让影响分析率从人工维护时代的不到50%直接拉升到95%以上。指标三验证结果与需求的双向闭环率这个指标关注的是每条软件需求是否都有对应的验证活动并且验证结果是否通过。很多团队的现状是需求文档里写了几十条验证方法但真正到了测试阶段跑没跑、结果如何、是不是全通过没人说得清。我们的做法是在自研工具的测试管理模块里每一个测试用例都必须关联至少一条需求测试执行完毕后系统自动汇总每条需求的验证状态。需求验证闭环率 验证结果为通过/已确认的需求数 ÷ 总需求数。这个指标的重要性在于它在ASPICE SWE.6审核中是重量级的取证点。如果这个值能达到98%以上审核员基本不会再揪着验证充分性问太多问题。指标四评审缺陷密度Review Defect Density评审活动的有效性ASPICE是要求有评价准则的。很多团队开了评审会结论永远是通过、无重大异议但这样的评审记录几乎没有价值。我们引入评审缺陷密度的思路每次评审会议或评审任务中记录发现的有效缺陷数量除以评审对象规模需求按条数、设计按页数、代码按行数或函数数。这个指标的价值在于它能让管理者看出评审到底是走形式还是真发现了问题。如果连续一个月评审缺陷密度都趋近于0那我反而会警觉是评审人能力不够还是评审对象根本没认真准备指标五自动化验证占比Automated Verification Ratio这个指标关注的是单元测试、静态分析、接口测试、集成测试中由CI/CD流水线自动触发执行的比例。ASPICE 4.0也就是ASPICE 4.0版非常强调自动化验证策略因为手动测试的效率和质量都存在瓶颈。说实话这个指标在传统Tier 1里推进很难。很多嵌入式软件跑在MCU上单元测试的Mock成本很高集成测试又依赖台架环境。但哪怕先从静态分析100%自动化单元测试在x86仿真环境里自动化执行开始也是巨大的提升。我们的项目从0%做到62%大概花了10个月每一个百分点的提升都对应着流水线的逐步完善。指标六缺陷逃逸率Defect Escape Rate这个指标说的是发布后发现的有效缺陷数 ÷测试阶段发现的有效缺陷数 发布后发现的有效缺陷数。它衡量的是验证阶段的有效性。ASPICE本身不强制要求这个指标但它是衡量质量体系是否真的有效的最好标尺之一。如果测试阶段该发现的缺陷没发现用户/客户在实车上炸了缺陷逃逸率就会飙升。这个指标一旦出问题意味着不只是测试要改善整个上游的需求分析、设计评审、代码走查都需要复盘。3.3 为什么这几个指标必须自研工具来统计如果只用Jira或者Excel上面指标能不能统计也能但是很痛苦。举一个真实的例子我们要统计需求追溯完整性如果用Jira的Issue Link去做追溯Link是自由的不限制方向、不限制类型。你很难判断到底这条Link能不能算作有效的追溯关系。而且Jira默认的报表里根本没有链路完整性这种概念。自研工具最大的优势不是功能更强而是可以把ASPICE的评价规则直接硬编码到数据模型里。比如系统里每一个追溯链接都不是一个简单的关联字段而是有类型满足细化验证、有状态有效已失效待确认、有时间戳的独立对象。这样统计口径才稳定才经得起推敲。4. 从零开始的自研落地路径阶段划分和组织保障4.1 七个阶段的自研路线图自研工具不是一蹴而就的我建议按以下七个阶段滚动推进第一阶段第1~4周数据模型设计。这是最重要的阶段直接决定后面的数据能不能对上。我们花了整整三周时间梳理了ASPICE各个流程域里所有关键work product的属性、状态、追溯关系。最后产出的数据模型图覆盖了需求、设计、代码、测试、缺陷、变更、评审、基线这八大对象以及它们之间的追溯关系。第二阶段第5~8周最小可用版本MVP。MVP只做两个功能需求条目的CRUD、需求之间的父子/追溯链接、以及一个最基础的双向追溯报告。目的是让团队先用起来而不是等工具做到完美再推。这个阶段建议砍掉所有花哨功能只保留需求管理追溯矩阵这条主线。第三阶段第9~16周变更与基线模块。在MVP稳定之后我们做了变更请求管理、变更影响分析基于追溯关系自动推荐受影响条目、基线管理对需求、设计、测试用例打基线快照。这个阶段结束后基本可以满足ASPICE SUP.1和SUP.8的一部分要求。第四阶段第17~24周测试闭环与缺陷联动。这个阶段把测试用例管理、测试执行记录、缺陷管理融合进来。我们当时把原本在禅道里的缺陷数据全部迁移到自研工具通过API和Jenkins打通实现了测试报告自动导入-失败用例自动建档-缺陷状态自动同步的闭环。第五阶段第25~32周评审管理和指标看板。这个阶段加入评审任务管理、评审缺陷记录、以及效率指标看板。我的经验是指标看板不要一上来就上十多张图先放最核心的三张需求追溯完整性趋势图、变更影响分析率趋势图、需求验证闭环率趋势图。等团队看习惯了这个数据维度再逐步增加其他指标。第六阶段第33~40周与GitLab/Jenkins的深度集成。打通代码提交、Merge Request、CI构建、测试报告、软件交付物如固件镜像和需求/变更的关系。做到从需求到代码、从代码到测试、从测试到交付物的全链路追踪。第七阶段第41周以后数据质量治理与持续改进。工具上线之后真正的挑战才开始。我们发现有些团队为了凑数据会把评审缺陷密度刷得很勇猛——明明一个缺陷没有非要在评审记录里硬写几个改进建议当作缺陷。这种情况就要靠数据质量规则来约束比如评审缺陷必须关联具体章节、代码行号或者需求ID否则系统不认。4.2 落地过程中容易踩的五个坑坑一数据模型照搬Polarion/Codebeamer的复杂结构。自研工具如果一开始就把数据模型设计得像Polarion一样庞大那整个项目组会被复杂的属性配置和关系类型拖垮。我的建议是第一版数据模型只保留ASPICE审核里最核心的那几个字段和关系其他的一律砍掉等团队用起来了再逐步增加。坑二让研发工程师每天填工作量统计。千万不要在自研工具里做每天填写工作量占比这种功能。ASPICE要的是客观过程数据不是主观自评。我们后来是用Git提交记录和Merge Request的发布时间来自动生成工作量分析比如某个软件单元的代码从首次提交到稳定合并花了多少天这中间经历了多少轮评审。这个数据既客观又能暴露流程瓶颈。坑三权限设计过于严格导致审核员没法看项目全貌。ASPICE外部审核时审核员会要求看完整的项目数据。如果自研工具的权限体系做得太细比如按研发、测试、QA分了三套权限但审核员要的是一个超级只读视图那审核的时候就只能坐在你旁边一台一台机器换账号。我们后来专门做了一个审计视图角色可以跨项目、跨模块的浏览所有基线、变更、评审、测试记录但只读、不可修改。坑四把流程强制做得太死导致紧急问题没法救火。ASPICE要求变更要有流程但实际情况中总有生产问题需要紧急修复。如果工具里没有紧急通道的设计工程师就会走线下流程数据就断了。我们后来加了一个紧急变更类别只允许项目经理和质量经理发起审批链极短两步但事后必须补影响分析并且补的时候会影响团队的相关指标得分。这套机制的思路是给流程开一个带着刹车的应急通道而不是彻底堵死。坑五量化指标只在月报里展示团队在日常开发中感知不到。如果效率指标只是月底在质量周报里放几张图表那它对日常研发行为的改进作用几乎为零。我们的做法是在自研工具的首页每个研发工程师登录后第一眼看到的是自己负责的需求、设计、测试的追溯完整性进度以及自己名下尚未关闭的变更/缺陷清单。指标要出现在工作流里而不是出现在PPT里。5. 效率数据的呈现方式从多张Excel表到一张作战地图5.1 三层看板的结构设计量化数据有了之后如果只是做成一堆数据库表格管理者根本看不出所以然。我们最终把数据整理成三层看板第一层管理层看板面向项目经理、质量经理、研发总监。展示内容只保留5~6个关键指标且全部是趋势图和对比图。比如需求追溯完整性趋势按月项目A从1月的78%提升到6月的96.5%项目B从1月的82%提升到7月的97.2%变更影响分析率趋势按月项目A从1月的63%提升到6月的94.8%需求和验证闭环率按月项目A从1月的71%提升到6月的97.3%管理层看到这些趋势能够立刻判断流程是否在变好不需要看具体的审计证据。第二层工程层看板面向研发经理、测试经理、架构师。展示内容更细按模块/子系统的粒度拆解。比如座舱域HMI模块的需求追溯完整性是93%但仪表盘模块只有86%那研发经理就知道该去盯哪个小组的流程执行质量了。第三层个人工作台面向研发/测试工程师。展示内容就是和我自己工作直接相关的待办和风险。比如你负责的23条需求中有2条没有关联到测试用例请在3天内介入处理。这个层面的数据不是为了考核而是为了让工程师知道自己手上的活还有哪些坑没填上。5.2 一个数据驱动的复盘案例版本发布前一周拿我们2022年底做的一个智能座舱项目举例。在规划版本发布前一周管理看板上的数据是这样的需求追溯完整率97.6%目标≥95%需求验证闭环率94.2%目标≥95%变更影响分析率96.1%目标≥90%缺陷逃逸率8.9%目标≤10%自动化验证占比58%目标≥60%。看板上有两个指标没达标需求验证闭环率差0.8个百分点自动化验证占比差2个百分点。项目经理当场拍板从测试团队抽调2个人集中在两天内把剩余4.8%的未闭环需求主要集中在语音助手模块的测试用例补跑、补录自动化验证占比的差距主要是因为本次版本新增了7个传感器融合的测试用例这些用例依赖实车台架环境没法在CI里自动跑。评估后决定先在x86仿真环境里跑起来结果仅作为参考数据正式判定仍然依赖台架。但这件事给了我们明确的下阶段改进方向——针对台架环境的自动化测试框架建设。这个决策过程如果只靠经验和感觉大概率吵半天也出不了结论。但有了量化的指标数据优先级和资源分配一目了然。这就是我从流程合规走向效率提升最直观的感受。5.3 数据口径的统一为什么看起来差不多的两个项目数据不能直接对比这里有一个很容易踩的坑不同项目的复杂度、周期、人员构成不同指标不能简单横向对比。我们做过一个对比同样是需求追溯完整率一个智驾域项目和一个座舱域项目就算数值一样背后的难度完全不同。智驾域的需求涉及大量感知和规控算法的非确定性行为需求描述天然模糊追溯起来费劲座舱域的需求相对具体追溯相对容易。所以我在设计看板的时候对项目A和项目B做了基线校正在项目开始时先做一次基线评估然后展示的都是相对基线的改善幅度而不是绝对值。举个例子智驾域项目基线追溯完整率是62%现在92%改善幅度30个百分点座舱域项目基线追溯完整率是80%现在95%改善幅度15个百分点。虽然绝对值上座舱项目更高但从流程改进的幅度来看智驾项目进步更大。这个视角对管理者其实更有意义。6. 一点真实体会工具是杠杆数据是镜子流程是骨架自研研发管理工具这三年多我最大的感受是ASPICE落地的成败不取决于你有没有买一套昂贵的商业工具而取决于你有没有把流程要求转化为团队日常工作的默认动作。自研的过程本质上就是一次深度梳理把ASPICE每个流程域的要求翻译成系统数据结构、流转规则和强制校验让工程师在无知无觉中把流程做了。量化数据最怕的不是难看而是失真。如果指标好看但项目质量还是一塌糊涂那说明指标选错了、口径出问题了或者根子上团队就没把价值观对齐。所以我一直强调数据是镜子——管理者要有勇气看到镜子里那个不够好的自己然后去改善而不是换一面美颜效果更好的镜子。最后再分享一个小技巧在自研工具里给每条需求加一个最后修改人和最后修改时间的属性。这个属性不起眼但在审核和后期追责时极其好用。有一次审核员问这个模块的需求为什么在三个月前有一次大规模改动却没有任何评审记录我直接在系统里拉出了那段时间的修改日志发现是一个新来的需求工程师在批量改名时误操作触发的全量更新。由此我们加了一条系统校验批量修改需求时必须填写变更原因且写入审计日志。你看看一个看似简单的日志字段最后变成了流程控制的一部分。这就是我理解的自研工具的意义——它让流程长在了数据里而不是飘在文档上。
返回列表