前言
相信每个从事汽车电子开发的人都会有这样的心路历程:1.刚毕业时,懵懵懂懂的进入公司,跟着公司的培训走,了解自己岗位的内容,以及与其他岗位的交互,还要熟悉V模型开发流程;2.工作几年后,睁开眼睛看外部的世界,例如跟从事IT行业的同学们聊聊,跟转行做医疗器械的同学们扯扯,突然会想一件事情,为什么汽车电子的开发会是这样一种形态呢?都涉及到系统和软件的开发,但是组织形式和开发形式却又如此的不一样?是什么东西在指导并搭建了这样一种特定的开发组织形式呢(即开发流程)?
具体再提几个深入一点的问题:
上述一切的答案就在于ISO15504 - Automotive Software Process Improvement and Capability dEtermination(Automotive SPICE,软件流程改进和能力测定的汽车行业定制化版本)。这是一个由欧洲车企发起的车载软件开发的流程标准,用于欧洲主机厂对供应商进行软件流程能力评估。包括:奥迪、宝马、奔驰、菲亚特、福特、捷豹路虎、保时捷、大众、沃尔沃等。
这个流程集合的意义在于,假如某个车企的软件是按照这个流程开发出来的,就认为符合“车规”,软件的功能安全等级能够满足车辆安全要求。
正文
A-SPICE 3.0 总览:
%%%%%%%%%%%%%%%%% 分割线 %%%%%%%%%%%%%%%%%%%%
现在知道汽车电子零部件供应商里的系统工程师角色来源了吧?
看SYS.1/SYS.2/SYS.3/SYS.4/SYS.5的流程定义,需要这么一个角色来cover对应着五个环节的任务。分别是:需求获取、系统需求分析、系统架构设计、系统集成和集成测试、系统确认测试。
按照开发步骤详细讲讲工程开发细节:
------------------------------------------------------------
需求获取:从客户获取客户需求,并确认需求被正确理解;
---------------------------------------------------------
系统需求分析:将已定义的客户需求转换为一组系统需求,用以指导系统设计;
过程成果:
a. 已经定义了系统需求;
b. 已经对系统需求进行了分类和分析以获取正确性和可验证性;
c. 已经分析了系统需求对运行环境的影响;
d. 已经定义了实现系统需求的优先级;
e. 系统需求能够根据需要更新;
f. 已经在利益相关者(客户等)需求和系统需求之间建立了一致性和双向可追溯性;
g. 利益相关者需求已经根据成本,进度和技术影响进行了评估;
h. 系统需求已经传达给受影响的各方并且达成了一致。
输出物包括以下几种:
需求分析报告(RAR, Requirement Analysis Report),比如诊断、CAN通信、XCP、电源、KAM存储机制等模块的RAR分析报告。
系统需求说明书(SYSRS, System Requirement Specification),里面需要定义好功能需求和非功能需求。系统说明书的结构可是按照项目相关集分组,也可按照项目逻辑顺序进行排序,也可根据项目相关标准进行分类,还可根据客户要求来分类。
接口需求说明书(IRS,Interface Requirement Specification),定义各个系统模块之间的接口。例如:两个产品之间、过程之间或者过程任务之间的关联;双方共同遵守的准则及格式;关键时间依赖性或前后顺序;描述各个系统组件之间的物理接口,如总线接口(CAN、LIN)、收发器(类型、制造厂商)、附加接口(IEEE、ISO、USB等)、数字接口(PWM)和模拟接口等;识别软件与软件组件之间的接口,如进程间通信机制、总线通信机制等。
验证标准(Validation Specification)。具体内容包括:1. 每条需求都可验证或评估;2. 验证准则定义了验证需求时所遵循的定性及定量的准则;3. 验证准则标明进行需求验证时所遵循的已达成共识的约束条件。
审查记录(RR,Review Record):需提供评审的上下文信息(内容、出席评审的人员列表、评审状态)、覆盖信息(checklist、review标准、需求、标准符合性)、检查发现(不一致性、改进建议)、记录信息(评审准备完成状态、评审准备所花时间、评审所花时间、评审人员和角色的评审意见)、识别所需的纠正信息(风险识别、偏差list、解决问题所要求的行动及任务、纠正措施的负责人、已识别问题的状态及目标关闭日期)
跟踪记录(TR,Traceability Record):跟踪所有需求(客户需求和内部需求)、识别生命周期中的产品&需求之间的映射关系、需求和工作产品之间的连接关系(例如:需求-设计-代码-测试-交付)、在生命周期各阶段提供需求到相关工作产品之间的正向和反向映射
沟通记录(Communication Record):信件、传真、电子邮件、语音记录、电报;
变更控制记录(Change Control Record), 记录变更请求,生成基线化产品(baseline product)。具体包括:采用控制机制来控制正式项目的基线化产品(baseline)、变更请求记录(识别受变更影响的系统即文档、识别变更请求、识别变更的负责团队、识别变更的状态)、与相关客户请求及内部变更请求建立连接关系、适当的批准、对重复的请求进行识别和分组
---------------------------------------------------------
系统架构设计:建立系统架构,确定哪些需求分配给哪些系统元素,并根据定义的标准评估所设计的系统架构。 具体的:
a. 提供所有系统的设计;
b. 描述系统元素之间的相互关系;
c. 描述系统元素与软件之间的相互关系;
d. 详细说明每个必需系统元素的设计,需要考虑到以下内容:内存和容量的需求、硬件接口需求、用户接口需求、外部系统接口需求、性能需求、指令结构、安全及数据保护特性、系统参数设定、人工操作、可重用组件等
e. 系统元素与需求之间的映射关系
f. 描述系统组件运行模式(启动、停止、睡眠模式、诊断模式等)
g. 描述在不同运行模式下各个系统组件之间依赖关系;
h. 描述系统和系统组件的动态行为。
过程可能产生的成果:
a. 已经定义了系统架构设计,并已经标识了系统元素;
b. 系统需求已经被分配给了系统元素;
c. 系统元素的每个接口已经定义;
d. 已经定义了系统的动态行为目标;
e. 在系统需求和系统架构设计之间已经建立了一致性和双向可追溯性;
f. 系统架构设计已经传达给受影响的各方并且达成了一致。
------------------------------------------------------------------
软件需求分析Software Requirements Analysis:将系统需求的相关部分转换为一组软件需求
输出物包括:
--------------------------------------------------------
软件架构设计Software Architectural Design:建立一个架构设计和确定哪些软件需求分配给软件的哪些元素,并根据定义的标准评估软件架构设计。
过程成果:
具体步骤:
输出物:
a. 软件架构整体描述;
b. 包含任务结构的运行系统描述;
c. 确定任务与进程之间的通信;
d. 识别必需的软件元素;
e. 识别自主开发及供应方提供的代码;
f. 识别软件元素之间的关联及依赖关系;
g. 确定数据存储及灾备方案;
h. 描述不同模型系列或配置如何衍生出产品变体;
i. 描述软件的动态行为(启动、关闭、软件升级、错误处理、恢复);
j. 确定数据存储位置及数据损坏的预防办法;
k. 描述哪些数据是在什么情况下是持续存在的;
l. 还要充分考虑以下内容(软件必需的性能特性、软件必需的接口、软件必需的安全特性、数据库设计需求)
2. 接口需求规格说明书
3. 跟踪记录
4. 审查需求
5. 沟通记录
-----------------------------------------------------------
软件详细设计和单元实现Software Detailed Design and Unit Construction:步骤几乎以以上步骤完全一致...
-------------------------------------------------
软件单元验证Software Unit Verification:软件单元测试过程的目的是验证软件单元,证明软件单元符合软件详细设计和非功能性软件需求。
过程成果:
输出物包括:
------------------------------------
软件集成和集成测试Software Integration and Integration Test:将软件单元集成到更大的软件项目中,直到形成与软件架构设计一致的完整集成软件,并确保软件项目是经过测试的,可以证明包括软件单元之间和软件项目之间的接口在内的集成软件项目符合软件架构设计。
步骤:
输出物:
-----------------------------------
软件确认测试Software Qualification Test:确保集成的软件已经过了测试并满足软件需求。与上一步几乎相同。
-----------------------------------
系统集成和集成测试System Integration and Integration Test:集成系统项以生成集成系统,符合系统架构设计并确保系统项被测试,用以证明集成的系统项与系统架构设计的一致性,包括系统项之间的接口。
--------------------------------------------
系统确认测试System Qualification Test:确保集成的系统已经测试,为符合系统需求和系统准备交付提供依据。与上述步骤大同小异,略。
%%%%%%%%%%%%%%%%% 分割线 %%%%%%%%%%%%%%%%%%%%
一、质量保证流程 Quality Assurance(SUP1)
目的:为工作产品和流程严格按照预定义的规定和计划提供独立的、客观的保证,并解决和预防不符合性的情况。
输出物清单:
---------------------------------------
二、配置管理 Configuration Management(SUP8)
配置管理流程,是为了建立和维护所有流程或项目工作产品的完整性,并提供给相关干系人。
输出物:
-----------------------------------------------
三、解决问题管理 Problem Resolution Management
解决问题管理流程,是为了确保所有发现的问题都被识别、分析、管理、受控知道解决。
整个流程会有一些成果产生:
2. 流程步骤:
a. 制定解决问题管理策略:制定问题对策管理策略,包括问题对策活动、问题状态模型、警报通知、执行这些操作后的响应能力和紧急处理策略。设定好 到 关切方的接口,并维护。
b. 识别并记录问题:每个问题都要单独识别、描述并记录。应当提供支持信息来重现和诊断该问题。支持信息一般包括问题的起源。如何重现。环境信息、何人发现等等;单独识别问题有助于对变更的追踪能力。
c. 记录问题状态信息:根据问题状态模型得出的状态信息是绑定到问题上的,有利于对问题的追踪。
d. 诊断问题原因及其影响:调查、诊断问题原因及影响,确定适当行为项并对问题进行分类。问题分类(例如,A/B/C, 轻微,中等,严重)可根据严重程度、影响、危害性,紧迫性,相关性等进行分类。
e. 授权紧急问题处理行动:若根据问题对管理策略,解决问题需要一个紧急对策,那同样根据本策略,为了紧急响应必须包含一定的授权。
f. 提出警报通知:根据策略,若一个问题对其他的系统或者攸关方有很强的影响,那么必须发出提示警告信息。
g. 启动问题解决:根据对策管理策略,采取适当措施以解决问题,包括对过往行为的审查,或发起更新请求。合适的行为包含发起以变更请求,参考变更请求管理流程。
h. 跟踪问题直至问题解决:跟踪问题的状态信息,直指问题关闭。关闭问题之前,需得到正式的问题关闭授权。
i. 分析问题趋势:从问题管理系统收集并分析数据(发生频率、探测度、影响范围等),识别趋势,必要时采取相应行动。收集到的数据一般包括问题发生的位置,何时以何种方式被发现,有何影响等。流程改进的实施(预防问题)是在流程改进流程(PIM3)中完成的。对通用项目管理的改进(比如经验教训总结)是项目管理流程的内容(MAN3)。对与通用工作产品有关的改进是质量保证流程(SUP1)的部分。
3. 输出物:
a. 问题管理计划:定义问题解决活动,包含问题识别、问题记录、问题描述即问题分类;问题解决办法:评估及修正问题;定义问题跟踪机制;问题解决方案的搜集及分配机制。
b. 问题记录:识别问题提出人姓名及联系方式;识别负责修复问题的组织或人员;包含问题描述;识别问题的分类(严重度、紧迫度、关联性等);识别已报告问题的状态;识别问题修复的目标发布版本;识别问题的预期关闭日期;识别问题关闭准则;识别问题复验行动项。
c. 分析报告:分析的内容;分析人;所采用的的分析准则(选择的准则或采用的优先级计划、决策准则、质量准则);记录结果(决定或选择的内容、选择的原因、做出的假定、潜在风险);正确性分析的方面包括(完整性、可理解性、可测性、可验证性、可行性、有效性、一致性、内容的充分性)。
d. 评估报告:声明评估目的;使用的评估方法;评估所用的需求;假设及限制;识别所需的内容和范围信息(评估日期、参与者、详细内容、评估所使用的手段如检查单和工具等);记录评估结果(数据、识别所需的纠正及预防措施、改进机会)。
e. 问题状态报告:显示问题记录的摘要信息(按照问题分级/分类);问题解决的状态(打开问题及关闭问题的变化趋势)。
-----------------------------------------------
四、变更请求管理
确保变更请求被管理、跟踪以及监控。
过程产出:
a. 制定变更管理策略;
b. 记录且识别变更请求;
c. 识别与其他变更请求之间的依赖关系;
d. 定义变更请求实施结果的确认标准;
e. 对变更请求进行分析、按优先级排序并预估所需资源;
f. 以变更的优先级即资源的可用性为基础对变更进行核准;
g. 实施已核准的变更并跟踪其直至关闭;
h. 所有变更请求的状态可知;
i. 建立变更请求和受影响的工作产品间的双向可追溯性。
2. 流程步骤:
a. 制定变更请求管理策略:制定变更请求管理策略,包括:变更请求活动,变更请求状态模型,分析标准,以及实行这些行动后的响应。设定好到波及方的接口并维护。变更请求状态模型包含:打开、研究中、批准施行、已分配、已实施、已修复、已关闭等。一个分析标准的典型是:资源需求、调度问题、风险、收益等。变更请求行为确保变更请求能被系统地识别、分析、记录、实行和管理。变更请求管理策略可覆盖产品生命周期的不同阶段,比如原型设计和系统开发。
b. 标识和记录变更请求:每个问题都要根据管理策略单独识别、描述并记录,包括变更请求的发起人和发起原因。
c. 记录变更请求的状态。
d. 分析和评估变更请求:根据管理策略分析变更请求,包括与涉及工作产品和其他变更请求的依赖。评估该变更请求的影响并创建实行确认标准。
e. 在实施变更请求前批准:在实施变更之前,要根据管理策略批准,并基于分析结果和资源可用性确定变更请求的优先级。变更控制盘是一个批准变更需求的公共机制。变更请求可被分配释放。
f. 评审变更请求的实施:变更请求实施评审要在变更请求关闭之前进行,以确保请求符合确认标准且被应用在其他所有相关过程中。
g. 追踪变更请求直至关闭:并提供反馈给发起者。
i. 建立双向可追溯性:创建在变更请求和涉及到的工作产品之间的双向追踪能力。为防变更请求是由问题发起的情况,可创建变更请求与相应问题报告之间的双向追踪能力。双向追踪支持完整性、一致性和影响分析。
3. 输出物:
a. 变更管理计划:定义变更管理活动,包含变更识别、变更记录、变更描述、变更分析及变更实施。定义跟踪变更请求状态的方法。定义验证及确认活动。变更审核及变更影响范围评审。
b. 变更请求:识别变更目的。识别请求状态(新建、已接收、被拒绝)。识别请求人联系信息。被影响的系统。对现有系统运行的影响。对相关文档的影响。请求的严重度和需要完成的日期。
c. 审查(评审记录):需提供评审上下文信息(评审的内容、出席评审的人员列表、评审状态);提供评审覆盖信息(检查单、评审准则、需求、标准符合性);检查发现(不一致性、改进建议);记录信息包括(评审准备完成状态、评审准备所花费时间、评审花费的时间、评审人员&角色及评审意见);识别所需的纠正措施(风险识别、按优先级排序的偏差列表和发现的问题列表、解决问题所需的行动及任务、纠正措施的负责人、已识别问题的状态即目标关闭日期)。
d. 变更控制记录:采用一种控制机制来控制正式项目的发布库中基线化产品;变更请求记录,生成基线化产品(工作产品、软件、客户文档等),包括识别受变更影响的系统和文档、识别变更请求、识别变更的负责团队、识别变更的状态;与相关客户请求、内部变更请求建立连接关系;适当的批准;读重复的请求进行识别和分组。
------------------------------------------------
五、项目管理
在项目的需求和约束条件下识别、建立和控制项目生产产品所必须的活动和资源。
过程产出:
a. 项目工作范围已定义;
b. 已评估在现有资源和约束下实现项目目标的可行性;
c. 已评估并量化了完成工作的任务和必要的资源,并按大小分类;
d. 已识别并监控了项目元素之间的接口,项目与其他项目及组织单位的接口;
e. 项目执行计划已被开发、实施和维护;
f. 已监督并报告项目进展;
g. 当项目未达到目标时,实施已计划的偏差纠正措施,并防止已识别问题复发。
2. 流程步骤:
a. 定义工作范围:确定项目的目标、动机和边界。
b. 定义项目生命周期:定义项目生命周期,应该定义合适的项目范围,项目背景,项目量级和项目复杂性。这通常意味着项目生命周期和客户的开发过程是一致的。
c. 评估项目的可行性:按照时间因素,项目预算,可用资源几个约束条件的技术可行性来评估实现项目目标的可行性。
d. 定义、监控、调整项目活动:定义、监控、调整项目活动以及他们的依赖项应该依据已经定义的项目的生命周期和预算。根据需要调整活动以及他们的依赖项。结构化的以及可量化的活动以及相关工作包支持足够的进度监控。项目活动通常覆盖工程、管理和支持流程。
e. 确定、监控、调整项目预算和资源:确定、监控、调整项目预算和资源应该根据项目目标,项目风险,项目动机以及项目边界。应该使用适当的评估方法。必要资源,例如人员、基础设施(工具、测试设备、通信机制)、硬件/材料等。项目风险和质量标准可能被考虑。预算和资源典型的应该包含工程、管理和支持过程。
f. 保证所需的技能、知识和经验:为项目确定所需的技能、知识和经验,保证选择的个人和团队已经拥有或者能够及时取得这些技能,知识和经验。所需技能与知识培训的差异应该着重提供。
g. 识别、监视和调整项目接口和已达成一致的事项。识别和约定项目与其他项目(包括子项目),组织单元以及其他利益相关者的接口并且监控已经达成一致的事项。项目接口涉及工程、管理和支持过程。
h. 明确、监督、调整项目进度:为项目活动分配资源,并且安排整个项目的活动。这些安排在项目生命周期中应持续更新。这涉及到所有的工程、管理和支持过程。
i. 确保一致性:确保预算、活动、日程、计划、接口以及项目约定受各方的影响是一致的。
j. 评审和报告项目进度:定期评审和报告项目的状态,并根据预计的努力和持续时间对所有受影响的各方履行活动,防止出现问题复发。项目评审可以由管理人员定期执行。在项目收尾阶段,项目评审有助于识别,例如,最佳实践和经验教训。
3. 输出物:
a. 项目计划:定义以下内容,如:将要开发的工作产品、使用的生命周期模型及方法、与项目管理相关的客户需求、需要完成的任务、任务责任人、项目资源、时间表/里程碑/预期时间、预算、质量标准;识别以下内容,如:关键依赖关系、必需的工作产品、项目风险及风险减轻计划、未完成任务的应急措施。
b. 沟通记录:每一组都是可识别、可检索的数据;所有形式的人际沟通,包含信件、传真、电子邮件、语音记录和电报等。
c. 变更请求:识别变更目的;识别请求状态(新建、已接收、被拒绝);识别请求人联系信息;被影响的系统;对现有系统运行的影响;对相关文档的影响;请求的严重度和需要完成的日期。
d. 审查(评审)记录(略)
e. 纠正行动记录:识别初始问题;识别已定义行动项的执行负责人;定义解决方案(为解决问题而采取的一系列行动项);识别问题发现日期及预算的关闭日期;包含状态指示器;标明后续的审核活动。
f. 进度安排(Schedule):识别需要执行的任务;识别必要任务预期和实际开始、完成日期;考虑识别关键任务及任务依赖性;识别任务完成状态与计划日期对照;与计划的资源数据进行映射。
g. 工作分解项(Work breakdown structure):定义计划执行的任务及其修正案;记录任务的负责人;记录任务间关键依赖关系;记载输入输出工作产品;记录已定义工作产品之间的关键依赖关系。
h. 干系人组织列表(Stakeholder groups list):标识出 相关干系人组织、每个干系人组的权重与重要性、每个干系人组的代表、每个干系人组的信息需要。
i. 项目状态报告:项目当前状态报告;时间表,包括计划的进度、实际的进度、计划进度偏差原因、后续进展的风险、保证进度所采取的应急计划;预算,包括计划支持、实际支出、计划支出和实际支出的偏差原因、预期的未来支出、满足预算目标的应急计划;质量目标,包括实际的质量度量、与计划质量产生偏差的原因;为达到质量目标的应急计划;项目问题,如影响项目实现既定目标的问题、规避影响项目达成目标的风险的应急计划。
------------------------------------------------------
六、供应商监控(Supplier Monitoring)
跟踪和评估供应商在履行约定需求时的表现。
过程产出:
a. 联合活动,根据需要执行,客户和供应商之间的约定;
b. 所有信息,商定交换,供应商和客户之间的定期沟通;
c. 根据协议监控供应商的执行;
d. 如果需要更改协议,客户和供应商共同协商,并文档化协议。
2. 流程步骤:
a. 同意和维护联合流程:共同的接口和信息交换。建立和维持一个关于交换信息和共同的流程,共同的接口,责任,类型以及共同活动,通信,会议,转台报告和审核频率的协议。共同的流程节接口通常包括项目管理、需求管理、变更管理、配置管理、问题解决、质量保证和客户验收。要执行的共同的活动应通过客户和供应商双方同意。在这个过程中客户是评估方。供应商指评估方的供应商。
b. 交换达成一致的信息:使用客户和供应商之间定义的共同的接口交换所有达成一致的信息。达成一致的信息应包括所有相关的工作产品。
c. 与供应商一起进行技术开发评审:根据约定定期与供应商评审开发,主要涵盖技术方面的问题与风向和跟踪打开的项直至关闭。、
d. 审查供应商的进度:根据约定定期审查供应商有关进度,质量和成本的进展。跟踪打开的项直至关闭并执行风险缓解活动。
e. 纠正偏差行动:如果商定的目标没有达成,应该采取行动以纠正商定的项目计划之间的偏差,并防止发现问题的再次发生。协商修改目标并且将协定归档。
3. 输出物:
a. 承诺或协议:参与各方签署承诺/协议;确定承诺的内容;确定完全满足承诺所需的资源(时间、人员、预算、设备、设施)。
b. 验收记录:交付时的收据记录、收货日期识别、已交付组件识别、记录基于客户自定义验收标准的验证结果、收获客户的签名。
c. 沟通记录
d. 会议纪要:会议目的、出席人员、会议日期、会议地点、涉及到的之前的会议纪要、收获了什么、识别提出的问题、未解决的问题、下次会议
e. 进展状态记录:两方面,一方面是计划于实际的状态记录,如实际任务及计划任务的状态;实际结果及既定目的的情况;实际资源及计划资源的分配;实际成本及计划预算的情况;实际工时及计划时间表的情况;实际质量及计划质量的情况。另一方面,记录所有与计划活动的偏差及其原因。
f. 变更请求:识别变更目的;识别变更请求的状态(新建、已接收、被拒绝);识别变更申请人的联系信息;被变更所影响的系统;对现有系统运行的影响;对相关文档的影响;变更请求的严重度和需要完成的日期。
g. 审查记录
h. 纠正措施记录
i. 分析报告